Skip to content

Conversation

sunghyunjun
Copy link

Summary

Adds Typecast TTS plugin for creating lifelike speech with unique character voices and precise emotion control.

About Typecast

Typecast is a text-to-speech service that offers 180+ unique AI voices with distinct personalities across multiple languages. The Typecast API enables precise customization of tone, emotion, speed, and pitch, allowing developers to create rich, expressive audio that brings conversational AI to life. With ultra-fast synthesis speeds, it can turn hours of content into high-quality audio in minutes.

Key Features

Character Voices & Emotion Control

  • 180+ unique voices with distinct personalities
  • Multi-language support: 30+ languages (ISO 639-3 codes)
  • Fine-tune emotions with presets: normal, happy, sad, angry, etc.
  • Adjustable emotion intensity: 0.0 - 2.0 for precise expression
  • Creates rich, expressive audio for natural conversations

Audio Customization

  • Precise control: pitch, tempo, volume adjustments
  • Reproducible synthesis with seed parameter
  • High-quality output: 44.1kHz WAV/MP3 format

Implementation

  • Follows standard LiveKit plugin patterns (consistent with ElevenLabs, Cartesia, OpenAI)

Testing

  • Integration tests added to tests/test_tts.py
  • Docker test environment configured
  • Verified with actual API calls

Files Changed

Plugin: livekit-plugins/livekit-plugins-typecast/

  • Core implementation with emotion control
  • Voice listing API integration
  • Standard plugin structure (7 files)

Example: examples/other/text-to-speech/typecast_tts.py

  • Basic usage with emotion presets
  • Voice discovery example
  • Audio customization demos

Configuration:

  • pyproject.toml: workspace configuration
  • tests/docker-compose.yml: test environment
  • tests/test_tts.py: test integration
  • examples/other/text-to-speech/requirements.txt

- Add emotion control with presets and intensity adjustment
- Support 30+ languages (ISO 639-3)
- Audio customization support
- Include standard LiveKit agent example
- Add Docker test configuration
Address PR review feedback to improve consistency with other TTS plugins.

Changes:
- Add DEFAULT_VOICE_ID constant (Olivia voice)
- Add Voice dataclass for voice metadata
- Make voice parameter optional with default value
- Implement list_voices() method to query available voices
- Add voice listing example to demo script
- Export Voice and DEFAULT_VOICE_ID in public API

The plugin now follows the same pattern as ElevenLabs, providing:
- Default voice for quick start
- Voice discovery through list_voices()
- Improved user experience
@CLAassistant
Copy link

CLAassistant commented Oct 13, 2025

CLA assistant check
All committers have signed the CLA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants