Platform Improvements
Munin Huginn™ continuously improves the platform. The chart shows the growth of training data and model quality over time.
Recent Updates
Key Metrics
| Munin Accelerate™ hit rate | 94% |
| Response time with Accelerate™ | Sub-2 ms |
| Time to first byte (streaming) | From <100 ms |
| Pronunciation corrections (nb) | 123 rules |
| Pronunciation languages supported | 13 |
| Stress test passed | 63,000+ requests |
| Latest deploy gate | PASS |
Platform Overview
Munin Labs operates a fully isolated infrastructure within AWS EU regions. All processing takes place within the customer's chosen AWS region. Data never leaves the EU.
Production Architecture
Language Endpoints
Each language has a dedicated endpoint. No language detection required — the endpoint enforces the correct language. This eliminates misclassification and delivers the highest possible quality.
Customer-Isolated Endpoints
For enterprise customers we provide fully isolated endpoints with dedicated data storage, individual SLA targets and segregated reporting.
nb.{customer}.api.muninlabs.io
sv.{customer}.api.muninlabs.io
da.{customer}.api.muninlabs.io
Each customer receives isolated Munin Accelerate™, dedicated logging, and full GDPR deletion with a single command.
| Capability | Description |
|---|---|
| Data isolation | Fully separated data storage per customer. No cross-contamination possible |
| Munin Accelerate™ | Dedicated per customer. No sharing of optimised data |
| GDPR deletion | A single API command permanently and irreversibly deletes all customer data |
| Per-customer SLA | Individual uptime monitoring and reporting |
| Logging | Segregated logging — each customer sees only their own data |
Security Overview
Munin Labs is built with security as a foundational principle. All data processing takes place in AWS EU regions, with encryption at every layer and no third-party services involved in data processing.
Encryption
| In transit | TLS 1.3 |
| At rest | AES-256 |
| Certificate management | Automatic renewal |
| API key hashing | bcrypt (cost 14) |
| WebSocket | WSS (encrypted) |
Access Control
| Authentication | API key + HMAC signature |
| Authorisation | Per-customer isolation (RLS) |
| Admin access | SSH key pairs, no passwords |
| Network access | Only port 443 open externally |
| Internal communication | Private VPC, no public IPs |
Data Residency
| Data Type | Storage | Retention |
|---|---|---|
| Audio (speech) | RAM only during processing | Never stored |
| Transcriptions | Encrypted, per-customer isolation | Configurable |
| Metadata | Encrypted database in EU | Configurable |
| Model data | Encrypted in EU region | Permanent (not customer data) |
Munin Sentinel™ — Continuous Monitoring
Munin Sentinel™ monitors the entire platform in real time, 24/7/365. Anomalies trigger automatic remediation to maintain service quality.
| Check | Frequency | Action on anomaly |
|---|---|---|
| Service health | Every 60 seconds | Automatic restart within 30 seconds |
| Response time | Every 60 seconds | Buffer flush + escalation |
| Capacity | Every 60 seconds | Automatic scale-up within 5 minutes |
| Security | Continuous | Blocking + alerting |
| Certificates | Daily | Automatic renewal |
Security Policies
| Policy | Status | Standard |
|---|---|---|
| Information Security Policy | Active | ISO 27001 |
| Acceptable Use | Active | SOC2 CC1 |
| Access Control Policy | Active | SOC2 CC6 |
| Incident Response | Active | SOC2 CC7 |
| Change Management | Active | SOC2 CC8 |
| Risk Management | Active | SOC2 CC3 |
| Privacy Policy | Active | GDPR |
| Backup Policy | Active | SOC2 CC9 |
GDPR & Privacy
Munin Labs is designed from the ground up for GDPR compliance. We act as a data processor on behalf of the customer. No personal data leaves the customer's chosen EU region.
Data Flow Diagram
Privacy Guarantees
| Audio is never stored | Guaranteed |
| No third-party services | Guaranteed |
| EU data residency | Guaranteed |
| Per-customer data isolation | Guaranteed |
| Right to erasure | API available |
| Data Processing Agreement | Available |
Compliance Roadmap
| Standard | Status |
|---|---|
| GDPR | Compliant |
| NIS2 | Aligned |
| DORA (finance/insurance) | Aligned |
| SOC2 Type I | Planned Q3 |
| ISO 27001 | Planned Q4 |
| Schrems II | Not applicable |
Customer Data Deletion (GDPR Art. 17)
Upon termination of a customer relationship or upon request, all customer data is permanently deleted:
Maximum processing time: 72 hours. Typical: under 24 hours.
SLA — Service Level Agreement
Munin Labs commits to 99.9% uptime for the production environment. In the event of an SLA breach, credits are issued according to the agreed compensation model.
Failover Architecture
SLA Tiers
| Component | Target | Max downtime/month | Alerting |
|---|---|---|---|
| API availability | 99.9% | 43 minutes | Immediate |
| TTS streaming TTFB | From <100 ms | N/A | On threshold breach |
| TTS with Munin Accelerate™ | Sub-2 ms | N/A | On threshold breach |
| Failover time | <60 seconds | N/A | Automatic |
| Planned maintenance | Zero-downtime | 0 minutes | 48-hour advance notice |
Incident Response
| Severity | Response Time | Resolution Time | Example |
|---|---|---|---|
| Critical (P1) | 15 minutes | 4 hours | Total service outage |
| High (P2) | 1 hour | 8 hours | Degraded performance |
| Medium (P3) | 4 hours | 24 hours | Single service failure |
| Low (P4) | Next business day | 5 business days | Cosmetic / minor |
SLA Breach Compensation
| Uptime | Credit |
|---|---|
| 99.0% — 99.9% | 10% of monthly fee |
| 95.0% — 99.0% | 25% of monthly fee |
| <95.0% | 50% of monthly fee |
Development & Deployment Process
Munin Labs follows a strict development process with automated testing, a staging environment and zero-downtime deployments. No code change reaches production without passing Munin Deploy Gate™.
Deployment Pipeline
1,500 automated tests
Zero-downtime hot-swap
Munin Deploy Gate™
Every update must pass 1,500 automated tests before it can be deployed. The gate test covers:
| Text-to-speech quality | 150 x 10 batches |
| Norwegian (Bokmål) | Tested |
| Norwegian (Nynorsk) | Tested |
| Regression | 0 allowed |
| Automatic rollback | On failure |
Zero-Downtime Deployment
Updates are deployed without any service interruption:
Total deployment time: under 5 minutes. Customers notice nothing.
Environments
| Environment | Address | Purpose | Stability |
|---|---|---|---|
| PROD | api.muninlabs.io |
Production. Verified releases only | 99.9% SLA |
| DEV | api.dev.muninlabs.io |
Testing and integration. Identical to prod | Best effort |
Munin Huginn™ — Continuous Improvement
Munin Huginn™ analyses and improves the platform automatically, around the clock:
| Task | Frequency | Description |
|---|---|---|
| Pronunciation analysis | Every 2 hours | Automatically identifies and corrects pronunciation errors |
| Training data generation | Daily | Generates new training examples for all supported languages |
| Model optimisation | Weekly | Evaluates and improves model quality |
| Quality reporting | Daily | Automatic report on improvements and deviations |
API Reference
Munin Labs offers a simple, stable API based on WebSocket (AudioHook protocol) for real-time speech-to-text and text-to-speech.
Endpoints
https://api.muninlabs.io/v1/speak
wss://api.muninlabs.io/v1/ws
https://api.dev.muninlabs.io/v1/speak
Language-Specific Endpoints
For the simplest possible integration we offer language-specific endpoints that enforce the correct language without any language detection. Each endpoint supports both TTS (HTTPS) and AudioHook STT (WSS).
| Language | TTS (HTTPS) | AudioHook STT (WSS) | ISO |
|---|---|---|---|
| Norwegian Bokmål | nb.api.muninlabs.io/v1/speak | nb.api.muninlabs.io/v1/ws | nb |
| Norwegian Nynorsk | nn.api.muninlabs.io/v1/speak | nn.api.muninlabs.io/v1/ws | nn |
| Swedish | sv.api.muninlabs.io/v1/speak | sv.api.muninlabs.io/v1/ws | sv |
| Danish | da.api.muninlabs.io/v1/speak | da.api.muninlabs.io/v1/ws | da |
| Finnish | fi.api.muninlabs.io/v1/speak | fi.api.muninlabs.io/v1/ws | fi |
| Icelandic | is.api.muninlabs.io/v1/speak | is.api.muninlabs.io/v1/ws | is |
| Northern Sami | sme.api.muninlabs.io/v1/speak | sme.api.muninlabs.io/v1/ws | sme |
| English | en.api.muninlabs.io/v1/speak | en.api.muninlabs.io/v1/ws | en |
| German | de.api.muninlabs.io/v1/speak | de.api.muninlabs.io/v1/ws | de |
| + 9 more languages | fr, es, it, nl, pl, hu, pt, ja, ar — same pattern | ||
Customer-Isolated Endpoints
Enterprise customers receive their own fully isolated endpoints. These are provisioned automatically during onboarding:
nb.{customer}.api.muninlabs.io — Norwegian Bokmål
sv.{customer}.api.muninlabs.io — Swedish
da.{customer}.api.muninlabs.io — Danish
Provisioned automatically during onboarding. Full data isolation, dedicated Munin Accelerate™, and individual SLA monitoring.
Authentication
All API calls require authentication via API key. The key is provided during onboarding.
Authorization: Bearer mk_your_api_key_here
Genesys TTS Connector (BYOT-A)
For Genesys Cloud integration the TTS Connector is used. Two endpoints are required:
1. List voices
-H "Authorization: Bearer mk_..."
# Response:
{
"voices": [
{"name": "Nora", "id": "nora", "language": "nb-NO", "gender": "female", "type": "neural"},
{"name": "Erik", "id": "erik", "language": "nb-NO", "gender": "male", "type": "neural"},
{"name": "Astrid", "id": "astrid", "language": "sv-SE", "gender": "female", "type": "neural"},
...
]
}
2. Synthesise speech
-H "Authorization: Bearer mk_..." \
-H "Content-Type: application/json" \
-d '{"text":"Welcome to customer service","voice":"nora","language":"nb-NO","sample_rate":8000,"format":"pcm"}' \
--output audio.pcm
# Response: raw PCM audio (16-bit, mono, 8kHz)
# Content-Type: audio/L16;rate=8000
REST API (Direct Integration)
For customers who do not use Genesys, we offer a simpler REST API:
Text to Speech
-H "Authorization: Bearer mk_..." \
--output hello.wav
| Parameter | Type | Required | Description |
|---|---|---|---|
text | string | Yes | Text to be spoken (max 2,000 characters) |
voice | string | Yes | Voice ID (e.g. "nora", "erik") |
language | string | Yes | Language ("norwegian", "swedish", "danish", etc.) |
speed | float | No | Speech rate 0.8–1.2 (default: 1.0) |
Health Check
{"status":"ok","engine":"Munin Voice Engine","version":"5.0","voices":68}
Voice List
Error Codes
| Code | Meaning | Action |
|---|---|---|
200 | OK — audio returned | — |
400 | Invalid request (missing text/voice) | Check parameters |
401 | Invalid or missing API key | Check Authorization header |
404 | Unknown voice or language | Check /v1/tts/voices for valid values |
429 | Too many requests | Wait and retry (rate limit) |
500 | Internal error | Contact support |
503 | Service temporarily unavailable | Automatic failover active, retry |
Language Codes
| Language | REST API | Genesys (BCP-47) |
|---|---|---|
| Norwegian Bokmål | norwegian | nb-NO |
| Norwegian Nynorsk | norwegian | nn-NO |
| Swedish | swedish | sv-SE |
| Danish | danish | da-DK |
| Finnish | finnish | fi-FI |
| Icelandic | icelandic | is-IS |
| Northern Sami | northern sami | se-NO |
| English | english | en-GB |
| German | german | de-DE |
Rate Limits
| Limit | Value |
|---|---|
| Max text length per request | 2,000 characters |
| Max requests per minute | Depends on agreement |
| Max concurrent requests | Depends on agreement |
Contact us for customised limits based on your requirements.