# Chinese Audio to Text Extractor - Simple Transcription ## Objectif Extraire le texte de fichiers MP3 de cours de chinois en utilisant Whisper. ### Problème résolu - Besoin de récupérer le contenu textuel des cours audio - Conversion MP3 → Texte simple et rapide ### Solution Pipeline minimaliste : MP3 → Whisper → Texte brut --- ## Architecture Pipeline ``` ┌─────────────────────────────────────────┐ │ INPUT: cours_chinois.mp3 (45min) │ └──────────────┬──────────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ Transcription (Whisper) │ │ ├─ Model: whisper-1 (OpenAI API) │ │ ├─ Language: zh (mandarin) │ │ └─ Output: transcript.txt │ └──────────────┬──────────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ OUTPUT: cours_chinois.txt │ │ 你好。我叫Alexis。今天我们学习... │ └─────────────────────────────────────────┘ ``` --- ## Plan d'Implémentation Python ### Structure du projet ``` chinese-transcriber/ ├── transcribe.py # Script principal ├── input/ # MP3 source ├── output/ # Fichiers .txt générés ├── .env # API key └── requirements.txt ``` ### Dépendances (requirements.txt) ```txt openai>=1.0.0 # Whisper API python-dotenv>=1.0.0 # Env variables ``` ### Script Principal (transcribe.py) ```python """ Transcription simple MP3 → TXT avec Whisper """ import openai from pathlib import Path from dotenv import load_dotenv import os def transcribe_audio(audio_path: Path, api_key: str) -> str: """ Transcrit un fichier MP3 en chinois Args: audio_path: Chemin vers MP3 api_key: Clé API OpenAI Returns: Texte transcrit """ client = openai.OpenAI(api_key=api_key) with open(audio_path, "rb") as audio_file: transcript = client.audio.transcriptions.create( model="whisper-1", file=audio_file, language="zh", # Force mandarin response_format="text" # Texte brut ) return transcript def main(): # Load API key load_dotenv() api_key = os.getenv("OPENAI_API_KEY") if not api_key: print("Error: OPENAI_API_KEY not found in .env") return # Setup paths input_dir = Path("input") output_dir = Path("output") output_dir.mkdir(exist_ok=True) # Get MP3 files mp3_files = list(input_dir.glob("*.mp3")) if not mp3_files: print(f"No MP3 files found in {input_dir}/") return print(f"Found {len(mp3_files)} MP3 files to transcribe\n") # Process each file for mp3_file in mp3_files: print(f"Processing: {mp3_file.name}...") try: # Transcribe text = transcribe_audio(mp3_file, api_key) # Save to TXT output_path = output_dir / f"{mp3_file.stem}.txt" with open(output_path, "w", encoding="utf-8") as f: f.write(text) print(f"✓ Saved to: {output_path}\n") except Exception as e: print(f"✗ Error: {e}\n") print("=== Transcription completed ===") if __name__ == "__main__": main() ``` --- ### Environment Variables (.env) ```bash OPENAI_API_KEY=sk-... ``` --- ## Estimation Coûts ### Pour 10 heures de cours audio | Service | Coût | Calcul | |---------|------|--------| | **Whisper API** | **$3.60** | 10h × $0.006/min × 60min | **Ultra-abordable** pour extraction simple de texte. --- ## Usage ### Installation ```bash mkdir chinese-transcriber cd chinese-transcriber # Créer structure mkdir input output # Installer dépendances pip install openai python-dotenv # Créer .env echo "OPENAI_API_KEY=sk-..." > .env # Copier le script transcribe.py ``` ### Exécution ```bash # 1. Placer tes MP3 dans input/ cp /path/to/cours*.mp3 input/ # 2. Run script python transcribe.py # Output: # Found 3 MP3 files to transcribe # # Processing: cours_1.mp3... # ✓ Saved to: output/cours_1.txt # # Processing: cours_2.mp3... # ✓ Saved to: output/cours_2.txt # ... ``` ### Output Fichiers `.txt` avec texte chinois brut : ``` output/cours_1.txt: 你好。我叫Alexis。今天我们学习汉语。 第一课是关于问候的。你好吗?我很好,谢谢。 ... ``` --- ## Statut ✅ **PLAN SIMPLE - PRÊT À UTILISER** Script minimaliste pour extraction texte MP3 → TXT. **Next steps si besoin** : 1. Tester sur tes fichiers MP3 chinois 2. Si besoin découpage automatique, voir options full TTS pipeline (commenté dans versions précédentes) --- *Créé : 27 octobre 2025* *Stack : Python 3.10+, Whisper API seulement*