Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Sayna is a unified Voice Layer for AI Agents with a seemless integration to an existing agentic frameworks
| Date | Stars |
|---|---|
| 2026-07-24 | 263 |
| 2026-07-25 | 263 |
| 2026-07-28 | 263 |
| 2026-07-30 | 263 |
| 2026-07-31 | 264 |
| 2026-08-06 | 264 |
Today
— stars today
This week
+1 stars this week
This month
— stars this month
Momentum
1.0
growth rate 0.38%/day
# Sayna
A high-performance real-time voice processing server built in Rust that provides unified Speech-to-Text (STT) and Text-to-Speech (TTS) services through WebSocket and REST APIs.

## Features
- **Unified Voice API**: Single interface for multiple STT/TTS providers
- **Real-time Processing**: WebSocket-based bidirectional audio streaming
- **LiveKit Integration**: WebRTC audio streaming with room-based communication
- **VAD + Turn Detection**: Silero-VAD for audio-level silence detection with integrated ML-based end-of-turn detection (`stt-vad` feature)
- **Advanced Noise Filtering**: Optional DeepFilterNet integration (`noise-filter` feature)
- **Provider Flexibility**: Pluggable architecture supporting multiple providers
- Deepgram (STT/TTS)
- ElevenLabs (STT/TTS)
- Google Cloud (STT/TTS) - WaveNet, Neural2, and Studio voices
- Microsoft Azure (STT/TTS) - 400+ neural voices across 140+ languages
- **Audio-Disabled Mode**: Development mode without API keys
## Quick Start
### Prerequisites
- Docker
- At least one provider credential source (server config/env or per-request/session auth override; optional in audio-disabled mode)
### Run with Docker
```bash
docker run -d \
-p 3001:3001 \
-e DEEPGRAM_API_KEY=your-key \
saynaai/sayna
```
The server will be available at `http://localhost:3001`.
### Docker Compose
```yaml
version: "3.9"
services:
sayna:
image: saynaai/sayna
ports:
- "3001:3001"
environment:
DEEPGRAM_API_KEY: ${DEEPGRAM_API_KEY}
ELEVENLABS_API_KEY: ${ELEVENLABS_API_KEY}
CACHE_PATH: /data/cache
volumes:
- sayna-cache:/data/cache
volumes:
sayna-cache: {}
```
For complete Docker documentation including LiveKit integration, see [docs/docker.md](docs/docker.md).
### Running Without API Keys (Audio-Disabled Mode)
You can run Sayna without provider credentials by using audio-disabled mode. This is useful when you want to exercise the control plane without STT/TTS initialization. Send a WebSocket configuration message with `audio: false`:
```json
{
"type": "config",
"audio": false
}
```
This mode is useful for:
- Local development and testing
- UI/UX development without audio processing
- Testing WebSocket message flows
- Debugging non-audio features
## Authentication (Optional)
Sayna supports customer-based authentication that delegates token validation to an external authentication service. When enabled, protected API endpoints require a valid token provided either as `Authorization: Bearer <token>` or as `?api_key=<token>`.
### Enabling Authentication
Add to your `.env` file:
```env
AUTH_REQUIRED=true
AUTH_SERVICE_URL=https://your-auth-service.com/auth
AUTH_SIGNING_KEY_PATH=/path/to/auth_private_key.pem
AUTH_TIMEOUT_SECONDS=5
```
Generate signing keys:
```bash
# Generate RSA private key
openssl genrsa -out auth_private_key.pem 2048
# Extract public key (share with auth service)
openssl rsa -in auth_private_key.pem -pubout -out auth_public_key.pem
```
### Making Authenticated Requests
```bash
# Authorization header
curl -X POST http://localhost:3001/speak \
-H "Authorization: Bearer your-token-here" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello world",
"tts_config": {
"provider": "deepgram",
"model": "aura-asteria-en"
}
}'
# Query parameter alternative
curl -X POST "http://localhost:3001/speak?api_key=your-token-here" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello world",
"tts_config": {
"provider": "deepgram",
"model": "aura-asteria-en"
}
}'
```
For complete authentication setup and architecture details, see [docs/authentication.md](docs/authentication.md).
## API Endpoints
### WebSocket
- **Endpoint**: `/ws`
- **Protocol**: WebSocket
- **Purpose**: Real-time bidirectional audio streaming and control
#### Message Types
**Configuration Message**:
```json
{
"type": "config",
"audExcerpt of 11,779 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:562573151a0dd575, topic:text-to-speech, topic:speech-to-text, readme:speech-to-text
matched fp:562573151a0dd575, topic:ai-agents, desc:ai agents, desc:agentic