21

Could you please help me to install voices from here, I read the manual But I don't know how can 'Get the en1'.

1
  • I've seen ways to play with espeak with sox post-filters if you just want to modify a voice, use swift from cepstral to use more human sounding voices, or plug cepstral voices in to festival for use with IVRs. I haven't seen a way to plug more human voices in to espeak though. Commented Nov 29, 2014 at 21:58

6 Answers 6

14
  1. Download: http://www.tcts.fpms.ac.be/synthesis/mbrola/bin/pclinux/mbr301h.zip
  2. Copy text to run in terminal line by line:

    cd Downloads
    unzip mbr301h.zip
    sudo cp mbrola-linux-i386 /usr/bin/mbrola
    
  3. Download: http://www.tcts.fpms.ac.be/synthesis/mbrola/dba/en1/en1-980910.zip

  4. Copy text to run in terminal line by line:

    unzip en1-980910.zip
    cp en1/en1 /usr/share/mbrola/en1
    
  5. Now run espeak, with options

    espeak -v mb-en1 "Hello world"
    
  6. Nice, but it seems he is reading too fast, try:

    espeak -v mb-en1 -s 120 "Hello world"
    
7
  • Thank you so much, Do you know any other way to improve voice quality and pronunciation? Commented Dec 2, 2014 at 8:02
  • 2
    @Daniyal : You can generate phonems with espeak and process them through mbrola : espeak -v mb-en1 -s 120 "Hello world" --pho|mbrola /usr/share/mbrola/en1 output.wav (note the addition of --pho option to espeak). Commented Sep 7, 2015 at 13:56
  • @SkippyleGrandGourou No I can't, got this error: FATAL ERROR : cannot find file /usr/share/mbrola/en1 ! mbrola: FATAL ERROR : cannot find file /usr/share/mbrola/voices/en1 ! mbrowrap error: mbrola exited with status 216 mbrola voice not found I don't know what you want but may be you can use of it espeak -v mb-us2 -s 120 "Hello world" -w output.wav --pho Commented Sep 8, 2015 at 15:24
  • 5
    It's down for me but I managed to find it on the wayback machine: web.archive.org/web/20180627172600/http://www.tcts.fpms.ac.be/…
    – 0x777C
    Commented Oct 27, 2018 at 16:21
  • 4
    Here's the second file on the wayback maching - web.archive.org/web/20160706052143/http://www.tcts.fpms.ac.be/…
    – Campbeln
    Commented Mar 16, 2019 at 8:43
5

you can install embrola voices executing the following command:

sudo apt-get install mbrola mbrola-en1

for more information visit the offical repo from github

espeak docs and man pages

2
  • This doesn't appear to be available on mine. Is it in the non-free repositories? Commented Oct 1, 2022 at 3:07
  • 1
    @Brōtsyorfuzthrāx i got the server of united states, actually really i dont know if its free or non-free, in the command apt-cache show mbrola it appears that this is the official repository github.com/numediart/MBROLA Commented Oct 4, 2022 at 16:41
2

This process works on 20.04.2 LTS (Focal Fossa):

Find your voice

Find the desired mbrola voice by visiting the github:

https://github.com/numediart/MBROLA-voices

Locate and document the desired voice. For this example, I'm going to use British English, which is "en1".

Get dependencies

Install the dependent applicatons:

sudo apt install -y espeak mbrola mbrola-en1 speech-dispatcher speech-dispatcher-espeak-ng

Edit speech-dispatcher/speechd.conf

To keep it simple, we'll paste our config at the top of speechd.conf and comment-out one setting in speechd.conf.

So open speechd.conf:

sudo nano /etc/speech-dispatcher/speechd.conf

Paste the following at the top of the document:

# Enable British English "en1"
AddModule "espeak-mbrola-generic"    "sd_generic"   "espeak-mbrola-generic.conf"
DefaultModule espeak-mbrola-generic
LanguageDefaultModule "en1"  "espeak-mbrola-generic"

