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

Bug#856900: unblock: speech-dispatcher/0.8.6-4



Sorry, I had the debdiff ready, but forgot to attach, here it is.

Samuel
diff -Nru speech-dispatcher-0.8.6/debian/changelog speech-dispatcher-0.8.6/debian/changelog
--- speech-dispatcher-0.8.6/debian/changelog	2017-02-04 10:59:22.000000000 +0100
+++ speech-dispatcher-0.8.6/debian/changelog	2017-03-05 23:13:08.000000000 +0100
@@ -1,3 +1,9 @@
+speech-dispatcher (0.8.6-4) unstable; urgency=medium
+
+  * Fix stripped audio output of flite module (Closes: #856895).
+
+ -- Samuel Thibault <sthibault@debian.org>  Sun, 05 Mar 2017 23:13:08 +0100
+
 speech-dispatcher (0.8.6-3) unstable; urgency=medium
 
   [ Samuel Thibault ]
diff -Nru speech-dispatcher-0.8.6/debian/patches/flite-strip-silence speech-dispatcher-0.8.6/debian/patches/flite-strip-silence
--- speech-dispatcher-0.8.6/debian/patches/flite-strip-silence	1970-01-01 01:00:00.000000000 +0100
+++ speech-dispatcher-0.8.6/debian/patches/flite-strip-silence	2017-03-05 23:12:16.000000000 +0100
@@ -0,0 +1,45 @@
+--- a/src/modules/flite.c
++++ b/src/modules/flite.c
+@@ -238,21 +238,29 @@ int module_close(void)
+ 
+ void flite_strip_silence(AudioTrack * track)
+ {
+-	int playlen, skip;
++	assert(track->bits == 16);
++	unsigned i;
++	float silence_limit = 0.001;
+ 
+-	float stretch =
+-	    get_param_float(flite_voice->features, "duration_stretch", 1.);
+-	int speed = (int)(1000. / stretch);
+-	skip = (187 * track->sample_rate) / speed;
+-	playlen = track->num_samples - skip * 2;
+-	if (playlen > 0 && playlen < 500)
+-		playlen += (skip * 2) / 3;
+-	if (playlen < 0)
+-		playlen = 0;
++	while (track->num_samples >= track->num_channels) {
++		for (i = 0; i < track->num_channels; i++)
++			if (abs(track->samples[i])
++			    >= silence_limit * (1L<<(track->bits-1)))
++				goto stripped_head;
++		track->samples += track->num_channels;
++		track->num_samples -= track->num_channels;
++	}
++stripped_head:
+ 
+-	track->num_samples = playlen;
+-	assert(track->bits == 16);
+-	track->samples += skip * track->num_channels;
++	while (track->num_samples >= track->num_channels) {
++		for (i = 0; i < track->num_channels; i++)
++			if (abs(track->samples[track->num_samples - i - 1])
++			    >= silence_limit * (1L<<(track->bits-1)))
++			  	goto stripped_tail;
++		track->num_samples -= track->num_channels;
++	}
++stripped_tail:
++	;
+ }
+ 
+ void *_flite_speak(void *nothing)
diff -Nru speech-dispatcher-0.8.6/debian/patches/series speech-dispatcher-0.8.6/debian/patches/series
--- speech-dispatcher-0.8.6/debian/patches/series	2017-02-04 08:13:39.000000000 +0100
+++ speech-dispatcher-0.8.6/debian/patches/series	2017-03-05 22:50:12.000000000 +0100
@@ -1,3 +1,4 @@
 pulse-default-latency.patch
 doc-figures
 change-default-module.patch
+flite-strip-silence

Reply to: