Private In-Browser Automatic Speech Recognition & Subtitling
In modern media production, legal proceedings, healthcare, and software documentation, speech-to-text transcription is essential. However, uploading audio or video recordings to third-party cloud transcription APIs exposes sensitive intellectual property, patient medical records (HIPAA), or client-privileged discussions (NDA) to remote servers and third-party AI training pipelines. QuickCoderHub’s Local Audio Transcriber performs audio decoding, Voice Activity Detection (VAD), and subtitle generation 100% on your local machine using standard Web Audio API buffers and browser-native speech recognition primitives.
How In-Browser Voice Activity Detection (VAD) Operates
Before text can be synchronized with video or audio, the continuous audio stream must be segmented into coherent linguistic sentences rather than arbitrary fixed time windows:
- Short-Time Energy (RMS): The raw audio signal \(x(n)\) is segmented into small overlapping analysis frames (typically 20ms to 40ms). The root mean square energy \(E = \sqrt{\frac{1}{N}\sum_{n=0}^{N-1} x(n)^2}\) distinguishes active vocal acoustics from background room silence.
- Zero-Crossing Rate (ZCR): Voiced phonemes (such as vowels /a/, /e/, /o/) exhibit strong periodic low-frequency harmonic oscillations, whereas unvoiced consonants (such as /s/, /sh/, /f/) generate high-frequency stochastic noise. Tracking zero crossings prevents cutting off consonant beginnings and endings.
- Silence Thresholding: When energy remains below the noise floor for a duration longer than the configurable silence threshold (e.g., 400ms), a sentence boundary marker is placed. This prevents long run-on subtitles and ensures subtitle cards match natural conversational cadences.
Understanding Subtitle Formats: SRT vs. WebVTT
| Feature | SubRip (.SRT) | WebVTT (.VTT) | Plain Text (.TXT) |
|---|---|---|---|
| Header Requirement | None (starts directly with index 1) | Mandatory WEBVTT header on line 1 |
None |
| Timecode Delimiter | Comma (e.g. 00:01:23,450) |
Dot (e.g. 00:01:23.450) |
Optional inline bracket timestamp |
| Native Browser Video Player | Requires JavaScript parser | Supported natively by <track> HTML5 tag |
Not supported |
| Styling / Positioning | Limited | Supports CSS styling, alignment, and cues | Plain unstyled characters |
| Editor Compatibility | Premiere Pro, DaVinci, Final Cut, VLC, YouTube | Web browsers, YouTube, Vimeo, HTML5 | Notepad, Word, LLM prompts |
Frequently Asked Questions
Are my recordings stored or sent to any cloud server?
Never. Your audio never leaves your machine. The Web Audio API decodes the audio file directly into browser memory (Float32Array), where all waveforms and timeline markers are calculated entirely client-side.
Can I edit the generated subtitle text before exporting?
Yes. The interactive subtitle list allows you to edit transcription text, adjust timestamps, delete unneeded segments, and add new subtitle cues. Clicking the "Play" icon on any segment auditions that exact audio slice.
How large of a file can I transcribe?
Because decoding occurs directly in device RAM, modern 64-bit browsers can comfortably process files up to several hours in length (typically 100MB to 500MB+ depending on system memory).