Skip to main content

ZeroVoice Python 🐍

AI-powered call center in a pip package - Natural conversations, concurrent calling, and real-time monitoring.

🚀 Quick Start

# Install from PyPI
pip install zerovoice

# Or install from source
git clone https://github.com/collinparan/zero-voice.git
cd zero-voice/python
pip install .

⚡ Features

  • 🦀 Rust Performance: Core written in Rust, 10x faster than pure Python
  • 🎭 Natural Conversations: ElevenLabs-style back-and-forth dialogue
  • 📞 Concurrent Calls: Handle 100+ simultaneous calls
  • 📊 Web Dashboard: Beautiful monitoring interface
  • 🎯 Simple API: Pythonic interface for non-Rust developers

📖 Basic Usage

Configure

from zerovoice import configure

configure(
    twilio_sid="your_account_sid",
    twilio_token="your_auth_token",
    twilio_phone="+1234567890",
    webhook_url="https://your-domain.ngrok.io"
)

Make Calls

from zerovoice import CallCenter

# Initialize
center = CallCenter(max_concurrent=10)

# Single call
call_id = center.make_call(
    to_number="+0987654321",
    message="Hello, this is an automated call",
    personality="Alex"  # or "Jamie", "Sam"
)

# Campaign
campaign_id = center.start_campaign(
    phone_numbers=["+111", "+222", "+333"],
    script="Hi {name}, calling about {topic}...",
    personality="Jamie"
)

# Get stats
stats = center.get_stats()
print(f"Success rate: {stats['success_rate']:.1%}")

Natural Conversations

from zerovoice import ConversationManager

# Start conversation
manager = ConversationManager(personality="Alex")
session_id = manager.start_session(
    objectives=["Get feedback", "Schedule follow-up"]
)

# Process dialogue
response = manager.process_turn(
    session_id,
    "Hi, I received your call about my order"
)
print(response['text'])
# "Hello! Yes, I'm calling about your recent order. How was your experience?"

Web Dashboard

from zerovoice.dashboard import run_dashboard

# Launch dashboard
run_dashboard(port=8080)
# Visit http://localhost:8080

🖥️ Command Line Interface

# Configure
zerovoice setup --sid YOUR_SID --token YOUR_TOKEN --phone +1234567890

# Make a call
zerovoice call +0987654321 -m "Hello from ZeroVoice" -p Alex

# Launch campaign
zerovoice campaign -f contacts.csv -s "Survey about {product}" -c 20

# View statistics
zerovoice stats

# Call history
zerovoice history --limit 10

# View transcript
zerovoice transcript CALL_ID

# Search calls
zerovoice search +1234567890

# Launch dashboard
zerovoice dashboard --port 8080

📊 Dashboard Features

The dashboard provides:

  • Real-time Statistics: Live metrics updated every 5 seconds
  • Call History: Searchable log of all calls
  • Transcript Viewer: Read full conversations
  • Quick Dial: Make calls from the browser
  • Campaign Launcher: Start bulk calling campaigns
  • Audio Playback: Listen to call recordings

🛠️ Advanced Usage

Custom Configuration

# Use SQLite database
center = CallCenter(
    max_concurrent=50,
    database_url="sqlite:///path/to/calls.db"
)

# Custom personalities
manager = ConversationManager(personality="Sam")

Webhook Integration

# Process Twilio webhooks
from flask import Flask, request
from zerovoice import CallCenter

app = Flask(__name__)
center = CallCenter()

@app.route('/webhook', methods=['POST'])
def handle_webhook():
    call_data = request.form
    # Process call data
    return "OK"

Batch Operations

# Process CSV file
import csv

with open('contacts.csv') as f:
    reader = csv.DictReader(f)
    numbers = [row['phone'] for row in reader]

campaign_id = center.start_campaign(
    phone_numbers=numbers,
    script="Personalized message...",
    personality="Jamie"
)

🏗️ Architecture

zerovoice/
├── Core (Rust)          # High-performance engine
│   ├── Call management
│   ├── Conversation AI
│   └── Database layer
├── Python Bindings      # PyO3 interface
└── Python Package       # User-friendly API
    ├── CLI
    ├── Dashboard
    └── Utilities

🔧 Development

Install for Development

# Clone repository
git clone https://github.com/collinparan/zero-voice.git
cd zero-voice/python

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Format code
black zerovoice

Building from Source

# Install maturin
pip install maturin

# Build Rust extension
maturin develop

# Build wheel
maturin build --release

📋 Requirements

  • Python 3.8+
  • Twilio Account
  • ngrok (for local development)

🐳 Docker Support

# Using pre-built image
docker run -p 8080:8080 zerovoice/dashboard

# Build your own
docker build -t my-zerovoice .
docker run -p 8080:8080 my-zerovoice

📈 Performance

  • Concurrent Calls: 100+ simultaneous
  • Response Time: <100ms per turn
  • Memory Usage: <50MB for 1000 active calls
  • Database: SQLite for simplicity, PostgreSQL for scale

🤝 Contributing

Contributions welcome! See CONTRIBUTING.md

📄 License

MIT License - see LICENSE

🔗 Links

🆘 Support


Built with ❤️ using Rust 🦀 and Python 🐍

Release files for zerovoice 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zerovoice 0.6.1
File Size Uploaded
zerovoice-0.6.1.tar.gz 16.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zerovoice 0.6.1
File Interpreter ABI Platform
zerovoice-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 32.5 kB

Release files / zerovoice-0.6.1.tar.gz

Download URL zerovoice-0.6.1.tar.gz
Size 16.7 kB
Tags Source
SHA-256 checksum
How to use checksums
6cbc24be0126ea775ccab988df50a6ffad96e5df44c7377dd2f2a75ad7cbf840
BLAKE2b-256 checksum
How to use checksums
d35a6f849189bc587a25b31a97f42152d250991820230cc7313864164ad5a04f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / zerovoice-0.6.1-py3-none-any.whl

Download URL zerovoice-0.6.1-py3-none-any.whl
Size 15.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
365c9abfcd31bc9da79394cf4e69ecea68f818e505e53380765adf4ba6b06139
BLAKE2b-256 checksum
How to use checksums
f90179b3139e365403ed0b8ce8cc13180111bb18120d110f26e35d47a18484fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page