These endpoints let you read and update the server-persisted defaults that drive the PeachDesk Voice Studio experience, and manage the pronunciation dictionary that the Voice Engine applies before synthesis. All routes are exposed by the PeachDesk API under the /api/voice base path and authenticated with your PeachDesk API key in the X-API-Key header.
Settings are persisted per workspace on PeachDesk’s servers. They act as the defaults the Voice Studio UI loads on open — individual generation or capture requests can still override most of these values inline.

Authentication

Every request must include your PeachDesk API key in the X-API-Key header (an interactive session token in Authorization: Bearer also works — see Authentication):

Capture settings

Defaults for the Captures flow — speech-to-text transcription and optional LLM refinement. Models referenced here (STT and refinement LLM) run on PeachDesk’s GPU infrastructure; you select them by identifier and never download or manage any model files locally.

Get capture settings

GET /api/voice/settings/captures Returns the current capture and refinement defaults for the workspace.
string
Speech-to-text model identifier — lipi (the default), lipi-bharat or lipi-live. The legacy size keys base, small, medium, large, and any other pre-consolidation identifier are still accepted so older settings rows keep loading, but they resolve to LIPI.
string
Source language code, or auto to let the engine detect it. Default auto.
string
transcribe (same language) or translate (to English). Default transcribe.
integer
Beam search width, 1–5. Higher is more accurate but slower. Default 1.
string
Optional biasing vocabulary (up to 2000 chars) of domain terms to favour. Default "".
boolean
Automatically run LLM refinement on a new capture’s transcript. Default true.
string
Refinement model. BRAHMA-30B-FP8 (BRAHMA-30B) is the only accepted value — the refinement model is pinned server-side.
boolean
Remove filler words and tidy punctuation during refinement. Default true.
boolean
Resolve spoken self-corrections (“no wait, I mean…”). Default true.
boolean
Preserve code, identifiers, and technical terms verbatim. Default true.
boolean
Allow the refined transcript to flow into the active composer automatically. Default true.
string | null
Voice profile used to read captures back aloud, if set.
boolean
Enable the in-app capture shortcut while the Voice Studio is open. Default false.
string[]
Key chord (1–6 keys) used as push-to-talk inside the Voice Studio.
string[]
Key chord (1–6 keys) used to toggle dictation on and off inside the Voice Studio.

Update capture settings

PUT /api/voice/settings/captures Partial update — send only the fields you want to change. Every field is optional; omitted fields keep their current value. Returns the full, updated capture settings object.
string
lipi | lipi-bharat | lipi-live. The legacy size keys base | small | medium | large and any other pre-consolidation identifier are accepted but resolve to LIPI.
string
Source language code, or auto.
string
transcribe | translate.
integer
1–5.
string
Biasing vocabulary, up to 2000 chars.
boolean
string
BRAHMA-30B-FP8 — the only accepted value.
boolean
boolean
boolean
boolean
string
boolean
string[]
1–6 keys.
string[]
1–6 keys.

Generation settings

Defaults for the Generation tab — how long text is chunked and how output audio is finished.

Get generation settings

GET /api/voice/settings/generation Returns the current text-to-speech generation defaults.
integer
Max characters per chunk when splitting long text. 100–5000. Default 800.
integer
Crossfade between chunks, in milliseconds (0 for a hard cut). 0–500. Default 50.
boolean
Normalize output loudness. Default true.
boolean
Automatically play the take when generation completes. Default true.

Update generation settings

PUT /api/voice/settings/generation Partial update — send only the fields you want to change. Returns the full, updated generation settings object.
integer
100–5000.
integer
0–500.
boolean
boolean

Voice Activity Detection (VAD) settings

Tuning for the speech-detection that trims silence around recorded audio in the Captures and Talk flows.

Get VAD settings

GET /api/voice/settings/vad Returns the current VAD preferences.
boolean
Whether VAD trimming is active. Default false.
number
Speech-probability threshold, 0.0–1.0. Higher is stricter. Default 0.5.
integer
Minimum speech duration to keep a segment, in ms. 0–5000. Default 250.
integer
Minimum silence to split segments, in ms. 0–5000. Default 100.
integer
Padding added around detected speech, in ms. 0–1000. Default 30.
integer
Audio sample rate the VAD operates at, in Hz. Default 16000.

Update VAD settings

PUT /api/voice/settings/vad Partial update — send only the fields you want to change. Returns the full, updated VAD settings object.
boolean
number
0.0–1.0.
integer
0–5000.
integer
0–5000.
integer
0–1000.
integer
Sample rate in Hz.

Pronunciation dictionary

Pronunciation rules tell the Voice Engine how to say specific terms before synthesis. A rule is either an alias (rewrite the term to a spelled-out replacement) or a phoneme override. Rules are either global (apply to every voice) or profile-scoped (apply only to one voice profile).
Use an alias rule for acronyms or brand names (“PeachDesk” → “Peach Desk”), and a phoneme rule when you need precise control over the sound of a term.

List pronunciation rules

GET /api/voice/pronunciation Lists pronunciation rules, optionally filtered by scope and/or profile.
string
Filter by scope: global or profile.
string
Filter by the voice profile a rule belongs to.
Returns an array of rule objects:
string
Unique rule identifier.
string
global or profile.
string | null
Voice profile the rule applies to, for profile-scoped rules.
string
The term the rule matches.
string
alias or phoneme.
string | null
Spelled-out replacement, for alias rules.
string | null
Phoneme string, for phoneme rules.
boolean
Whether matching is case-sensitive. Default false.
boolean
Whether the rule is active. Default true.
string
ISO-8601 creation timestamp.

Create a pronunciation rule

POST /api/voice/pronunciation Creates a global or profile-scoped rule. Returns the created rule object.
string
required
The term to match (1–200 chars).
string
default:"alias"
alias or phoneme.
string
Spelled-out replacement for alias rules (up to 400 chars).
string
Phoneme override for phoneme rules (up to 400 chars).
string
default:"global"
global or profile.
string
Required when scope is profile — the voice profile the rule applies to.
boolean
default:"false"
boolean
default:"true"
A 400 error is returned if the rule is invalid — for example, a profile-scoped rule without a profile_id, or a rule missing the value appropriate to its rule_type.

Update a pronunciation rule

PUT /api/voice/pronunciation/ Partial update of an existing rule. Returns the updated rule object, or 404 if the rule does not exist.
string
required
The rule to update.
string
1–200 chars.
string
alias or phoneme.
string
Up to 400 chars.
string
Up to 400 chars.
boolean
boolean

Delete a pronunciation rule

DELETE /api/voice/pronunciation/ Deletes a rule. Returns a confirmation message, or 404 if the rule does not exist.
string
required
The rule to delete.