{"asyncapi":"2.6.0","info":{"title":"APIs","version":"1.0.0"},"channels":{"/speech-to-text-realtime/ws":{"description":"WebSocket channel for real-time speech to text streaming powered by the\n`saaras:v3-realtime` model.\n\n**Authentication:** Pass your API subscription key via the\n`API-SUBSCRIPTION-KEY` header, or (in browsers) via the WebSocket\nsubprotocol `api-subscription-key.<key>` — the server echoes the\nsubprotocol back.\n\n**Note:** This API Reference page is provided for informational purposes only.\nThe Try It playground may not provide the best experience for streaming audio.\nFor optimal streaming performance, please use the SDK or implement your own WebSocket client.\n","bindings":{"ws":{"query":{"type":"object","properties":{"language_code":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_language_code"},"model":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_model","default":"saaras:v3-realtime"},"stream_type":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_stream_type","default":"balanced"},"mode":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_mode","default":"transcribe"},"prompt":{"type":"string"},"endpointing":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_endpointing","default":"vad"},"encoding":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_encoding","default":"linear16"},"sample_rate":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_sample_rate","default":16000},"return_timestamps":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_return_timestamps","default":"false"},"threshold":{"type":"string","default":0.3},"prefix_padding_ms":{"type":"string","default":300},"silence_duration_ms":{"type":"string","default":500},"min_speech_duration_ms":{"type":"string","default":250}}},"headers":{"type":"object","properties":{"Api-Subscription-Key":{"type":"string"}}}}},"publish":{"operationId":"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-publish","summary":"Server messages","message":{"oneOf":[{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-0-Realtime Session Begin"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-1-Realtime VAD Events"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-2-Realtime VAD Events"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-3-Realtime Partial Transcript"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-4-Realtime Final Transcript"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-5-Realtime Config Updated"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-6-Realtime Pong"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-7-Realtime Session End"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-8-Realtime Error"}]}},"subscribe":{"operationId":"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-subscribe","summary":"Client messages","message":{"oneOf":[{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-0-Realtime Audio Input"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-1-Realtime Speech Start"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-2-Realtime Speech End"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-3-Realtime Flush"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-4-Realtime Config Update"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-5-Realtime End Session"},{"$ref":"#/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-6-Realtime Ping"}]}}},"/text-to-speech/ws":{"description":"WebSocket channel for real-time TTS synthesis.\n\n**Note:** This API Reference page is provided for informational purposes only. \nThe Try It playground may not provide the best experience for streaming audio. \nFor optimal streaming performance, please use the SDK or implement your own WebSocket client.\n\n**Model-Specific Notes:**\n- **bulbul:v2:** Supports pitch, loudness, pace (0.3-3.0). Default sample rate: 22050 Hz.\n- **bulbul:v3:** Does NOT support pitch/loudness. Pace range: 0.5-2.0. Supports temperature parameter. Default sample rate: 24000 Hz. Preprocessing is always enabled.\n","bindings":{"ws":{"query":{"type":"object","properties":{"model":{"$ref":"#/components/schemas/textToSpeechStreaming_model","default":"bulbul:v2"},"send_completion_event":{"$ref":"#/components/schemas/textToSpeechStreaming_send_completion_event","default":"true"}}},"headers":{"type":"object","properties":{"Api-Subscription-Key":{"type":"string"}}}}},"publish":{"operationId":"subpackage_textToSpeechStreaming.textToSpeechStreaming-publish","summary":"Server messages","message":{"oneOf":[{"$ref":"#/components/messages/subpackage_textToSpeechStreaming.textToSpeechStreaming-server-0-Audio Output"},{"$ref":"#/components/messages/subpackage_textToSpeechStreaming.textToSpeechStreaming-server-1-Event Notification"},{"$ref":"#/components/messages/subpackage_textToSpeechStreaming.textToSpeechStreaming-server-2-Error Response"}]}},"subscribe":{"operationId":"subpackage_textToSpeechStreaming.textToSpeechStreaming-subscribe","summary":"Client messages","message":{"oneOf":[{"$ref":"#/components/messages/subpackage_textToSpeechStreaming.textToSpeechStreaming-client-0-Configure Connection"},{"$ref":"#/components/messages/subpackage_textToSpeechStreaming.textToSpeechStreaming-client-1-Send Text"},{"$ref":"#/components/messages/subpackage_textToSpeechStreaming.textToSpeechStreaming-client-2-Flush Signal"},{"$ref":"#/components/messages/subpackage_textToSpeechStreaming.textToSpeechStreaming-client-3-Ping Signal"}]}}},"/speech-to-text/ws":{"description":"WebSocket channel for real-time speech to text streaming.\n\n**Note:** This API Reference page is provided for informational purposes only. \nThe Try It playground may not provide the best experience for streaming audio. \nFor optimal streaming performance, please use the SDK or implement your own WebSocket client.\n","bindings":{"ws":{"query":{"type":"object","properties":{"language-code":{"$ref":"#/components/schemas/speechToTextStreaming_language-code"},"model":{"$ref":"#/components/schemas/speechToTextStreaming_model","default":"saaras:v3"},"mode":{"$ref":"#/components/schemas/speechToTextStreaming_mode","default":"transcribe"},"sample_rate":{"$ref":"#/components/schemas/speechToTextStreaming_sample_rate","default":16000},"high_vad_sensitivity":{"$ref":"#/components/schemas/speechToTextStreaming_high_vad_sensitivity"},"positive_speech_threshold":{"type":"string","default":0.7},"negative_speech_threshold":{"type":"string","default":0.45},"min_speech_frames":{"type":"string","default":2},"first_turn_min_speech_frames":{"type":"string","default":8},"negative_frames_count":{"type":"string","default":18},"negative_frames_window":{"type":"string","default":24},"start_speech_volume_threshold":{"type":"string"},"interrupt_min_speech_frames":{"type":"string","default":2},"pre_speech_pad_frames":{"type":"string","default":9},"num_initial_ignored_frames":{"type":"string","default":0},"vad_signals":{"$ref":"#/components/schemas/speechToTextStreaming_vad_signals"},"flush_signal":{"$ref":"#/components/schemas/speechToTextStreaming_flush_signal"},"input_audio_codec":{"$ref":"#/components/schemas/speechToTextStreaming_input_audio_codec"}}},"headers":{"type":"object","properties":{"Api-Subscription-Key":{"type":"string"}}}}},"publish":{"operationId":"subpackage_speechToTextStreaming.speechToTextStreaming-publish","summary":"Transcription","description":"Receive real-time transcription results from the WebSocket","message":{"name":"Transcription","title":"Transcription","description":"Receive real-time transcription results from the WebSocket","payload":{"$ref":"#/components/schemas/speechToTextStreaming_speechToTextStreamingResponse"}}},"subscribe":{"operationId":"subpackage_speechToTextStreaming.speechToTextStreaming-subscribe","summary":"Client messages","message":{"oneOf":[{"$ref":"#/components/messages/subpackage_speechToTextStreaming.speechToTextStreaming-client-0-Audio Transcription Message"},{"$ref":"#/components/messages/subpackage_speechToTextStreaming.speechToTextStreaming-client-1-Speech Flush Signal"}]}}},"/speech-to-text-translate/ws":{"description":"WebSocket channel for real-time speech to text streaming with English translation.\n\n**Note:** This API Reference page is provided for informational purposes only. \nThe Try It playground may not provide the best experience for streaming audio. \nFor optimal streaming performance, please use the SDK or implement your own WebSocket client.\n","bindings":{"ws":{"query":{"type":"object","properties":{"model":{"$ref":"#/components/schemas/speechToTextTranslateStreaming_model","default":"saaras:v2.5"},"sample_rate":{"$ref":"#/components/schemas/speechToTextTranslateStreaming_sample_rate","default":16000},"high_vad_sensitivity":{"$ref":"#/components/schemas/speechToTextTranslateStreaming_high_vad_sensitivity"},"positive_speech_threshold":{"type":"string","default":0.7},"negative_speech_threshold":{"type":"string","default":0.45},"min_speech_frames":{"type":"string","default":2},"first_turn_min_speech_frames":{"type":"string","default":8},"negative_frames_count":{"type":"string","default":18},"negative_frames_window":{"type":"string","default":24},"start_speech_volume_threshold":{"type":"string"},"interrupt_min_speech_frames":{"type":"string","default":2},"pre_speech_pad_frames":{"type":"string","default":9},"num_initial_ignored_frames":{"type":"string","default":0},"vad_signals":{"$ref":"#/components/schemas/speechToTextTranslateStreaming_vad_signals"},"flush_signal":{"$ref":"#/components/schemas/speechToTextTranslateStreaming_flush_signal"},"input_audio_codec":{"$ref":"#/components/schemas/speechToTextTranslateStreaming_input_audio_codec"}}},"headers":{"type":"object","properties":{"Api-Subscription-Key":{"type":"string"}}}}},"publish":{"operationId":"subpackage_speechToTextTranslateStreaming.speechToTextTranslateStreaming-publish","summary":"Translation","description":"Receive real-time transcription and translation results from the WebSocket","message":{"name":"Translation","title":"Translation","description":"Receive real-time transcription and translation results from the WebSocket","payload":{"$ref":"#/components/schemas/speechToTextTranslateStreaming_speechToTextTranslateStreamingResponse"}}},"subscribe":{"operationId":"subpackage_speechToTextTranslateStreaming.speechToTextTranslateStreaming-subscribe","summary":"Client messages","message":{"oneOf":[{"$ref":"#/components/messages/subpackage_speechToTextTranslateStreaming.speechToTextTranslateStreaming-client-0-Audio Translation Message"},{"$ref":"#/components/messages/subpackage_speechToTextTranslateStreaming.speechToTextTranslateStreaming-client-1-Translation Config Message"},{"$ref":"#/components/messages/subpackage_speechToTextTranslateStreaming.speechToTextTranslateStreaming-client-2-Speech Translate Flush Signal"}]}}}},"servers":{"Production":{"url":"wss://api.sarvam.ai/","protocol":"wss","x-default":true}},"components":{"messages":{"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-0-Realtime Session Begin":{"name":"Realtime Session Begin","title":"Realtime Session Begin","description":"Receive the session.begin event with the resolved session config","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeSessionBegin"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-1-Realtime VAD Events":{"name":"Realtime VAD Events","title":"Realtime VAD Events","description":"Receive VAD speech start/end events (endpointing=vad only)","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeVadSpeechStart"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-2-Realtime VAD Events":{"name":"Realtime VAD Events","title":"Realtime VAD Events","description":"Receive VAD speech start/end events (endpointing=vad only)","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeVadSpeechEnd"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-3-Realtime Partial Transcript":{"name":"Realtime Partial Transcript","title":"Realtime Partial Transcript","description":"Receive streaming partial transcripts during an utterance","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeTranscriptPartial"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-4-Realtime Final Transcript":{"name":"Realtime Final Transcript","title":"Realtime Final Transcript","description":"Receive the final transcript for a completed utterance","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeTranscriptFinal"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-5-Realtime Config Updated":{"name":"Realtime Config Updated","title":"Realtime Config Updated","description":"Receive the config.updated acknowledgement after a config.update","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeConfigUpdated"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-6-Realtime Pong":{"name":"Realtime Pong","title":"Realtime Pong","description":"Receive the pong response to a client ping","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimePong"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-7-Realtime Session End":{"name":"Realtime Session End","title":"Realtime Session End","description":"Receive the session.end summary when the session closes","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeSessionEnd"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-8-Realtime Error":{"name":"Realtime Error","title":"Realtime Error","description":"Receive non-fatal or fatal error notifications","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeError"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-0-Realtime Audio Input":{"name":"Realtime Audio Input","title":"Realtime Audio Input","description":"Send an audio chunk for real-time transcription (saaras:v3-realtime)","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeAudioInput"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-1-Realtime Speech Start":{"name":"Realtime Speech Start","title":"Realtime Speech Start","description":"Signal the start of an utterance (endpointing=manual only)","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeSpeechStart"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-2-Realtime Speech End":{"name":"Realtime Speech End","title":"Realtime Speech End","description":"Signal the end of an utterance (endpointing=manual only)","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeSpeechEnd"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-3-Realtime Flush":{"name":"Realtime Flush","title":"Realtime Flush","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeFlush"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-4-Realtime Config Update":{"name":"Realtime Config Update","title":"Realtime Config Update","description":"Update session config mid-stream","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeConfigUpdate"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-5-Realtime End Session":{"name":"Realtime End Session","title":"Realtime End Session","description":"Gracefully end the realtime session","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimeEnd"}},"subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-6-Realtime Ping":{"name":"Realtime Ping","title":"Realtime Ping","description":"Send a keepalive ping to the realtime WebSocket","payload":{"$ref":"#/components/schemas/speechToTextRealtimeStreaming_realtimePing"}},"subpackage_textToSpeechStreaming.textToSpeechStreaming-server-0-Audio Output":{"name":"Audio Output","title":"Audio Output","description":"Receive audio chunks from the TTS WebSocket.","payload":{"$ref":"#/components/schemas/textToSpeechStreaming_AudioOutput"}},"subpackage_textToSpeechStreaming.textToSpeechStreaming-server-1-Event Notification":{"name":"Event Notification","title":"Event Notification","description":"Receive completion event notifications from the TTS WebSocket (if send_completion_event is enabled)","payload":{"$ref":"#/components/schemas/textToSpeechStreaming_EventResponse"}},"subpackage_textToSpeechStreaming.textToSpeechStreaming-server-2-Error Response":{"name":"Error Response","title":"Error Response","description":"Receive error messages from the TTS WebSocket","payload":{"$ref":"#/components/schemas/textToSpeechStreaming_ErrorResponse"}},"subpackage_textToSpeechStreaming.textToSpeechStreaming-client-0-Configure Connection":{"name":"Configure Connection","title":"Configure Connection","description":"Send initial configuration for text-to-speech streaming","payload":{"$ref":"#/components/schemas/textToSpeechStreaming_ConfigureConnection"}},"subpackage_textToSpeechStreaming.textToSpeechStreaming-client-1-Send Text":{"name":"Send Text","title":"Send Text","description":"Send text chunk for speech synthesis","payload":{"$ref":"#/components/schemas/textToSpeechStreaming_SendText"}},"subpackage_textToSpeechStreaming.textToSpeechStreaming-client-2-Flush Signal":{"name":"Flush Signal","title":"Flush Signal","description":"Send signal to end text streaming.","payload":{"$ref":"#/components/schemas/textToSpeechStreaming_FlushSignal"}},"subpackage_textToSpeechStreaming.textToSpeechStreaming-client-3-Ping Signal":{"name":"Ping Signal","title":"Ping Signal","description":"Send ping signal to keep the TTS WebSocket connection alive.","payload":{"$ref":"#/components/schemas/textToSpeechStreaming_PingSignal"}},"subpackage_speechToTextStreaming.speechToTextStreaming-client-0-Audio Transcription Message":{"name":"Audio Transcription Message","title":"Audio Transcription Message","description":"Send audio data for real-time speech to text streaming","payload":{"$ref":"#/components/schemas/speechToTextStreaming_audioMessage"}},"subpackage_speechToTextStreaming.speechToTextStreaming-client-1-Speech Flush Signal":{"name":"Speech Flush Signal","title":"Speech Flush Signal","description":"Send signal to flush audio buffer and finalize transcription","payload":{"$ref":"#/components/schemas/speechToTextStreaming_flushSignal"}},"subpackage_speechToTextTranslateStreaming.speechToTextTranslateStreaming-client-0-Audio Translation Message":{"name":"Audio Translation Message","title":"Audio Translation Message","description":"Send audio data for real-time speech to text streaming with translation","payload":{"$ref":"#/components/schemas/speechToTextTranslateStreaming_audioMessage"}},"subpackage_speechToTextTranslateStreaming.speechToTextTranslateStreaming-client-1-Translation Config Message":{"name":"Translation Config Message","title":"Translation Config Message","description":"Send configuration for speech to text streaming with translation","payload":{"$ref":"#/components/schemas/speechToTextTranslateStreaming_configMessage"}},"subpackage_speechToTextTranslateStreaming.speechToTextTranslateStreaming-client-2-Speech Translate Flush Signal":{"name":"Speech Translate Flush Signal","title":"Speech Translate Flush Signal","description":"Send signal to flush audio buffer and finalize transcription and translation","payload":{"$ref":"#/components/schemas/speechToTextTranslateStreaming_flushSignal"}}},"schemas":{"speechToTextRealtimeStreaming_language_code":{"type":"string","enum":["auto","en-IN","hi-IN","bn-IN","kn-IN","ml-IN","mr-IN","or-IN","pa-IN","ta-IN","te-IN","gu-IN","as-IN","ur-IN","ne-IN","kok-IN","ks-IN","sd-IN","sa-IN","sat-IN","mni-IN","brx-IN","mai-IN","doi-IN"],"description":"BCP-47 language code of the input audio. **Required.**\n\n**Supported languages (saaras:v3-realtime):**\n- `auto`: Adaptive automatic language detection\n- `en-IN`: English\n- `hi-IN`: Hindi\n- `bn-IN`: Bengali\n- `kn-IN`: Kannada\n- `ml-IN`: Malayalam\n- `mr-IN`: Marathi\n- `or-IN`: Odia\n- `pa-IN`: Punjabi\n- `ta-IN`: Tamil\n- `te-IN`: Telugu\n- `gu-IN`: Gujarati\n- `as-IN`: Assamese\n- `ur-IN`: Urdu\n- `ne-IN`: Nepali\n- `kok-IN`: Konkani\n- `ks-IN`: Kashmiri\n- `sd-IN`: Sindhi\n- `sa-IN`: Sanskrit\n- `sat-IN`: Santali\n- `mni-IN`: Manipuri\n- `brx-IN`: Bodo\n- `mai-IN`: Maithili\n- `doi-IN`: Dogri\n","title":"speechToTextRealtimeStreaming_language_code"},"speechToTextRealtimeStreaming_model":{"type":"string","enum":["saaras:v3-realtime"],"default":"saaras:v3-realtime","description":"Speech-to-text model. Only `saaras:v3-realtime` is accepted on this endpoint.\n","title":"speechToTextRealtimeStreaming_model"},"speechToTextRealtimeStreaming_stream_type":{"type":"string","enum":["fast","balanced","simulated"],"default":"balanced","description":"Controls audio chunking and latency behaviour.\n\n- **fast**: Partials at low latency.\n- **balanced** (default): Partials with better accuracy.\n- **simulated**: No partials.\n","title":"speechToTextRealtimeStreaming_stream_type"},"speechToTextRealtimeStreaming_mode":{"type":"string","enum":["transcribe","translate","verbatim","translit","codemix"],"default":"transcribe","description":"Task applied on the final transcript, not on partial transcripts.\nStreaming partials are always straight transcription regardless of\nthis value.\n\n- **transcribe** (default): Standard transcription in the source language script.\n- **translate**: Translation to English.\n- **verbatim**: Exact transcription in the original script (includes disfluencies).\n- **translit**: Transliteration to Latin script.\n- **codemix**: Code-mixed output (native + English).\n","title":"speechToTextRealtimeStreaming_mode"},"speechToTextRealtimeStreaming_endpointing":{"type":"string","enum":["vad","manual"],"default":"vad","description":"Turn detection strategy.\n\n- **vad** (default): Voice Activity Detection automatically detects turn boundaries.\n- **manual**: The client delimits turns with `speech_start` / `speech_end` events.\n","title":"speechToTextRealtimeStreaming_endpointing"},"speechToTextRealtimeStreaming_encoding":{"type":"string","enum":["linear16","linear32","mulaw","alaw"],"default":"linear16","description":"Audio encoding of the input stream. **Mono only.**\n","title":"speechToTextRealtimeStreaming_encoding"},"speechToTextRealtimeStreaming_sample_rate":{"type":"string","enum":["16000","8000"],"description":"Audio sample rate in Hz. Must match the actual audio.\n\n**Accepted values:**\n- `8000`\n- `16000` (default)\n\nAny other value closes the connection with code `4000`.\n","title":"speechToTextRealtimeStreaming_sample_rate"},"speechToTextRealtimeStreaming_return_timestamps":{"type":"string","enum":["true","false"],"default":"false","description":"When `true`, adds segment-level `start_s` / `end_s` audio-time offsets\nto `transcript.final`.\n","title":"speechToTextRealtimeStreaming_return_timestamps"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginEvent":{"type":"string","enum":["session.begin"],"title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginEvent"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginConfig":{"type":"object","properties":{"model":{"type":"string"},"language_code":{"type":"string"},"encoding":{"type":"string"},"sample_rate":{"type":"integer"},"stream_type":{"type":"string"},"mode":{"type":"string"},"prompt":{"type":"string"},"turn_detection":{"type":"string","description":"Endpointing strategy, echoed as turn_detection (vad / manual)"},"threshold":{"type":"string","title":"float"},"prefix_padding_ms":{"type":"integer"},"silence_duration_ms":{"type":"integer"},"min_speech_duration_ms":{"type":"integer"},"return_timestamps":{"type":"boolean"}},"description":"Resolved server-side session configuration","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginConfig"},"speechToTextRealtimeStreaming_realtimeSessionBegin":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginEvent"},"request_id":{"type":"string","description":"Per-connection correlation id (quote it in support/debugging)"},"config":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginConfig","description":"Resolved server-side session configuration"}},"required":["event","request_id"],"description":"Sent immediately after the connection is accepted. The `config` block\nechoes the resolved surface. Note that the endpointing field is echoed as\n`turn_detection` (`vad` / `manual`), not `endpointing`.\n","title":"speechToTextRealtimeStreaming_realtimeSessionBegin"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechStartEvent":{"type":"string","enum":["vad.speech_start"],"title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechStartEvent"},"speechToTextRealtimeStreaming_realtimeVadSpeechStart":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechStartEvent"},"utterance_idx":{"type":"integer","description":"Zero-based utterance counter for the session"},"confidence":{"type":"string","title":"float","description":"VAD confidence (0.0–1.0)"}},"required":["event","utterance_idx"],"description":"Emitted when VAD detects the start of speech (endpointing=vad only).","title":"speechToTextRealtimeStreaming_realtimeVadSpeechStart"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechEndEvent":{"type":"string","enum":["vad.speech_end"],"title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechEndEvent"},"speechToTextRealtimeStreaming_realtimeVadSpeechEnd":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechEndEvent"},"utterance_idx":{"type":"integer","description":"Zero-based utterance counter for the session"},"confidence":{"type":"string","title":"float","description":"VAD confidence (0.0–1.0)"}},"required":["event","utterance_idx"],"description":"Emitted when VAD detects end of speech (endpointing=vad only).","title":"speechToTextRealtimeStreaming_realtimeVadSpeechEnd"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptPartialEvent":{"type":"string","enum":["transcript.partial"],"title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptPartialEvent"},"speechToTextRealtimeStreaming_realtimeTranscriptPartial":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptPartialEvent"},"utterance_idx":{"type":"integer","description":"Zero-based utterance counter for the session"},"text":{"type":"string","description":"Partial transcript text so far"},"language":{"type":"string","description":"Detected language. Present only when `language_code=auto` was\nselected on the connection.\n"}},"required":["event","utterance_idx","text"],"description":"Streaming partial result during an active utterance (not sent in\n`simulated`). Partials always stream straight transcription in the sticky\nlanguage. No `confidence` is emitted.\n","title":"speechToTextRealtimeStreaming_realtimeTranscriptPartial"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptFinalEvent":{"type":"string","enum":["transcript.final"],"title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptFinalEvent"},"speechToTextRealtimeStreaming_realtimeTranscriptFinal":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptFinalEvent"},"utterance_idx":{"type":"integer","description":"Zero-based utterance counter for the session"},"text":{"type":"string","description":"Final transcript text for the utterance"},"language":{"type":"string","description":"Detected language (BCP-47, e.g. `gu-IN`). Present only when\n`language_code=auto` was selected on the connection.\n"},"language_confidence":{"type":"string","title":"float","description":"Detection confidence (0.0–1.0). Present only when\n`language_code=auto` was selected on the connection.\n"},"start_s":{"type":"string","title":"float","description":"Segment start (seconds since stream start). Present only when\n`return_timestamps=true`.\n"},"end_s":{"type":"string","title":"float","description":"Segment end (seconds since stream start). Present only when\n`return_timestamps=true`.\n"}},"required":["event","utterance_idx","text"],"description":"Emitted once per utterance when finalization completes by the\nnon-streaming finalizer. No `confidence` and no `words` array are emitted\nby this endpoint, even with `return_timestamps=true`.\n","title":"speechToTextRealtimeStreaming_realtimeTranscriptFinal"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdatedEvent":{"type":"string","enum":["config.updated"],"title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdatedEvent"},"speechToTextRealtimeStreaming_realtimeConfigUpdated":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdatedEvent"},"applied":{"type":"array","items":{"type":"string"},"description":"Config keys that were applied"}},"required":["event","applied"],"description":"Acknowledges a config.update, listing the keys that were applied.","title":"speechToTextRealtimeStreaming_realtimeConfigUpdated"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePongEvent":{"type":"string","enum":["pong"],"title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePongEvent"},"speechToTextRealtimeStreaming_realtimePong":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePongEvent"}},"required":["event"],"description":"Response to a client ping.","title":"speechToTextRealtimeStreaming_realtimePong"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionEndEvent":{"type":"string","enum":["session.end"],"title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionEndEvent"},"speechToTextRealtimeStreaming_realtimeSessionEnd":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionEndEvent"},"request_id":{"type":"string","description":"Per-connection correlation id"},"total_duration_s":{"type":"string","title":"float","description":"Total wall-clock session duration in seconds"},"total_utterances":{"type":"integer","description":"Number of utterances processed during the session"},"audio_duration_s":{"type":"string","title":"float","description":"Total audio duration processed in seconds (the billed audio quantity)"}},"required":["event","request_id"],"description":"Sent when the session closes (client `end`, inactivity timeout, max\nduration, or server error). Keyed by `request_id` (not `session_id`).\n","title":"speechToTextRealtimeStreaming_realtimeSessionEnd"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeErrorEvent":{"type":"string","enum":["error"],"title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeErrorEvent"},"speechToTextRealtimeStreaming_realtimeError":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeErrorEvent"},"code":{"type":"string","description":"Machine-readable error code"},"is_fatal":{"type":"boolean","description":"Whether the error is fatal (the connection will be closed)"},"message":{"type":"string","description":"Human-readable error message"},"status_code":{"type":"integer","description":"HTTP-equivalent status code, present on fatal rejections\n(e.g. `401`, `403`, `503`, `400`, `408`, `413`, `500`). Useful\nbecause the WebSocket close reason string is capped at 123 bytes.\n"}},"required":["event","code","is_fatal","message"],"description":"Non-fatal or fatal error notification. The wire payload always carries\n`event`, `code`, `is_fatal`, and `message`, plus an optional\n`status_code` on fatal rejections.\n\n**WebSocket close codes:**\n- `1003`: Rate limit exceeded, quota exhausted, or invalid subscription key.\n- `1008`: Inactivity timeout.\n- `1011`: Internal server error.\n- `4000`: Application rejection (beta denied, invalid model, unsupported `language_code` / query param, gRPC backend unavailable). The close reason string is capped at 123 bytes.\n\n**Known error codes:**\n- `invalid_config` (non-fatal): A `config.update` value was rejected (e.g. changing `stream_type` to/from `simulated`). The session continues with the previous config.\n","title":"speechToTextRealtimeStreaming_realtimeError"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeAudioInputEvent":{"type":"string","enum":["audio_input"],"default":"audio_input","description":"Event type identifier","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeAudioInputEvent"},"speechToTextRealtimeStreaming_realtimeAudioInput":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeAudioInputEvent","description":"Event type identifier"},"audio":{"type":"string","format":"base64","description":"Audio bytes as a base64-encoded string"}},"required":["event","audio"],"description":"Audio chunk sent as a JSON message. The audio must be provided as a\nbase64-encoded string in the `audio` field.\n","title":"speechToTextRealtimeStreaming_realtimeAudioInput"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechStartEvent":{"type":"string","enum":["speech_start"],"default":"speech_start","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechStartEvent"},"speechToTextRealtimeStreaming_realtimeSpeechStart":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechStartEvent"}},"required":["event"],"description":"Signals the beginning of an utterance (endpointing=manual only). The\nserver starts streaming partial results.\n","title":"speechToTextRealtimeStreaming_realtimeSpeechStart"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechEndEvent":{"type":"string","enum":["speech_end"],"default":"speech_end","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechEndEvent"},"speechToTextRealtimeStreaming_realtimeSpeechEnd":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechEndEvent"}},"required":["event"],"description":"Signals end of speech for the current utterance (endpointing=manual\nonly). The server finalizes the transcript.\n","title":"speechToTextRealtimeStreaming_realtimeSpeechEnd"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeFlushEvent":{"type":"string","enum":["flush"],"default":"flush","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeFlushEvent"},"speechToTextRealtimeStreaming_realtimeFlush":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeFlushEvent"}},"required":["event"],"description":"Force-finalizes buffered audio (endpointing=manual only). The server\nruns finalization on whatever audio has been buffered so far.\n","title":"speechToTextRealtimeStreaming_realtimeFlush"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEvent":{"type":"string","enum":["config.update"],"default":"config.update","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEvent"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateMode":{"type":"string","enum":["transcribe","translate","verbatim","translit","codemix"],"description":"Non-streaming task selector. Boundary-gated.","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateMode"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateStreamType":{"type":"string","enum":["fast","balanced"],"description":"`fast`↔`balanced` swap. Boundary-gated. Changing to/from `simulated` is rejected.","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateStreamType"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEndpointing":{"type":"string","enum":["vad","manual"],"description":"`vad`/`manual` swap. Boundary-gated.","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEndpointing"},"speechToTextRealtimeStreaming_realtimeConfigUpdate":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEvent"},"language_code":{"type":"string","description":"Re-arms auto-LID and resets the sticky language. Boundary-gated."},"prompt":{"type":"string","description":"Non-streaming context hint (empty string clears it). Boundary-gated."},"mode":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateMode","description":"Non-streaming task selector. Boundary-gated."},"stream_type":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateStreamType","description":"`fast`↔`balanced` swap. Boundary-gated. Changing to/from `simulated` is rejected."},"endpointing":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEndpointing","description":"`vad`/`manual` swap. Boundary-gated."},"threshold":{"type":"string","title":"float","description":"VAD activation threshold; applied immediately (vad only)."},"silence_duration_ms":{"type":"integer","description":"End-of-turn silence; applied immediately (vad only)."},"min_speech_duration_ms":{"type":"integer","description":"Minimum speech duration; applied immediately (vad only)."}},"required":["event"],"description":"Updates session config mid-stream. `language_code`, `mode`, `prompt`,\n`stream_type`, and `endpointing` are boundary-gated: validated on arrival\nbut deferred and applied at the next utterance boundary while an utterance\nis in progress, so each utterance's partials and final use one consistent\nconfig snapshot. The VAD detector knobs (`threshold`,\n`silence_duration_ms`, `min_speech_duration_ms`) apply immediately on the\nnext VAD rebuild and are ignored under `endpointing=manual`. Changing\n`stream_type` to/from `simulated` is rejected (`invalid_config`).\n\nThe server replies with `config.updated` (listing the applied keys), or an\n`error` with code `invalid_config` on a rejected value.\n","title":"speechToTextRealtimeStreaming_realtimeConfigUpdate"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeEndEvent":{"type":"string","enum":["end"],"default":"end","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeEndEvent"},"speechToTextRealtimeStreaming_realtimeEnd":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeEndEvent"}},"required":["event"],"description":"Gracefully ends the session. The server finalizes any pending utterance\nand closes the connection.\n","title":"speechToTextRealtimeStreaming_realtimeEnd"},"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePingEvent":{"type":"string","enum":["ping"],"default":"ping","title":"ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePingEvent"},"speechToTextRealtimeStreaming_realtimePing":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePingEvent"}},"required":["event"],"description":"Keepalive ping.","title":"speechToTextRealtimeStreaming_realtimePing"},"textToSpeechStreaming_model":{"type":"string","enum":["bulbul:v2","bulbul:v3"],"default":"bulbul:v2","description":"Text to speech model to use.\n- **bulbul:v2** (default): Standard TTS model with pitch/loudness support\n- **bulbul:v3**: Advanced model with temperature control (no pitch/loudness)\n","title":"textToSpeechStreaming_model"},"textToSpeechStreaming_send_completion_event":{"type":"string","enum":["true","false"],"default":"true","description":"Enable completion event notifications when TTS generation finishes. When set to true, an event message will be sent when the final audio chunk has been generated.","title":"textToSpeechStreaming_send_completion_event"},"ChannelsTextToSpeechStreamingMessagesAudioOutputType":{"type":"string","enum":["audio"],"title":"ChannelsTextToSpeechStreamingMessagesAudioOutputType"},"ChannelsTextToSpeechStreamingMessagesAudioOutputData":{"type":"object","properties":{"content_type":{"type":"string","description":"MIME type of the audio content (e.g., 'audio/mp3', 'audio/wav')"},"audio":{"type":"string","format":"base64","description":"Base64-encoded audio data ready for playback or download"},"request_id":{"type":"string","description":"Unique identifier for the request"}},"required":["content_type","audio"],"title":"ChannelsTextToSpeechStreamingMessagesAudioOutputData"},"textToSpeechStreaming_AudioOutput":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesAudioOutputType"},"data":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesAudioOutputData"}},"required":["type","data"],"title":"textToSpeechStreaming_AudioOutput"},"ChannelsTextToSpeechStreamingMessagesEventResponseType":{"type":"string","enum":["event"],"description":"Message type identifier for events","title":"ChannelsTextToSpeechStreamingMessagesEventResponseType"},"ChannelsTextToSpeechStreamingMessagesEventResponseDataEventType":{"type":"string","enum":["final"],"description":"Type of event that occurred","title":"ChannelsTextToSpeechStreamingMessagesEventResponseDataEventType"},"ChannelsTextToSpeechStreamingMessagesEventResponseData":{"type":"object","properties":{"event_type":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesEventResponseDataEventType","description":"Type of event that occurred"},"message":{"type":"string","description":"Human-readable description of the event"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the event occurred"}},"required":["event_type"],"title":"ChannelsTextToSpeechStreamingMessagesEventResponseData"},"textToSpeechStreaming_EventResponse":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesEventResponseType","description":"Message type identifier for events"},"data":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesEventResponseData"}},"required":["type","data"],"description":"Event notification message sent when specific events occur during TTS processing","title":"textToSpeechStreaming_EventResponse"},"ChannelsTextToSpeechStreamingMessagesErrorResponseType":{"type":"string","enum":["error"],"title":"ChannelsTextToSpeechStreamingMessagesErrorResponseType"},"ChannelsTextToSpeechStreamingMessagesErrorResponseData":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"integer","description":"Optional error code for programmatic error handling"},"details":{"type":"object","additionalProperties":{"description":"Any type"},"description":"Additional error details and context information"},"request_id":{"type":"string","description":"Unique identifier for the request"}},"required":["message"],"title":"ChannelsTextToSpeechStreamingMessagesErrorResponseData"},"textToSpeechStreaming_ErrorResponse":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesErrorResponseType"},"data":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesErrorResponseData"}},"required":["type","data"],"title":"textToSpeechStreaming_ErrorResponse"},"ChannelsTextToSpeechStreamingMessagesConfigureConnectionType":{"type":"string","enum":["config"],"title":"ChannelsTextToSpeechStreamingMessagesConfigureConnectionType"},"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataModel":{"type":"string","enum":["bulbul:v2","bulbul:v3"],"default":"bulbul:v2","description":"Specifies the model to use for text-to-speech conversion.\n- **bulbul:v2** (default): Standard TTS model with pitch/loudness support\n- **bulbul:v3**: Advanced model with temperature control (no pitch/loudness)\n","title":"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataModel"},"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataLanguageCode":{"type":"string","enum":["bn-IN","en-IN","gu-IN","hi-IN","kn-IN","ml-IN","mr-IN","od-IN","pa-IN","ta-IN","te-IN"],"description":"The language of the text in BCP-47 format","title":"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataLanguageCode"},"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataSpeaker":{"type":"string","enum":["anushka","abhilash","manisha","vidya","arya","karun","hitesh","aditya","ritu","priya","neha","rahul","pooja","rohan","simran","kavya","amit","dev","ishita","shreya","ratan","varun","manan","sumit","roopa","kabir","aayan","shubh","ashutosh","advait","anand","tanya","tarun","sunny","mani","gokul","vijay","shruti","suhani","mohit","kavitha","rehan","soham","rupali"],"default":"anushka","description":"The speaker voice to be used for the output audio.\n\n**Default:** shubh (for bulbul:v3), anushka (for bulbul:v2)\n\n**Model Compatibility (Speakers compatible with respective model):**\n- **bulbul:v3:** shubh (default), aditya, ritu, priya, neha, rahul, pooja, rohan, simran, kavya, amit, dev, ishita, shreya, ratan, varun, manan, sumit, roopa, kabir, aayan, ashutosh, advait, anand, tanya, tarun, sunny, mani, gokul, vijay, shruti, suhani, mohit, kavitha, rehan, soham, rupali\n- **bulbul:v2:**\n  - Female: anushka (default), manisha, vidya, arya\n  - Male: abhilash, karun, hitesh\n\n**Note:** Speaker selection must match the chosen model version.\n\n**Important:** Speaker names are case-sensitive and must be lowercase (e.g., `ritu` not `Ritu`).\n","title":"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataSpeaker"},"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataSpeechSampleRate":{"type":"string","enum":["8000","16000","22050","24000"],"description":"Specifies the sample rate of the output audio. Supported values are \n8000, 16000, 22050, 24000 Hz.\n\n**Model-specific defaults:**\n- **bulbul:v2:** 22050 Hz\n- **bulbul:v3:** 24000 Hz\n","title":"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataSpeechSampleRate"},"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataOutputAudioCodec":{"type":"string","enum":["linear16","mulaw","alaw","opus","flac","aac","wav","mp3"],"default":"mp3","description":"Audio codec (currently supports MP3 only, optimized for real-time playback)","title":"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataOutputAudioCodec"},"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataOutputAudioBitrate":{"type":"string","enum":["32k","64k","96k","128k","192k"],"default":"128k","description":"Audio bitrate (choose from 5 supported bitrate options)","title":"ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataOutputAudioBitrate"},"ChannelsTextToSpeechStreamingMessagesConfigureConnectionData":{"type":"object","properties":{"model":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataModel","default":"bulbul:v2","description":"Specifies the model to use for text-to-speech conversion.\n- **bulbul:v2** (default): Standard TTS model with pitch/loudness support\n- **bulbul:v3**: Advanced model with temperature control (no pitch/loudness)\n"},"language_code":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataLanguageCode","description":"The language of the text in BCP-47 format"},"speaker":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataSpeaker","description":"The speaker voice to be used for the output audio.\n\n**Default:** shubh (for bulbul:v3), anushka (for bulbul:v2)\n\n**Model Compatibility (Speakers compatible with respective model):**\n- **bulbul:v3:** shubh (default), aditya, ritu, priya, neha, rahul, pooja, rohan, simran, kavya, amit, dev, ishita, shreya, ratan, varun, manan, sumit, roopa, kabir, aayan, ashutosh, advait, anand, tanya, tarun, sunny, mani, gokul, vijay, shruti, suhani, mohit, kavitha, rehan, soham, rupali\n- **bulbul:v2:**\n  - Female: anushka (default), manisha, vidya, arya\n  - Male: abhilash, karun, hitesh\n\n**Note:** Speaker selection must match the chosen model version.\n\n**Important:** Speaker names are case-sensitive and must be lowercase (e.g., `ritu` not `Ritu`).\n"},"pitch":{"type":"number","format":"double","default":0,"description":"Controls the pitch of the audio. Lower values result in a deeper voice, \nwhile higher values make it sharper. The suitable range is between -0.75 \nand 0.75. Default is 0.0.\n\n**Note:** NOT supported for bulbul:v3. Will be ignored if provided.\n"},"pace":{"type":"number","format":"double","default":1,"description":"Controls the speed of the audio. Lower values result in slower speech, \nwhile higher values make it faster. Default is 1.0.\n\n**Model-specific ranges:**\n- **bulbul:v2:** 0.3 to 3.0\n- **bulbul:v3:** 0.5 to 2.0\n"},"loudness":{"type":"number","format":"double","default":1,"description":"Controls the loudness of the audio. Lower values result in quieter audio, \nwhile higher values make it louder. The suitable range is between 0.3 \nand 3.0. Default is 1.0.\n\n**Note:** NOT supported for bulbul:v3. Will be ignored if provided.\n"},"temperature":{"type":"number","format":"double","default":0.6,"description":"Controls the randomness of the output. Lower values make the output more \nfocused and deterministic, while higher values make it more random. \nThe suitable range is between 0.01 and 1.0. Default is 0.6.\n\n**Note:** Only supported for bulbul:v3. Will be ignored for bulbul:v2.\n"},"speech_sample_rate":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataSpeechSampleRate","default":22050,"description":"Specifies the sample rate of the output audio. Supported values are \n8000, 16000, 22050, 24000 Hz.\n\n**Model-specific defaults:**\n- **bulbul:v2:** 22050 Hz\n- **bulbul:v3:** 24000 Hz\n"},"enable_preprocessing":{"type":"boolean","default":false,"description":"Controls whether normalization of English words and numeric entities \n(e.g., numbers, dates) is performed. Set to true for better handling \nof mixed-language text.\n\n**Model-specific defaults:**\n- **bulbul:v2:** false (optional)\n- **bulbul:v3:** Always enabled (cannot be disabled)\n"},"output_audio_codec":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataOutputAudioCodec","default":"mp3","description":"Audio codec (currently supports MP3 only, optimized for real-time playback)"},"output_audio_bitrate":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesConfigureConnectionDataOutputAudioBitrate","default":"128k","description":"Audio bitrate (choose from 5 supported bitrate options)"},"dict_id":{"type":"string","description":"The ID of a pronunciation dictionary to apply during synthesis. \nWhen provided, matching words in the input text will be replaced \nwith their custom pronunciations before generating speech.\n\nCreate and manage dictionaries via the `/text-to-speech/pronunciation-dictionary` endpoints.\n\n**Note:** Only supported by **bulbul:v3**.\n"},"min_buffer_size":{"type":"integer","default":50,"description":"Minimum character length that triggers buffer flushing for TTS model processing"},"max_chunk_length":{"type":"integer","default":150,"description":"Maximum length for sentence splitting (adjust based on content length)"}},"required":["language_code","speaker"],"title":"ChannelsTextToSpeechStreamingMessagesConfigureConnectionData"},"textToSpeechStreaming_ConfigureConnection":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesConfigureConnectionType"},"data":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesConfigureConnectionData"}},"required":["type","data"],"description":"Configuration message required as the first message after establishing the WebSocket connection. \nThis initializes TTS parameters and can be updated at any time during the WebSocket lifecycle \nby sending a new config message. When a config update is sent, any text currently in the buffer \nwill be automatically flushed and processed before applying the new configuration.\n\n**Model-Specific Notes:**\n- **bulbul:v2:** Supports pitch, loudness, pace (0.3-3.0). Default sample rate: 22050 Hz.\n- **bulbul:v3:** Does NOT support pitch/loudness. Pace range: 0.5-2.0. Supports temperature. Default sample rate: 24000 Hz.\n","title":"textToSpeechStreaming_ConfigureConnection"},"ChannelsTextToSpeechStreamingMessagesSendTextType":{"type":"string","enum":["text"],"title":"ChannelsTextToSpeechStreamingMessagesSendTextType"},"ChannelsTextToSpeechStreamingMessagesSendTextData":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"title":"ChannelsTextToSpeechStreamingMessagesSendTextData"},"textToSpeechStreaming_SendText":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesSendTextType"},"data":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesSendTextData"}},"required":["type","data"],"title":"textToSpeechStreaming_SendText"},"ChannelsTextToSpeechStreamingMessagesFlushSignalType":{"type":"string","enum":["flush"],"default":"flush","title":"ChannelsTextToSpeechStreamingMessagesFlushSignalType"},"textToSpeechStreaming_FlushSignal":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesFlushSignalType"}},"required":["type"],"description":"Forces the text buffer to process immediately, regardless of the min_buffer_size threshold. \nUse this when you need to process remaining text that hasn't reached the minimum buffer size.\n","title":"textToSpeechStreaming_FlushSignal"},"ChannelsTextToSpeechStreamingMessagesPingSignalType":{"type":"string","enum":["ping"],"default":"ping","title":"ChannelsTextToSpeechStreamingMessagesPingSignalType"},"textToSpeechStreaming_PingSignal":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ChannelsTextToSpeechStreamingMessagesPingSignalType"}},"required":["type"],"description":"Send ping signal to keep the WebSocket connection alive. The connection automatically \ncloses after one minute of inactivity.\n","title":"textToSpeechStreaming_PingSignal"},"speechToTextStreaming_language-code":{"type":"string","enum":["unknown","en-IN","hi-IN","bn-IN","gu-IN","kn-IN","ml-IN","mr-IN","od-IN","pa-IN","ta-IN","te-IN","as-IN","ur-IN","ne-IN","kok-IN","ks-IN","sd-IN","sa-IN","sat-IN","mni-IN","brx-IN","mai-IN","doi-IN"],"description":"Specifies the language of the input audio in BCP-47 format.\n\n**Available Options:**\n- `unknown` (default): Use when the language is not known; the API will auto-detect.\n- `hi-IN`: Hindi\n- `bn-IN`: Bengali\n- `gu-IN`: Gujarati\n- `kn-IN`: Kannada\n- `ml-IN`: Malayalam\n- `mr-IN`: Marathi\n- `od-IN`: Odia\n- `pa-IN`: Punjabi\n- `ta-IN`: Tamil\n- `te-IN`: Telugu\n- `en-IN`: English\n- `as-IN`: Assamese\n- `ur-IN`: Urdu\n- `ne-IN`: Nepali\n- `kok-IN`: Konkani\n- `ks-IN`: Kashmiri\n- `sd-IN`: Sindhi\n- `sa-IN`: Sanskrit\n- `sat-IN`: Santali\n- `mni-IN`: Manipuri\n- `brx-IN`: Bodo\n- `mai-IN`: Maithili\n- `doi-IN`: Dogri\n","title":"speechToTextStreaming_language-code"},"speechToTextStreaming_model":{"type":"string","enum":["saaras:v3","saaras:v4"],"default":"saaras:v3","description":"Specifies the model to use for speech-to-text conversion.\n\n- **saaras:v3** (default, recommended): State-of-the-art model with flexible output formats. Supports multiple modes via the `mode` parameter: transcribe, translate, verbatim, translit, codemix.\n\n- **saaras:v4** (latest): Flexible output formats across all modes (transcribe, translate, verbatim, translit, codemix), supporting Global + Indian English and 22 Indic languages.\n","title":"speechToTextStreaming_model"},"speechToTextStreaming_mode":{"type":"string","enum":["transcribe","translate","verbatim","translit","codemix"],"default":"transcribe","description":"Mode of operation. **Only applicable when using saaras:v3 or saaras:v4 models.**\n\nExample audio: 'मेरा फोन नंबर है 9840950950'\n\n- **transcribe** (default): Standard transcription in the original language with proper formatting and number normalization.\n  - Output: `मेरा फोन नंबर है 9840950950`\n\n- **translate**: Translates speech from any supported Indic language to English.\n  - Output: `My phone number is 9840950950`\n\n- **verbatim**: Exact word-for-word transcription without normalization, preserving filler words and spoken numbers as-is.\n  - Output: `मेरा फोन नंबर है नौ आठ चार zero नौ पांच zero नौ पांच zero`\n\n- **translit**: Romanization - Transliterates speech to Latin/Roman script only.\n  - Output: `mera phone number hai 9840950950`\n\n- **codemix**: Code-mixed text with English words in English and Indic words in native script.\n  - Output: `मेरा phone number है 9840950950`\n","title":"speechToTextStreaming_mode"},"speechToTextStreaming_sample_rate":{"type":"string","enum":["16000","8000"],"description":"Audio sample rate for the WebSocket connection. When specified as a connection parameter, only 16kHz and 8kHz are supported. 8kHz is only available via this connection parameter. If not specified, defaults to 16kHz.","title":"speechToTextStreaming_sample_rate"},"speechToTextStreaming_high_vad_sensitivity":{"type":"string","enum":["true","false"],"description":"Enable high VAD (Voice Activity Detection) sensitivity","title":"speechToTextStreaming_high_vad_sensitivity"},"speechToTextStreaming_vad_signals":{"type":"string","enum":["true","false"],"description":"Enable VAD signals in response","title":"speechToTextStreaming_vad_signals"},"speechToTextStreaming_flush_signal":{"type":"string","enum":["true","false"],"description":"Signal to flush the audio buffer and finalize transcription","title":"speechToTextStreaming_flush_signal"},"speechToTextStreaming_input_audio_codec":{"type":"string","enum":["wav","pcm_s16le","pcm_l16","pcm_raw"],"description":"Audio codec/format of the input stream. Use this when sending raw PCM audio.\nSupported values: wav, pcm_s16le, pcm_l16, pcm_raw.\n","title":"speechToTextStreaming_input_audio_codec"},"ResponseType":{"type":"string","enum":["data","error","events"],"description":"Type of WebSocket response","title":"ResponseType"},"SpeechToTextTranscriptionDataTimestamps":{"type":"object","properties":{},"description":"Always `null` over the WebSocket API — timestamps are not supported for streaming; use the REST or Batch API for timestamped transcripts.","title":"SpeechToTextTranscriptionDataTimestamps"},"SpeechToTextTranscriptionDataDiarizedTranscript":{"type":"object","properties":{},"description":"Always `null` over the WebSocket API — diarization is not supported for streaming; use the Batch API for diarized transcripts.","title":"SpeechToTextTranscriptionDataDiarizedTranscript"},"TranscriptionMetrics":{"type":"object","properties":{"audio_duration":{"type":"number","format":"double","description":"Duration of processed audio in seconds"},"processing_latency":{"type":"number","format":"double","description":"Processing latency in seconds"}},"required":["audio_duration","processing_latency"],"title":"TranscriptionMetrics"},"SpeechToTextTranscriptionData":{"type":"object","properties":{"request_id":{"type":"string","description":"Unique identifier for the request"},"transcript":{"type":"string","description":"Transcript of the provided speech in original language"},"timestamps":{"oneOf":[{"$ref":"#/components/schemas/SpeechToTextTranscriptionDataTimestamps"},{"type":"null"}],"description":"Always `null` over the WebSocket API — timestamps are not supported for streaming; use the REST or Batch API for timestamped transcripts."},"diarized_transcript":{"oneOf":[{"$ref":"#/components/schemas/SpeechToTextTranscriptionDataDiarizedTranscript"},{"type":"null"}],"description":"Always `null` over the WebSocket API — diarization is not supported for streaming; use the Batch API for diarized transcripts."},"language_code":{"type":["string","null"],"description":"BCP-47 code of detected language"},"language_probability":{"type":["string","null"],"title":"float","description":"Float value (0.0 to 1.0) indicating the probability of the detected language being correct. Higher values indicate higher confidence.\n\n**When it returns a value:**\n- When `language_code` is not provided in the request\n- When `language_code` is set to `unknown`\n\n**When it returns null:**\n- When a specific `language_code` is provided (language detection is skipped)\n"},"metrics":{"$ref":"#/components/schemas/TranscriptionMetrics"}},"required":["request_id","transcript","metrics"],"title":"SpeechToTextTranscriptionData"},"ErrorData":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"string","description":"Error code"}},"required":["error","code"],"title":"ErrorData"},"EventsDataSignalType":{"type":"string","enum":["START_SPEECH","END_SPEECH"],"description":"VAD signal type","title":"EventsDataSignalType"},"EventsData":{"type":"object","properties":{"event_type":{"type":"string","description":"Type of event"},"timestamp":{"type":"string","format":"date-time","description":"Event timestamp"},"signal_type":{"$ref":"#/components/schemas/EventsDataSignalType","description":"VAD signal type"},"occured_at":{"type":"string","title":"float","description":"Epoch timestamp when the event occurred"}},"description":"VAD events are sent when vad_signals=true. Fields may vary by event type.\n","title":"EventsData"},"SpeechToTextResponseData":{"oneOf":[{"$ref":"#/components/schemas/SpeechToTextTranscriptionData"},{"$ref":"#/components/schemas/ErrorData"},{"$ref":"#/components/schemas/EventsData"}],"title":"SpeechToTextResponseData"},"speechToTextStreaming_speechToTextStreamingResponse":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ResponseType"},"data":{"$ref":"#/components/schemas/SpeechToTextResponseData"}},"required":["type","data"],"title":"speechToTextStreaming_speechToTextStreamingResponse"},"AudioDataSampleRate":{"type":"string","enum":["16000","22050","24000"],"description":"Audio sample rate in Hz for individual audio messages. \n\n**Backward Compatibility**: This property is maintained for legacy support.\n**Recommended**: Use the connection-level sample_rate parameter instead.\n**Note**: 8kHz is only supported via connection parameter, not in AudioData messages.\n\nSupported values: 16kHz (preferred), 22.05kHz, 24kHz\n","title":"AudioDataSampleRate"},"AudioDataEncoding":{"type":"string","enum":["audio/wav"],"default":"audio/wav","description":"Audio encoding format","title":"AudioDataEncoding"},"AudioData":{"type":"object","properties":{"data":{"type":"string","format":"base64","description":"Base64 encoded audio data"},"sample_rate":{"$ref":"#/components/schemas/AudioDataSampleRate","description":"Audio sample rate in Hz for individual audio messages. \n\n**Backward Compatibility**: This property is maintained for legacy support.\n**Recommended**: Use the connection-level sample_rate parameter instead.\n**Note**: 8kHz is only supported via connection parameter, not in AudioData messages.\n\nSupported values: 16kHz (preferred), 22.05kHz, 24kHz\n"},"encoding":{"$ref":"#/components/schemas/AudioDataEncoding","description":"Audio encoding format"}},"required":["data","sample_rate","encoding"],"title":"AudioData"},"speechToTextStreaming_audioMessage":{"type":"object","properties":{"audio":{"$ref":"#/components/schemas/AudioData"}},"required":["audio"],"title":"speechToTextStreaming_audioMessage"},"ChannelsSpeechToTextStreamingMessagesFlushSignalType":{"type":"string","enum":["flush"],"default":"flush","description":"Type identifier for flush signal","title":"ChannelsSpeechToTextStreamingMessagesFlushSignalType"},"speechToTextStreaming_flushSignal":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ChannelsSpeechToTextStreamingMessagesFlushSignalType","description":"Type identifier for flush signal"}},"required":["type"],"description":"Signal to flush the audio buffer and force finalize partial transcriptions/translations","title":"speechToTextStreaming_flushSignal"},"speechToTextTranslateStreaming_model":{"type":"string","enum":["saaras:v2.5"],"default":"saaras:v2.5","description":"Model to be used for speech to text translation.\n\n- **saaras:v2.5** (default): Translation model that translates audio from any spoken Indic language to English.\n  - Example: Hindi audio → English text output\n\nFor the latest model (saaras:v3), use the `/speech-to-text` endpoint with `mode=\"translate\"`.\n","title":"speechToTextTranslateStreaming_model"},"speechToTextTranslateStreaming_sample_rate":{"type":"string","enum":["16000","8000"],"description":"Audio sample rate for the WebSocket connection. When specified as a connection parameter, only 16kHz and 8kHz are supported. 8kHz is only available via this connection parameter. If not specified, defaults to 16kHz.","title":"speechToTextTranslateStreaming_sample_rate"},"speechToTextTranslateStreaming_high_vad_sensitivity":{"type":"string","enum":["true","false"],"description":"Enable high VAD (Voice Activity Detection) sensitivity","title":"speechToTextTranslateStreaming_high_vad_sensitivity"},"speechToTextTranslateStreaming_vad_signals":{"type":"string","enum":["true","false"],"description":"Enable VAD signals in response","title":"speechToTextTranslateStreaming_vad_signals"},"speechToTextTranslateStreaming_flush_signal":{"type":"string","enum":["true","false"],"description":"Signal to flush the audio buffer and finalize transcription and translation","title":"speechToTextTranslateStreaming_flush_signal"},"speechToTextTranslateStreaming_input_audio_codec":{"type":"string","enum":["wav","pcm_s16le","pcm_l16","pcm_raw"],"description":"Audio codec/format of the input stream. Use this when sending raw PCM audio.\nSupported values: wav, pcm_s16le, pcm_l16, pcm_raw.\n","title":"speechToTextTranslateStreaming_input_audio_codec"},"SpeechToTextTranslateTranscriptionData":{"type":"object","properties":{"request_id":{"type":"string","description":"Unique identifier for the request"},"transcript":{"type":"string","description":"English translation of the provided speech"},"language_code":{"type":["string","null"],"description":"BCP-47 code of detected source language (null when language detection is in progress)"},"language_probability":{"type":["string","null"],"title":"float","description":"Float value (0.0 to 1.0) indicating the probability of the detected language being correct. Higher values indicate higher confidence.\n\n**When it returns a value:**\n- When `language_code` is not provided in the request\n- When `language_code` is set to `unknown`\n\n**When it returns null:**\n- When a specific `language_code` is provided (language detection is skipped)\n\nThe parameter is always present in the response.\n"},"metrics":{"$ref":"#/components/schemas/TranscriptionMetrics"}},"required":["request_id","transcript","metrics"],"title":"SpeechToTextTranslateTranscriptionData"},"SpeechToTextTranslateResponseData":{"oneOf":[{"$ref":"#/components/schemas/SpeechToTextTranslateTranscriptionData"},{"$ref":"#/components/schemas/ErrorData"},{"$ref":"#/components/schemas/EventsData"}],"title":"SpeechToTextTranslateResponseData"},"speechToTextTranslateStreaming_speechToTextTranslateStreamingResponse":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ResponseType"},"data":{"$ref":"#/components/schemas/SpeechToTextTranslateResponseData"}},"required":["type","data"],"title":"speechToTextTranslateStreaming_speechToTextTranslateStreamingResponse"},"speechToTextTranslateStreaming_audioMessage":{"type":"object","properties":{"audio":{"$ref":"#/components/schemas/AudioData"}},"required":["audio"],"title":"speechToTextTranslateStreaming_audioMessage"},"ChannelsSpeechToTextTranslateStreamingMessagesConfigMessageType":{"type":"string","enum":["config"],"default":"config","description":"Message type identifier for configuration","title":"ChannelsSpeechToTextTranslateStreamingMessagesConfigMessageType"},"speechToTextTranslateStreaming_configMessage":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ChannelsSpeechToTextTranslateStreamingMessagesConfigMessageType","description":"Message type identifier for configuration"},"prompt":{"type":"string","default":"","description":"Prompt for ASR model to improve transcription accuracy."}},"required":["type"],"title":"speechToTextTranslateStreaming_configMessage"},"ChannelsSpeechToTextTranslateStreamingMessagesFlushSignalType":{"type":"string","enum":["flush"],"default":"flush","description":"Type identifier for flush signal","title":"ChannelsSpeechToTextTranslateStreamingMessagesFlushSignalType"},"speechToTextTranslateStreaming_flushSignal":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ChannelsSpeechToTextTranslateStreamingMessagesFlushSignalType","description":"Type identifier for flush signal"}},"required":["type"],"description":"Signal to flush the audio buffer and force finalize partial transcriptions/translations","title":"speechToTextTranslateStreaming_flushSignal"}}}}