--- title: "SSML reference for the Say node" slug: "vcc-ssml-reference-for-the-say-node" updated: 2026-07-29T14:14:47Z published: 2026-07-29T14:14:47Z canonical: "help.8x8.com/vcc-ssml-reference-for-the-say-node" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.8x8.com/llms.txt > Use this file to discover all available pages before exploring further. # SSML reference for the Say node This reference page lists supported Speech Synthesis Markup Language (SSML) tags, compatibility notes, and troubleshooting guidance. Most users can use the built-in **Speech Editor** controls for common text-to-speech needs. For advanced scenarios, you can manually add supported SSML tags to customize speech behavior. > [!WARNING] > Important!: > > All SSML content must be wrapped in: `<speak>...</speak>` tags. For detailed configuration steps and SSML reference guidance, see [Control IVR Speech in the Say Node with SSML Support](/documentation/docs/ivr-script-control-ivr-speech-in-the-say-node-with-ssml-support). ## SSML tags supported in the Say node This section lists all supported SSML tags, including those that are manual-only. You do not have to use every tag. ### Core and common SSML tags Commonly supported SSML tags are typically sufficient for users to control speech playback without requiring advanced configuration. | Tag | Purpose | Notes | Example | | --- | --- | --- | --- | | `<speak>` | Wraps the message | Required when using SSML | `<speak>Thank you for calling support.</speak>` | | `<break>` | Adds pauses | Time or strength | `<break time="500ms"/>` | | `<prosody> ` | Controls speed, pitch, volume | Commonly used | `<prosody rate="slow">account number</prosody>  ` | | `<say-as> ` | Formats structured data | Dates, time, currency, phones, ordinal | `<say-as interpret-as="telephone">1-800-555-1234</say-as>` | | `<emphasis>` | Emphasizes words | Support varies | `<emphasis level="moderate">important</emphasis>` | | `<p> / <s>` | Paragraph/sentence flow | Long prompts | `<p>Welcome to our service.</p>` | | ` <sub>` | Speaks an alias | Acronyms, brands | `<sub alias="ACME">A C M E</sub>` | ### Advanced SSML tags This section lists SSML tags that are supported only through manual entry.. | Tag | Purpose | Notes | Example | | --- | --- | --- | --- | | `<phoneme>` | Forces pronunciation | IPA / X-SAMPA | `<phoneme alphabet="ipa" ph="ˈæk.mi">ACME</phoneme>` | | `<lang>` | Switches language | Provider dependent | `<lang xml:lang="es-ES">Gracias por llamar</lang>` | | `<voice>   ` | Switches voice | Voice-tier dependent | `<voice name="en-US-Wavenet-D">Please wait</voice>  ` | | `<audio> ` | Plays audio file | Public URL required | `<audio src="https://example.com/hold-music.mp3"/>` | | `<mark>` | Speech markers | Runtime dependent | `<mark name="menu-start"/>` | | `<w>` | Part-of-speech hint | Advanced usage | `<w role="verb">record</w>` | ## Voice compatibility The Speech Editor automatically validates any SSML entered in the text field. If validation fails: - A **Validation Failed** status appears. - Detailed error messages are shown below the editor. - The **Generate Audio Preview** option is disabled until all issues are resolved. - **Saving (OK)** remains available, but validation errors should be corrected to ensure proper speech output. > [!WARNING] > Important!: > > All SSML content must be wrapped in `<speak>` tags. When using SSML tags — such as `<break>`, `<prosody>`, or `<say-as>` — the entire message must be enclosed in: `xml` ... If SSML tags are used without the `<speak>` wrapper, validation will fail, and audio preview will be unavailable. The table below lists the common SSML errors, along with examples and guidance on how to fix them. | Validation message or behavior | What it means | Example | How to fix it | | --- | --- | --- | --- | | “Tags detected. For SSML, surround the text with `<speak>` tags.” | SSML tags were used, but the message is not wrapped in `<speak>...</speak>` | `<break time="500ms"/> Thank you for calling.` | Wrap the entire message: `<speak><break time="500ms"/> Thank you for calling.</speak>`. | | “Mismatched closing tag: `</speak>` Expected `</prosody>`” | A tag was closed in the wrong order. | `<speak>Hi <prosody rate="0.5">customer</speak>` | Close inner tags first: `<speak>Hi <prosody rate="0.5">customer</prosody></speak>` | | “Unclosed tags: `<speak>`, `<prosody>`” | One or more opening tags are missing closing tags. | `<speak>Hello <prosody rate="slow">customer` | Add the missing closing tags: `</prosody></speak>.`. | | “The element type ‘prosody’ must be terminated by the matching end-tag `</prosody>`.” | A required closing tag is missing. | `<prosody rate="slow">important message` | Add the matching closing tag: `</prosody>`. | | **Generate Audio Preview** is disabled | Validation failed due to SSML errors. | Any invalid SSML structure | Resolve all validation errors. Preview becomes available once validation passes. | | SSML has no audible effect | The selected voice does not support the SSML feature used. | `<emphasis level="strong">Important</emphasis>` | Try a different voice or remove the unsupported tag. | ### Quick checklist before previewing Before generating an audio preview, make sure that: - All SSML is wrapped in `<speak>...</speak>` tags. - Every opening tag has a matching closing tag. - Tags are nested correctly (inner tags must close before outer tags). - The selected voice supports the SSML features used. For detailed configuration steps of a Say node using the Speech Editor, see [Control IVR Speech in the Say Node with SSML Support](/documentation/docs/ivr-script-control-ivr-speech-in-the-say-node-with-ssml-support).