Client Side Transcription
Intro
The recording client can transcribe speech while you record, using the Web Speech API built into the browser.
This is different from our server side Audio Transcription, which runs on Whisper after the recording is uploaded. Client side transcription happens in the browser, in real time. It is less accurate than the server side option, but it is instant.
The two features are independent. You can use either one, both, or neither.
What It Does
Once enabled, the recording client does two things:
Live closed captions. While recording, the words appear over the video as the person speaks. Captions stay on screen long enough to be read and fade out during pauses, the same way subtitles behave in a video player.
Playback subtitles. When the recording is played back, the same text comes back as subtitles, timed to the audio. Seeking and pausing keep the subtitles in the right place.
Enabling It
Transcription is off by default. To turn it on, set the pipe-livecaptionslanguage option in your embed code to the language you expect people to speak.
In the 2.0 HTML embed code, add the attribute to your <piperecorder> tag:
<piperecorder id="custom-id" pipe-width="640" pipe-height="390" pipe-qualityurl="avq/360p.xml" pipe-accounthash="ACCOUNT_HASH" pipe-eid="ENVIRONMENT_ID" pipe-livecaptionslanguage="en-US">
</piperecorder>
In the 2.0 JavaScript embed code, add the property to your recorder object:
var YOUR_CUSTOM_OBJECT = { size: {width:640,height:390}, qualityurl: "avq/360p.xml", accountHash:"ACCOUNT_HASH", eid:"ENVIRONMENT_ID", livecaptionslanguage:"en-US" };
If the option is missing or empty, nothing changes and no transcription runs at all.
Choosing A Language
The value is a language tag like en-US, fr-FR, de-DE or ro-RO. This is the same format browsers use everywhere else, so a region is usually expected after the language.
There is one special value. If you set the option to the text undefined, the recording client will use the language of the visitor’s own browser instead of a fixed one. If the browser does not report a language, it falls back to en-US. This is useful when your recorders are used by people in different countries and you do not know in advance what they will speak.
<piperecorder ... pipe-livecaptionslanguage="undefined"></piperecorder>
There is also no automatic language detection. The recording client transcribes in the one language you configured. If someone speaks a different language, the result will be wrong rather than empty.
On Device Processing
Some browsers can run speech recognition entirely on the device, without contacting a server. We always ask for this first. If it is available, the audio never leaves the machine.
When on device recognition is not available, the browser falls back to its own cloud speech service. In that case the audio is handled by the browser vendor under their terms, not by Pipe. This is worth knowing if you work with sensitive recordings.
Browser Support
This feature relies on the Web Speech API, which is not evenly supported.
| Browser | Support |
|---|---|
| Chrome desktop | Yes, and the best supported |
| Edge and other Chromium browsers | Usually yes, since they share the same engine |
| Safari | Partial, and results vary between versions |
| Firefox | No |
| Chrome on Android | Limited |
Treat client side transcription as an enhancement, not something to depend on. When the browser cannot do it, the recorder simply records as usual with no captions and no error. Nothing about the recording, the upload or your existing setup changes.
Accuracy
Browser speech recognition is convenient but it is not as accurate as the server side Whisper transcription. Expect mistakes with names, technical terms, accents, background noise and quiet microphones. If you need a reliable transcript to keep, use the server side Audio Transcription and treat the client side captions as a live convenience for the person recording.