Streaming STT
This guide explains how to implement streaming speech-to-text. Two protocols are supported: 1) gRPC and 2) WebSocket. See Streaming STT - gRPC and Streaming STT - WebSocket for integration details. For file-based transcription, see Batch STT.
Streaming STT is subject to concurrent channel limits. See the rate limit policy.
The server may close a streaming connection if no audio chunk is sent within 60 seconds after the connection is established.
Audio Encoding
Streaming STT supports LINEAR16, FLAC, MULAW, ALAW, AMR, AMR_WB, OGG_OPUS, and OPUS.
- Send LINEAR16, MULAW, ALAW, AMR, and AMR_WB as raw audio data.
- Send OGG_OPUS as OPUS-encoded audio frames in an OGG container.
- OPUS is supported only over gRPC. Contact us if you need to use it.
Common DecoderConfig/Parameter Information
The following DecoderConfig fields are shared by gRPC and WebSocket integrations.
| Name | Type (gRPC / WebSocket) | Description | Required | Default |
|---|---|---|---|---|
| sample_rate | int | Range: 8000–48000 Hz | Yes | - |
| encoding | AudioEncoding / string | See Audio Encoding | Yes | - |
| model_name | string | Recognition model: sommers_ko (Korean), sommers_ja (Japanese), or whisper (Korean fine-tuned, multilingual) | No | sommers_ko |
| domain | string | See Domain | No | CALL |
| use_itn | bool | See Inverse Text Normalization | No | true |
| use_disfluency_filter | bool | See Disfluency Filter | No | false |
| use_profanity_filter | bool | See Profanity Filter | No | false |
| use_punctuation | bool | Whether to add punctuation | No | false |
| keywords | string[] / string | See Keywords Boosting | No | - |
| language | string | Used with the whisper model. See Recognition Language | No | ko |
Keywords Boosting
Keywords boosting increases or decreases the recognition probability of specific words in Streaming STT.
This feature is currently available only with the sommers_ko model or the whisper model when language is set to ko.
Format and Usage
Specify each keyword and an optional score:
- gRPC accepts a
string[]. - WebSocket accepts a single comma-separated
string.
Each keyword must use one of the following formats:
"word": uses the default score of 2.0"word:score": separates the word and score with a colon
Keywords Boosting Rules
- Word: Use only Hangul syllables and spaces.
- Score:
- Range: -5.0 to 5.0
- A positive value increases recognition probability.
- A negative value decreases recognition probability.
- A value of 0 applies no score. Remove keywords that do not need boosting because their presence can still affect other keywords.
Example
// gRPC
["부스팅", "리턴제로:3.5", "에스티티:-1"]
// WebSocket
"부스팅,리턴제로:3.5,에스티티:-1"
- Scores must be between -5.0 and 5.0.
- Write words according to their Korean pronunciation. For example, use 에스티티 instead of STT.
- Words must contain only Hangul syllables and spaces.
- Each word is limited to 20 characters, with up to 100 words.
- Registering a longer word that starts with a shorter keyword can reduce the boosting effect of the shorter word. For example, this can occur when registering both 커피 and 커피숍.
AI Voice Agent
When an AI voice agent or callbot detects the end of a user's utterance with its own VAD or turn detector, it can use the FINALIZE command to finalize the current utterance. This lets the client receive the final transcript and start generating the next response without waiting for server-side end-point detection.
FINALIZE does not close the streaming connection. After receiving the final transcript, continue sending audio for the next user turn over the same connection. To end the session, half-close the gRPC request stream or send the EOS text message over WebSocket. An empty utterance or repeated FINALIZE commands produce no result. See the protocol-specific request examples for gRPC and WebSocket.
For container-based encodings such as OGG_OPUS, start the next utterance as an independent stream with a new container header after FINALIZE.
Domain
The domain optimizes the STT model for the user's audio input environment.
Supported Domains
- CALL (default): Optimized for phone calls and environments where the microphone is close to the speaker.
- Clearly recognizes the nearby speaker.
- Minimizes background noise and other voices.
- Suitable for phone calls, personal headsets, and close-talk microphones.
- MEETING: Optimized for far-field audio in environments such as meeting rooms.
- Handles speech from multiple speakers.
- Suitable for meeting rooms and public spaces with distant microphones.
Choose the domain that matches the actual audio input environment.