I am looking for some easy to install text to speech software for Ubuntu that sounds natural. I've installed Festival
, Gespeaker
, etc., but nothing sounds very natural. All very synthetic and hard to understand.
Any recommendations out there?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.
Sign up to join this communityI am looking for some easy to install text to speech software for Ubuntu that sounds natural. I've installed Festival
, Gespeaker
, etc., but nothing sounds very natural. All very synthetic and hard to understand.
Any recommendations out there?
sudo apt install libttspico-utils
A very minimalistic TTS, a better sounding than espeak or mbrola (to my mind). Some information here.
I don't understand why pico2wave is, compared to espeak or mbrola, rarely discussed. It's small, but sounds really good (natural). Without modification you'll hear a natural sounding female voice.
AND ... compared to Mbrola, it recognise Units and speaks it the right way!
For example:
After installation I use it in a script:
#!/bin/bash
pico2wave -w=/tmp/test.wav "$1"
aplay /tmp/test.wav
rm /tmp/test.wav
Then run it with the desired text:
<scriptname>.sh "hello world"
or read the contents of an entire file:
<scriptname>.sh "$(cat <filename>)"
That's all to have a lightweight, stable working TTS on Ubuntu.
pico2wave
is in package libttspico-utils
in recent versions of ubuntu. @CarlosEugenioThompsonPinzón cat <filename> | xargs -I foo -0 pico2wave -w blah.wav foo
Mar 11, 2014 at 9:11
pico2wave -w a.wav "$(input.txt)"
=). Agree that this CLI interface is bad design: unlike the huge majority of CLIs, and possible to reach the OS max CLI arg length.
Apr 13, 2014 at 9:44
echo {1..1000}
Jun 22, 2015 at 9:48
Pico and espeak are fun and easy to get to work, but they're not all that good. The default Festival voices are also not that good. However, Festival is a scheme-based speech framework, where a number of researchers have built much better plug-in voices. You can easily surpass the pico2wave quality on stock Ubuntu, because one of those voices is available as a ready-made package.
To make Festival sound natural, here's what to do:
sudo apt-get install festival
sudo apt-get install festvox-us-slt-hts
festival -i
festival> (voice_cmu_us_slt_arctic_hts)
festival> (SayText "Don't hate me, I'm just doing my job!")
You can do it from the command line by using -b
(or --batch
) and putting each command into single quotes:
festival -b '(voice_cmu_us_slt_arctic_hts)' \
'(SayText "The temperature is 22 degrees centigrade and there is a slight breeze from the west.")'
You can get other quite good voices from the Nitech repository, but installing them is finicky, and the default paths changed so the file name references in the bundled scheme files may need to be manually edited to work on stock Ubuntu.
~/.bashrc
as a function instead. I called the function speak
and I can just use speak "something to say"
and it works perfectly.
Oct 1, 2021 at 0:18
echo "(SayText \"$(xclip -selection clipboard -o)\")" | festival '(voice_cmu_us_slt_arctic_hts)' --pipe
Nov 5, 2022 at 23:41
I believe Ive found the best TTS software for free using a Google Chrome extension called "SpeakIt". This only works in the Chrome browser for me on Ubuntu. It doesnt work with Chromium for some reason. SpeakIt comes with two female voices which both sound very realistic compared to everything else out there. There are at least four more male & female voices listed s Chrome extensions if you search the Chrome Web Store using "TTS" as your query.
Usage: For use on a website. you highlight the text you want to be read and either right click and "SpeakIt" or click the SpeakIt icon docked on the Chrome top bar.
Firefox users also have two options. Within Firefox addons, do a search for TTS and you should find "Click Speak" and also "Text to Voice". The voices are not as good as the Chrome SpeakIt voices, but are definitely usable.
The SpeakIt extension uses iSpeech technology and for a price of $20 a year, the site can convert text to MP3 audio files. You can input text, URLs, RSS feeds, as well as documents such as TXT, DOC, and PDF and output to MP3. You can make podcast, embed audio, etc. Here is a link, and a sample of their audio (don't know how long the link will last).
Update from project page (2016): This project is currently unmaintained and will remain so for the foreseeable future.
Because of the lack of a better alternative I wrote a bash script that interfaces with a perl script by Michal Fapso to provide TTS via Google Translate. From the project description:
The intention is to provide an easy to use interface to text-to-speech output via Google's speech synthesis system. A fallback option using pico2wave automatically provides TTS synthesis in case no Internet connection is found.
As it stands, the wrapper supports reading from standard input, plain text files and the X selection (highlighted text).
The main features are:
Installation and usage are documented on the project page.
I'd be glad if you gave it a try. Bug reports and any other feedback are welcome!
I have looked high and low for text to speech for Ubuntu that is high quality. There is none. My vocal cords are paralyzed so I needed TTS to add voice instructions to my Ubuntu videos. You can get commercial high quality Linux text to speech software here. It's just really expensive. I ended up buying Natural Reader for Windows (doesn't work in Ubuntu under Wine) for $40. Maybe later I will get the Linux one.
A fast, local neural text to speech system. Check site project for installation, download of a voice and usage. For e.g.:
echo 'Welcome to the world of speech synthesis!' | \
./piper --model blizzard_lessac-medium.onnx --output_file welcome.wav
gTTS, a Python library and CLI tool to interface with Google Translate's text-to-speech API. Writes spoken
mp3
data to a file, a file-like object (bytestring) for further audio manipulation, orstdout
.
Cons: CLI-only. Need to be online as it requires requesting to Google public open endpoint.
sudo -H pip install gTTS # Install
Usage
gtts-cli 'hello' --output hello.mp3
gtts-cli -l es 'Nadie es patria, todos lo somos' | play -t mp3 -
Documentation and more examples
Some were already mentioned
Coqui.ia TTS. Installation:
pip install TTS
Mimic. Installation:
sudo apt-get install gcc make pkg-config automake libtool libasound2-dev
git clone https://github.com/MycroftAI/mimic.git # take a while
cd mimic
./dependencies.sh --prefix="/usr/local" # take a while
./autogen.sh
./configure --prefix="/usr/local"
make # take a while
make check
Mimic 3. Installation of the plugin:
sudo apt-get install libespeak-ng1 # Install system packages
mycroft-pip install --upgrade pip # Ensure that you're using the latest pip
mycroft-pip install mycroft-plugin-tts-mimic3[all] # Install plugin
mycroft-config set tts.module mimic3_tts_plug # Activate plugin
mycroft-start all # Start mycroft
eSpeak + Gespeaker (GUI) (Gespeaker source code)
Cons: Old and ugly
sudo apt install espeak gespeaker
Firefox
Chromium/Brave/Chrome
tacotron and mimic2, based on the Google paper
I have been conducting research on the best sounding and easily tuned text to speech voices. Below is a listing of what I thought were the top 5 products in order of sound quality. Most of the websites associated with these product have an interactive demo that will allow for you to make your own determination.
I find Nitech HTS voices on festival very natural and comforting over any other voices I have heard. See this link on how to set up Nitech and other sounds with festival. I have not found a good gui which I can use to configure those voices but setting them via festival.scm still works. That post is very old and you might want to find the actual installation directory using "locate festival" command
Combine SVOX tools (pico) with LibreOffice:
SVOX (pico) tools are easy to install and brings good quality voices in Ubuntu. Install it:
sudo apt-get install libttspico0 libttspico-utils libttspico-data
You can use LibreOffice in combination with SVOX (pico) tools by install the "Read Text" extension and you obtain a "GUI" for this excellent TTS software:
Set up Read Text Extension's options with Tools - Add-ons - Read selection.... Use /usr/bin/python as the external program. Select a command line option that includes the token (PICO_READ_TEXT_PY), you may want to experiment some of them.
Now you only have to select some text in LO Writer, Calc, Impress or Draw and clic on the icon added as a tool bar (a happy face with a ballon).
Here is what I did to have pure natural speech for pdf and other text files(other solutions are not natural or they're just paid services). This is actually a work around using chromium or chrome but works fast and easy.
There's also ways to open other files like .doc and .txt in chrome and do the same. There's other extensions for chrome that view pdf files, check if it fits you better. Besides you can upload all kind of texts in Google Drive and use SpeakIt! to read it for you. Another extension called 'Speak text' works the same way and has natural speech.
When searching for a better tts engine to use with the new firefox 49 narrative mode I found pico tts (svox) - my favorite TTS engine.
sudo apt install espeak libttspico0 libttspico-data libttspico-utils
How to change the default speech synthesis engine system wide?
People at arch linux brought me to the right path:
Uncomment the module you like and make it default in speech-dispatcher settings:
# sudo vim /etc/speech-dispatcher/speechd.conf
[...]
# -----OUTPUT MODULES CONFIGURATION-----
# Each AddModule line loads an output module.
#AddModule "espeak" "sd_espeak" "espeak.conf"
AddModule "pico-generic" "sd_generic" "pico-generic.conf"
[...]
#DefaultModule espeak
DefaultModule pico-generic
Restart the daemon:
# sudo systemctl restart speech-dispatcher.service
BUT, when starting firefox again, nothing happens. According to the link above (arch forum post #10 and #16) works with festival (did not try), but the speech-dispatcher for pico does not list available voices. It won't run.
Any idea out there would be highly appreciated ;-)
My favorite text-to-speech program is called Magic English, but like Natural Reader mentioned by Joe Steiger, it is a Windows program and I'm not sure if it will run under Wine.
AT&T Natural Voices is available online as a demo, but that's more of a work-around than a solution...
For that I build Intelligent Speaker - extension for Google Chrome. It can read pages even without selection (when text detention is correct).
Update from project page (2016): This project is currently unmaintained and will remain so for the foreseeable future.
Pico, mbrola, cmu, festival, flite, all SUCK in 2017 (They were amazing in the 90s). AT&T natural speech (which is fantastic) isn't linux compat and it's not free, therefore we use Google
git clone https://github.com/Glutanimate/simple-google-tts.git
sudo apt install xsel libnotify-bin libttspico0 libttspico-utils libttspico-data libwww-perl libwww-mechanize-perl libhtml-tree-perl so$
cd simple-google-tts
sudo ln -s `pwd`/simple_google_tts /usr/local/bin
simple_google_tts en "Text to speech is now installed"
cd -
In Linux systems, you can dump X selection (the text you have selected on your screen with the mouse) to a text file, then read with some TTS (currently I use Google Translate Python script gTTS):
#!/bin/bash
TXT="/tmp/speak.txt"
# save X text selection to a file
xclip -out > $TXT
# remove smiles
sed -i 's/ :[pP]/./' $TXT
sed -i 's/ :\//./' $TXT
sed -i 's/ :D/./' $TXT
sed -i 's/ ;D/./' $TXT
sed -i 's/ :(/./' $TXT
# Abbreviations:
sed -i 's/[^a-z]IPv6[^a-z]/I P version 6/gi' $TXT
sed -i 's/[^a-z]MR[^a-z]/merge request/gi' $TXT
sed -i 's/[^a-z]btw[^a-z]/by the way/gi' $TXT
sed -i 's/[^a-z]WIP[^a-z]/work in progress/gi' $TXT
sed -i 's/[^a-z]CLI[^a-z]/command line/gi' $TXT
# Latin
sed -i 's/i\.e\./that is/gi' $TXT
sed -i 's/e\.g\./for example/gi' $TXT
gtts-cli -f $TXT | play -t mp3 -
Bind this script to some key, for example, right menu key, and every time you select some text in any program: Firefox, Thunderbird, LibreOffice Write, PDF reader, or even Terminal, you will hear the text.
PS. you can also add --slow
option to gtts-cli.
Yes! I encounter the exact same problem you are describing myself. One year ago I created a custom TTS I am using myself since almost two years now, and I open sourced it. It works offline and for free, using AI-based high-quality voice. You can you it everywhere: Firefox browser, PDF reader, chrome, LibreOffice, etc. It supports both Ubuntu and windows.
Feel free to have a look, I just created a video tutorial with installation steps and DEMO: https://youtu.be/hb1ZVwUcPCU
Download link and Project page: https://github.com/MattePalte/Verbify-TTS
Feel free to leave comment/open issue to discuss new ideas, problems or constructive criticism.
Hoping it will help you.