a discord bot that gives a voice to the voiceless. because listening is better than reading, and sounding human is better than sounding like a microwave.
current version: v1.6.7 (official release)
add the bot to your server note: this is hosted on my personal machine. expect outages for maintenance, bug fixes, or if my power goes out. you have been warned.
- supertonic tts: powered by the supertonic engine to provide high-quality, human-sounding voices. it's like magic, but with actual code.
- localization: fully translated across 5 languages (english, spanish, french, portuguese, korean).
- voice customization: change the voice model, speed, and language to fit your vibe.
- persistent settings: remembers your preferences per server, because nobody likes repeating themselves.
- worker pool & concurrency: scales with your needs! supports spawning multiple workers for parallel processing, and queues are properly isolated per-server.
- crash resilience: it tries heavily not to crash. emphasize on "tries". auto-restarts individual workers if they trip over their own shoelaces.
- memory management: watches memory usage like a hawk. a hawk that occasionally panics and restarts things to stay fresh.
- run
/helpin a server where the bot is present to see a full list of commands. - for a detailed breakdown of commands for both moderators/admins and the general public, refer to the
src/commandsfolder in this repository.
if you want 100% uptime and total control, host it yourself. you'll get access to customizable settings like speed (zoom zoom), volume, and performance tweaks.
the engine is a bit hungry. on my machine, it sits between ~300mb and ~600mb of ram. your mileage may vary depending on your system, but don't try running this on a toaster.
-
clone the repo and install dependencies. if you don't know how to clone a repo, google is your best friend. this might take a while, go grab a coffee.
git clone https://github.com/derpeloper/ostinato cd ostinato npm install -
edit your config files:
- in
src/env.json, replacetokenwith your actual discord bot token. - in
src/config.js, replaceclientIdwith your bot's client id. - optional: set
guildIdinsrc/config.jsto your server's id if you only want the bot in one server (and want the commands to show up instantly). otherwise, leave it asnull.
- in
-
give the bot the right permissions: priority speaker, connect, read message history, and speak. otherwise, it'll just be a silent observer.
-
download the engine (and maybe go get that donut now):
git clone https://github.com/supertone-inc/supertonic.git cd supertonic git clone https://huggingface.co/Supertone/supertonic-2 assets cd nodejs npm install
-
go back to the root folder and bring it to life:
cd ../../ node src/index.js
check src/config.js to change the internal engine settings.
ttsSpeed: base speed of the speech. zoom zoom.ttsVolume: volume of the speech. can you hear me now?ttsQuality: 1 to 50. quality vs speed trade-off.defaultLang: fallback language if detection fails.maxConcurrency: per-guild queue. how many messages can process at once per server to prevent one active server from lagging others.workerMemoryLimit: memory cap for a worker before it restarts. keeps the ram gremlins at bay.workerCount: how many parallel workers to spin up. use with caution—each worker takes ~300mb-400mb ram!
found a bug? have a suggestion? bot exploded? feel free to open an issue and let me know.
you are also welcome to fork this repository for your own use. explore, experiment, break things. it's open source for a reason.
may contain traces of nuts and bolts. the hosted version will not have 24/7 uptime due to maintenance and bug fixes. use at your own risk. if it breaks, you get to keep the pieces.
- Supertonic 2 by Supertone — the high-quality tts engine doing the heavy lifting.