A custom local voice to vector database pipeline.
- OpenAI Whisper transcription
- Qwen 3 embedding model (via Ollama)
- ChromaDB vector database
.
├── src/voice_pipeline/ # Application package
│ ├── config.py # Shared paths & model settings
│ ├── whisper/ # Audio → text
│ ├── embedding/ # Text → vectors
│ └── vectorstore/ # Vectors → ChromaDB
├── scripts/ # Thin CLI entry points
├── data/ # Runtime artifacts (gitignored contents)
│ ├── audio/ # pending/ · transcribed/
│ ├── transcripts/ # base/ · pending/ · embedded/
│ └── chroma/ # docs staging + storage/
├── pyproject.toml
└── requirements.txt
- Python 3.10+
- OpenAI Whisper
large-v3 - Ollama model
qwen3-embedding:8b - ChromaDB
pip install -e .
# or
pip install -r requirements.txt-
Place audio files (e.g.
.mp3) indata/audio/pending/ -
Transcribe:
python scripts/transcribe.py # or: voice-transcribe -
Copy a transcribed
.txtfromdata/transcripts/base/<name>/intodata/transcripts/pending/ -
Embed:
python scripts/embed.py # or: voice-embed -
Store in ChromaDB:
python scripts/store.py # or: voice-store
You should now have a persistent vector database under data/chroma/storage/ with embeddings and documents from the recording.
Transcript and vector filenames change as files move through the pipeline stages. Paths are centralized in src/voice_pipeline/config.py.
Working on automation instead of manually executing each stage.