One-command STT + TTS for any app
Project description
VoicePipe
One-command voice integration for any app
Overview
VoicePipe provides one-command STT (Speech-to-Text) + TTS (Text-to-Speech) for any application.
- STT: whisper.cpp - fastest local speech recognition
- TTS: KittenTTS - smallest neural TTS (15-80MB)
Installation
pip install voicepipe
Quick Start
from voicepipe import VoicePipeline
# Initialize (auto-downloads models)
voice = VoicePipeline()
# Speech to Text
text = voice.speech_to_text("audio.wav")
print(f"You said: {text}")
# Text to Speech
audio = voice.text_to_speech("Hello, world!")
Requirements
- Python 3.8+
- FFmpeg (for audio processing)
Install FFmpeg
macOS:
brew install ffmpeg
Linux:
sudo apt install ffmpeg
Windows:
choco install ffmpeg
Configuration
voice = VoicePipeline(
stt_model="tiny", # tiny, base, small
tts_model="nano", # nano, micro, mini
tts_voice="Bella", # 8 voices available
tts_speed=1.0, # 0.5 - 2.0
language="en", # or "auto"
cache_dir="~/.voicepipe" # model cache
)
Available Voices
- Bella, Jasper, Luna, Bruno, Rosie, Hugo, Kiki, Leo
Models
STT (whisper.cpp)
| Model | Size | RAM | Speed |
|---|---|---|---|
| tiny | 75MB | ~500MB | 10x realtime |
| base | 142MB | ~1GB | 5x realtime |
| small | 466MB | ~2GB | 2x realtime |
TTS (KittenTTS)
| Model | Size | Quality |
|---|---|---|
| nano | 15MB | Good |
| micro | 40MB | Better |
| mini | 80MB | Best |
Use Cases
Chatbot with Voice
@app.post("/voice/chat")
async def voice_chat(audio: bytes):
# Convert speech to text
text = voice.speech_to_text_bytes(audio)
# Get chatbot response
response = await chatbot.chat(text)
# Convert response to speech
audio_response = voice.text_to_speech(response)
return {"audio": audio_response}
Voice Assistant
async def run_assistant():
while True:
# Continuously listen and respond
text = await voice.speech_to_text_async(microphone_stream)
response = await assistant.respond(text)
voice.text_to_speech(response, play=True)
API Reference
VoicePipeline
| Method | Description |
|---|---|
speech_to_text(audio_path) |
Convert audio file to text |
speech_to_text_bytes(audio_data) |
Convert raw audio to text |
text_to_speech(text) |
Convert text to audio bytes |
text_to_speech_file(text, path) |
Convert text to audio file |
list_voices() |
Get available TTS voices |
get_status() |
Get pipeline status |
Development
# Clone repository
git clone https://github.com/danlab-ai/voicepipe.git
cd voicepipe
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black src/voicepipe
ruff check src/voicepipe
License
MIT License - see LICENSE
Built by DanLab
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
voicepipe-0.1.1.tar.gz
(13.3 kB
view details)
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
voicepipe-0.1.1-py3-none-any.whl
(14.1 kB
view details)
File details
Details for the file voicepipe-0.1.1.tar.gz.
File metadata
- Download URL: voicepipe-0.1.1.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41979671316efb21be8aaa0963c5fe526b0b42b60b6ab51c7ee90f118dca99c0
|
|
| MD5 |
781325bf78c49c09135fddbbb0a3efb7
|
|
| BLAKE2b-256 |
cd9a0a6afd8123a226935d0b25b60b0886e3823c59b556664a0bb8e031c02ea5
|
File details
Details for the file voicepipe-0.1.1-py3-none-any.whl.
File metadata
- Download URL: voicepipe-0.1.1-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30e8797ee7648d4a066e41723ab4fd84d908de464f8c323fd674a43df252bb5f
|
|
| MD5 |
e62f4259a132a527735510f2d3559da9
|
|
| BLAKE2b-256 |
fe49cfe72954f9b0dad00404a2659a9ea361da262324dfdf9914c54307d36b60
|