Skip to main content

One-command 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.1.1.tar.gz (13.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.1.1-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

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

Hashes for voicepipe-0.1.1.tar.gz
Algorithm Hash digest
SHA256 41979671316efb21be8aaa0963c5fe526b0b42b60b6ab51c7ee90f118dca99c0
MD5 781325bf78c49c09135fddbbb0a3efb7
BLAKE2b-256 cd9a0a6afd8123a226935d0b25b60b0886e3823c59b556664a0bb8e031c02ea5

See more details on using hashes here.

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

Hashes for voicepipe-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 30e8797ee7648d4a066e41723ab4fd84d908de464f8c323fd674a43df252bb5f
MD5 e62f4259a132a527735510f2d3559da9
BLAKE2b-256 fe49cfe72954f9b0dad00404a2659a9ea361da262324dfdf9914c54307d36b60

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