Problem
Nemotron expects 16 kHz mono samples. The app requests 16 kHz, but mobile browsers may provide or process a different hardware rate. If actual capture is not resampled correctly, ASR can receive time-scaled audio and produce bad transcripts.
Evidence
apps/web/js/capture.js:90-99 requests sampleRate: 16000 from getUserMedia.
apps/web/js/capture.js:125 creates new AudioContext({ sampleRate: 16000 }).
apps/web/js/capture.js:137-157 forwards worklet samples to ASR with no explicit sample-rate measurement or resampler.
Acceptance criteria
- Measure/log the actual MediaStream track settings and AudioContext sample rate at capture start.
- Verify behavior on current iOS Safari and Android Chrome.
- If the browser does not deliver/process 16 kHz, add a tested resampling path before ASR feed.
- Add a diagnostic visible enough to call out unsupported/bad sample-rate states instead of silently producing bad text.
Problem
Nemotron expects 16 kHz mono samples. The app requests 16 kHz, but mobile browsers may provide or process a different hardware rate. If actual capture is not resampled correctly, ASR can receive time-scaled audio and produce bad transcripts.
Evidence
apps/web/js/capture.js:90-99requestssampleRate: 16000fromgetUserMedia.apps/web/js/capture.js:125createsnew AudioContext({ sampleRate: 16000 }).apps/web/js/capture.js:137-157forwards worklet samples to ASR with no explicit sample-rate measurement or resampler.Acceptance criteria