> For clean Markdown of any page, append `.md` to the page URL. > For a complete documentation index, see https://docs.sarvam.ai/llms.txt. > For full documentation content in one file, see https://docs.sarvam.ai/llms-full.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.sarvam.ai/_mcp/server. # How to select output mode > Choose the right output mode for your speech-to-text use case with Saaras v3 and v4. Saaras v3 and Saaras v4 support the same multiple output modes to handle different transcription and translation needs. Use the `mode` parameter to specify how you want the audio processed. > **Note** > > The `mode` parameter is available for Saaras v4 (default, recommended, latest) and Saaras v3. Mode behaviour is identical on both. ### Output Mode Comparison For the same input audio saying: **"मेरा फोन नंबर है 9840950950"** (My phone number is 9840950950) | Mode | Description | Example Output | | ------------ | ------------------------------------------------------ | ----------------------------------------------------------- | | `transcribe` | Standard transcription with number normalization | `मेरा फोन नंबर है 9840950950` | | `translate` | Translate to English | `My phone number is 9840950950` | | `verbatim` | Exact word-for-word, preserves spoken numbers | `मेरा फोन नंबर है नौ आठ चार zero नौ पांच zero नौ पांच zero` | | `translit` | Romanized/Latin script | `mera phone number hai 9840950950` | | `codemix` | English words in English, Indic words in native script | `मेरा phone number है 9840950950` | ### When to Use Each Mode | Mode | Best For | | ------------ | ----------------------------------------------------------------- | | `transcribe` | Call recordings, meetings, voice notes, general transcription | | `translate` | Analytics dashboards, English-only systems, international teams | | `verbatim` | Legal transcriptions, compliance, preserving exact spoken content | | `translit` | Systems that only support Latin characters, search indexing | | `codemix` | Hinglish conversations, mixed-language customer support | ### Example Code #### Saaras v3 Still available. All five modes behave as described above. #### Transcribe #### Python ```python from sarvamai import SarvamAI client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY") # Standard transcription in original language response = client.speech_to_text.transcribe( file=open("audio.wav", "rb"), model="saaras:v3", language_code="hi-IN", mode="transcribe" # Default mode ) print(response.transcript) # Output: मेरा फोन नंबर है 9840950950 ``` #### JavaScript ```javascript import { SarvamAIClient } from "sarvamai"; import fs from 'fs'; const client = new SarvamAIClient({ apiSubscriptionKey: "YOUR_SARVAM_API_KEY" }); const audioFile = fs.createReadStream("audio.wav"); const response = await client.speechToText.transcribe({ file: audioFile, model: "saaras:v3", language_code: "hi-IN", mode: "transcribe" // Default mode }); console.log(response.transcript); // Output: मेरा फोन नंबर है 9840950950 ``` #### cURL ```bash curl -X POST https://api.sarvam.ai/speech-to-text \ -H "api-subscription-key: " \ -H "Content-Type: multipart/form-data" \ -F model="saaras:v3" \ -F language_code="hi-IN" \ -F mode="transcribe" \ -F file=@audio.wav ``` #### Translate #### Python ```python from sarvamai import SarvamAI client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY") # Translate Indian language speech to English response = client.speech_to_text.transcribe( file=open("audio.wav", "rb"), model="saaras:v3", language_code="hi-IN", mode="translate" ) print(response.transcript) # Output: My phone number is 9840950950 ``` #### JavaScript ```javascript import { SarvamAIClient } from "sarvamai"; import fs from 'fs'; const client = new SarvamAIClient({ apiSubscriptionKey: "YOUR_SARVAM_API_KEY" }); const audioFile = fs.createReadStream("audio.wav"); const response = await client.speechToText.transcribe({ file: audioFile, model: "saaras:v3", language_code: "hi-IN", mode: "translate" }); console.log(response.transcript); // Output: My phone number is 9840950950 ``` #### cURL ```bash curl -X POST https://api.sarvam.ai/speech-to-text \ -H "api-subscription-key: " \ -H "Content-Type: multipart/form-data" \ -F model="saaras:v3" \ -F language_code="hi-IN" \ -F mode="translate" \ -F file=@audio.wav ``` #### Verbatim #### Python ```python from sarvamai import SarvamAI client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY") # Exact word-for-word transcription without normalization response = client.speech_to_text.transcribe( file=open("audio.wav", "rb"), model="saaras:v3", language_code="hi-IN", mode="verbatim" ) print(response.transcript) # Output: मेरा फोन नंबर है नौ आठ चार zero नौ पांच zero नौ पांच zero ``` #### JavaScript ```javascript import { SarvamAIClient } from "sarvamai"; import fs from 'fs'; const client = new SarvamAIClient({ apiSubscriptionKey: "YOUR_SARVAM_API_KEY" }); const audioFile = fs.createReadStream("audio.wav"); const response = await client.speechToText.transcribe({ file: audioFile, model: "saaras:v3", language_code: "hi-IN", mode: "verbatim" }); console.log(response.transcript); // Output: मेरा फोन नंबर है नौ आठ चार zero नौ पांच zero नौ पांच zero ``` #### cURL ```bash curl -X POST https://api.sarvam.ai/speech-to-text \ -H "api-subscription-key: " \ -H "Content-Type: multipart/form-data" \ -F model="saaras:v3" \ -F language_code="hi-IN" \ -F mode="verbatim" \ -F file=@audio.wav ``` #### Translit #### Python ```python from sarvamai import SarvamAI client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY") # Romanization - output in Latin/Roman script response = client.speech_to_text.transcribe( file=open("audio.wav", "rb"), model="saaras:v3", language_code="hi-IN", mode="translit" ) print(response.transcript) # Output: mera phone number hai 9840950950 ``` #### JavaScript ```javascript import { SarvamAIClient } from "sarvamai"; import fs from 'fs'; const client = new SarvamAIClient({ apiSubscriptionKey: "YOUR_SARVAM_API_KEY" }); const audioFile = fs.createReadStream("audio.wav"); const response = await client.speechToText.transcribe({ file: audioFile, model: "saaras:v3", language_code: "hi-IN", mode: "translit" }); console.log(response.transcript); // Output: mera phone number hai 9840950950 ``` #### cURL ```bash curl -X POST https://api.sarvam.ai/speech-to-text \ -H "api-subscription-key: " \ -H "Content-Type: multipart/form-data" \ -F model="saaras:v3" \ -F language_code="hi-IN" \ -F mode="translit" \ -F file=@audio.wav ``` #### Codemix #### Python ```python from sarvamai import SarvamAI client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY") # Code-mixed: English words in English, Indic words in native script response = client.speech_to_text.transcribe( file=open("audio.wav", "rb"), model="saaras:v3", language_code="hi-IN", mode="codemix" ) print(response.transcript) # Output: मेरा phone number है 9840950950 ``` #### JavaScript ```javascript import { SarvamAIClient } from "sarvamai"; import fs from 'fs'; const client = new SarvamAIClient({ apiSubscriptionKey: "YOUR_SARVAM_API_KEY" }); const audioFile = fs.createReadStream("audio.wav"); const response = await client.speechToText.transcribe({ file: audioFile, model: "saaras:v3", language_code: "hi-IN", mode: "codemix" }); console.log(response.transcript); // Output: मेरा phone number है 9840950950 ``` #### cURL ```bash curl -X POST https://api.sarvam.ai/speech-to-text \ -H "api-subscription-key: " \ -H "Content-Type: multipart/form-data" \ -F model="saaras:v3" \ -F language_code="hi-IN" \ -F mode="codemix" \ -F file=@audio.wav ``` #### Saaras v4 Default, recommended, latest model. Identical mode behaviour, and adds **Global English** alongside Indian English plus **keyterm prompting**. #### Transcribe #### Python ```python from sarvamai import SarvamAI client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY") # Standard transcription in original language response = client.speech_to_text.transcribe( file=open("audio.wav", "rb"), model="saaras:v4", language_code="hi-IN", mode="transcribe", # Default mode keyterms=["Sarvam", "New Delhi", "Vistaar"] ) print(response.transcript) # Output: मेरा फोन नंबर है 9840950950 ``` #### JavaScript ```javascript import { SarvamAIClient } from "sarvamai"; import fs from 'fs'; const client = new SarvamAIClient({ apiSubscriptionKey: "YOUR_SARVAM_API_KEY" }); const audioFile = fs.createReadStream("audio.wav"); const response = await client.speechToText.transcribe({ file: audioFile, model: "saaras:v4", language_code: "hi-IN", mode: "transcribe", // Default mode keyterms: ["Sarvam", "New Delhi", "Vistaar"] }); console.log(response.transcript); // Output: मेरा फोन नंबर है 9840950950 ``` #### cURL ```bash curl -X POST https://api.sarvam.ai/speech-to-text \ -H "api-subscription-key: " \ -H "Content-Type: multipart/form-data" \ -F model="saaras:v4" \ -F language_code="hi-IN" \ -F mode="transcribe" \ -F 'keyterms=["Sarvam","New Delhi","Vistaar"]' \ -F file=@audio.wav ``` #### Translate #### Python ```python from sarvamai import SarvamAI client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY") # Translate Indian language speech to English response = client.speech_to_text.transcribe( file=open("audio.wav", "rb"), model="saaras:v4", language_code="hi-IN", mode="translate", keyterms=["Sarvam", "New Delhi", "Vistaar"] ) print(response.transcript) # Output: My phone number is 9840950950 ``` #### JavaScript ```javascript import { SarvamAIClient } from "sarvamai"; import fs from 'fs'; const client = new SarvamAIClient({ apiSubscriptionKey: "YOUR_SARVAM_API_KEY" }); const audioFile = fs.createReadStream("audio.wav"); const response = await client.speechToText.transcribe({ file: audioFile, model: "saaras:v4", language_code: "hi-IN", mode: "translate", keyterms: ["Sarvam", "New Delhi", "Vistaar"] }); console.log(response.transcript); // Output: My phone number is 9840950950 ``` #### cURL ```bash curl -X POST https://api.sarvam.ai/speech-to-text \ -H "api-subscription-key: " \ -H "Content-Type: multipart/form-data" \ -F model="saaras:v4" \ -F language_code="hi-IN" \ -F mode="translate" \ -F 'keyterms=["Sarvam","New Delhi","Vistaar"]' \ -F file=@audio.wav ``` #### Verbatim #### Python ```python from sarvamai import SarvamAI client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY") # Exact word-for-word transcription without normalization response = client.speech_to_text.transcribe( file=open("audio.wav", "rb"), model="saaras:v4", language_code="hi-IN", mode="verbatim", keyterms=["Sarvam", "New Delhi", "Vistaar"] ) print(response.transcript) # Output: मेरा फोन नंबर है नौ आठ चार zero नौ पांच zero नौ पांच zero ``` #### JavaScript ```javascript import { SarvamAIClient } from "sarvamai"; import fs from 'fs'; const client = new SarvamAIClient({ apiSubscriptionKey: "YOUR_SARVAM_API_KEY" }); const audioFile = fs.createReadStream("audio.wav"); const response = await client.speechToText.transcribe({ file: audioFile, model: "saaras:v4", language_code: "hi-IN", mode: "verbatim", keyterms: ["Sarvam", "New Delhi", "Vistaar"] }); console.log(response.transcript); // Output: मेरा फोन नंबर है नौ आठ चार zero नौ पांच zero नौ पांच zero ``` #### cURL ```bash curl -X POST https://api.sarvam.ai/speech-to-text \ -H "api-subscription-key: " \ -H "Content-Type: multipart/form-data" \ -F model="saaras:v4" \ -F language_code="hi-IN" \ -F mode="verbatim" \ -F 'keyterms=["Sarvam","New Delhi","Vistaar"]' \ -F file=@audio.wav ``` #### Translit #### Python ```python from sarvamai import SarvamAI client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY") # Romanization - output in Latin/Roman script response = client.speech_to_text.transcribe( file=open("audio.wav", "rb"), model="saaras:v4", language_code="hi-IN", mode="translit", keyterms=["Sarvam", "New Delhi", "Vistaar"] ) print(response.transcript) # Output: mera phone number hai 9840950950 ``` #### JavaScript ```javascript import { SarvamAIClient } from "sarvamai"; import fs from 'fs'; const client = new SarvamAIClient({ apiSubscriptionKey: "YOUR_SARVAM_API_KEY" }); const audioFile = fs.createReadStream("audio.wav"); const response = await client.speechToText.transcribe({ file: audioFile, model: "saaras:v4", language_code: "hi-IN", mode: "translit", keyterms: ["Sarvam", "New Delhi", "Vistaar"] }); console.log(response.transcript); // Output: mera phone number hai 9840950950 ``` #### cURL ```bash curl -X POST https://api.sarvam.ai/speech-to-text \ -H "api-subscription-key: " \ -H "Content-Type: multipart/form-data" \ -F model="saaras:v4" \ -F language_code="hi-IN" \ -F mode="translit" \ -F 'keyterms=["Sarvam","New Delhi","Vistaar"]' \ -F file=@audio.wav ``` #### Codemix #### Python ```python from sarvamai import SarvamAI client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY") # Code-mixed: English words in English, Indic words in native script response = client.speech_to_text.transcribe( file=open("audio.wav", "rb"), model="saaras:v4", language_code="hi-IN", mode="codemix", keyterms=["Sarvam", "New Delhi", "Vistaar"] ) print(response.transcript) # Output: मेरा phone number है 9840950950 ``` #### JavaScript ```javascript import { SarvamAIClient } from "sarvamai"; import fs from 'fs'; const client = new SarvamAIClient({ apiSubscriptionKey: "YOUR_SARVAM_API_KEY" }); const audioFile = fs.createReadStream("audio.wav"); const response = await client.speechToText.transcribe({ file: audioFile, model: "saaras:v4", language_code: "hi-IN", mode: "codemix", keyterms: ["Sarvam", "New Delhi", "Vistaar"] }); console.log(response.transcript); // Output: मेरा phone number है 9840950950 ``` #### cURL ```bash curl -X POST https://api.sarvam.ai/speech-to-text \ -H "api-subscription-key: " \ -H "Content-Type: multipart/form-data" \ -F model="saaras:v4" \ -F language_code="hi-IN" \ -F mode="codemix" \ -F 'keyterms=["Sarvam","New Delhi","Vistaar"]' \ -F file=@audio.wav ``` > **Note** > > `keyterms` is supported only on `saaras:v4`, on the REST and Batch APIs. Up to 50 terms, 64 characters each. See [Keyterm Prompting](/api/api-guides-tutorials/speech-to-text/how-to/keyterms). > Choose the right output mode for your speech-to-text use case with Saaras v3 and v4.