Now search using "Ctrl+W" and copy/paste:

DefaultModule espeak-ng

Now comment it out by adding a hash at the beginning, like this:

#DefaultModule espeak-ng

Now save speechd.conf in nano:

  • Press Ctrl+X
  • Press "Y" to overwrite
  • Press Enter to save and close nano

Start the speech-dispatcher daemon

Start the daemon paste in the command:

sudo speech-dispatcher -d

This should start the speech daemon.

Testing mbrola? I don't know how.

Testing the new British English voice in espeak will not produce your changes; it will be the default espeak voice, not the "en1", British English voice you're now using for mbrola.

I don't know how to test mbrola, so I will just continue on with my implementation of mobrola-en1.

Speak Text for Okular

If you're interested in using a PDF Reader that has a "text to speech" feature, install Okular:

sudo apt install okular

Now, open a PDF and:

  • Press "Ctrl+3" to set tool to "Area Selection"
  • Click & drag a box over a section of text you want Okular to read
  • After the context menu appears, select "Speak Text"

Success!

You've now successfully setup text to speech, using speech-dispatcher, espeak, mbrola, and mbrola-en1 using Okular through the Ubuntu Package Repository.

Adjust the speed of reading

By default, mbrola-en1 reads rather quickly. To "slow down" the speed, espeak--mbrola-generic config.

sudo nano /etc/speech-dispatcher/modules/espeak-mbrola-generic.conf

With the config open in nano,

  • Press "Ctrl+W"
  • Paste "GenericRateAdd" and enter

Set GenericRateAdd to a number between 80 and 320

GenericRateAdd          200

Adjust pitch

Below GenericRateAdd, you can also adjust Pitch:

GenericPitchAdd         80

Now save espeak-mbrola-generic.conf in nano:

  • Press Ctrl+X
  • Press "Y" to overwrite
  • Press Enter to save and close nano

Adjust the word gap speed

espeak provides an easy way to adjust the time between words that text is read. To adjust said gap, open your module config file:

sudo nano /etc/speech-dispatcher/modules/espeak-mbrola-generic.conf

One of the first uncommented lines looks like this:

"echo \'$DATA\' | espeak -v mb-$VOICE -s $RATE -p $PITCH $PUNCT -q --stdin>

Add in an argument after espeak, "-g 15" to set the word gap time to 15ms (default is 10ms):

"echo \'$DATA\' | espeak -g 15 -v mb-$VOICE -s $RATE -p $PITCH $PUNCT -q --stdin>

If you saved a bad config...

Skip this if you've saved & successfully run a good speechd config.

If you manage to screw up and save your config file, refer to Jeremy Bicha's response.

First remove the speechd.conf

sudo rm -rf /etc/speech-dispatcher/speechd.conf

Reinstall speech-dispatcher and regenerate config

sudo apt install --reinstall -o Dpkg::Options::="--force-confask,confnew,confmiss" speech-dispatcher
1

Here is a copy of Mateo's answer as a single command and cleanup.

You will need sudo privileges to copy to /usr/bin/.


mkdir tmp_mbrola
cd tmp_mbrola
wget http://www.tcts.fpms.ac.be/synthesis/mbrola/bin/pclinux/mbr301h.zip
unzip mbr301h.zip
sudo cp mbrola-linux-i386 /usr/bin/mbrola
wget http://www.tcts.fpms.ac.be/synthesis/mbrola/dba/en1/en1-980910.zip
unzip en1-980910.zip
sudo mkdir /usr/share/mbrola
sudo cp en1/en1 /usr/share/mbrola/en1
cd ..
sudo rm -Rf ./tmp_mbrola/
espeak -v mb-en1 -s 160 "Hello world"

I am getting this error when text is read but it seems to work:

