How to control translation tone

View as Markdown

register controls the formality and style of the translation. It shapes how the translation system prompt is built, so the same source line can come back sounding like a news anchor, a college lecturer, or a YouTube creator.

ParameterTypeDefaultNotes
registerstringauto-detected by genreOne of the six values below

register takes priority over the legacy genre field. If you have an older integration still sending genre, move to register, which is the supported way to control translation style and gives you finer-grained control.

Available registers

The “Use for” column is suggested guidance from us, not API-defined behaviour. The API validates the enum value only, and does not restrict a register to any content type.

ValueCharacterUse for
formalPolished, respectful, no slangCorporate comms, policy videos, institutional announcements
common-indicNeutral register with widely-understood shared vocabularyPan-India content aimed at the broadest possible audience
classic-colloquialTraditional, literary everyday speechDevotional content, period drama, folk narration
modern-colloquialContemporary, casual, urbanCreator content, Reels and Shorts, marketing, entertainment
academicPrecise, terminology-preservingLectures, tutorials, technical training, EdTech
autoLet the service pickYou don’t know the content mix, or you’re batching mixed sources

Register matches tone, not topic. A physics lecture aimed at a general YouTube audience may do better on modern-colloquial than on academic, so pick the register that matches how you want it to sound, not the subject matter.

Example

$BASE="<DUBBING_API_BASE_URL>"
$
$RESP=$(curl -sS -X POST "$BASE/jobs" \
> -H "api-subscription-key: <YOUR_SARVAM_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "job_name": "diwali-campaign-cut",
> "src_lang": "en-IN",
> "target_langs": ["hi-IN", "ta-IN"],
> "num_speakers": 1,
> "voice_cloning": true,
> "register": "modern-colloquial",
> "export_options": ["video", "srt"],
> "disable_watermark": true
> }')
$
$JOB_ID=$(echo "$RESP" | jq -r '.data.job_id')
$UPLOAD_URL=$(echo "$RESP" | jq -r '.data.upload_url')
$
$# Upload the media to the signed URL (required)
$curl -sS -X PUT "$UPLOAD_URL" \
> -H "Content-Type: video/mp4" \
> -H "x-ms-blob-type: BlockBlob" \
> --data-binary @video.mp4
$
$# Start the pipeline
$curl -sS -X POST "$BASE/jobs/$JOB_ID/start" \
> -H "api-subscription-key: <YOUR_SARVAM_API_KEY>"

Picking a register for a content library

If you’re dubbing a catalogue rather than a one-off, set the register per content type rather than per file:

These pairings are suggested guidance from us, not API-defined behaviour. Treat them as a starting point, and adjust to how you want the output to sound.

Content typeRegister
Recorded classroom lecturesacademic
Product marketing and launch videosmodern-colloquial
Compliance and HR trainingformal
Devotional and mythological seriesclassic-colloquial
Public-service announcementscommon-indic
Mixed user-generated uploadsauto

Register is fixed at creation time. To compare two registers on the same source, create two jobs, and the source file has to be uploaded separately to each.