Re: espeakup release coming soon

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

 



Hello,

William Hubbs, on Sun 06 Mar 2016 12:54:59 -0600, wrote:
> I want to do a new espeakup release, hopefully in the next few days, so,
> I need to know if there are any patches that we need. Can  folks take a
> look at it and let me know if anything is missing?

Good idea to ask :)

We have a few patches in Debian:

- keystrokes uses interpret-as="characters" when the kernel reports just
one character. This allows to use espeak's internationalized spelling of
letters, instead of having to maintain spelling ourself in speakup.
- pidfile makes espeakup write the pidfile only after it is really
finished starting. We need this to properly report that the daemon
hasn't actually started when it failed to e.g. open voices.
- voice fixes using language names as espeakup parameter instead of
voice names, just like the espeak program does.

Samuel
Fix spelling keystrokes and char-by-char echo.

--- espeakup-0.71.orig/synth.c
+++ espeakup-0.71/synth.c
@@ -121,7 +121,29 @@
 {
 	espeak_ERROR rc;
 
-	rc = espeak_Synth(s->buf, s->len + 1, 0, POS_CHARACTER, 0, 0, NULL,
-					  NULL);
+	if (s->len == 1)
+	{
+		char *buf;
+		int n;
+		n = asprintf(&buf, "<say-as interpret-as=\"characters\">%c</say-as>", s->buf[0]);
+		if (n == -1)
+		{
+			/* D'oh.  Not much to do on allocation failure.
+			 * Perhaps espeak will happen to say the character */
+			rc = espeak_Synth(s->buf, s->len + 1, 0, POS_CHARACTER, 0, 0, NULL,
+							  NULL);
+		}
+		else
+		{
+			rc = espeak_Synth(buf, n + 1, 0, POS_CHARACTER, 0, espeakSSML, NULL,
+							  NULL);
+			free(buf);
+		}
+	}
+	else
+	{
+		rc = espeak_Synth(s->buf, s->len + 1, 0, POS_CHARACTER, 0, 0, NULL,
+						  NULL);
+	}
 	return rc;
 }
Create pidfile after espeakup is really ready.

--- espeakup-0.71.orig/espeakup.c
+++ espeakup-0.71/espeakup.c
@@ -118,12 +118,6 @@
 	if (!debug) {
 		/* become a daemon */
 		daemon(0, 1);
-
-		/* write our pid file. */
-		if (create_pid_file() < 0) {
-			perror("Unable to create pid file");
-			return 2;
-		}
 	}
 
 	/* initialize espeak */
@@ -147,6 +141,14 @@
 		return 4;
 	}
 
+	if (!debug) {
+		/* We are now ready, write our pid file. */
+		if (create_pid_file() < 0) {
+			perror("Unable to create pid file");
+			return 2;
+		}
+	}
+
 	/* run the main loop */
 	main_loop(&s);
 
--- a/synth.c
+++ b/synth.c
@@ -91,6 +91,13 @@ espeak_ERROR set_voice(struct synth_t *
 	espeak_ERROR rc;
 
 	rc = espeak_SetVoiceByName(voice);
+	if (rc != EE_OK)
+	{
+		espeak_VOICE voice_select;
+		memset(&voice_select, 0, sizeof(voice_select));
+		voice_select.languages = voice;
+		rc = espeak_SetVoiceByProperties(&voice_select);
+	}
 	if (rc == EE_OK)
 		strcpy(s->voice, voice);
 	return rc;
_______________________________________________
Speakup mailing list
Speakup@xxxxxxxxxxxxxxxxx
http://linux-speakup.org/cgi-bin/mailman/listinfo/speakup

[Index of Archives]     [Linux for the Blind]     [Fedora Discussioin]     [Linux Kernel]     [Yosemite News]     [Big List of Linux Books]
  Powered by Linux