A simple wrapper for Cartesia Sonic TTS
Project description
Cartesia Sonic TTS Wrapper
You need your own API key to use demo.
About
A simple and powerful wrapper for the Cartesia Sonic Text-to-Speech (TTS) API, providing an easy-to-use interface for generating speech from text in multiple languages with advanced features. The package includes:
- A Python library for developers.
- A Command-Line Interface (CLI) for terminal interaction.
- A Gradio web interface for user-friendly interaction.
Note: To use this wrapper, you need a valid API key from Cartesia. A subscription is required to access the Sonic TTS API. Visit Cartesia Sonic for more information.
Table of Contents
Features
- Easy-to-use Python Wrapper: Simplifies interaction with the Cartesia Sonic TTS API.
- Text-to-Speech Generation:
- Supports multiple languages.
- Speed control from very slow to very fast.
- Emotion control with adjustable intensity.
- Text improvement options for better TTS results.
- Voice Management:
- List available voices with filtering options.
- Create custom voices from audio files.
- Get detailed information about voices.
- Command-Line Interface (CLI): Interact with the TTS functionality via the terminal.
- Gradio Web Interface: User-friendly web application for interactive use.
Installation
Install the sonic-wrapper
package via pip:
pip install sonic-wrapper
Note: The package requires Python 3.9 or higher.
Additional Dependencies for Gradio Interface
If you plan to use the Gradio web interface, install Gradio:
pip install gradio>=5.0.0
Getting Started
Setting Up the API Key
To use the Cartesia Sonic TTS API, you need a valid API key. Obtain an API key by subscribing to the service on the Cartesia Sonic website.
Once you have your API key, you can set it up:
- Using the Python Library: Provide the API key when initializing the
CartesiaVoiceManager
. - Using the CLI: Set the API key using the
set-api-key
command. - Using the Gradio Interface: Enter the API key in the provided field.
The API key is stored in a .env
file for subsequent use.
Usage
As a Python Library
Initializing the Voice Manager
from sonic_wrapper import CartesiaVoiceManager
# Initialize the manager with your API key
manager = CartesiaVoiceManager(api_key='your_api_key_here')
Alternatively, if you have set the CARTESIA_API_KEY
environment variable or stored the API key in a .env
file, you can initialize without passing the API key:
manager = CartesiaVoiceManager()
Voice Management
Listing Available Voices:
voices = manager.list_available_voices()
for voice in voices:
print(f"ID: {voice['id']}, Name: {voice['name']}, Language: {voice['language']}")
Filtering Voices by Language and Accessibility:
from sonic_wrapper import VoiceAccessibility
voices = manager.list_available_voices(
languages=['en'],
accessibility=VoiceAccessibility.ONLY_PUBLIC
)
Getting Voice Information:
voice_info = manager.get_voice_info('voice_id')
print(voice_info)
Creating a Custom Voice:
voice_id = manager.create_custom_voice(
name='My Custom Voice',
source='path/to/your_voice_sample.wav',
language='en',
description='This is a custom voice created from my own sample.'
)
Text-to-Speech Generation
Setting the Voice:
manager.set_voice('voice_id')
Adjusting Speed and Emotions:
# Set speech speed (-1.0 to 1.0)
manager.speed = 0.5 # Faster speech
# Set emotions
emotions = [
{'name': 'positivity', 'level': 'high'},
{'name': 'surprise', 'level': 'medium'}
]
manager.set_emotions(emotions)
Generating Speech:
output_file = manager.speak(
text='Hello, world!',
output_file='output.wav'
)
print(f"Audio saved to {output_file}")
Improving Text Before Synthesis:
from sonic_wrapper import improve_tts_text
text = 'Your raw text here.'
improved_text = improve_tts_text(text, language='en')
manager.speak(text=improved_text, output_file='improved_output.wav')
Command-Line Interface (CLI)
The package includes a CLI tool for interacting with the TTS functionality directly from the terminal.
Commands and Usage
Set API Key
Set your Cartesia API key:
python -m sonic_wrapper.cli set-api-key your_api_key_here
List Voices
List all available voices:
python -m sonic_wrapper.cli list-voices
With filters:
python -m sonic_wrapper.cli list-voices --language en --accessibility api
Generate Speech
Generate speech from text using a specific voice:
python -m sonic_wrapper.cli generate-speech --text "Hello, world!" --voice "Voice Name or ID"
Additional options:
-
Specify Output File:
--output output.wav
-
Adjust Speech Speed:
--speed 0.5 # Speed ranges from -1.0 (slowest) to 1.0 (fastest)
-
Add Emotions:
--emotions "positivity:medium" "surprise:high"
Valid emotions:
anger
,positivity
,surprise
,sadness
,curiosity
Valid intensities:
lowest
,low
,medium
,high
,highest
Create Custom Voice
Create a custom voice from an audio file:
python -m sonic_wrapper.cli create-voice --name "My Custom Voice" --source path/to/audio.wav
Gradio Web Interface
The Gradio interface provides a user-friendly web application for interacting with the TTS functionality.
Running the Interface
-
Install Gradio (if not already installed):
pip install gradio>=5.0.0
-
Run the Application:
python app.py
-
Access the Web Interface:
Open the provided local URL in your web browser.
Online Demo
Try the Gradio interface online without installing anything:
Examples
Generating Speech with Emotions
python -m sonic_wrapper.cli generate-speech \
--text "I'm so excited to share this news with you!" \
--voice "Enthusiastic Voice" \
--emotions "positivity:high" "surprise:medium" \
--speed 0.5 \
--output excited_message.wav
Creating and Using a Custom Voice
Step 1: Create a Custom Voice
python -m sonic_wrapper.cli create-voice \
--name "Custom Voice" \
--source path/to/your_voice_sample.wav \
--description "A custom voice created from my own audio sample."
Step 2: Generate Speech with the Custom Voice
python -m sonic_wrapper.cli generate-speech \
--text "This is my custom voice." \
--voice "Custom Voice" \
--output custom_voice_output.wav
Notes
- API Key: A valid Cartesia API key is required to use this wrapper. Set your API key using the CLI or in your code. Visit Cartesia Sonic to obtain an API key.
- Subscription: Access to the Cartesia Sonic TTS API requires a subscription. Please refer to their pricing page for more details.
- Voice Mixing: Currently, voice mixing functionality is not available in the CLI and Gradio versions but is available in the Python library.
- Voice Embeddings: The wrapper handles voice embeddings for you, storing them locally for faster access.
TODO
- Implement voice mixing functionality in Gradio interface and CLI.
- Enhance error handling and logging.
- Improve documentation with more examples and use cases.
- Add support for additional languages and voices as they become available.
License
This project is licensed under the MIT License.
Acknowledgments
- Cartesia: For providing the Sonic TTS API.
- Gradio: For the web interface framework.
Contact
For any questions or suggestions, please open an issue on the GitHub repository or contact the author:
- Author: daswer123
- Email: daswerq123@gmail.com
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sonic_wrapper-0.1.1.tar.gz
.
File metadata
- Download URL: sonic_wrapper-0.1.1.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.27.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb6feef6434c7e3cc48274b9bf72d71f32ba87cb15cb4c4be75d1d5d4e89c557 |
|
MD5 | db7e7c78fc35088c7055905793791699 |
|
BLAKE2b-256 | 83401839b71f99937c4f3337c487d0a122f7ee2824f73c011403d17eda520634 |
File details
Details for the file sonic_wrapper-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: sonic_wrapper-0.1.1-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.27.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 348d985eb233f4266c0f5fdd9bde870ac13617ffbdc917dd5f8f360a23b7bdbb |
|
MD5 | 8e812af2d078142b102ce62fc5e23570 |
|
BLAKE2b-256 | 1f66c081965f86b3b387a6771925c83f3bff58cc61c6376ffa20af17ad089ca7 |