Hello community,
here is the log from the commit of package espeak for openSUSE:Factory
checked in at Thu Apr 8 12:32:34 CEST 2010.
--------
--- espeak/espeak.changes 2010-02-06 11:29:43.000000000 +0100
+++ /mounts/work_src_done/STABLE/espeak/espeak.changes 2010-04-07 22:02:32.000000000 +0200
@@ -1,0 +2,108 @@
+Wed Apr 7 21:20:16 CEST 2010 - vuntz@opensuse.org
+
+- Update to version 1.43.03:
+ + Fix crash when embedded control codes are followed by numbers
+ of 5 or more digits.
+ + Fix lang=hu, First character of an abbreviation is missed
+ after an ordinal number (eg."2. cd")
+ + Fix XML tag not recognized after "..." when announce
+ punctuation is enabled.
+ + Fix lang=zh-yue, 'p' 't' 'k' after a vowel give a long pause.
+ + Fix lang=ru, "o" missing in unstressed syllables.
+- Changes from version 1.43.02:
+ + Language improvements including Danish.
+ + Fix: " 50000" with leading spaces was spoken as "50".
+ + Don't consider multiple spaces as a thousands separator
+ (eg. "2 000").
+ + Fixed phoneme [n^] for klatt synthesizer.
+ + Lang=Hungarian, don't allow dot as thousands separator.
+- Changes from version 1.43:
+ + New format for phoneme definitions, including conditional
+ statements for more flexibility.
+ + Added voice variants which use the Klatt synthesizer rather
+ than the eSpeak synthesizer: klatt, klatt2, klatt3
+ + Fixes to the Klatt synthesizer.
+ + Updated phoneme data for use in the Klatt synthesizer.
+ + Allow optional .txt filename suffix for *_rules and *_list
+ files.
+ + HTML tags should not insert a space when they are removed.
+ This could cause a break inside a word (eg. <b>, <font>).
+ + Fixes to correctly recognise space as a thousands separator in
+ some languages.
+- Changes from version 1.42:
+ + Improvements to languages including Hungarian, Portuguese,
+ Tamil
+ + Changes to intonation when announcing punctuation (--punct
+ option).
+ + Recognise key names in <say-as interpret-as="tts:key"> and
+ allow translation into the current language.
+ + *_list files, added attribute $hasdot for abbreviations. The
+ rule only applies if the word is followed by a dot.
+ + SSML (as used by Speech Dispatcher), fix problems where a tag
+ after a dot meant that end-of-sentence and ordinal numbers were
+ not recognized correctly.
+- Changes from version 1.41:
+ + Added language: da Danish
+ + Language: it Italian, added dictsource/it_listx with data for
+ stress positions and open/close "e" and "o" vowels.
+ + Languages: pt, it: Fixed a crash when speaking some numbers.
+ + Fixed numbers greater than 1000000 for Indian languages.
+ + -m option now ignores XML comments.
+ + -b option now has a value (4) to specify 16 bit character input
+ text.
+ + -g option (word gap) fixed for Windows.
+ + --punct option. Fix some unnecessary pauses when speaking
+ punctuation names.
+ + SSML: fixed bug where <mark> was ignored before some
+ punctuation characters.
+ + Changed the format of formant data in espeak-data/phondata, to
+ add extra parameters for use by a Klatt synthesizer. Changed
+ the formant dialogue in espeakedit to include these.
+ + F7 and F8 formants are now fixed at 7800Hz and 90000Hz.
+ + "Text position" in callback events is no longer limited to 16
+ bits.
+ + Fixed problems with word-length indications in callback events.
+ + Some changes to allow compilation on WinCE/Windows Mobile, with
+ notes in platforms/windowsMobile.
+ + *_list files:
+ - Add feature for ordinal numbers (for some languages).
+ - Allow hyphenated word groups to start with a number.
+ - Allow "words" of symbols to contain brackets.
+- Changes from version 1.40:
+ + Added languages: lv Latvian, ca Catalan, sq Albanian, hy
+ Armenian.
+ + Adjusted the tonal quality of the speech to reduce the
+ harshness slightly.
+ + Language improvements include: English/US, Esperanto.
+ + Windows SAPI5 installer: Remove the limit on the number of
+ eSpeak voices which can be installed.
+ + -m command option: Ignore text within <script> and <style> tag
+ pairs.
+ + -v command option: If the parameter is not a voice file name,
+ look it up as a language name (specified inside voice files).
+ + Added command option --path. Specified the path of the
+ espeak-data directory.
+ + Added command option --phonout. Specifies output of mbrola
+ phoneme data, and phoneme data from -x and -X command options,
+ to a file rather than stdout.
+ + Implemented visemes on the SAPI5 interface.
+ + Fix some sound channel lock-ups.
+ + Reduced pause when announcing punctuation characters.
+ + Add voice variant: "fast" to allow experimentation with faster
+ speaking speeds.
+ + Removed the use of C++ Classes.
+- Drop Makefile.patch: fixed upstream.
+- Add espeak-audio-runtime-detection.patch, taken from Fedora, to
+ detect at runtime which audio backend to use.
+- Add manpage, taken from Ubuntu.
+- Build the TTS voice dictionaries instead of shipping the included
+ binary ones. This is based on the Fedora packaging.
+- Make sure we build against portaudio 19.
+- Remove unneeded BuildRequires: jack, jack-devel, portaudio.
+- Remove unneeded PreReq on insserv.
+- Remove unneeded Requires of devel package: portaudio.
+- Remove static libraries.
+- Call ldconfig in %post/%postun.
+- Improve package description.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
Makefile.patch
espeak-1.39.tbz2
New:
----
espeak-1.43.03-source.tar.bz2
espeak-audio-runtime-detection.patch
espeak.1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ espeak.spec ++++++
--- /var/tmp/diff_new_pack.tsxJsI/_old 2010-04-08 12:22:12.000000000 +0200
+++ /var/tmp/diff_new_pack.tsxJsI/_new 2010-04-08 12:22:12.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package espeak (Version 1.39)
+# spec file for package espeak (Version 1.43.03)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -15,77 +15,98 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-# norootforbuild
-Url: http://espeak.sourceforge.net
Name: espeak
-BuildRequires: gcc-c++ jack jack-devel portaudio portaudio-devel pulseaudio-devel
-Version: 1.39
-Release: 3
+Version: 1.43.03
+Release: 1
+%define _version %{version}-source
License: GPLv3+
+Summary: Software speech synthesizer (text-to-speech)
+Url: http://espeak.sourceforge.net
Group: Productivity/Other
-Source: espeak-1.39.tbz2
-Patch: Makefile.patch
-Summary: TTS system for English/German and other languages
-PreReq: %insserv_prereq
+Source: %{name}-%{_version}.tar.bz2
+Source1: espeak.1
+# PATCH-FIX-UPSTREAM espeak-audio-runtime-detection.patch vuntz@opensuse.org -- Taken from Fedora
+Patch0: espeak-audio-runtime-detection.patch
+BuildRequires: gcc-c++
+BuildRequires: portaudio-devel
+BuildRequires: pulseaudio-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
-espeak is a multi-lingual text-to-speach system
-
+eSpeak is a compact open source software speech synthesizer for English
+and other languages.
-
-Authors:
---------
- Jonathan Duddington
+eSpeak uses a "formant synthesis" method. This allows many languages to
+be provided in a small size. The speech is clear, and can be used at
+high speeds, but is not as natural or smooth as larger synthesizers
+which are based on human speech recordings.
%package devel
License: GPLv3+
-Summary: TTS system for English/German and other languages
+Summary: Software speech synthesizer (text-to-speech) -- Development Files
Group: Productivity/Other
-Requires: espeak portaudio
+Requires: espeak
%description devel
-espeak is a multi-lingual text-to-speach system
-
-
+eSpeak is a compact open source software speech synthesizer for English
+and other languages.
-Authors:
---------
- Jonathan Duddington
+eSpeak uses a "formant synthesis" method. This allows many languages to
+be provided in a small size. The speech is clear, and can be used at
+high speeds, but is not as natural or smooth as larger synthesizers
+which are based on human speech recordings.
%prep
-%setup -n espeak-1.39/src
-%patch -p2
+%setup -q -n %{name}-%{_version}
+%patch0 -p1
+# Don't use the included binary voice dictionaries; we compile these from
+# source
+%{__rm} espeak-data/*_dict
+# Build against portaudio v19 (see ReadMe)
+%{__cp} -f src/portaudio19.h src/portaudio.h
%build
-make CFLAGS="$RPM_OPT_FLAGS -D_POSIX_C_SOURCE=2 -D_BSD_SOURCE" LIB_CFLAGS="$RPM_OPT_FLAGS -D_POSIX_C_SOURCE=2 -D_BSD_SOURCE -fPIC"
+cd src
+make %{?_smp_mflags} CFLAGS="%{optflags}"
+cd ..
+# Build the TTS voice dictionaries
+export ESPEAK_DATA_PATH=%{_builddir}/%{name}-%{_version}
+cd dictsource
+for voice in $(../src/speak --voices | awk '{print $2}{print $5}' | egrep -v Language\|File\|/ | uniq); do
+ ../src/speak --compile=$voice;
+done
%install
-make LIBDIR=%{_libdir} DESTDIR=$RPM_BUILD_ROOT install
+cd src
+make LIBDIR=%{_libdir} DESTDIR=%{buildroot} install
+cd ..
+# Remove static libraries
+%{__rm} %{buildroot}%{_libdir}/*.a
+# Install manpage
+%{__install} -D -m 0644 %{SOURCE1} %{buildroot}%{_mandir}/man1/espeak.1
+# Rename docs subdir for installation with %doc
+%{__mv} docs/ html/
%clean
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
-%post
+%post -p /sbin/ldconfig
-%postun
+%postun -p /sbin/ldconfig
-%files devel
+%files
%defattr (-,root,root,755)
-%{_libdir}/libespeak.so
-%dir /usr/include/espeak
-/usr/include/espeak/*
+%doc ChangeLog License.txt ReadMe html/
+%{_bindir}/espeak
+%{_libdir}/libespeak.so.*
+%{_datadir}/espeak-data/
+%doc %{_mandir}/man1/espeak.1.*
-%files
+%files devel
%defattr (-,root,root,755)
-%doc ../docs/*
-%doc ../ChangeLog
-/usr/share/espeak-data
-%{_libdir}/libespeak.a
-%{_libdir}/libespeak.so.1
-%{_libdir}/libespeak.so.1.1.39
-/usr/bin/espeak
+%{_includedir}/espeak/
+%{_libdir}/libespeak.so
%changelog
++++++ espeak-audio-runtime-detection.patch ++++++
diff -ur espeak-1.42.04-source/src/Makefile espeak-1.42.04-runtime-detection/src/Makefile
--- espeak-1.42.04-source/src/Makefile 2009-11-26 01:11:54.000000000 +0100
+++ espeak-1.42.04-runtime-detection/src/Makefile 2009-12-17 17:08:57.000000000 +0100
@@ -24,10 +24,16 @@
LN_SF = /bin/ln -sf
MKDIR = mkdir -p
-AUDIO = portaudio
+AUDIO = runtime
+#AUDIO = portaudio
#AUDIO = pulseaudio
#AUDIO = sada
+ifeq ($(AUDIO),runtime)
+WAVE=wave.cpp wave_pulse.cpp
+LIB_AUDIO=-lpulse -lpulse-simple -lportaudio
+USE_AUDIO=-DUSE_PULSEAUDIO -DUSE_PORTAUDIO
+else
ifeq ($(AUDIO),pulseaudio)
WAVE=wave_pulse.cpp
LIB_AUDIO=-lpulse
@@ -46,6 +52,7 @@
endif
endif
endif
+endif
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \
diff -ur espeak-1.42.04-source/src/wave.cpp espeak-1.42.04-runtime-detection/src/wave.cpp
--- espeak-1.42.04-source/src/wave.cpp 2009-12-09 18:48:13.000000000 +0100
+++ espeak-1.42.04-runtime-detection/src/wave.cpp 2009-12-17 16:30:14.000000000 +0100
@@ -53,6 +53,145 @@
#endif
+#ifdef USE_PULSEAUDIO
+// create some wrappers for runtime detection
+
+// checked on wave_init
+static int pulse_running;
+
+// wave.cpp (this file)
+void wave_port_init();
+void* wave_port_open(const char* the_api);
+size_t wave_port_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize);
+int wave_port_close(void* theHandler);
+int wave_port_is_busy(void* theHandler);
+void wave_port_terminate();
+uint32_t wave_port_get_read_position(void* theHandler);
+uint32_t wave_port_get_write_position(void* theHandler);
+void wave_port_flush(void* theHandler);
+void wave_port_set_callback_is_output_enabled(t_wave_callback* cb);
+void* wave_port_test_get_write_buffer();
+int wave_port_get_remaining_time(uint32_t sample, uint32_t* time);
+
+// wave_pulse.cpp
+int is_pulse_running();
+void wave_pulse_init();
+void* wave_pulse_open(const char* the_api);
+size_t wave_pulse_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize);
+int wave_pulse_close(void* theHandler);
+int wave_pulse_is_busy(void* theHandler);
+void wave_pulse_terminate();
+uint32_t wave_pulse_get_read_position(void* theHandler);
+uint32_t wave_pulse_get_write_position(void* theHandler);
+void wave_pulse_flush(void* theHandler);
+void wave_pulse_set_callback_is_output_enabled(t_wave_callback* cb);
+void* wave_pulse_test_get_write_buffer();
+int wave_pulse_get_remaining_time(uint32_t sample, uint32_t* time);
+
+// wrappers
+void wave_init() {
+ pulse_running = is_pulse_running();
+
+ if (pulse_running)
+ wave_pulse_init();
+ else
+ wave_port_init();
+}
+
+void* wave_open(const char* the_api) {
+ if (pulse_running)
+ return wave_pulse_open(the_api);
+ else
+ return wave_port_open(the_api);
+}
+
+size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {
+ if (pulse_running)
+ return wave_pulse_write(theHandler, theMono16BitsWaveBuffer, theSize);
+ else
+ return wave_port_write(theHandler, theMono16BitsWaveBuffer, theSize);
+}
+
+int wave_close(void* theHandler) {
+ if (pulse_running)
+ return wave_pulse_close(theHandler);
+ else
+ return wave_port_close(theHandler);
+}
+
+int wave_is_busy(void* theHandler) {
+ if (pulse_running)
+ return wave_pulse_is_busy(theHandler);
+ else
+ return wave_port_is_busy(theHandler);
+}
+
+void wave_terminate() {
+ if (pulse_running)
+ wave_pulse_terminate();
+ else
+ wave_port_terminate();
+}
+
+uint32_t wave_get_read_position(void* theHandler) {
+ if (pulse_running)
+ return wave_pulse_get_read_position(theHandler);
+ else
+ return wave_port_get_read_position(theHandler);
+}
+
+uint32_t wave_get_write_position(void* theHandler) {
+ if (pulse_running)
+ return wave_pulse_get_write_position(theHandler);
+ else
+ return wave_port_get_write_position(theHandler);
+}
+
+void wave_flush(void* theHandler) {
+ if (pulse_running)
+ wave_pulse_flush(theHandler);
+ else
+ wave_port_flush(theHandler);
+}
+
+void wave_set_callback_is_output_enabled(t_wave_callback* cb) {
+ if (pulse_running)
+ wave_pulse_set_callback_is_output_enabled(cb);
+ else
+ wave_port_set_callback_is_output_enabled(cb);
+}
+
+void* wave_test_get_write_buffer() {
+ if (pulse_running)
+ return wave_pulse_test_get_write_buffer();
+ else
+ return wave_port_test_get_write_buffer();
+}
+
+int wave_get_remaining_time(uint32_t sample, uint32_t* time)
+{
+ if (pulse_running)
+ return wave_pulse_get_remaining_time(sample, time);
+ else
+ return wave_port_get_remaining_time(sample, time);
+}
+
+// rename functions to be wrapped
+#define wave_init wave_port_init
+#define wave_open wave_port_open
+#define wave_write wave_port_write
+#define wave_close wave_port_close
+#define wave_is_busy wave_port_is_busy
+#define wave_terminate wave_port_terminate
+#define wave_get_read_position wave_port_get_read_position
+#define wave_get_write_position wave_port_get_write_position
+#define wave_flush wave_port_flush
+#define wave_set_callback_is_output_enabled wave_port_set_callback_is_output_enabled
+#define wave_test_get_write_buffer wave_port_test_get_write_buffer
+#define wave_get_remaining_time wave_port_get_remaining_time
+#endif
+
+
static t_wave_callback* my_callback_is_output_enabled=NULL;
#define N_WAV_BUF 10
diff -ur espeak-1.42.04-source/src/wave_pulse.cpp espeak-1.42.04-runtime-detection/src/wave_pulse.cpp
--- espeak-1.42.04-source/src/wave_pulse.cpp 2009-12-09 18:48:13.000000000 +0100
+++ espeak-1.42.04-runtime-detection/src/wave_pulse.cpp 2009-12-17 17:11:35.000000000 +0100
@@ -75,6 +75,39 @@
#define MINREQ 880
#define FRAGSIZE 0
+#ifdef USE_PORTAUDIO
+// rename functions to be wrapped
+#define wave_init wave_pulse_init
+#define wave_open wave_pulse_open
+#define wave_write wave_pulse_write
+#define wave_close wave_pulse_close
+#define wave_is_busy wave_pulse_is_busy
+#define wave_terminate wave_pulse_terminate
+#define wave_get_read_position wave_pulse_get_read_position
+#define wave_get_write_position wave_pulse_get_write_position
+#define wave_flush wave_pulse_flush
+#define wave_set_callback_is_output_enabled wave_pulse_set_callback_is_output_enabled
+#define wave_test_get_write_buffer wave_pulse_test_get_write_buffer
+#define wave_get_remaining_time wave_pulse_get_remaining_time
+
+// check whether we can connect to PulseAudio
+#include
+int is_pulse_running()
+{
+ pa_sample_spec ss;
+ ss.format = ESPEAK_FORMAT;
+ ss.rate = SAMPLE_RATE;
+ ss.channels = ESPEAK_CHANNEL;
+
+ pa_simple *s = pa_simple_new(NULL, "eSpeak", PA_STREAM_PLAYBACK, NULL, "is_pulse_running", &ss, NULL, NULL, NULL);
+ if (s) {
+ pa_simple_free(s);
+ return 1;
+ } else
+ return 0;
+}
+#endif
+
static pthread_mutex_t pulse_mutex;
static pa_context *context = NULL;
@@ -893,8 +926,9 @@
return 0;
}
-#endif // of USE_PORTAUDIO
+#endif // of USE_PULSEAUDIO
+#ifndef USE_PORTAUDIO
//>
//tv_nsec = (long int)t_ns;
}
+#endif
#endif // USE_ASYNC
++++++ espeak-1.39.tbz2 -> espeak.1 ++++++
Files espeak/espeak-1.39.tbz2 and /mounts/work_src_done/STABLE/espeak/espeak.1 differ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org