Voice Summary - Open Source Voice Agent Analytics Platform
Welcome to the Voice Summary project! This guide will help you understand how to use, contribute to, and extend this open source platform.
Voice Summary is a comprehensive platform for analyzing, storing, and visualizing voice call data. It's designed to help developers, researchers, and businesses understand and improve their voice agent interactions.
- 🎵 AI-Powered Audio Analysis: Advanced voice analysis with pause detection and speech segmentation
- 📝 Transcript Enhancement: Automatic timestamp alignment and conversation analysis
- ☁️ S3 Integration: Secure audio file storage with automatic format detection
- 🌐 Modern Web UI: Beautiful React/Next.js frontend with real-time visualization
- 🔌 Flexible Data Ingestion: Support for both direct API calls and platform integrations
# Clone the repository
git clone https://github.com/yourusername/voicesummary.git
cd voicesummary
# Run the complete setup script
./setup.sh
# Start the application
./start_backend.sh # Terminal 1
./start_frontend.sh # Terminal 2- Backend API: http://localhost:8000
- Frontend App: http://localhost:3000
- API Documentation: http://localhost:8000/docs
- Database: PostgreSQL with automatic migrations
- S3 Integration: Ready for audio file storage
- README.md: Comprehensive project overview and setup
- QUICKSTART.md: 5-minute setup guide
- OPEN_SOURCE_GUIDE.md: This guide for contributors
- examples/: Working code samples and integration examples
- examples/README.md: Detailed examples documentation
- Interactive Docs: http://localhost:8000/docs (when running)
- Schema Definitions:
app/schemas.py - Endpoint Implementation:
app/api/calls.py
app/
├── api/ # REST API endpoints
├── integrations/ # External platform integrations
├── utils/ # Core utilities and audio processing
├── models.py # Database models
├── schemas.py # API request/response schemas
└── main.py # FastAPI application entry point
frontend/
├── app/ # Next.js app directory
├── components/ # React components
├── types/ # TypeScript type definitions
└── package.json # Dependencies and scripts
- Audio Processor:
app/utils/audio_processor.py - Voice Analyzer:
app/utils/improved_voice_analyzer.py - S3 Manager:
app/utils/s3.py - Timeline Component:
frontend/components/EnhancedTimeline.tsx
Perfect for custom voice platforms and integrations:
import requests
# Create a call record
response = requests.post("http://localhost:8000/api/calls/", json={
"call_id": "call_123",
"transcript": {
"turns": [
{"role": "AGENT", "content": "Hello!", "timestamp": "2025-01-01T10:00:00Z"},
{"role": "USER", "content": "Hi there!", "timestamp": "2025-01-01T10:00:01Z"}
]
},
"timestamp": "2025-01-01T10:00:00Z"
})Benefits:
- ✅ Full control over data structure
- ✅ Real-time ingestion
- ✅ Custom metadata support
- ✅ Integration with any voice platform
Built-in integration for Bolna users:
# Run the Bolna fetcher
python app/integrations/fetch_bolna_calls_simple.pyBenefits:
- ✅ Automatic call discovery
- ✅ Built-in audio processing
- ✅ Transcript normalization
- ✅ Seamless S3 integration
# 1. Clone and setup
git clone https://github.com/yourusername/voicesummary.git
cd voicesummary
./setup.sh
# 2. Create feature branch
git checkout -b feature/amazing-feature
# 3. Start development servers
./start_backend.sh # Terminal 1
./start_frontend.sh # Terminal 2
# 4. Make your changes
# 5. Test your changes
# 6. Commit and push
git add .
git commit -m "Add amazing feature"
git push origin feature/amazing-feature- Python: Follow PEP 8, use type hints, add docstrings
- TypeScript: Use strict mode, proper typing, component documentation
- Testing: Add tests for new features
- Documentation: Update relevant docs when changing functionality
# Analyze call quality and performance
call_data = {
"call_id": "agent_performance_001",
"transcript": {...},
"metadata": {
"agent_id": "agent_123",
"call_type": "customer_support",
"performance_metrics": {
"response_time": 2.5,
"customer_satisfaction": 4.8
}
}
}# Study conversation patterns
call_data = {
"call_id": "research_001",
"transcript": {...},
"metadata": {
"research_study": "conversation_flow_analysis",
"participant_id": "P001",
"study_phase": "baseline"
}
}# Monitor call quality
call_data = {
"call_id": "qa_001",
"transcript": {...},
"metadata": {
"qa_score": 95,
"supervisor_notes": "Excellent call handling",
"improvement_areas": ["greeting", "closing"]
}
}# Extend the voice analyzer
class CustomVoiceAnalyzer(ImprovedVoiceAnalyzer):
def analyze_emotion(self, audio_path: str) -> Dict[str, float]:
"""Add emotion detection to your analysis."""
# Your custom emotion analysis logic
return {"happiness": 0.8, "frustration": 0.1}
# Use in audio processor
analyzer = CustomVoiceAnalyzer(audio_path=audio_file_path)
emotion_results = analyzer.analyze_emotion(audio_file_path)// Add new visualization components
interface CallMetricsProps {
callId: string;
metrics: CallMetrics;
}
export const CallMetrics: React.FC<CallMetricsProps> = ({ callId, metrics }) => {
return (
<div className="call-metrics">
<h3>Call Performance</h3>
<div className="metrics-grid">
<MetricCard title="Duration" value={metrics.duration} />
<MetricCard title="Quality Score" value={metrics.qualityScore} />
</div>
</div>
);
};# Add new fields to models
class AudioCall(Base):
__tablename__ = "audio_calls"
# Existing fields...
call_id = Column(String, primary_key=True)
# New custom fields
sentiment_score = Column(Float, nullable=True)
language_detected = Column(String, nullable=True)
custom_metadata = Column(JSON, nullable=True)
# Create and run migration
# alembic revision --autogenerate -m "Add sentiment analysis"
# alembic upgrade head# Already covered by setup.sh
./start_backend.sh
./start_frontend.sh# Install production dependencies
pip install -r requirements.txt
# Set production environment
export ENVIRONMENT=production
export DEBUG=false
# Start production server
gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker
# Build frontend
cd frontend && npm run build# Use existing Docker setup
docker-compose up --build -d- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes following the code quality standards
- Add tests for new functionality
- Update documentation as needed
- Commit your changes:
git commit -m 'Add amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request with detailed description
- Bug fixes and improvements
- New audio analysis features
- Frontend component enhancements
- Performance optimizations
- Documentation improvements
- Test coverage additions
- All contributions require review
- Maintainers will review within 48 hours
- Address feedback promptly
- Ensure all tests pass
- Update documentation as needed
- Setup problems: Check QUICKSTART.md
- API errors: Review examples/ and API docs
- Database issues: Verify PostgreSQL and migrations
- S3 problems: Check AWS credentials and permissions
- GitHub Issues: Create detailed issue reports
- Discussions: Use GitHub Discussions for questions
- Documentation: Check all README files
- Examples: Run example scripts to test functionality
# Check backend logs
./start_backend.sh # Look for error messages
# Check frontend logs
./start_frontend.sh # Look for build errors
# Test API endpoints
curl http://localhost:8000/health
# Check database
psql $DATABASE_URL -c "SELECT COUNT(*) FROM audio_calls;"- Customer Support Analytics: Track call quality and agent performance
- Research Platforms: Study conversation patterns and speech characteristics
- Quality Assurance Tools: Monitor and improve voice agent interactions
- Business Intelligence: Generate insights from call data
- AI Training: Use enhanced transcripts for machine learning
- Audio format support: Added support for new audio formats
- Analysis algorithms: Enhanced voice analysis capabilities
- Frontend components: New visualization and interaction components
- Integration modules: Support for additional voice platforms
- Real-time streaming: Live audio analysis during calls
- Multi-language support: Internationalization and language detection
- Advanced analytics: Machine learning-powered insights
- Mobile app: React Native mobile application
- API rate limiting: Production-ready API management
- Voice agent marketplace: Platform for voice agent developers
- Enterprise features: Advanced security and compliance
- AI model training: Custom voice analysis models
- Global deployment: Multi-region infrastructure
- Core Team: Project maintainers and architects
- Community Contributors: Open source contributors
- Beta Testers: Early adopters and feedback providers
- FastAPI: Modern, fast web framework
- Next.js: React framework for production
- PostgreSQL: Reliable database system
- AWS S3: Scalable file storage
- Librosa: Audio processing library
This project is licensed under the MIT License - see the LICENSE file for details.
By contributing to this project, you agree that your contributions will be licensed under the same MIT License.
We are committed to providing a welcoming and inspiring community for all. Please read our Code of Conduct for details.
- Clone the repository:
git clone https://github.com/yourusername/voicesummary.git - Run the setup:
./setup.sh - Start building:
./start_backend.shand./start_frontend.sh - Join the community: Star the repo, open issues, contribute code!
Happy voice analyzing! 🎤✨
Voice Summary - Making voice analytics accessible to everyone
Built with ❤️ for the voice agent community