Festival text-to-speech ignores `current-voice` defined in `.festivalrc` in 20.04
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)