AI-powered call center with natural conversation capabilities (Pure Python)
Project description
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 ๐
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zerovoice-0.6.1.tar.gz.
File metadata
- Download URL: zerovoice-0.6.1.tar.gz
- Upload date:
- Size: 16.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cbc24be0126ea775ccab988df50a6ffad96e5df44c7377dd2f2a75ad7cbf840
|
|
| MD5 |
e5dd3dbd63706a65103fa83456ec2325
|
|
| BLAKE2b-256 |
d35a6f849189bc587a25b31a97f42152d250991820230cc7313864164ad5a04f
|
File details
Details for the file zerovoice-0.6.1-py3-none-any.whl.
File metadata
- Download URL: zerovoice-0.6.1-py3-none-any.whl
- Upload date:
- Size: 15.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
365c9abfcd31bc9da79394cf4e69ecea68f818e505e53380765adf4ba6b06139
|
|
| MD5 |
f32f7aae51e5f86c01d907b86ccf6405
|
|
| BLAKE2b-256 |
f90179b3139e365403ed0b8ce8cc13180111bb18120d110f26e35d47a18484fa
|