Talk2Text is a local Python app for microphone transcription.
It records audio with Qt, transcribes it locally with faster-whisper, and can optionally send the finished transcript to a local Ollama model for cleanup.
This project is an early desktop MVP.
What works today:
- microphone recording through Qt Multimedia
- hold-to-record with
Spacewhile the main window is focused - local Whisper transcription
- optional live transcription
- manual Ollama transcript polish
- transcript history persisted locally
What is still rough:
- no persistent settings storage yet
- no global push-to-talk yet
- limited automated coverage around GUI behavior
microphone -> Qt audio capture -> faster-whisper -> transcript
\
-> optional Ollama polish
uv- local Ollama installation if you want transcript polish
The project targets Python 3.12. uv can use an existing Python or manage Python for you.
For GPU acceleration, a working NVIDIA CUDA 12 + cuDNN 9 stack is recommended. The app can fall back to CPU transcription.
uv sync
uv run talk2textAlternative launch command:
uv run python -m talk2textInstall uv with the official installer:
curl -LsSf https://astral.sh/uv/install.sh | shOther installation methods are available in the uv docs.
- Whisper model:
turbo - Ollama model:
qwen3:8b - Live transcription: disabled by default
- Ollama polish: disabled by default
export TALK2TEXT_WHISPER_MODEL=large-v3
export TALK2TEXT_OLLAMA_MODEL=qwen3:8b
export TALK2TEXT_OLLAMA_BASE_URL=http://localhost:11434
export TALK2TEXT_LANGUAGE=
export TALK2TEXT_SAMPLE_RATE=16000
export TALK2TEXT_ENHANCE_WITH_OLLAMA=0
export TALK2TEXT_LIVE_TRANSCRIPTION=0Leave TALK2TEXT_LANGUAGE empty for language auto-detection.
Sync the project environment:
uv syncRun checks:
uv run python -m compileall src tests
uv run python -m unittest discover -s tests
uv run ruff check src testsWhen dependencies change, refresh the lockfile with:
uv locksrc/talk2text/
audio.py Qt microphone capture
transcription.py Whisper integration
ollama_client.py Ollama cleanup client
pipeline.py transcription pipeline
ui.py desktop UI
- First Whisper use may download the selected model.
- Ollama polish requires a local Ollama server running at
http://localhost:11434unless you override it. - If live transcription feels heavy, keep it disabled and use record-then-transcribe mode.
See CONTRIBUTING.md.