A self-hosted speech-synthesis endpoint fronting two independent neural engines — built and operated by Hoelee, full-stack developer & DevOps engineer.
This is a private text-to-speech endpoint, not a public service. It exposes a simple query-string HTTP contract so that any client — a reading app, an e-learning tool, an IVR, or internal automation — can synthesize speech. Access is keyed: requests without a valid key are rejected.
Text is synthesized through enterprise cloud engines that we operate under our own accounts and credentials — clients never need their own provider account, keys, or quota. Audio is returned directly and is not retained.
Most self-hosted TTS setups give you one engine. This one routes to two, because they are good at different things — and you can switch between them per request.
Azure Speech neural voices. Multilingual set plus dedicated child voices. Strong prosody control.
Google Cloud TTS WaveNet voice. Clean, neutral delivery — a useful second opinion on the same text.
Identical request shape for both engines, so switching a voice or an engine is one parameter.
GET /synthesize?text=…&engine=…&voice=…&speed=…&pitch=…
Authorization: Bearer <api-key>
← audio/wav (RIFF, 24 kHz, 16-bit mono)
audio/wav responsevoice = 1–8)| # | Voice | Character |
|---|---|---|
| 1 | XiaochenMultilingual | Female, multilingual |
| 2 | XiaoxiaoMultilingual | Female, multilingual |
| 3 | XiaoyuMultilingual | Female, multilingual |
| 4 | YunxiaoMultilingual | Male, multilingual |
| 5 | YunyiMultilingual | Male, multilingual |
| 6 | YunfanMultilingual | Male, multilingual |
| 7 | XiaoshuangNeural | Female, child |
| 8 | XiaoyouNeural | Female, child |
| Voice | Notes |
|---|---|
cmn-CN-Wavenet-A | Fixed — this engine exposes a single WaveNet voice |
speed is required by both engines (range 5–50,
mapped to −20%…+150% speaking rate). Omitting it produces an invalid request.
| Param | Microsoft | |
|---|---|---|
speed | 5–50, required | 5–50, required |
pitch | Percentage string, e.g. 0% | Bare number, e.g. 0 (default 3.0) |
voice | index 1–8 | ignored (fixed voice) |
Keys are issued individually and provisioned manually, so this endpoint stays private by default. Message me if you want speech synthesis for your app, course, or product.
I build this kind of internal infrastructure: self-hosted services with proper authentication, external API integrations with credential and quota handling, and the integration layer that makes them usable from the devices your staff or customers already use.
Text-to-speech is one example. The same approach applies to private document search, internal automation, VPN/remote access, monitoring, and backups — running on hardware you own, so your data never leaves the building.
Available for freelance and contract work — remote, worldwide.
This is one of several private APIs I run on my own hardware — I don't offer a single service:
OpenAI-compatible transcription running on private GPU hardware (whisper.cpp).
OpenAI-compatible chat completions on local GPU — private, no third-party cloud in the path.
Dual-engine neural speech synthesis behind a single keyed contract.
Beyond these APIs I design and build websites, mailbox hosting, and self-hosted infrastructure for small businesses. See www.hoelee.com for services and blog.hoelee.com for write-ups of how this infrastructure is built — including what running it actually costs.