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
- Issues: GitHub Issues
- Discord: Join our server
- Email: support@zerovoice.ai
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)
| File | Size | Uploaded | |
|---|---|---|---|
| zerovoice-0.6.1.tar.gz | 16.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|