openai-tts-tool
A command-line interface for OpenAI Text-to-Speech API.
Features
- Convert text to natural-sounding speech
- Six high-quality voices with different characteristics
- Two TTS models (tts-1 and tts-1-hd) for speed vs quality
- Multiple audio formats: mp3, opus, aac, flac
- Stream to speakers or save to files
- Adjustable speech speed (0.25 to 4.0)
- Multi-level verbosity logging
- Shell completion support
Installation
# Prerequisites
# - Python 3.14+
# - uv package manager
# Clone and install globally
git clone https://github.com/dnvriend/openai-tts-tool.git
cd openai-tts-tool
uv tool install .
# Verify installation
openai-tts-tool --version
Configuration
Set the OpenAI API key:
export OPENAI_API_KEY="your-api-key-here"
# Add to shell profile for persistence
echo 'export OPENAI_API_KEY="your-api-key-here"' >> ~/.bashrc # or ~/.zshrc
source ~/.bashrc # or ~/.zshrc
Usage
# Basic synthesis (stream to speakers)
openai-tts-tool synthesize "Hello, world!"
# Save to file with specific voice
openai-tts-tool synthesize "Hello, world!" --voice nova --output hello.mp3
# High-quality synthesis with custom settings
openai-tts-tool synthesize "Welcome" \
--voice alloy \
--model tts-1-hd \
--output welcome.mp3 \
--format mp3 \
--speed 1.2
# Read from stdin
echo "Hello from stdin" | openai-tts-tool synthesize --stdin --output hello.mp3
# List available voices and models
openai-tts-tool list-voices
openai-tts-tool list-models
# Multi-level verbosity for debugging
openai-tts-tool -v synthesize "Test" # INFO level
openai-tts-tool -vv synthesize "Test" # DEBUG level
openai-tts-tool -vvv synthesize "Test" # TRACE with library logs
Options
Synthesize Command
| Option | Short | Description |
|---|---|---|
--voice |
-v |
Voice to use (alloy, echo, fable, onyx, nova, shimmer) |
--model |
-m |
TTS model (tts-1, tts-1-hd) |
--output |
-o |
Output file path (default: stream to speakers) |
--format |
-f |
Audio format (mp3, opus, aac, flac) |
--speed |
-s |
Speech speed (0.25 to 4.0) |
--stdin |
Read text from stdin |
Global Options
| Option | Short | Description |
|---|---|---|
--verbose |
-v |
Verbose output: -v (INFO), -vv (DEBUG), -vvv (TRACE with library logs) |
--version |
Show version information | |
--help |
-h |
Show help message |
Voices and Models
Voices
| Voice | Description |
|---|---|
| alloy | Balanced, natural voice (default) |
| echo | Deeper, authoritative voice |
| fable | Warm, engaging storyteller |
| onyx | Deep, confident voice |
| nova | Clear, professional voice |
| shimmer | Softer, expressive voice |
Models
| Model | Quality | Speed | Use Case |
|---|---|---|---|
| tts-1 | Standard | Fast | Real-time applications |
| tts-1-hd | High | Slower | High-quality audio production |
Audio Formats
| Format | Quality | Use Case |
|---|---|---|
| mp3 | Good | Maximum compatibility |
| opus | Excellent | Streaming, low bandwidth |
| aac | Very Good | Apple devices |
| flac | Lossless | High-fidelity production |
Library Usage
from openai_tts_tool import TTSClient
client = TTSClient(api_key="your-key")
# Stream to speakers
client.synthesize("Hello, world!", voice="alloy")
# Save to file
client.synthesize(
"Hello, world!",
voice="nova",
model="tts-1-hd",
output="hello.mp3",
speed=1.2
)
Development
make install # Install dependencies
make format # Format code with ruff
make lint # Run linting with ruff
make typecheck # Run type checking with mypy
make test # Run tests with pytest
make security # Run all security checks
make check # Run all checks (lint, typecheck, test, security)
make pipeline # Run full pipeline
make build # Build package
make run ARGS="..." # Run openai-tts-tool locally
License
MIT License - see the LICENSE file for details.
Author
Dennis Vriend - GitHub
Metadata
Release files for openai-tts-tool 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openai_tts_tool-0.1.0.tar.gz | 70.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openai_tts_tool-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 99.3 kB
Release files / openai_tts_tool-0.1.0.tar.gz
| Download URL | openai_tts_tool-0.1.0.tar.gz |
|---|---|
| Size | 70.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
deb8b76bbd6e2977cc3bfcaedbe67960812f5b8464053de9f8360373d0fc33a6
|
|
BLAKE2b-256 checksum How to use checksums |
0dd56887a09504af658391c363d81d9bcf72fd5a98bfd71414c58d24a7ced7f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 5, 2025.
Transparency logRelease files / openai_tts_tool-0.1.0-py3-none-any.whl
| Download URL | openai_tts_tool-0.1.0-py3-none-any.whl |
|---|---|
| Size | 28.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
175cec4289ddb3ec57ca98464db0ec893936b523d1252d5c3b95976e8e1e35cd
|
|
BLAKE2b-256 checksum How to use checksums |
8ffab5dc45c8ffea3be528ab8cda214d8209ce1b0725c33ff70954b95522d73d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 5, 2025.
Transparency log