Skip to content


Since version 1.0, SinusBot has two options for you to use Text-to-Speech. You can either

  • have the bot use an online service to do the speech synthesis or
  • install some libraries from the Chromium project to generate speech on your computer/server

Both come with advantages and disadvantages - using an online service will most likely generate some cost, while using your server to generate voice will consume quite some CPU power.

Using an online service🔗

To let your bot speak via an online service, you need to register with such a service and get a valid URL (link) that the bot can use to do the actual conversion.

Settings -> Instance Settings has got a field called TTS-Url where you can enter such a URL.

To make this actually work, you have to replace the parameter that contains the text to __TEXT and the locale (if that can be configured via the service) to __LOCALE.

If you are using the locale feature, please also provide the default locale in the appropriate field.

Afterwards click Save changes.

Hit Alt+S in the bot interface to run a test. If everything was successful, you should hear the bot saying what you entered after a short delay.

Given you have a tts provider that handed you an URL in the form of

you will have to replace the "Test" in the URL with __TEXT and that "en" with __LOCALE, so that it looks like

See the [[|forums]] for a list of providers known to support this kind of URLs.

Installing libraries from the Chromium project🔗

These are basic instructions for Linux. You need at least SinusBot 1.0 for this to work.

  • Download and install the library and the voices
cd /opt/sinusbot/tts
tar -xzf patts.tar.gz
rm patts.tar.gz

If the last command fails, you probably need to install unzip first. On Debian/Ubuntu this can be done with apt install unzip.

Afterwards, edit your config.ini to contain the following:

Enabled = true

Locale = "en-US"
Filename = "voice_lstm_en-US.zvoice"
PipelineFile = "voice_lstm_en-US/sfg/pipeline"
Prefix = "voice_lstm_en-US/sfg/"
Instances = 2

Locale = "de-DE"
Filename = "voice_lstm_de-DE.zvoice"
PipelineFile = "voice_lstm_de-DE/nfh/pipeline"
Prefix = "voice_lstm_de-DE/nfh/"
Instances = 2

You can get the proper settings for the PipelineFile and Prefix parameters from the corresponding .js files. Some voices (those that have files beginning with remote_) need to be downloaded separately first.

The Instances parameter limits the number of concurrent synthesis processes - each of those consumes about 40-100 MB RAM and some CPU cycles. Locale is the locale parameter that is actually used by the bot.