> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # say > Add a play verb with a say: prefix for text-to-speech. [play]: /docs/server-sdks/reference/typescript/agents/swml-builder/play Convenience wrapper that appends a `play` verb with a `say:`-prefixed URL for text-to-speech. Equivalent to calling `builder.play({ url: 'say:${text}', ... })` but exposes the TTS options as typed arguments. ## **Parameters** **`text`** `string` — required Text the agent should speak. The method prepends `say:` to produce the final URL passed to the underlying [`play`][play] verb. --- **`opts`** `object` Optional TTS parameters. --- **`opts.voice`** `string` Voice name for the TTS engine. Maps to `say_voice` in the emitted SWML. --- **`opts.language`** `string` Language code (e.g., `"en-US"`). Maps to `say_language` in the emitted SWML. --- **`opts.gender`** `string` Gender for TTS voice selection. Maps to `say_gender` in the emitted SWML. --- **`opts.volume`** `number` Volume adjustment in dB (−40 to 40). Maps to `volume` on the play verb. --- ## **Returns** `this` -- The builder instance for method chaining. ## **Example** ```typescript {5} import { SwmlBuilder } from '@signalwire/sdk'; const builder = new SwmlBuilder(); builder.answer(); builder.say('Welcome to our service.', { voice: 'rime.spore', language: 'en-US' }); builder.hangup(); ``` > Add a play verb with a say: prefix for text-to-speech.