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.2.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.
- crash resilience: it tries heavily not to crash. emphasize on "tries". auto-restarts the worker if it trips over its 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:
git clone https://github.com/derpeloper/ostinato. if you don't know how to do that, google is your best friend. - run
cd ostinatothen runnpm install. this might take a while, go grab a coffee. - 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: in
src/config.js, you can also setguildIdto 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. - make sure you give the bot the right permissions: priority speaker, connect, read message history, and speak. otherwise, it'll just be a silent observer.
- in
- run this command to 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. - run
cd ../../to get back to the main folder. - finally, run
node src/index.jsto bring it to life.
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: how many messages are processed at once to prevent a backed-up queue.workerMemoryLimit: memory cap for the worker before it restarts. keeps the ram gremlins at bay.
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.