Qapdex's picture
Upload 9 files
a3584e8 verified
|
Raw
History Blame Contribute Delete
3.5 kB

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

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
# 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