Live microphone preview
Live recording happens on the Practice page. While you speak, Practice shows live pitch and resonance gauges, an input-level meter with a clipping readout, and, for exercises with a target contour, your live trace against it. These live numbers are quick feedback for practice. The result that is saved with a take comes from the full analysis of the whole recording.
Where the live numbers are computed depends on the version:
- In the browser version, the browser tab computes them. Audio does not leave the device.
- In the installed app, the browser streams the audio to the local Vocal Analyzer server, which computes them.
Requirements
Live recording needs a browser that supports microphone capture and
AudioWorklet. Browsers allow microphone access only on HTTPS pages and
on local addresses such as localhost.
In the browser version, open the app's HTTPS address. The analysis software must be downloaded once before live recording starts; the app does this the first time you use it.
In the installed app, live recording also needs same-origin
WebSockets. It works on localhost and 127.0.0.1 without HTTPS
because browsers treat local origins as trusted for microphone access.
Use the same origin consistently: http://localhost:8642 and
http://127.0.0.1:8642 are separate sites for browser permissions. If
you expose the installed app from another host name, LAN address, or
public domain, use HTTPS and an authenticating reverse proxy before
allowing microphone capture from that origin.
When the browser asks for permission, choose the microphone you intend to use. If permission is denied, the app shows an error; allow the site in browser settings and try again.
Recording a take
- Choose an exercise, or Free practice, and press Start.
- Speak. The gauges update as you go; see Practice for what each gauge shows.
- Press Stop. The recording is kept while you review the recap.
- Choose Save to practice log to keep the take: it is analyzed like an uploaded recording and appears on Home. Choose Discard to delete the recording.
Live numbers versus the saved result
Live values are computed from short trailing windows so the display can update quickly. Resonance in particular needs a few seconds of voiced sound before it settles. The saved result uses the whole recording (in the installed app, also transcription and alignment when available), so it can differ from what the gauges showed. The saved result is the canonical record in history; live values are not saved as analysis results.
Where the take is stored
In the browser version, the take is written to the browser's storage while you record, so it survives a closed or crashed tab: the next time the app opens, it offers the unsaved take for saving, download or discard. A saved take is stored like an uploaded recording, in the browser's storage for this site, until you delete the session. See Storage and privacy.
In the installed app, audio goes from the browser to the local server only. On Stop the server writes a WAV; a saved take is stored like an uploaded recording, in the local data directory or Docker volume until you delete the session.
Latency and dropped audio
Microphone audio is processed in small packets of about 20 ms. Some metrics need more context than one packet, so "20 ms" is the display cadence, not an accuracy promise for every gauge.
If the live analysis falls behind, it drops stale audio from the live display instead of using more and more memory. The recording itself is kept whole, so the saved result is not affected. If the display lags:
- close other CPU-heavy apps;
- keep takes short;
- in the installed app, run the server on the machine with the microphone rather than reaching across a slow network.