Skip to content

allo-media/siprec

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SIPREC Server

Go Version License Documentation

A high-performance, production-ready SIP recording (SIPREC) server that implements RFC 7865/7866 with real-time transcription capabilities.

✨ Key Features

  • 📞 SIPREC Protocol - Full RFC 7865/7866 compliance for SIP session recording
  • 🎙️ Real-time Transcription - Integration with multiple Speech-to-Text providers
  • 🔐 Security - TLS/SRTP support with end-to-end encryption options
  • 📊 Scalable - Handle thousands of concurrent sessions
  • 🌐 WebSocket Streaming - Real-time transcription delivery
  • 📨 Message Queue - AMQP integration for reliable message delivery
  • 🎵 Audio Processing - VAD, noise reduction, multi-channel support
  • 📈 Production Ready - Health checks, metrics, and comprehensive monitoring

🚀 Quick Start

Installation

# Linux installation (recommended)
wget https://raw.githubusercontent.com/loreste/siprec/main/install_siprec_linux.sh
chmod +x install_siprec_linux.sh
sudo ./install_siprec_linux.sh

Docker

docker run -d \
  --name siprec \
  -p 5060:5060/udp \
  -p 5060:5060/tcp \
  -p 8080:8080 \
  -v $(pwd)/recordings:/opt/siprec/recordings \
  ghcr.io/loreste/siprec:latest

Basic Configuration

Create a .env file:

# Network
SIP_PORTS=5060
EXTERNAL_IP=auto

# STT Provider
STT_VENDORS=mock  # or google, deepgram, openai, etc.

# Audio Processing
VAD_ENABLED=true
NOISE_REDUCTION_ENABLED=true

For detailed configuration, see Configuration Guide.

📖 Documentation

Comprehensive documentation is available in the docs directory:

🏗️ Architecture

SIPREC Server is built with a modular architecture:

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   SIP/RTP   │────▶│   Audio     │────▶│     STT     │
│   Handler   │     │ Processing  │     │  Provider   │
└─────────────┘     └─────────────┘     └─────────────┘
                            │                    │
                            ▼                    ▼
                    ┌─────────────┐     ┌─────────────┐
                    │  Recording  │     │ WebSocket/  │
                    │   Storage   │     │    AMQP     │
                    └─────────────┘     └─────────────┘

🔌 API Endpoints

HTTP API

  • GET /health - Health check endpoint
  • GET /health/live - Kubernetes liveness probe
  • GET /health/ready - Kubernetes readiness probe
  • GET /metrics - Prometheus metrics
  • GET /api/sessions - Active sessions
  • GET /api/sessions/stats - Session statistics

WebSocket

  • WS /ws/transcriptions - Real-time transcription stream

See API Reference for details.

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

# Clone the repository
git clone https://github.com/loreste/siprec.git
cd siprec

# Install dependencies
go mod download

# Run tests
make test

# Build
make build

📊 Performance

SIPREC Server is designed for high performance:

  • Handle 1000+ concurrent sessions
  • Process 50,000+ RTP packets/second
  • Sub-100ms transcription latency
  • Minimal CPU and memory footprint

See Performance Tuning Guide for optimization tips.

🔐 Security

Security features include:

  • TLS 1.3 for SIP signaling
  • SRTP for media encryption
  • End-to-end encryption for recordings
  • API authentication
  • IP whitelisting

See Security Guide for configuration.

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Built with sipgo for SIP handling
  • Uses pion/sdp for SDP parsing
  • Integrates with multiple STT providers

📞 Support


Current Version: v1.0.0 | Go Version: 1.21+ | Status: Production Ready

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 91.2%
  • Shell 6.5%
  • Makefile 1.2%
  • Other 1.1%