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.2.0.tar.gz (18.3 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.2.0-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for voicepipe-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d2b7ef41737a5b47734b7bd63a85e9c7f5a7783632d600e61cb92534009343e4
MD5 e53911d140cd89c86b83a4abe5c772e5
BLAKE2b-256 71c8e7a7451758e74a83c1ab9ce31c22e442feceb46847c06fd55f80d117cc4f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: voicepipe-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 20.7 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0dac6b7fb68620106a0373d27672c92dfdd6bb3db177c55a1320914a9c7bb6c1
MD5 daa92af2f9b306ab830c6848a2e2a137
BLAKE2b-256 dbbe3e500b89423022ca0bf164f68252e6723f0f4f8aa71867a238e382c70c3d

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