[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: espeak voicing and compile issue (patch)



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@cs.vassar.edu No Soliciting!

Emacspeak List Archive | 2007 | 2006 | 2005 | 2004 | 2003 | 2002 | 2001 | 2000 | 1999 | 1998 | Pre 1998

Emacspeak Files | Emacspeak Blog | Search the archive