# Tamazight Corpus Framework
A Python framework for creating, collecting, managing, validating, and storing speech corpora.
The framework was initially developed for collecting **Tamazight/Kabyle speech data**, but it can also be used to create speech corpora for other languages.
Each recording consists of:
- WAV audio
- Speaker
- Transcript
- Sample rate
- Number of channels
- Duration
- Recording ID
The framework provides both a **Python/CLI interface** and a **Flask web application**.
For deployment, persistent storage can be provided by **Supabase Storage**, allowing the application to run on platforms such as Render without losing corpus data after a restart or redeployment.
---
## Features
- Create corpus projects
- Manage speakers
- Record speech using a microphone
- Upload existing WAV files
- Enter and edit transcripts
- Validate audio information
- Automatically generate recording IDs
- Store recording metadata
- Store transcripts
- Play recordings from the web application
- Persistent cloud storage with Supabase
- Local filesystem storage for development
- Flask web interface
- Command-line interface
- Designed for low-resource language corpus collection
---
# 1. Architecture
The framework separates corpus-management logic from the storage system.
```text
Tamazight Corpus Framework
|
+---------------+---------------+
| |
Python / CLI Flask Web App
| |
+---------------+---------------+
|
Project
|
+---------+---------+
| |
Corpus Speakers
| |
Repository Repository
|
+------+------+
| |
FileRepository SupabaseRepository
| |
Local disk Supabase Storage
This design allows the same corpus framework to work with different storage backends.
2. Requirements
Python
Python 3.13 or newer is recommended.
Check your Python version:
python --version
uv
The project uses uv� for Python environme …