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 🐍
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| zerovoice-0.6.1.tar.gz | 16.7 kB | Without provenance | Details for zerovoice-0.6.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| zerovoice-0.6.1-py3-none-any.whl | Python 3 | none | any | Details for zerovoice-0.6.1-py3-none-any.whl |
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
|
Security for zerovoice 0.6.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.