Voice Transcription Tool
One transcription interface across three providers, with silence trimmed.
The problem
Speech-to-text providers disagree on cost, latency, and which one copes with a noisy recording, so the practical result of picking one is that you find out it was the wrong choice halfway through a batch. Two smaller problems came up along the way: most providers bill for silence, and a transcription that blocks the interface for the length of the file makes a tool feel broken. I built this to solve both the provider-lock-in problem and the two smaller ones.
Stack
- Python
- NumPy
- STT provider abstraction
- Async I/O
One decision, and why
Vectorise voice-activity detection in NumPy instead of running a per-frame Python loop.
The first VAD pass walked audio frame by frame in Python, and on an hour-long recording the detection step cost more wall-clock than the transcription it was meant to enable. Moving the frame maths into NumPy made it a handful of array operations over the whole signal, which brought detection well under the transcription time and stopped it being the bottleneck. It also made trimming cheap enough to run per segment rather than per file.