Files
kingston b459533770 Initial standalone vox TTS server extracted from the ttstoy bot cog
Self-contained HTTP service with engine, data, start script, systemd unit,
and documentation. Runs independently of the Discord bot on its fixed port.
2026-09-14 14:31:16 -05:00

1.6 KiB

VOX TTS Server

A standalone HTTP server that produces Half-Life / Black Mesa VOX announcer speech by concatenating pre-recorded word clips. It is based on VOXGen by wphillips (https://github.com/wphillips/VOXGen).

This service was extracted from the ttstoy Discord bot cog so it can run on its own as a system service, independent of the bot.

How it works

The input text is split into words, and each word is matched to a .wav clip in the selected voice pack. Matching clips are concatenated into a single WAV response. Words with no matching clip are skipped.

Two packs are bundled:

  • vox: the classic Half-Life VOX announcer words (in vox_words/)
  • vox2: the Black Mesa announcement system words (in vox2_words/)

Requirements

  • Python 3.9 or newer
  • No third-party packages: the server uses only the Python standard library

Running

./start.sh

The listening port defaults to 33003 and can be overridden with the PORT environment variable.

You can also run it directly:

PORT=33003 python3 server.py

API

GET /say

Generate speech and return a WAV file.

GET /say?text=warning+reactor+core+meltdown&pack=vox

Query parameters:

  • text (required): words to synthesize, separated by spaces
  • pack (optional): vox (default) or vox2

Response: audio/wav (WAV bytes).

Example:

curl "http://127.0.0.1:33003/say?text=alert+intruder&pack=vox" -o vox.wav

GET /packs

Returns a comma-separated list of installed packs.

GET /health

Returns ok.

Running as a system service

A systemd unit file is provided (vox-tts-server.service). See INSTALL.md for setup steps.