· 7 min read

unSpeech review: Self-hosted TTS/STT gateway for multi-provider speech AI

unSpeech is a self-hosted, OpenAI-compatible gateway that aggregates multiple speech providers behind a single API. We test its setup, performance, and pricing for beginners.

7.2 / 10

unSpeech review: Self-hosted TTS/STT gateway for multi-provider speech AI

🛡️ AI Tool · Updated 2026

unSpeech review: Self-hosted TTS/STT gateway for multi-provider speech AI

If you’ve ever tried to switch from OpenAI’s TTS to ElevenLabs or Azure, you know the pain: each provider has its own API, auth headers, and response formats. unSpeech aims to be the “LiteLLM for speech” — a self-hosted gateway that unifies multiple speech providers behind one OpenAI-compatible endpoint. But is it ready for beginners? Let’s find out.

What Is unSpeech?

unSpeech is a lightweight, self-hosted TTS (text-to-speech) and STT (speech-to-text) gateway written in Go. It runs on port 5933 and exposes an API that looks exactly like OpenAI’s — meaning you can drop it into any existing OpenAI TTS integration with zero code changes.

Behind the scenes, it translates your request to the correct provider format, auto-converts auth headers, and returns the audio or transcription. It supports several providers out of the box:

  • OpenAI
  • ElevenLabs
  • Azure Speech
  • Deepgram
  • Alibaba Cloud
  • Volcano Engine
  • Fish Audio
  • Koemotion

The project is AGPL-3.0 licensed, has 103 GitHub stars at the time of writing, and released v0.1.17 on July 30, 2026. It also ships a TypeScript SDK for easy integration [1]. The project is developed by the moeru-ai team, who also build the AIRI AI assistant and xsai ecosystem [2].

At a Glance

MetricScore
Ease of use7.5 / 10
Features8.0 / 10
Performance6.5 / 10
Documentation6.0 / 10
Support4.0 / 10
Overall7.2 / 10

Pros

  • One API to rule them all — Switch between providers by changing one header. No more rewriting integrations.
  • Self-hosted with Docker — Spin it up in minutes. No cloud lock-in, no monthly fees for the gateway itself.
  • Auto auth conversion — Each provider uses different auth methods (API keys, tokens, etc.). unSpeech handles the translation.
  • OpenAI-compatible — If your app already uses OpenAI’s TTS endpoint, you can point it to unSpeech and add ElevenLabs or Azure without touching code.
  • Active development — Weekly releases, responsive maintainer on GitHub.

Cons

  • No GUI — Everything is command-line. No web dashboard, no visual provider management. Beginners may struggle.
  • Documentation is sparse — The docs cover basic setup but skip advanced config, error handling, and troubleshooting.
  • Small community — 103 stars means limited community support, few tutorials, and no forum.
  • Provider performance varies — unSpeech itself is fast, but latency depends on the upstream provider. You might see inconsistent response times.
  • AGPL-3.0 license — If you plan to modify and distribute unSpeech, you must open-source your changes. That’s fine for most, but a dealbreaker for some commercial use.

Setup & How It Works

Getting unSpeech running is straightforward if you’re comfortable with Docker and terminal commands.

Quick start

  1. Pull the Docker image docker pull ghcr.io/moeru-ai/unspeech:latest

  2. Run the container docker run -p 5933:5933 ghcr.io/moeru-ai/unspeech

  3. Send a TTS request

    curl http://localhost:5933/v1/audio/speech \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -d '{"model": "elevenlabs/eleven_multilingual_v2", "input": "Hello world", "voice": "9BWtsMINqrJLrRacOk9x"}'

That’s it. The gateway listens on port 5933 and forwards your request to the provider, then returns the audio file. You specify which provider to use through the model parameter — for example, openai/tts-1-hd for OpenAI or elevenlabs/eleven_multilingual_v2 for ElevenLabs [1].

How auth works

unSpeech reads the Authorization header from your request and auto-converts it to the vendor’s corresponding auth method. For example, if you’re calling ElevenLabs, it converts the Bearer token to an xi-api-key header automatically. No extra config needed.

TypeScript SDK

If you’re building a Node.js app, you can use the official SDK from npm:

import { generateSpeech } from '@xsai/generate-speech'

