Skip to content
A lightweight ROS package for Text-to-Speech generation
C++ CMake Shell
Branch: master
Clone or download
Latest commit 8d8f6eb Jan 26, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
launch adding notify daemon Feb 25, 2017
scripts better doc Oct 9, 2016
src adding notify daemon Feb 25, 2017
.gitignore cached files Oct 5, 2016
.travis.yml making it compile in Travis Mar 11, 2017
README.pdf better doc Oct 9, 2016
package.xml adding notify daemon Feb 25, 2017


Build Status

A lightweight ROS package for Text-to-Speech (TTS) generation. It is actually a wrapper around popular TTS engines, it supports a bunch of both online and offline third parties.

  • Open-source third parties:

    • espeak based on the espeak utility, a multi-lingual software speech synthesizer link
    • Festival based on the Festival project, by the University of Edinburgh link
    • GNUstep the TTS engine of the GNUstep project. In Lubuntu 16.04, seems to be a wrapper around festival. link
    • MaryTTS An open-source, multilingual Text-to-Speech Synthesis platform written in Java. This package makes use of the web service that is shipped with MaryTTS 5.2. download page direct v5.2 download link
    • pico2wave based on pico2wave, a small footprint TTS link
    • speech_dispatcher Uses the spd-say tool of the Speech Dispatcher project, developed by Freebsoft. link
  • Proprietary engines:

    • AT&T (WEBSERVICE) AT&T TTS webservice link
    • Google TTS (WEBSERVICE) most notably used in Google Translate link
    • Ivona (WEBSERVICE) uses the IVONA TTS webservice for developpers link
    • Microsoft (WEBSERVICE) the speech synthesizer developed by Microsoft for its OS link

Supported languages

The two-letter codes correspond to the ISO 639-1 codes, and must be passed as such as language parameters to picotts. Their meaning is available on Wikipedia.

  • AT&T (WEBSERVICE): en es
  • espeak: af an bg bs ca cs cy da de el en en-gb en-sc en-uk-north en-uk-rp en-uk-wmids en-us en-wi eo es es-la et fa fa-pin fi fr-be fr-fr=fr ga grc hi hr hu hy hy-west id is it jbo ka kn ku la lfn lt lv mk ml ms ne nl no pa pl pt-br pt-pt ro ru sk sq sr sv sw ta tr vi vi-hue vi-sgn zh zh-yue
  • Festival: scots_gaelic castillian_spanish english italian finnish american_english russian british_english welsh czech
  • GNUstep: en
  • Google TTS (WEBSERVICE): af ar cs cy da en eo es fr hi hr hu hy ko la lv nl no pl sk sq vi
  • Ivona (WEBSERVICE): cy-GB da-DK de-DE en-AU en-GB en-GB-WLS en-IN en-US es-ES es-US fr-CA fr-FR is-IS it-IT nb-NO nl-NL pl-PL pt-BR pt-PT ro-RO ru-RU sv-SE tr-TR
  • MaryTTS: de en-GB en-US fr it lb ru sv te tr. You must download the desired languages using marytts-component-installer, shipped in the bin folder of MaryTTS.
  • Microsoft (WEBSERVICE): ar ar-eg ca ca-es da da-dk de de-de en en-au en-ca en-gb en-in en-us es es-es es-mx fi fi-fi fr fr-ca fr-fr hi hi-in it it-it ja ja-jp ko ko-kr nb-no nl nl-nl no pl pl-pl pt pt-br pt-pt ru ru-ru sv sv-se yue zh-chs zh-cht zh-cn zh-hk zh-tw
  • pico2wave: en-US en-GB de-DE es-ES fr-FR it-IT
  • speech_dispatcher: af an bg bs ca cs cy da de el en eo es et fa fi fr ga grc hi hr hu hy id is it jbo ka kn ku la lfn lt lv mk ml ms ne nl no pa pl pt ro ru sk sq sr sv sw ta tr vi zh




Compile and install


$ rosdep install picotts --ignore-src
  • espeak:
$ rosdep install picotts --ignore-src
  • Festival:
$ sudo apt install mbrola mbrola-fr*
$ rosdep install picotts --ignore-src
  • GNUstep:
$ sudo apt install gnustep-gui-runtime
  • Google TTS (WEBSERVICE):
$ rosdep install picotts --ignore-src
  • Ivona (WEBSERVICE):
$ rosdep install picotts --ignore-src
  • MaryTTS:
$ sudo apt install default-jre
$ wget
$ unzip ; cd marytts-5.2
$ wget
$ unzip
  • Microsoft (WEBSERVICE):
$ rosdep install picotts --ignore-src
  • pico2wave:
$ rosdep install picotts --ignore-src
  • speech_dispatcher:
$ sudo apt install speech-dispatcher

ROS Kinetic + catkin

Compile with catkin_make:

$ rosdep install picotts --ignore-src
$ catkin_make --only-pkg-with-deps picotts


$ rosrun picotts picotts.exe

Change engine:

$ rostopic pub /picotts/engine std_msgs/String "microsoft"


$ rostopic pub /tts std_msgs/String "OK"
$ rostopic pub /tts std_msgs/String "en:Hello|en:Hi"

Sample: read time:

$ echo -e "data: \"`date +%T`\"\n---" | rostopic pub /tts std_msgs/String -l


  • ~ivona_credentials [std_msgs/String] a text file containing two lines, the first being the access key, the second the secret key.

  • ~engine [std_msgs/String] Among values "at&t", "espeak", "festival", "gnustep", "google", "ivona", "marytts" "microsoft", "pico2wave", "speech_dispatcher". Ensure to choose a webservice engine only if connected to the Internet.

  • /language [std_msgs/String] Cf § "Supported languages".


  • /tts [std_msgs/String] Sentences to be said.

  • /engine [std_msgs/String] Allow changing the engine while running, without restarting picotts. Cf. description of the engine parameter.



You can’t perform that action at this time.