M HYPE SPLASH
// news

Festival text-to-speech ignores `current-voice` defined in `.festivalrc` in 20.04

By Emma Valentine

On Ubuntu 18.04 I had in my ~/.festivalrc

(voice.select 'en1_embrola)

which works as expected.

However after upgrading to 20.04 my default voice is kal_diphone

On festival's interactive shell (voice.select 'en1_embrola) does the correct thing so I know that the embrola voice is properly installed.

I can also (!set variable-name 'to-value) in my ~/.festivalrc and see that value in a fresh interactive shell, so I know my configuration file is evaluated.

However current-voice in a fresh interactive shell is always kal_diphone.

As a side note, I noticed that there is a difference between the values of voice-locations between my Ubuntu 18.04 and 20.04 installs:

On 18.04 it is:

((kal_diphone . "/usr/share/festival/voices/english/kal_diphone/") (en1_mbrola . "/usr/share/festival/voices/english/en1_mbrola/"))

while on 20.04 it has the reverse order:

((en1_mbrola . "/usr/share/festival/voices/english/en1_mbrola/") (kal_diphone . "/usr/share/festival/voices/english/kal_diphone/"))

Any ideas?

2 Answers

This is very much a hack, and while it solves my immediate problem, I don't consider it a solution.

It is possible to override the call to set_voice_default, by (sudo) editing the /usr/share/festival/voices.scm file and adding the (set! voice_default 'voice_en1_embrola) near the bottom of that file like so:

--- a/usr/share/festival/voices.scm
+++ b/usr/share/festival/voices.scm
@@ -437,4 +437,5 @@ (set_voice_default default-voice-priority-list)
+(set! voice_default 'voice_en1_embrola) (provide 'voices)

Based on my hack the proper solution is trivial:

The ~/.festivalrc should be:

(set! voice_default 'voice_en1_embrola)

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy