***

title: say
slug: /reference/python/agents/swml-builder/say
description: Add text-to-speech playback to the SWML document.
max-toc-depth: 3
---------------------

For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

[play]: /docs/server-sdks/reference/python/agents/swml-builder/play

Add a text-to-speech `play` verb using the `say:` URL prefix. This is a convenience
wrapper around [`play()`][play] that
constructs the `say:` URL automatically.

## **Parameters**

<ParamField path="text" type="str" required={true} toc={true}>
  The text to speak.
</ParamField>

<ParamField path="voice" type="Optional[str]" toc={true}>
  Voice name for text-to-speech.
</ParamField>

<ParamField path="language" type="Optional[str]" toc={true}>
  Language code (e.g., `"en-US"`).
</ParamField>

<ParamField path="gender" type="Optional[str]" toc={true}>
  Gender for voice selection.
</ParamField>

<ParamField path="volume" type="Optional[float]" toc={true}>
  Volume adjustment level, from `-40` to `40` dB.
</ParamField>

## **Returns**

`Self` -- The builder instance for method chaining.

## **Example**

```python {9,11}
from signalwire import SWMLService, SWMLBuilder

service = SWMLService(name="greeting")
builder = SWMLBuilder(service)

doc = (
    builder
    .answer()
    .say("Welcome to our service. Please hold.", voice="rime.spore")
    .sleep(duration=500)
    .say("Connecting you now.", voice="rime.spore")
    .build()
)
print(doc)
```