Recommendations
-
Pass natural, well-punctuated text. Full sentences with normal capitalization and punctuation produce the best pacing and intonation. End each transcript with terminal punctuation (
.,?,!). -
Send complete phrases. Full sentences sound more natural than isolated fragments or single words. Don’t send a number, code, or spell tag on its own — include the surrounding sentence, e.g.
Your confirmation code is <spell>ABC123</spell>. -
Use normal casing. Reserve all-caps for acronyms you want read out letter by letter (e.g.
USA). Other all-caps words may be misread as initialisms (e.g.NASA). Avoid using capitalization for emphasis or to indicate shouting. -
Pass numbers, currency, dates, and common acronyms in conventional written form. Sonic maps these patterns to natural speech for most inputs:
- Large numbers like
1,234,567 - Currency like
$19.99 - US phone numbers:
(415) 555-1212 - Street addresses like
123 Main St - Email addresses:
user@example.com - Dates in
MM/DD/YYYY:04/20/2025 - Times with a space before AM/PM:
7:00 PM,7 PM,7:00 P.M. - Common acronyms (
NASA) and initialisms (USA)
@reads asat(email addresses),()is silent (for US phone numbers). When an LLM writes the transcript, see Voice agents (LLM-authored text). - Large numbers like
- Match the voice to the language. Each voice has a primary language it works best with. Use the Playground to audition voices for a given language.
- Keep prompts in their natural written form. Heavy preprocessing (stripping punctuation, forcing casing) generally hurts output quality.
Pre-normalization
Sonic 3.5 automatically covers the common cases above for most inputs. If you hit an unusual case or a bug where something is still misread, you may consider pre-normalizing your text as a fallback. Have your LLM write the transcript fully spelled out, the way it would be spoken.
Pre-normalizing is a fallback for edge cases. Well-punctuated text in conventional form is read correctly in the large majority of cases.
Controlling pacing and spelling
When you need character-by-character read-out (confirmation codes, order IDs, serial numbers, spelled-out names) or fine-grained pacing, use one of the following:- Spell tags (recommended). Wrap the string in
<spell>...</spell>. Most reliable option, works for letters, digits, and mixed alphanumerics in all supported languages. - Space-delimited characters. Alternatively, you can achieve the same result by separating characters with single spaces for a natural spelling pace.
- Comma-delimited characters. If your use case requires longer pauses, you can add a comma and a space after each character.
- Semantic grouping. For more natural pacing, use spaces and add commas where a human would naturally pause.
Migrating from Sonic 3? The recommended delimiter format has changed in Sonic 3.5. Separate characters with spaces or commas and put a comma between groups. Don’t put periods between characters or mix commas and periods, this format still works on
sonic-3 snapshots but is not recommended for Sonic 3.5.Voice agents (LLM-authored text)
Starter system prompt. Baseline you can paste and trim for your product. If your stack does not pass<spell> or other tags through to Sonic, omit the tag lines and use the delimiter fallback in section 4.