osay - AI Text-to-Speech
A CLI tool for AI-powered speech synthesis. Convert text to natural-sounding speech for various use cases.
Quick Reference
# Show all available options osay --help # Basic usage - speak text osay "Hello, world!" # Check pronunciation of unfamiliar words osay "ephemeral" osay "Nietzsche" osay "queue" # With specific voice osay -v coral "Welcome to the presentation." # Save as audio file osay -o output.mp3 "This will be saved to a file." # Replay last audio osay -p
Use Cases
1. Pronunciation Queries
Quickly hear correct pronunciation of unfamiliar words:
# English words osay "pronunciation" osay "worcestershire" # Names and proper nouns osay "Dostoevsky" osay "Nguyen" # Technical terms osay "asynchronous" osay "kubernetes"
2. Content Reading
Read articles, documentation, or text content aloud:
# Read a paragraph osay "The quick brown fox jumps over the lazy dog." # With neutral tone (no default cheerfulness) osay --no-instructions "This is a factual news report." # Slow and clear for comprehension osay --instructions "Speak slowly and clearly" "Complex technical content here."
3. Audio Generation
Create audio files for various purposes:
# Podcast intro osay -v onyx -o intro.mp3 "Welcome to the show." # Notification sounds osay -o alert.mp3 "Task completed successfully." # Voice memo osay -o memo.mp3 "Remember to review the pull request tomorrow."
4. Language Learning
Practice pronunciation and listening comprehension:
# Practice sentences osay -v coral "I'd like a cup of coffee, please." # Slow speed for beginners osay --instructions "Speak slowly, pausing between phrases" \ "Could you repeat that more slowly?" # Natural native speed osay --instructions "Speak at natural native speed" \ "I'm gonna grab a coffee real quick."
See examples/english/SENTENCES.md for practice sentence collections.
Voices
List available voices with osay -v '?'
| Voice | Characteristics |
|---|---|
| alloy | Neutral, balanced |
| ash | Soft, gentle |
| ballad | Melodic, smooth |
| coral | Warm, conversational |
| echo | Resonant, clear |
| fable | Storytelling, narrative |
| nova | Clear, standard |
| onyx | Deeper, formal |
| sage | Calm, wise |
| shimmer | Expressive, emotional |
Speech Instructions
Control tone and delivery style:
# Natural conversation osay --instructions "Speak naturally, like talking to a friend" "Hey, what's up?" # Professional presentation osay --instructions "Speak clearly and professionally" "Q4 results exceeded expectations." # Emphatic osay --instructions "Speak with enthusiasm" "This is amazing news!" # Neutral (disable default tone) osay --no-instructions "Objective statement."
Cache Management
Audio files are cached automatically in ~/.osay/audios/:
# List cached audio with metadata osay --list-cached # Replay most recent osay -p osay --prev # Select from cache interactively (with fzf) osay --play-cached # Play specific cached audio by ID osay --play-cached abc123
Output Formats
Use --format to specify audio format:
| Format | Use Case |
|---|---|
| mp3 | Default, general purpose |
| opus | Efficient storage, streaming |
| aac | Apple ecosystem, good compression |
| flac | Lossless, archival quality |
| wav | Lossless, editing |
| pcm | Raw audio, processing |
osay -o output.mp3 "Default format" osay -o speech.wav --format wav "High quality audio" osay -o compressed.opus --format opus "Small file size"
Input Methods
Multiple ways to provide text:
# Direct text argument osay "Hello, world!" # Read from file osay -f mytext.txt osay -f document.txt -v nova # Pipe from stdin echo "Hello from a pipe" | osay cat article.txt | osay -v coral # Combine with other commands curl -s https://example.com/quote.txt | osay
Streaming Mode
Use --no-cache for lowest latency (live streaming, no cache):
# Quick response without caching osay --no-cache "Instant playback!" # Useful for real-time applications osay --no-cache -v coral "This plays immediately"
Batch Processing
Process multiple texts:
# From file (one per line) while IFS= read -r line; do osay "$line" sleep 0.5 done < texts.txt # Generate multiple files osay -o file1.mp3 "First message" osay -o file2.mp3 "Second message"
Configuration
API Key Management
# Setup OpenAI API key interactively osay --setup # Check if key is configured osay --show-key # Remove stored key osay --remove-key
Environment
- •Config file:
~/.config/osay/config - •Audio cache:
~/.osay/audios/ - •Environment variable:
OPENAI_API_KEY(overrides config file)
Falls back to macOS say command if no OpenAI key is available.