*** Error in `mbrola': free(): invalid pointer: 0x08af1dd8 ***

If anyone knows what is causing this error please let me know in the comments.

0
1

Gespeaker on Ubuntu 18.04

Hi all, I have been looking for ways to improve the espeak user experience including modifying/adding new voices and came across this article regarding Gespeaker which is a graphical interface for espeak. It's easier to use especially for bits of text which you can cut and paste from a webpage and have read. To expand the text window to accommodate large chunks of texts click on the "advanced settings" button (see image).

There is an option for variant in the voice section (where you have male and female - which work). I don't know how to make use of this to add a variant (of a voice?). I will update this if I find a way.

To install Gespeaker, open Terminal and

$ sudo apt-get install gespeaker

You also need to install python-dbus

$ sudo apt-get install python-dbus

for the application to run. enter image description here

Update. I managed to add additional mbrola voices that can be used with Gespeaker.

This how. First install the mbrola text-to-speech engine. Open Terminal and enter $ sudo apt install mbrola followed by pressing the return key.

You should see something this if the install ran okay "MBROLA 3.01h - speech synthesizer Author : Thierry Dutoit with help of AC/DC adaptator Vincent Pagel Copyright (c) 95 Faculte Polytechnique de Mons (TCTS lab) - T.Dutoit...etc"

Next install a mbrola voice. You can view a list of available voice packages here: http://www.muflone.com/gespeaker/english/mbrola_voices/ubuntu1610 The last updates were for Ubuntu 16.10. I haven't found newer versions.

Install a voice package.For example to install the US english female voice run

$ sudo apt install mbrola-us1

Restart Gespeaker.

You should see the voice appear amongst the existing espeak voices in the language bar of Gespeaker. See the image below. enter image description here

I still don't know how to employ the "Variant" option.

Credits: https://vitux.com/convert-text-to-voice-with-espeak-on-ubuntu/

1

This answer is an updated version of Mateo's accepted answer. Since the ISIA Lab (formerly known as TCTS) is not hosting its website any more, we must download them from GitHub directly. Disclaimer, I am currently working in this lab, but not on that project.

  1. Install the needed dependencies (see MBROLA GitHub repository for the details):

    sudo apt update
    sudo apt install espeak make gcc git -y
    
  2. Download, compile and install MBROLA:

    git clone https://github.com/numediart/MBROLA.git
    cd MBROLA
    make
    cp Bin/mbrola /usr/bin/mbrola
    
  3. Download the desired voice from the MBROLA-voices GitHub repository (you can do it manually):

    mkdir /usr/share/mbrola/en1
    curl -L -o /usr/share/mbrola/us1/us1 https://github.com/numediart/MBROLA-voices/blob/master/data/en1/en1?raw=true
    

    Note: /usr/share/mbrola/en1 is a folder, while your file's path will be /usr/share/mbrola/en1/en1. Don't forget to change en1 with whatever voice you wish to use (also in the commands hereunder).

  4. Now you can run espeak:

    espeak -v mb-en1 "Hello world"
    

    Mateo said the voice was reading too fast and proposed to set the speed using -s 120:

    espeak -v mb-en1 -s 120 "Hello world"
    
  5. Bonus! If, like me, you have installed MBROLA and espeak on a remote headless server, you may prefer to generate a .wav file and use scp to download it to your local machine.

    Generate the file on the remote machine:

    ssh user@remote_machine_ip 'espeak -v mb-us1 -s 120 "Nice hat" --stdout > /tmp/file.wav && exit'
    

    Download the generated file:

    scp user@remote_machine_ip:/tmp/file.wav /local_machine/path/to/file.wav
    
2
  • I followed your instruction, I get follwing error and audio is not clear $ espeak-ng -v mb-us1 "Hello world" Erroe: mbrola: Warning: w-r= unknown, replaced with _-_, mbrola: Warning: r=-l unknown, replaced with _-_
    – Porcupine
    Commented Jan 5 at 19:06
  • @Porcupine you should ask your question on MBROLA repository (github.com/numediart/MBROLA). Commented Jan 9 at 14:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .