A powerful and easy-to-use Python Text-to-Speech library with multiple engine support
Project description
๐ฏ PyTTSLib
๐ A powerful and easy-to-use Python Text-to-Speech library that supports multiple TTS engines.
โจ Features
- ๐๏ธ Multiple TTS engine support:
- ๐ฅ๏ธ pyttsx3 (offline, default) - Works without internet
- ๐ Google TTS - High-quality online TTS
- ๐๏ธ Voice customization:
- ๐โโ๏ธ Adjustable speech rate
- ๐ Volume control
- ๐ฅ Multiple voice options
- ๐พ Save audio to multiple formats (MP3, WAV)
- ๐ Smart file management with auto-cleanup
- ๐ฅ๏ธ Cross-platform compatibility (Windows, Linux, macOS)
- ๐ก๏ธ Robust error handling
- ๐ Well-documented API
๐ Installation
pip install pyttslib
๐ Quick Start
from pyttslib import TextToSpeech
# Create a TTS instance (default: pyttsx3 engine)
tts = TextToSpeech()
# Basic text-to-speech
tts.speak("Hello, world!")
# Use Google TTS instead
gtts = TextToSpeech(engine="google")
gtts.speak("Hello from Google Text-to-Speech!")
# Save speech to a file
tts.save_to_file("This will be saved as audio.", "output.mp3")
๐ฎ Advanced Usage
๐๏ธ Voice Configuration
# Configure pyttsx3 engine
tts = TextToSpeech(engine="pyttsx3", engine_config={
"rate": 150, # Words per minute
"volume": 0.8, # Volume level (0.0 to 1.0)
})
# Configure Google TTS
tts = TextToSpeech(engine="google", engine_config={
"lang": "en", # Language code
"tld": "com", # Top-level domain
"slow": False # Normal speed
})
๐ญ Voice Selection
# List available voices
voices = tts.list_voices()
for voice in voices:
print(f"Voice: {voice['name']} (ID: {voice['id']})")
# Set a specific voice
tts.set_voice("en_female_1") # Voice ID from list_voices()
โ๏ธ Speech Properties
# Adjust speech rate (pyttsx3 only)
tts.set_rate(150) # Words per minute
# Adjust volume (pyttsx3 only)
tts.set_volume(0.8) # 80% volume
๐ Examples
The package includes example scripts in the examples/ directory:
- ๐
basic_usage.py: Demonstrates fundamental features - ๐ง
advanced_usage.py: Shows advanced functionality
Run the examples:
python examples/basic_usage.py
python examples/advanced_usage.py
๐ Supported Audio Formats
- ๐ต MP3 (Google TTS)
- ๐ WAV (pyttsx3)
- ๐ผ OGG (platform-dependent)
- ๐น AIFF (platform-dependent)
๐ ๏ธ Technical Details
File Management
- ๐ Temporary files are stored in a dedicated folder
- ๐งน Automatic cleanup after playback
- ๐ซ Robust retry mechanism for file operations
- ๐ Safe file handling with proper resource cleanup
Error Handling
- โ ๏ธ Custom exception classes for better error management
- ๐ Automatic retries for transient failures
- ๐ข Clear error messages and logging
- ๐ก๏ธ Graceful fallbacks for playback methods
๐ค Contributing
Contributions are welcome! Here's how you can help:
- ๐ด Fork the repository
- ๐ฟ Create your feature branch (
git checkout -b feature/amazing-feature) - ๐พ Commit your changes (
git commit -m 'Add amazing feature') - ๐ค Push to the branch (
git push origin feature/amazing-feature) - ๐ฏ Open a Pull Request
๐ License
MIT License - feel free to use this in your projects!
๐ Acknowledgments
- ๐ค pyttsx3 for offline TTS
- ๐ gTTS for Google TTS support
- ๐ playsound for cross-platform audio playback
๐ Support
- ๐ง Report issues on GitHub
- ๐ญ Submit feature requests
- ๐ค Pull requests are welcome
Made with โค๏ธ for the Python community
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyttslib-0.1.0.tar.gz.
File metadata
- Download URL: pyttslib-0.1.0.tar.gz
- Upload date:
- Size: 15.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06e38157ae214775fda544299381979ae9eed06dcf5f585920bbcff161c2ee82
|
|
| MD5 |
947aef4d88c5ae86469e77e2ef09154a
|
|
| BLAKE2b-256 |
156d32228528a7dfa669e28cbdedaf2cab715f542c04199e101158884f0528b1
|
File details
Details for the file pyttslib-0.1.0-py2.py3-none-any.whl.
File metadata
- Download URL: pyttslib-0.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a284016281913e801fcbd14638d0c6048c04dd0701ae3b8b342599615e4bb5c2
|
|
| MD5 |
4633470e8c5c0aed00951180813c78b4
|
|
| BLAKE2b-256 |
e6b79b798644a781589bc87577d8a946810069cdc532a0c16f448552adcd45a9
|