| # Audio Transcription Pipeline |
|
|
| A modular audio transcription pipeline with speech recognition, audience response classification, speaker diarization, meeting summarization, and ASCII visualization. |
|
|
| ## Architecture |
|
|
| ``` |
| Audio Input (WAV/FLAC/MP3) |
| β |
| βΌ |
| ββββββββββββββββββββββ |
| β Transcriber β β faster-whisper (base model, CPU int8) |
| β Word-level timing β Language detection, beam search |
| ββββββββββ¬ββββββββββββ |
| β |
| βΌ |
| ββββββββββββββββββββββ |
| β Audience Class. β β Rule-based + AST (MIT/ast-finetuned-audioset) |
| β 10 event classes β Applause, laughter, cheering, music, etc. |
| ββββββββββ¬ββββββββββββ |
| β |
| βΌ |
| ββββββββββββββββββββββ |
| β Diarizer β β pyannote/speaker-diarization-3.1 or mock |
| β Speaker labeling β HF_TOKEN required for full diarization |
| ββββββββββ¬ββββββββββββ |
| β |
| βΌ |
| ββββββββββββββββββββββ |
| β Summarizer β β Qwen2.5-0.5B-Instruct GGUF |
| β Structured JSON β Overview, decisions, action items |
| ββββββββββ¬ββββββββββββ |
| β |
| βΌ |
| ββββββββββββββββββββββ |
| β GlyphCast ASCII β β Spectrogram β ASCII art |
| β 7 charsets/3 modesβ Dark, light, hallow themes |
| ββββββββββββββββββββββ |
| ``` |
|
|
| ## Quick Start |
|
|
| ### CLI |
|
|
| ```bash |
| cd /app/audio_transcription_pipeline_1527 |
| |
| # Full transcription |
| python main.py transcribe data/jfk_speech.wav --output json |
| |
| # With summary + ASCII visualization |
| python main.py transcribe data/jfk_speech.wav --summary --ascii |
| |
| # All pipeline modules at once |
| python main.py all data/jfk_speech.wav --output json |
| |
| # Audience response classification only |
| python main.py audience data/test_tone.wav --output json |
| |
| # ASCII visualization only |
| python main.py ascii-viz data/jfk_speech.wav --mode dark |
| ``` |
|
|
| ### Web Demo (Runs as background service) |
|
|
| - **Frontend (Gradio)**: Port 8080 |
| - **Backend API (FastAPI)**: Port 8081 |
|
|
| ```bash |
| # Start backend |
| python -m uvicorn api:app --host 0.0.0.0 --port 8081 --log-level warning |
| |
| # Start frontend (in another terminal) |
| python app.py |
| ``` |
|
|
| ### API Endpoints |
|
|
| | Endpoint | Method | Description | |
| |----------|--------|-------------| |
| | `/health` | GET | Health check | |
| | `/transcribe` | POST | Upload audio β transcription + analysis | |
|
|
| ## Models Used |
|
|
| | Model | Source | Size | Purpose | |
| |-------|--------|------|---------| |
| | faster-whisper base | Systran/faster-whisper-base | ~150 MB | Speech recognition | |
| | AST audioset | MIT/ast-finetuned-audioset-10-10-0.4593 | ~230 MB | Audience classification | |
| | Qwen2.5-0.5B-Instruct | Qwen/Qwen2.5-0.5B-Instruct-GGUF | ~350 MB | Meeting summarization | |
| | Whisper-large-v3-turbo | openai/whisper-large-v3-turbo | ~2 GB | Encoder for hybrid model | |
| | Qwen3-8B-Instruct | Qwen/Qwen3-8B-GGUF | ~5 GB | LLM for hybrid model | |
|
|
| ## Hybrid Speech-Transcription Model |
|
|
| See `hybrid_model/ARCHITECTURE.md` for details on the Encoder-Projector-LLM architecture. |
|
|
| ## Requirements |
|
|
| - Python 3.10+ |
| - CPU with ~8GB RAM minimum |
| - Optional: HuggingFace token for pyannote diarization |
|
|
| ## License |
|
|
| MIT |