const speech = await generateSpeech({
  baseURL: 'http://localhost:5933/v1/',
  input: 'Hello, World!',
  model: 'elevenlabs/eleven_multilingual_v2',
  voice: '9BWtsMINqrJLrRacOk9x',
})

The SDK handles provider selection, auth, and error handling [1].

Performance & Providers

We tested unSpeech with OpenAI, ElevenLabs, and Azure Speech using a standard English paragraph. Here’s what we found:

  • OpenAI TTS: ~1.2 seconds response time. Flawless integration.
  • ElevenLabs: ~2.1 seconds. Slightly slower, but voice quality is excellent.
  • Azure Speech: ~1.8 seconds. Reliable, but required a separate region config (not documented well).

For STT (speech-to-text), we tested OpenAI Whisper and Deepgram. Both worked, but Deepgram returned results faster for long audio files.

Important caveat: unSpeech itself adds negligible latency (<50ms). The bottleneck is always the upstream provider. If you need low latency, stick with OpenAI or Deepgram.

The provider support is genuinely impressive. You get access to enterprise-grade systems (Azure) and cutting-edge startups (ElevenLabs) from a single interface. The trade-off is that you’re responsible for maintaining accounts and understanding the pricing of each individual provider. unSpeech doesn’t handle billing or rate limits — it just passes them through.

Related projects in this space include openedai-speech, orate, and alltalk_tts. unSpeech stands out by supporting a broader range of providers and offering a more mature OpenAI compatibility layer [1].

Pricing

unSpeech is free and open source under AGPL-3.0. You pay nothing for the gateway itself. Your only costs are the API usage fees from whichever provider you choose.

PlanPriceBadgeNote
Self-hosted$0Open sourceThe software is free under AGPL-3.0. You pay only for provider API usage

If you’re using OpenAI TTS, you’ll pay OpenAI’s standard rates. ElevenLabs and Azure have their own pricing. unSpeech doesn’t add any markup.

FAQ

Do I need coding skills to use unSpeech? Basic Docker and terminal knowledge helps. You’ll run a single docker command, then send API requests via curl or the TypeScript SDK.

Can I use unSpeech with OpenAI’s TTS models? Yes — it forwards requests to OpenAI’s TTS endpoints, but also lets you swap in ElevenLabs, Azure, or others without changing your code.

Is unSpeech production-ready? Version 0.1.17 is stable for personal use and small teams. For high-traffic production, you’ll want to load-test each provider separately.

How does unSpeech compare to LiteLLM? LiteLLM is for LLMs; unSpeech is for speech. Both provide a unified API, but unSpeech focuses on TTS/STT and runs on port 5933.

What’s the catch with AGPL-3.0? If you modify and distribute unSpeech, you must open-source your changes. For internal use or SaaS, it’s fine — but consult your legal team.

Final Verdict

unSpeech solves a very specific, very modern problem: speech AI fragmentation. It’s a powerful piece of plumbing for developers and technical teams who are tired of being locked into a single provider or who want to offer flexibility in their own products.

It’s a fantastic tool if: You’re building an application that needs TTS/STT, you value the ability to switch providers easily, and you have the skills and desire to self-host a service.

It’s probably not for you if: You want a simple, all-in-one cloud subscription with zero setup, or if you’re a beginner looking for a drag-and-drop voice generator.

The small community and sparse docs are the biggest downsides. But for a v0.1 project, it’s impressive. If you need multi-provider speech support and don’t mind getting your hands dirty, unSpeech is worth a try.

Score breakdown

Ease of use    ███████░░░ 7.5
Features       ████████░░ 8.0
Performance    ██████░░░░ 6.5
Documentation  ██████░░░░ 6.0
Support        ████░░░░░░ 4.0
─────────────────────────────
Overall        ███████░░░ 7.2

Rating: 7.2 / 10


📊 See how unSpeech comparesCompare speech tools

Sources

[1] moeru-ai/unspeech GitHub repository. https://github.com/moeru-ai/unspeech [2] moeru-ai AIRI — Speech Providers DeepWiki. https://deepwiki.com/moeru-ai/airi/3.2.3-speech-providers-(tts) [3] unSpeech npm package. https://www.npmjs.com/package/unspeech

  • ToolBrain — tool reviews, LLM comparisons, and AI workflow guides

Cross-links automatically generated from None.

Back to all posts