Tts

Text-to-Speech Synthesis

TTS Options
| Model/Service | Type | Quality | Speed |
|---------------|------|---------|-------|
| OpenAI TTS | API | Excellent | Fast |
| ElevenLabs | API | Excellent | Fast |
| Coqui TTS | Open source | Good | Medium |
| Bark | Open source | Excellent | Slow |
| XTTS | Open source | Excellent | Medium |

OpenAI TTS

from openai import OpenAI

client = OpenAI()

response = client.audio.speech.create(
    model="tts-1-hd",
    voice="nova",  # alloy, echo, fable, onyx, nova, shimmer
    input="Hello, this is a test of text to speech."
)

response.stream_to_file("output.mp3")

ElevenLabs

from elevenlabs import generate, play

audio = generate(
    text="Hello world!",
    voice="Rachel",
    model="eleven_multilingual_v2"
)

play(audio)

Open Source: Coqui TTS

from TTS.api import TTS

tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2")

# Generate with voice cloning
tts.tts_to_file(
    text="This is using voice cloning.",
    speaker_wav="reference_voice.wav",
    language="en",
    file_path="output.wav"
)

Voice Cloning
Clone a voice from audio sample:

# XTTS voice cloning
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2")

audio = tts.tts(
    text="Hello in the cloned voice.",
    speaker_wav="sample_voice.wav",  # 6+ second sample
    language="en"
)

Streaming TTS

from openai import OpenAI

client = OpenAI()

with client.audio.speech.with_streaming_response.create(
    model="tts-1",
    voice="nova",
    input="Streaming audio sentence by sentence..."
) as response:
    response.stream_to_file("streamed.mp3")

Use Cases
| Use Case | Requirements |
|----------|--------------|
| Audiobooks | Natural prosody, long-form |
| Voice assistants | Low latency, streaming |
| Accessibility | Clear articulation |
| Content creation | Voice variety, cloning |
| Podcasts | High quality, natural |

Considerations
| Factor | Consideration |
|--------|---------------|
| Latency | API faster, local more consistent |
| Quality | HD models sound more natural |
| Cost | API per-character, local fixed |
| Voice variety | APIs have more options |
| Privacy | Local for sensitive content |

Best Practices
- Use SSML for pronunciation control where supported
- Cache generated audio for repeated content
- Consider streaming for real-time applications
- Test voices for specific content types

Take tts further

Ask the copilot about this term, or have our engineers assess it against your process.