Skip to main content

One-command voice STT + TTS for any app

Project description

VoicePipe

One-command voice integration for any app

PyPI version Python versions License


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


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.4.0.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

voicepipe-0.4.0-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file voicepipe-0.4.0.tar.gz.

File metadata

  • Download URL: voicepipe-0.4.0.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for voicepipe-0.4.0.tar.gz
Algorithm Hash digest
SHA256 723501f2f9ac6a2d523b4965e43e653241f919ea6e0ddce9b655f256a6be4477
MD5 8e8e4651096ab0bf50cddb8915b900b3
BLAKE2b-256 bc3fad1f3d97ec2a89f14ba67ed989fd379e5c8065061fbcacbacd1c2a0276dd

See more details on using hashes here.

File details

Details for the file voicepipe-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: voicepipe-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for voicepipe-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3e8710915dc1e107575b28961e337f490d1e75f35abc475d43f1c5b2b8d4d544
MD5 16616dec483b6e38562acbcee4e3c1d4
BLAKE2b-256 7e72f83ed4a7617aeeba138b43e7d5d15ea4929a73781f64dfbbae33aaf01469

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page