Espeak can natively use either portaudio or pulseaudio for sound playback. portaudio in turn can use either OSS or Alsa (only portaudio 19). I get better results using OSS via the aoss wrapper then when using alsa directly. I did not try pulseaudio. Character echo with espeak is not as snappy as with outloud or eflite. Also, I find the speech produced by the emacspeak server somewhat unpleasant because it is not fluent, i.e. there are pauses in the wrong places, especially when there are a lot of non-alpha-numeric characters, like in source code. When espeak is used in speech-dispatcher, the audio output is handled by speech-dispatcher, thus some differences to the above case are to be expected. The ssml emacspeak sends to espeak is indeed not well formed. There are never any close tags. I think this is because the way emacspeak handles voice changes is somewhat hard to map to ssml. thus, espeak can get confused and use the wrong voice after some usage. On ubuntu hardy and Debian sid , I have to apply the patch attached to this mail message to be able to compile the espeak speech server. Otherwise, gcc will complain about some invalid conversions. Best regards, Lukas
diff --git a/servers/espeak b/servers/espeak old mode 100644 new mode 100755 diff --git a/servers/linux-espeak/tclespeak.cpp b/servers/linux-espeak/tclespeak.cpp index 52b4a17..6411c8d 100644 --- a/servers/linux-espeak/tclespeak.cpp +++ b/servers/linux-espeak/tclespeak.cpp @@ -569,7 +569,7 @@ initLanguage (Tcl_Interp * interp) { char buffer_i[3]; snprintf(buffer_i, 3, "%d", i); - Tcl_SetVar2(interp, "langalias", voices[i]->languages, buffer_i, 0); + Tcl_SetVar2(interp, "langalias", const_cast<char*>(voices[i]->languages), buffer_i, 0); } langInfoMax = i; @@ -593,7 +593,7 @@ initLanguage (Tcl_Interp * interp) continue; } - char* aLangCode = 1 + voices[i]->languages; + char* aLangCode = 1 + const_cast<char*>(voices[i]->languages); snprintf(buffer_i, 3, "%d", aLang); snprintf(buffer_j, 3, "%d", j++); @@ -605,7 +605,7 @@ initLanguage (Tcl_Interp * interp) Tcl_SetVar2(interp, "langcode", "current", aLangCode, 0); } - Tcl_SetVar2(interp, "langlabel", buffer_j, voices[i]->name, 0); + Tcl_SetVar2(interp, "langlabel", buffer_j, const_cast<char*>(voices[i]->name), 0); Tcl_SetVar2(interp, "langcode", buffer_j, aLangCode, 0); Tcl_SetVar2(interp, "langsynth", "top", buffer_j, 0); }
If you have questions about this archive or had problems using it, please send mail to:
priestdo@xxxxxxxxxxx No Soliciting!Emacspeak List Archive | 2007 | 2006 | 2005 | 2004 | 2003 | 2002 | 2001 | 2000 | 1999 | 1998 | Pre 1998