diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b9bc769 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +/.build-* +/noarch/ +/x86_64/ +/festival/ +/*.src.rpm +festdoc-1.4.2.tar.gz +festival-1.96-17.fc15.src.rpm +festival-1.96-beta.tar.gz +festival-2.1-release.tar.gz +festlex_CMU.tar.gz +festlex_POSLEX.tar.gz +festvox_kallpc16k.tar.gz +festvox_kedlpc16k.tar.gz +festival-spanish-voices_1.0.0.orig.tar.gz +festvox_nitech_us_awb_arctic_hts.tar.bz2 +festvox_nitech_us_bdl_arctic_hts.tar.bz2 +festvox_nitech_us_clb_arctic_hts.tar.bz2 +festvox_nitech_us_jmk_arctic_hts.tar.bz2 +festvox_nitech_us_rms_arctic_hts.tar.bz2 +festvox_nitech_us_slt_arctic_hts.tar.bz2 +speech_tools-1.2.96-beta.tar.gz diff --git a/COPYING.hispavoces b/COPYING.hispavoces new file mode 100644 index 0000000..d511905 --- /dev/null +++ b/COPYING.hispavoces @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/dead.package b/dead.package deleted file mode 100644 index 273ce17..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -festival fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1674883 diff --git a/festival-1.96-0.7-fedora-siteinit.scm b/festival-1.96-0.7-fedora-siteinit.scm new file mode 100644 index 0000000..f29c697 --- /dev/null +++ b/festival-1.96-0.7-fedora-siteinit.scm @@ -0,0 +1,20 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; +;;; Site specific initialization file for Festival +;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; Note that many configuration settings are better made in +;; individual ~/.festivalrc files. For example, if you want to +;; enable ESD audio and do it here, it'll break screen reading +;; on the login screen. Instead, put the (uncommented) line +;(Parameter.def 'Audio_Method 'esdaudio) +;; in your individual initialization file. + +;; You can change the default voice with something like: +;(set! voice_default 'voice_nitech_us_awb_arctic_hts) + +;; If you want to install voices into a non-default location, +;; see sitevars.scm for the appropriate settings. + +(provide 'siteinit) diff --git a/festival-1.96-0.7-fedora-sitevars.scm b/festival-1.96-0.7-fedora-sitevars.scm new file mode 100644 index 0000000..af18f8b --- /dev/null +++ b/festival-1.96-0.7-fedora-sitevars.scm @@ -0,0 +1,21 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; +;;; Site specific variable settings for Festival +;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; The system-voice-path is an additional path in which to look +;; for voices. If you install voices not provided in the form of +;; rpm package, you should then set this to match. The default +;; provided here, "/usr/local/share/festival/lib/voices/", is +;; probably a good choice. You could also set this in +;; ~/.festivalvarsrc, if you want to use a voice not provided to +;; the system as a whole. + +(set! system-voice-path '("/usr/local/share/festival/lib/voices/")) +(set! system-voice-path-multisyn + '("/usr/local/share/festival/lib/voices-multisyn/")) + + + +(provide 'sitevars) diff --git a/festival-1.96-alias_cmu_to_nitech.patch b/festival-1.96-alias_cmu_to_nitech.patch new file mode 100644 index 0000000..9fe757d --- /dev/null +++ b/festival-1.96-alias_cmu_to_nitech.patch @@ -0,0 +1,57 @@ +diff -urN festival.orig/lib/alias_cmu_to_nitech.scm festival/lib/alias_cmu_to_nitech.scm +--- festival.orig/lib/alias_cmu_to_nitech.scm 1969-12-31 19:00:00.000000000 -0500 ++++ festival/lib/alias_cmu_to_nitech.scm 2007-03-14 23:31:43.000000000 -0400 +@@ -0,0 +1,39 @@ ++; ++; This file is trivial and I make no claims of copyright. However, I should ++; certainly credit Nickolay V. Shmyrev, who sent me a snippet of code on ++; which this is based. ++; -- Matthew Miller ++; ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;;; ++;;; Make aliases for cmu_us_*_arctic_hts voices previously shipped with ++;;; Fedora which are now replaced by the nitech_us_*_arctic_hts versions ++;;; of the same voices. ++;;; ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++(if (and (member 'nitech_us_awb_arctic_hts (voice.list)) ++ (not (member 'cmu_us_awb_arctic_hts (voice.list)))) ++ (define (voice_cmu_us_awb_arctic_hts) ++ (voice_nitech_us_awb_arctic_hts) ++ 'cmu_us_awb_arctic_hts)) ++ ++(if (and (member 'nitech_us_bdl_arctic_hts (voice.list)) ++ (not (member 'cmu_us_bdl_arctic_hts (voice.list)))) ++ (define (voice_cmu_us_bdl_arctic_hts) ++ (voice_nitech_us_bdl_arctic_hts) ++ 'cmu_us_bdl_arctic_hts)) ++ ++(if (and (member 'nitech_us_jmk_arctic_hts (voice.list)) ++ (not (member 'cmu_us_jmk_arctic_hts (voice.list)))) ++ (define (voice_cmu_us_jmk_arctic_hts) ++ (voice_nitech_us_jmk_arctic_hts) ++ 'cmu_us_jmk_arctic_hts)) ++ ++(if (and (member 'nitech_us_slt_arctic_hts (voice.list)) ++ (not (member 'cmu_us_slt_arctic_hts (voice.list)))) ++ (define (voice_cmu_us_slt_arctic_hts) ++ (voice_nitech_us_slt_arctic_hts) ++ 'cmu_us_slt_arctic_hts)) ++ +diff -urN festival.orig/lib/init.scm festival/lib/init.scm +--- festival.orig/lib/init.scm 2007-03-14 23:26:07.000000000 -0400 ++++ festival/lib/init.scm 2007-03-14 23:32:44.000000000 -0400 +@@ -128,6 +128,10 @@ + (require 'voices) ;; sets voice_default + (require 'languages) + ++;;; Aliases for the CMU voices previously shipped ++;;; with Fedora (now replaced by Nitech versions) ++(require 'alias_cmu_to_nitech) ++ + ;;; Some higher level functions + (require 'token) + (require 'tts) diff --git a/festival-1.96-bettersonamehack.patch b/festival-1.96-bettersonamehack.patch new file mode 100644 index 0000000..db78824 --- /dev/null +++ b/festival-1.96-bettersonamehack.patch @@ -0,0 +1,33 @@ +--- festival/speech_tools/config/rules/library.mak.soname 2001-04-04 07:55:32.000000000 -0400 ++++ festival/speech_tools/config/rules/library.mak 2007-03-16 14:13:59.000000000 -0400 +@@ -103,14 +103,14 @@ + ########################################################################### + + lib%.so : lib%.a +- @echo Make Shared Library $* ++ @echo Make Shared Library $(*F) + @if [ ! -d shared_space ] ; then mkdir shared_space ; else $(RM) -f shared_space/*.o ; fi + @(cd shared_space ; $(AR) x ../$< ) +- @echo Link Shared Library $* +- if [ -n "$(PROJECT_LIBRARY_NEEDS_SYSLIBS_$*)" ] ; then libs='$(JAVA_PROJECT_LIBS)' ; fi ;\ +- $(subst XXX,$@.$(PROJECT_LIBRARY_VERSION_$*),$(MAKE_SHARED_LIB)) shared_space/*.o $(PROJECT_LIBRARY_USES_$*:%=-L. -l%) $$libs ++ @echo Link Shared Library $(*F) ++ if [ -n "$(PROJECT_LIBRARY_NEEDS_SYSLIBS_$(*F))" ] ; then libs='$(JAVA_PROJECT_LIBS)' ; fi ;\ ++ $(subst XXX,$@.$(PROJECT_LIBRARY_VERSION_$(*F)),$(subst YYY,$(@F).$(PROJECT_LIBRARY_VERSION_$(*F)),$(MAKE_SHARED_LIB))) shared_space/*.o $(PROJECT_LIBRARY_USES_$(*F):%=-L. -l%) $$libs + @$(RM) -f shared_space/*.o $@ +- @ln -s $@.$(PROJECT_LIBRARY_VERSION_$*) $@ ++ @ln -s $(@F).$(PROJECT_LIBRARY_VERSION_$(*F)) $@ + + ########################################################################### + ## ## +--- festival/speech_tools/config/compilers/gcc_defaults.mak.soname 2007-03-16 12:43:31.000000000 -0400 ++++ festival/speech_tools/config/compilers/gcc_defaults.mak 2007-03-16 13:30:11.000000000 -0400 +@@ -78,7 +78,7 @@ + SHARED_LINKFLAGS = -fno-shared-data + + ifndef GCC_MAKE_SHARED_LIB +- MAKE_SHARED_LIB = $(CXX) -shared -fno-shared-data -o XXX ++ MAKE_SHARED_LIB = $(CXX) -shared -fno-shared-data -o XXX -Wl,-soname,YYY + else + MAKE_SHARED_LIB = $(GCC_MAKE_SHARED_LIB) + endif diff --git a/festival-1.96-etcsiteinit.patch b/festival-1.96-etcsiteinit.patch new file mode 100644 index 0000000..8e21ace --- /dev/null +++ b/festival-1.96-etcsiteinit.patch @@ -0,0 +1,55 @@ +diff -ur festival.orig/lib/init.scm festival/lib/init.scm +--- festival.orig/lib/init.scm 2004-07-15 19:03:04.000000000 -0400 ++++ festival/lib/init.scm 2007-03-15 11:58:09.000000000 -0400 +@@ -55,6 +55,10 @@ + (if (probe_file (path-append libdir "sitevars.scm")) + (load (path-append libdir "sitevars.scm"))) + ++(if (probe_file "/etc/festival/sitevars.scm") ++ (load "/etc/festival/sitevars.scm")) ++ ++ + ;;; CSTR siod extensions + (require 'cstr) + +@@ -98,7 +102,7 @@ + (t ;; can't find direct support so guess that /dev/audio for 8k ulaw exists + (Parameter.def 'Audio_Method 'sunaudio))) + ;;; If you have an external program to play audio add its definition +-;;; in siteinit.scm ++;;; in ~/.festivalrc or /etc/festival/siteinit.scm + + ;;; The audio spooler doesn't work under Windows so redefine audio_mode + (if (member 'mplayeraudio *modules*) +@@ -135,9 +139,13 @@ + ;;; + ;;; Local site initialization, if the file exists load it + ;;; ++ + (if (probe_file (path-append libdir "siteinit.scm")) + (load (path-append libdir "siteinit.scm"))) + ++(if (probe_file "/etc/festival/siteinit.scm") ++ (load "/etc/festival/siteinit.scm")) ++ + ;;; User initialization, if a user has a personal customization + ;;; file loaded it + (if (probe_file (path-append home-directory ".siodrc")) +diff -ur festival.orig/lib/voices.scm festival/lib/voices.scm +--- festival.orig/lib/voices.scm 2005-05-02 10:20:37.000000000 -0400 ++++ festival/lib/voices.scm 2007-03-15 12:00:19.000000000 -0400 +@@ -45,12 +45,12 @@ + (defvar system-voice-path '( ) + "system-voice-path + Additional directory not near the load path where voices can be +- found, this can be redefined in lib/sitevars.scm if desired.") ++ found, this can be redefined in /etc/festival/sitevars.scm if desired.") + + (defvar system-voice-path-multisyn '( ) + "system-voice-path-multisyn + Additional directory not near the load path where multisyn voices can be +- found, this can be redefined in lib/sitevars.scm if desired.") ++ found, this can be redefined in /etc/festival/sitevars.scm if desired.") + + (defvar voice-path + (remove-duplicates diff --git a/festival-1.96-findspeechtools.patch b/festival-1.96-findspeechtools.patch new file mode 100644 index 0000000..cb827f5 --- /dev/null +++ b/festival-1.96-findspeechtools.patch @@ -0,0 +1,11 @@ +--- festival/config/config.in.orig 2007-03-15 16:16:24.000000000 -0400 ++++ festival/config/config.in 2007-03-15 16:16:50.000000000 -0400 +@@ -10,7 +10,7 @@ + ########################################################################### + ## Which speech tools to use + +-EST=$(TOP)/../speech_tools ++EST=$(TOP)/speech_tools + + ########################################################################### + ## Where the festival tree will be installed. diff --git a/festival-1.96-format-security.patch b/festival-1.96-format-security.patch new file mode 100644 index 0000000..144de47 --- /dev/null +++ b/festival-1.96-format-security.patch @@ -0,0 +1,24 @@ +diff -Naur festival.orig/speech_tools/siod/siodeditline.c festival/speech_tools/siod/siodeditline.c +--- festival.orig/speech_tools/siod/siodeditline.c 2004-04-30 18:56:51.000000000 +0200 ++++ festival/speech_tools/siod/siodeditline.c 2014-05-12 19:00:37.491000000 +0200 +@@ -151,7 +151,7 @@ + symbol = el_current_sym(); + infostring = siod_manual_sym(symbol); + putc('\n',stderr); +- fprintf(stderr,infostring); ++ fprintf(stderr,"%s",infostring); + fflush(stderr); + putc('\n',stderr); + fflush(stderr); +diff -Naur festival.orig/speech_tools/utils/cmd_line.cc festival/speech_tools/utils/cmd_line.cc +--- festival.orig/speech_tools/utils/cmd_line.cc 2004-09-30 14:53:37.000000000 +0200 ++++ festival/speech_tools/utils/cmd_line.cc 2014-05-12 19:08:57.577000000 +0200 +@@ -460,7 +460,7 @@ + fprintf(stdout,"%s", + (const char *)full.filename()); + +- fprintf(stdout, (const char *)ts.get_upto_eoln().string()); ++ fprintf(stdout, "%s", (const char *)ts.get_upto_eoln().string()); + + while (!ts.eof()) + { diff --git a/festival-1.96-kludge-etcpath-into-libarch.patch b/festival-1.96-kludge-etcpath-into-libarch.patch new file mode 100644 index 0000000..e69e870 --- /dev/null +++ b/festival-1.96-kludge-etcpath-into-libarch.patch @@ -0,0 +1,35 @@ +diff -ur festival.orig/speech_tools/main/siod_main.cc festival/speech_tools/main/siod_main.cc +--- festival.orig/speech_tools/main/siod_main.cc 2004-09-30 08:53:36.000000000 -0400 ++++ festival/speech_tools/main/siod_main.cc 2007-03-13 00:49:35.000000000 -0400 +@@ -224,10 +224,10 @@ + cons(flocons(subminor),NIL)))); + + EST_Pathname etcdircommon = est_libdir; +- etcdircommon += "etc"; ++ etcdircommon += "etc/"; + +- EST_Pathname etcdir = etcdircommon; +- etcdir += est_ostype; ++ EST_Pathname etcdir = {{HORRIBLELIBARCHKLUDGE}}; ++ etcdir += "festival/etc/"; + + // Modify my PATH to include these directories + siod_set_lval("etc-path",cons(rintern(etcdir), +diff -ur festival.orig/src/arch/festival/festival.cc festival/src/arch/festival/festival.cc +--- festival.orig/src/arch/festival/festival.cc 2007-03-13 00:41:42.000000000 -0400 ++++ festival/src/arch/festival/festival.cc 2007-03-13 00:47:55.000000000 -0400 +@@ -349,10 +349,10 @@ + proclaim_module("mplayeraudio"); + + // Add etc-dir path and machine specific directory etc/$OSTYPE +- char *etcdir = walloc(char,strlen(festival_libdir)+strlen("etc/")+ +- strlen(FTOSTYPE)+3); +- sprintf(etcdir,"%s/etc/%s/",festival_libdir,FTOSTYPE); +- char *etcdircommon = walloc(char,strlen(festival_libdir)+strlen("etc/")+3); ++ char *etcdir = walloc(char,strlen({{HORRIBLELIBARCHKLUDGE}})+ ++ strlen("etc/festival/")+2); ++ sprintf(etcdir,"%s/festival/etc/",{{HORRIBLELIBARCHKLUDGE}}); ++ char *etcdircommon = walloc(char,strlen(festival_libdir)+strlen("etc/")+2); + sprintf(etcdircommon,"%s/etc/",festival_libdir); + + // Modify my PATH to include these directories diff --git a/festival-1.96-main-shared-build.patch b/festival-1.96-main-shared-build.patch new file mode 100644 index 0000000..d424c7e --- /dev/null +++ b/festival-1.96-main-shared-build.patch @@ -0,0 +1,37 @@ +--- festival/speech_tools/config/rules/defaults.mak.orig 2007-03-16 12:39:12.000000000 -0400 ++++ festival/speech_tools/config/rules/defaults.mak 2007-03-16 12:39:19.000000000 -0400 +@@ -69,15 +69,21 @@ + MADE_FROM_ABOVE:=$(N) + endif + ++ifneq ($(SHARED),0) ++ LIBTYPE=so ++else ++ LIBTYPE=a ++endif ++ + ifndef PROJECT_LIBDEPS +- PROJECT_LIBDEPS = $(foreach l,$(PROJECT_LIBRARIES),$(PROJECT_LIBRARY_DIR_$(l))/lib$(l).a) ++ PROJECT_LIBDEPS = $(foreach l,$(PROJECT_LIBRARIES),$(PROJECT_LIBRARY_DIR_$(l))/lib$(l).$(LIBTYPE)) + endif + ifndef PROJECT_LIBS + PROJECT_LIBS = $(foreach l,$(PROJECT_LIBRARIES),-L$(PROJECT_LIBRARY_DIR_$(l)) -l$(l)) + endif + + ifndef REQUIRED_LIBDEPS +- REQUIRED_LIBDEPS = $(foreach l,$(REQUIRED_LIBRARIES),$(REQUIRED_LIBRARY_DIR_$(l))/lib$(l).a) ++ REQUIRED_LIBDEPS = $(foreach l,$(REQUIRED_LIBRARIES),$(REQUIRED_LIBRARY_DIR_$(l))/lib$(l).$(LIBTYPE)) + endif + ifndef REQUIRED_LIBS + REQUIRED_LIBS = $(foreach l,$(REQUIRED_LIBRARIES),-L$(REQUIRED_LIBRARY_DIR_$(l)) -l$(l)) +--- festival/config/project.mak.orig 2007-03-16 13:01:40.000000000 -0400 ++++ festival/config/project.mak 2007-03-16 13:02:24.000000000 -0400 +@@ -84,6 +84,8 @@ + PROJECT_LIBRARY_DIR_Festival = $(TOP)/src/lib + PROJECT_DEFAULT_LIBRARY = Festival + ++PROJECT_LIBRARY_VERSION_Festival = $(PROJECT_VERSION).0 ++ + # Libraries used from other projects + + REQUIRED_LIBRARIES = estools estbase eststring diff --git a/festival-1.96-nitech-american.patch b/festival-1.96-nitech-american.patch new file mode 100644 index 0000000..2f4a57f --- /dev/null +++ b/festival-1.96-nitech-american.patch @@ -0,0 +1,213 @@ +diff -ur festival.orig/lib/email-mode.scm festival/lib/email-mode.scm +--- festival.orig/lib/email-mode.scm 2001-04-04 07:55:20.000000000 -0400 ++++ festival/lib/email-mode.scm 2007-03-13 12:14:01.000000000 -0400 +@@ -40,7 +40,7 @@ + (define (email_init_func) + "(email_init_func) + Called on starting email text mode." +- (voice_rab_diphone) ++ (voice_nitech_us_slt_arctic_hts) + (set! email_previous_t2w_func token_to_words) + (set! english_token_to_words email_token_to_words) + (set! token_to_words english_token_to_words) +@@ -67,13 +67,13 @@ + ((and (string-matches name ">") + (string-matches (item.feat token "whitespace") + "[ \t\n]*\n *")) +- (voice_don_diphone) ++ (voice_nitech_us_bdl_arctic_hts) + nil ;; return nothing to say + ) + (t ;; for all other cases + (if (string-matches (item.feat token "whitespace") + ".*\n[ \n]*") +- (voice_rab_diphone)) ++ (voice_nitech_us_slt_arctic_hts)) + (email_previous_t2w_func token name)))) + + (set! tts_text_modes +diff -ur festival.orig/lib/festival.scm festival/lib/festival.scm +--- festival.orig/lib/festival.scm 2005-10-21 08:34:01.000000000 -0400 ++++ festival/lib/festival.scm 2007-03-13 12:15:13.000000000 -0400 +@@ -507,8 +507,11 @@ + double quotes + (tts FILENAME nil) Say contexts of file, FILENAME should be + surrounded by double quotes +- (voice_rab_diphone) Select voice (Britsh Male) + (voice_ked_diphone) Select voice (American Male) ++ (voice_nitech_us_bdl_arctic_hts) ++ Select voice (American Male) ++ (voice_nitech_us_slt_arctic_hts) ++ Select voice (American Female) + ") + + (define (festival_warranty) +diff -ur festival.orig/lib/languages.scm festival/lib/languages.scm +--- festival.orig/lib/languages.scm 2002-04-19 17:47:23.000000000 -0400 ++++ festival/lib/languages.scm 2007-03-13 12:17:15.000000000 -0400 +@@ -58,11 +58,12 @@ + + (define (language_american_english) + "(language_american_english) +-Set up language parameters for Aemerican English." ++Set up language parameters for American English." + +- (if (symbol-bound? 'voice_kal_diphone) +- (set! female1 voice_kal_diphone)) +- (set! male1 voice_ked_diphone) ++ (if (symbol-bound? 'voice_nitech_us_slt_arctic_hts) ++ (set! female1 voice_nitech_us_slt_arctic_hts)) ++ (if (symbol-bound? 'voice_nitech_us_bdl_arctic_hts) ++ (set! male1 voice_nitech_us_bdl_arctic_hts)) + + (male1) + (Parameter.set 'Language 'americanenglish) +@@ -98,11 +99,12 @@ + + (define (select_language language) + (cond +- ((or (equal? language 'britishenglish) +- (equal? language 'english)) ;; we all know its the *real* English ++ ((or (equal? language 'americanenglish) ++ (equal? language 'english)) ;; it may not be the *real* English ++ (language_american_english)) ;; but at least it's supported without ++ ;; non-free add-ons. ++ ((equal? language 'britishenglish) + (language_british_english)) +- ((equal? language 'americanenglish) +- (language_american_english)) + ((equal? language 'scotsgaelic) + (language_scots_gaelic)) + ((equal? language 'welsh) +@@ -113,8 +115,8 @@ + (language_klingon)) + (t + (print "Unsupported language, using English") +- (language_british_english)))) ++ (language_american_english)))) + +-(defvar language_default language_british_english) ++(defvar language_default language_american_english) + + (provide 'languages) +diff -ur festival.orig/lib/sable-mode.scm festival/lib/sable-mode.scm +--- festival.orig/lib/sable-mode.scm 2006-07-07 17:24:55.000000000 -0400 ++++ festival/lib/sable-mode.scm 2007-03-13 12:25:04.000000000 -0400 +@@ -222,35 +222,38 @@ + (xxml_synth UTT) + (set! sable_speaker_stack (cons sable_current_speaker sable_speaker_stack)) + (cond +- ((not equal? sable_current_language 'britishenglish) ++ ((not equal? sable_current_language 'americanenglish) + (print "SABLE: choosen unknown voice, current voice unchanged")) + ((equal? (car (xxml_attval "NAME" ATTLIST)) 'male1) +- (set! sable_current_speaker 'voice_kal_diphone) +- (voice_kal_diphone)) ++ (set! sable_current_speaker 'voice_nitech_us_bdl_arctic_hts) ++ (voice_nitech_us_bdl_arctic_hts)) + ((equal? (car (xxml_attval "NAME" ATTLIST)) 'male2) +- (set! sable_current_speaker 'voice_don_diphone) +- (voice_don_diphone)) ++ (set! sable_current_speaker 'voice_nitech_us_rms_arctic_hts) ++ (voice_nitech_us_rms_arctic_hts)) + ((equal? (car (xxml_attval "NAME" ATTLIST)) 'male3) +- (set! sable_current_speaker 'voice_ked_diphone) +- (voice_ked_diphone)) ++ (set! sable_current_speaker 'voice_nitech_us_awb_arctic_hts) ++ (voice_nitech_us_awb_arctic_hts)) + ((equal? (car (xxml_attval "NAME" ATTLIST)) 'male4) +- (set! sable_current_speaker 'voice_rab_diphone) +- (voice_rab_diphone)) ++ (set! sable_current_speaker 'voice_nitech_us_jmk_arctic_hts) ++ (voice_nitech_us_jmk_arctic_hts)) + ((equal? (car (xxml_attval "NAME" ATTLIST)) 'male5) +- (set! sable_current_speaker 'voice_cmu_us_jmk_arctic_hts) +- (voice_cmu_us_jmk_arctic_hts)) ++ (set! sable_current_speaker 'voice_kal_diphone) ++ (voice_kal_diphone)) + ((equal? (car (xxml_attval "NAME" ATTLIST)) 'male6) +- (set! sable_current_speaker 'voice_cmu_us_bdl_arctic_hts) +- (voice_cmu_us_bdl_arctic_hts)) ++ (set! sable_current_speaker 'voice_ked_diphone) ++ (voice_ked_diphone)) + ((equal? (car (xxml_attval "NAME" ATTLIST)) 'male7) +- (set! sable_current_speaker 'voice_cmu_us_awb_arctic_hts) +- (voice_cmu_us_awb_arctic_hts)) ++ (set! sable_current_speaker 'voice_kal_diphone) ++ (voice_kal_diphone)) + ((equal? (car (xxml_attval "NAME" ATTLIST)) 'male8) +- (set! sable_current_speaker 'voice_rab_diphone) ++ (set! sable_current_speaker 'voice_ked_diphone) + (voice_ked_diphone)) + ((equal? (car (xxml_attval "NAME" ATTLIST)) 'female1) +- (set! sable_current_speaker 'voice_cmu_us_slt_arctic_hts) +- (voice_us1_mbrola)) ++ (set! sable_current_speaker 'voice_nitech_us_slt_arctic_hts) ++ (voice_nitech_us_slt_arctic_hts)) ++ ((equal? (car (xxml_attval "NAME" ATTLIST)) 'female2) ++ (set! sable_current_speaker 'voice_nitech_us_clb_arctic_hts) ++ (voice_nitech_us_clb_arctic_hts)) + (t + (set! sable_current_speaker (intern (string-append "voice_" (car (xxml_attval "NAME" ATTLIST))))) + (eval (list sable_current_speaker)))) +@@ -467,7 +470,7 @@ + "(sable_init_func) + Initialisation for SABLE mode" + (sable_init_globals) +- (voice_kal_diphone) ++ (voice_nitech_us_slt_arctic_hts) + (set! sable_previous_elements xxml_elements) + (set! xxml_elements sable_elements) + (set! sable_previous_token_to_words english_token_to_words) +diff -ur festival.orig/lib/soleml-mode.scm festival/lib/soleml-mode.scm +--- festival.orig/lib/soleml-mode.scm 2001-04-04 07:55:20.000000000 -0400 ++++ festival/lib/soleml-mode.scm 2007-03-13 12:25:48.000000000 -0400 +@@ -51,7 +51,7 @@ + (define (voice_soleml) + "(soleml_voice) + Speaker specific initialisation for SOLE museum data." +- (voice_rab_diphone) ++ (voice_nitech_us_slt_arctic_hts) + ;; Utterances only come at end of file + (set! eou_tree '((0))) + ) +diff -ur festival.orig/lib/voices.scm festival/lib/voices.scm +--- festival.orig/lib/voices.scm 2005-05-02 10:20:37.000000000 -0400 ++++ festival/lib/voices.scm 2007-03-13 12:31:07.000000000 -0400 +@@ -322,25 +322,19 @@ + A variable whose value is a function name that is called on start up to + the default voice. [see Site initialization]") + ++; This list has been reordered for Fedora, since we want to have the option ++; to only install a smallish voice by default. And the slt voice is nice. + (defvar default-voice-priority-list +- '(kal_diphone +- cmu_us_bdl_arctic_hts +- cmu_us_jmk_arctic_hts +- cmu_us_slt_arctic_hts +- cmu_us_awb_arctic_hts +-; cstr_rpx_nina_multisyn ; restricted license (lexicon) +-; cstr_rpx_jon_multisyn ; restricted license (lexicon) +-; cstr_edi_awb_arctic_multisyn ; restricted license (lexicon) +-; cstr_us_awb_arctic_multisyn ++ '(nitech_us_slt_arctic_hts ++ nitech_us_awb_arctic_hts ++ nitech_us_bdl_arctic_hts ++ nitech_us_clb_arctic_hts ++ nitech_us_jmk_arctic_hts ++ nitech_us_rms_arctic_hts ++ kal_diphone + ked_diphone +- don_diphone +- rab_diphone +- en1_mbrola +- us1_mbrola +- us2_mbrola +- us3_mbrola +- gsw_diphone ;; not publically distributed +- el_diphone ++ cstr_us_awb_arctic_multisyn ++ cstr_us_jmk_arctic_multisyn + ) + "default-voice-priority-list + List of voice names. The first of them available becomes the default voice.") diff --git a/festival-1.96-nitech-fixmissingrequire.patch b/festival-1.96-nitech-fixmissingrequire.patch new file mode 100644 index 0000000..80d4056 --- /dev/null +++ b/festival-1.96-nitech-fixmissingrequire.patch @@ -0,0 +1,36 @@ +diff -ur festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_f0model.scm festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_f0model.scm +--- festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_f0model.scm 2006-12-26 01:37:36.000000000 -0500 ++++ festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_f0model.scm 2007-03-15 14:16:01.000000000 -0400 +@@ -35,7 +35,7 @@ + ;;; + + ;;; Load any necessary files here +-;(require 'f2bf0lr) ++(require 'f2bf0lr) + (require 'nitech_us_awb_arctic_f0clunits) + + (set! nitech_us_awb_arctic_int_lr_params +diff -ur festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_f0model.scm festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_f0model.scm +--- festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_f0model.scm 2006-12-26 01:40:32.000000000 -0500 ++++ festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_f0model.scm 2007-03-15 14:16:09.000000000 -0400 +@@ -35,7 +35,7 @@ + ;;; + + ;;; Load any necessary files here +-;(require 'f2bf0lr) ++(require 'f2bf0lr) + (require 'nitech_us_clb_arctic_f0clunits) + + (set! nitech_us_clb_arctic_int_lr_params +diff -ur festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_f0model.scm festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_f0model.scm +--- festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_f0model.scm 2006-12-26 01:41:26.000000000 -0500 ++++ festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_f0model.scm 2007-03-15 14:16:06.000000000 -0400 +@@ -35,7 +35,7 @@ + ;;; + + ;;; Load any necessary files here +-;(require 'f2bf0lr) ++(require 'f2bf0lr) + (require 'nitech_us_rms_arctic_f0clunits) + + (set! nitech_us_rms_arctic_int_lr_params diff --git a/festival-1.96-nitech-proclaimvoice.patch b/festival-1.96-nitech-proclaimvoice.patch new file mode 100644 index 0000000..004013a --- /dev/null +++ b/festival-1.96-nitech-proclaimvoice.patch @@ -0,0 +1,102 @@ +diff -ur festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_hts.scm festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_hts.scm 2007-03-08 04:26:04.000000000 -0500 ++++ festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_hts.scm 2007-03-14 23:39:40.000000000 -0400 +@@ -176,5 +176,13 @@ + (set! current-voice 'nitech_us_awb_arctic_hts) + ) + ++(proclaim_voice ++ 'nitech_us_awb_arctic_hts ++ '((language english) ++ (gender male) ++ (dialect american) ++ (description ++ "Scottish-accent US English male speaker AWB."))) ++ + (provide 'nitech_us_awb_arctic_hts) + +diff -ur festival/lib/voices/us/nitech_us_bdl_arctic_hts/festvox/nitech_us_bdl_arctic_hts.scm festival/lib/voices/us/nitech_us_bdl_arctic_hts/festvox/nitech_us_bdl_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_bdl_arctic_hts/festvox/nitech_us_bdl_arctic_hts.scm 2007-03-08 04:26:34.000000000 -0500 ++++ festival/lib/voices/us/nitech_us_bdl_arctic_hts/festvox/nitech_us_bdl_arctic_hts.scm 2007-03-14 23:40:06.000000000 -0400 +@@ -176,5 +176,13 @@ + (set! current-voice 'nitech_us_bdl_arctic_hts) + ) + ++(proclaim_voice ++ 'nitech_us_bdl_arctic_hts ++ '((language english) ++ (gender male) ++ (dialect american) ++ (description ++ "US English male speaker BDL."))) ++ + (provide 'nitech_us_bdl_arctic_hts) + +diff -ur festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_hts.scm festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_hts.scm 2007-03-08 04:27:07.000000000 -0500 ++++ festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_hts.scm 2007-03-14 23:41:36.000000000 -0400 +@@ -176,5 +176,13 @@ + (set! current-voice 'nitech_us_clb_arctic_hts) + ) + ++(proclaim_voice ++ 'nitech_us_clb_arctic_hts ++ '((language english) ++ (gender female) ++ (dialect american) ++ (description ++ "US English female speaker CLB."))) ++ + (provide 'nitech_us_clb_arctic_hts) + +diff -ur festival/lib/voices/us/nitech_us_jmk_arctic_hts/festvox/nitech_us_jmk_arctic_hts.scm festival/lib/voices/us/nitech_us_jmk_arctic_hts/festvox/nitech_us_jmk_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_jmk_arctic_hts/festvox/nitech_us_jmk_arctic_hts.scm 2007-03-08 04:27:43.000000000 -0500 ++++ festival/lib/voices/us/nitech_us_jmk_arctic_hts/festvox/nitech_us_jmk_arctic_hts.scm 2007-03-14 23:42:14.000000000 -0400 +@@ -176,5 +176,13 @@ + (set! current-voice 'nitech_us_jmk_arctic_hts) + ) + ++(proclaim_voice ++ 'nitech_us_jmk_arctic_hts ++ '((language english) ++ (gender male) ++ (dialect american) ++ (description ++ "Canadian-accent US English male speaker JMK."))) ++ + (provide 'nitech_us_jmk_arctic_hts) + +diff -ur festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_hts.scm festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_hts.scm 2007-03-08 04:28:15.000000000 -0500 ++++ festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_hts.scm 2007-03-14 23:42:46.000000000 -0400 +@@ -176,5 +176,13 @@ + (set! current-voice 'nitech_us_rms_arctic_hts) + ) + ++(proclaim_voice ++ 'nitech_us_rms_arctic_hts ++ '((language english) ++ (gender male) ++ (dialect american) ++ (description ++ "US English male speaker RMS. Not that RMS."))) ++ + (provide 'nitech_us_rms_arctic_hts) + +diff -ur festival/lib/voices/us/nitech_us_slt_arctic_hts/festvox/nitech_us_slt_arctic_hts.scm festival/lib/voices/us/nitech_us_slt_arctic_hts/festvox/nitech_us_slt_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_slt_arctic_hts/festvox/nitech_us_slt_arctic_hts.scm 2007-03-08 04:28:41.000000000 -0500 ++++ festival/lib/voices/us/nitech_us_slt_arctic_hts/festvox/nitech_us_slt_arctic_hts.scm 2007-03-14 23:43:03.000000000 -0400 +@@ -176,5 +176,13 @@ + (set! current-voice 'nitech_us_slt_arctic_hts) + ) + ++(proclaim_voice ++ 'nitech_us_slt_arctic_hts ++ '((language english) ++ (gender female) ++ (dialect american) ++ (description ++ "US English female speaker SLT."))) ++ + (provide 'nitech_us_slt_arctic_hts) + diff --git a/festival-1.96-nitech-sltreferences.patch b/festival-1.96-nitech-sltreferences.patch new file mode 100644 index 0000000..6887a96 --- /dev/null +++ b/festival-1.96-nitech-sltreferences.patch @@ -0,0 +1,135 @@ +diff -ur festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_hts.scm festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_hts.scm 2007-03-15 14:18:02.000000000 -0400 ++++ festival/lib/voices/us/nitech_us_awb_arctic_hts/festvox/nitech_us_awb_arctic_hts.scm 2007-03-15 14:20:37.000000000 -0400 +@@ -101,10 +101,10 @@ + t + ) + +-(set! nitech_us_slt_arctic_hts::hts_feats_list ++(set! nitech_us_awb_arctic_hts::hts_feats_list + (load (path-append hts_data_dir "feat.list") t)) + +-(set! nitech_us_slt_arctic_hts::hts_engine_params ++(set! nitech_us_awb_arctic_hts::hts_engine_params + (list + (list "-dm1" (path-append hts_data_dir "mcep_dyn.win")) + (list "-dm2" (path-append hts_data_dir "mcep_acc.win")) +@@ -160,8 +160,8 @@ + (nitech_us_awb_arctic::select_f0model) + + ;; Waveform synthesis model: hts +- (set! hts_engine_params nitech_us_slt_arctic_hts::hts_engine_params) +- (set! hts_feats_list nitech_us_slt_arctic_hts::hts_feats_list) ++ (set! hts_engine_params nitech_us_awb_arctic_hts::hts_engine_params) ++ (set! hts_feats_list nitech_us_awb_arctic_hts::hts_feats_list) + (Parameter.set 'Synth_Method 'HTS) + + ;; This is where you can modify power (and sampling rate) if desired +diff -ur festival/lib/voices/us/nitech_us_bdl_arctic_hts/festvox/nitech_us_bdl_arctic_hts.scm festival/lib/voices/us/nitech_us_bdl_arctic_hts/festvox/nitech_us_bdl_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_bdl_arctic_hts/festvox/nitech_us_bdl_arctic_hts.scm 2007-03-15 14:18:03.000000000 -0400 ++++ festival/lib/voices/us/nitech_us_bdl_arctic_hts/festvox/nitech_us_bdl_arctic_hts.scm 2007-03-15 14:20:43.000000000 -0400 +@@ -101,10 +101,10 @@ + t + ) + +-(set! nitech_us_slt_arctic_hts::hts_feats_list ++(set! nitech_us_bdl_arctic_hts::hts_feats_list + (load (path-append hts_data_dir "feat.list") t)) + +-(set! nitech_us_slt_arctic_hts::hts_engine_params ++(set! nitech_us_bdl_arctic_hts::hts_engine_params + (list + (list "-dm1" (path-append hts_data_dir "mcep_dyn.win")) + (list "-dm2" (path-append hts_data_dir "mcep_acc.win")) +@@ -160,8 +160,8 @@ + (nitech_us_bdl_arctic::select_f0model) + + ;; Waveform synthesis model: hts +- (set! hts_engine_params nitech_us_slt_arctic_hts::hts_engine_params) +- (set! hts_feats_list nitech_us_slt_arctic_hts::hts_feats_list) ++ (set! hts_engine_params nitech_us_bdl_arctic_hts::hts_engine_params) ++ (set! hts_feats_list nitech_us_bdl_arctic_hts::hts_feats_list) + (Parameter.set 'Synth_Method 'HTS) + + ;; This is where you can modify power (and sampling rate) if desired +diff -ur festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_hts.scm festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_hts.scm 2007-03-15 14:18:03.000000000 -0400 ++++ festival/lib/voices/us/nitech_us_clb_arctic_hts/festvox/nitech_us_clb_arctic_hts.scm 2007-03-15 14:20:50.000000000 -0400 +@@ -101,10 +101,10 @@ + t + ) + +-(set! nitech_us_slt_arctic_hts::hts_feats_list ++(set! nitech_us_clb_arctic_hts::hts_feats_list + (load (path-append hts_data_dir "feat.list") t)) + +-(set! nitech_us_slt_arctic_hts::hts_engine_params ++(set! nitech_us_clb_arctic_hts::hts_engine_params + (list + (list "-dm1" (path-append hts_data_dir "mcep_dyn.win")) + (list "-dm2" (path-append hts_data_dir "mcep_acc.win")) +@@ -160,8 +160,8 @@ + (nitech_us_clb_arctic::select_f0model) + + ;; Waveform synthesis model: hts +- (set! hts_engine_params nitech_us_slt_arctic_hts::hts_engine_params) +- (set! hts_feats_list nitech_us_slt_arctic_hts::hts_feats_list) ++ (set! hts_engine_params nitech_us_clb_arctic_hts::hts_engine_params) ++ (set! hts_feats_list nitech_us_clb_arctic_hts::hts_feats_list) + (Parameter.set 'Synth_Method 'HTS) + + ;; This is where you can modify power (and sampling rate) if desired +diff -ur festival/lib/voices/us/nitech_us_jmk_arctic_hts/festvox/nitech_us_jmk_arctic_hts.scm festival/lib/voices/us/nitech_us_jmk_arctic_hts/festvox/nitech_us_jmk_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_jmk_arctic_hts/festvox/nitech_us_jmk_arctic_hts.scm 2007-03-15 14:18:03.000000000 -0400 ++++ festival/lib/voices/us/nitech_us_jmk_arctic_hts/festvox/nitech_us_jmk_arctic_hts.scm 2007-03-15 14:20:55.000000000 -0400 +@@ -101,10 +101,10 @@ + t + ) + +-(set! nitech_us_slt_arctic_hts::hts_feats_list ++(set! nitech_us_jmk_arctic_hts::hts_feats_list + (load (path-append hts_data_dir "feat.list") t)) + +-(set! nitech_us_slt_arctic_hts::hts_engine_params ++(set! nitech_us_jmk_arctic_hts::hts_engine_params + (list + (list "-dm1" (path-append hts_data_dir "mcep_dyn.win")) + (list "-dm2" (path-append hts_data_dir "mcep_acc.win")) +@@ -160,8 +160,8 @@ + (nitech_us_jmk_arctic::select_f0model) + + ;; Waveform synthesis model: hts +- (set! hts_engine_params nitech_us_slt_arctic_hts::hts_engine_params) +- (set! hts_feats_list nitech_us_slt_arctic_hts::hts_feats_list) ++ (set! hts_engine_params nitech_us_jmk_arctic_hts::hts_engine_params) ++ (set! hts_feats_list nitech_us_jmk_arctic_hts::hts_feats_list) + (Parameter.set 'Synth_Method 'HTS) + + ;; This is where you can modify power (and sampling rate) if desired +diff -ur festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_hts.scm festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_hts.scm +--- festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_hts.scm 2007-03-15 14:18:03.000000000 -0400 ++++ festival/lib/voices/us/nitech_us_rms_arctic_hts/festvox/nitech_us_rms_arctic_hts.scm 2007-03-15 14:21:01.000000000 -0400 +@@ -101,10 +101,10 @@ + t + ) + +-(set! nitech_us_slt_arctic_hts::hts_feats_list ++(set! nitech_us_rms_arctic_hts::hts_feats_list + (load (path-append hts_data_dir "feat.list") t)) + +-(set! nitech_us_slt_arctic_hts::hts_engine_params ++(set! nitech_us_rms_arctic_hts::hts_engine_params + (list + (list "-dm1" (path-append hts_data_dir "mcep_dyn.win")) + (list "-dm2" (path-append hts_data_dir "mcep_acc.win")) +@@ -160,8 +160,8 @@ + (nitech_us_rms_arctic::select_f0model) + + ;; Waveform synthesis model: hts +- (set! hts_engine_params nitech_us_slt_arctic_hts::hts_engine_params) +- (set! hts_feats_list nitech_us_slt_arctic_hts::hts_feats_list) ++ (set! hts_engine_params nitech_us_rms_arctic_hts::hts_engine_params) ++ (set! hts_feats_list nitech_us_rms_arctic_hts::hts_feats_list) + (Parameter.set 'Synth_Method 'HTS) + + ;; This is where you can modify power (and sampling rate) if desired diff --git a/festival-1.96-server-script-typo.patch b/festival-1.96-server-script-typo.patch new file mode 100644 index 0000000..d8cbf94 --- /dev/null +++ b/festival-1.96-server-script-typo.patch @@ -0,0 +1,11 @@ +--- src/scripts/festival_server.sh.orig 2013-03-02 09:54:57.126436666 -0600 ++++ src/scripts/festival_server.sh 2013-03-02 09:55:10.529140080 -0600 +@@ -119,7 +119,7 @@ + (set! server_port $port) + (set! server_festival_version "$festival" ) + (set! server_log_file "$server_log" ) +-(set! server_startup_file "$serer_startup" ) ++(set! server_startup_file "$server_startup" ) + + ;; Marks end of machine created bit + ;--- diff --git a/festival-1.96-speechtools-1.2.96-beta+awb.patch b/festival-1.96-speechtools-1.2.96-beta+awb.patch new file mode 100644 index 0000000..30906c7 --- /dev/null +++ b/festival-1.96-speechtools-1.2.96-beta+awb.patch @@ -0,0 +1,1227 @@ +diff -ur festival/speech_tools.old/grammar/ngram/EST_Ngrammar.cc festival/speech_tools/grammar/ngram/EST_Ngrammar.cc +--- festival/speech_tools.old/grammar/ngram/EST_Ngrammar.cc 2004-09-30 08:53:36.000000000 -0400 ++++ festival/speech_tools/grammar/ngram/EST_Ngrammar.cc 2006-12-11 17:36:10.000000000 -0500 +@@ -306,7 +306,7 @@ + // not right - just print out, then recurse through children + // change to use 'backoff_traverse' + +- int k; ++ EST_Litem *k; + double freq; + EST_String name; + for (k=p_pdf.item_start(); +@@ -373,7 +373,7 @@ + { + + // recursively delete this state and all its children +- int k; ++ EST_Litem *k; + double freq; + EST_String name; + for (k=p_pdf.item_start(); +@@ -456,7 +456,8 @@ + + void EST_BackoffNgrammarState::frequency_of_frequencies(EST_DVector &ff) + { +- int k,max=ff.n(); ++ int max=ff.n(); ++ EST_Litem *k; + double freq; + EST_String name; + for (k=p_pdf.item_start(); +@@ -1585,7 +1586,7 @@ + // remove any branches with zero frequency count + + // find children of this state with zero freq and zap them +- int k; ++ EST_Litem *k; + double freq; + EST_String name; + for (k=start_state->pdf_const().item_start(); +@@ -2324,7 +2325,8 @@ + backoff_representation->print_freqs(os,p_order); + else + { +- int i,j,k; ++ int i,j; ++ EST_Litem *k; + EST_IVector window(p_order-1); + + for (i=0; i < p_num_states; i++) +@@ -2665,7 +2667,7 @@ + function(start_state,params); + + // and recurse down the tree +- int k; ++ EST_Litem *k; + double freq; + EST_String name; + for (k=start_state->pdf_const().item_start(); +@@ -2696,7 +2698,7 @@ + { + // and recurse down the tree if we haven't + // reached the level yet +- int k; ++ EST_Litem *k; + double freq; + EST_String name; + +diff -ur festival/speech_tools.old/grammar/ngram/EST_PST.cc festival/speech_tools/grammar/ngram/EST_PST.cc +--- festival/speech_tools.old/grammar/ngram/EST_PST.cc 2004-09-30 08:53:36.000000000 -0400 ++++ festival/speech_tools/grammar/ngram/EST_PST.cc 2006-12-11 17:36:10.000000000 -0500 +@@ -71,7 +71,8 @@ + // Base -- print from pd + EST_String s; + double freq; +- for (int i = pd.item_start(); ++ EST_Litem *i; ++ for (i = pd.item_start(); + !pd.item_end(i); + i=pd.item_next(i)) + { +@@ -98,7 +99,7 @@ + EST_String s; + double prob; + os << get_path() << " :"; +- for (int i = pd.item_start(); !pd.item_end(i) ; i=pd.item_next(i)) ++ for (EST_Litem *i = pd.item_start(); !pd.item_end(i) ; i=pd.item_next(i)) + { + pd.item_prob(i,s,prob); + os << " " << s << " " << prob; +diff -ur festival/speech_tools.old/grammar/ngram/freqsmooth.cc festival/speech_tools/grammar/ngram/freqsmooth.cc +--- festival/speech_tools.old/grammar/ngram/freqsmooth.cc 2004-09-30 08:53:36.000000000 -0400 ++++ festival/speech_tools/grammar/ngram/freqsmooth.cc 2006-12-11 17:36:10.000000000 -0500 +@@ -74,7 +74,8 @@ + EST_Ngrammar &ngram) + { + // Build all the backoff grammars back to uni-grams +- int i,j,k,l; ++ int i,j,l; ++ EST_Litem *k; + + for (i=0; i < ngram.order()-1; i++) + backoff_ngrams[i].init(i+1,EST_Ngrammar::dense, +@@ -110,7 +111,8 @@ + { + // For all ngrams which are too infrequent, adjust their + // frequencies based on their backoff probabilities +- int i,j; ++ int i; ++ EST_Litem *j; + double occurs; + double backoff_prob; + +diff -ur festival/speech_tools.old/grammar/ngram/ngrammar_aux.cc festival/speech_tools/grammar/ngram/ngrammar_aux.cc +--- festival/speech_tools.old/grammar/ngram/ngrammar_aux.cc 2004-09-30 08:53:36.000000000 -0400 ++++ festival/speech_tools/grammar/ngram/ngrammar_aux.cc 2006-12-11 17:36:10.000000000 -0500 +@@ -117,7 +117,7 @@ + + void make_f_of_f(EST_BackoffNgrammarState *s,void *params) + { +- int k; ++ EST_Litem *k; + double freq; + EST_String name; + +@@ -138,7 +138,7 @@ + + void get_max_f(EST_BackoffNgrammarState *s,void *params) + { +- int k; ++ EST_Litem *k; + double freq; + EST_String name; + +@@ -158,7 +158,7 @@ + + void map_f_of_f(EST_BackoffNgrammarState *s,void *params) + { +- int k; ++ EST_Litem *k; + double freq; + EST_String name; + +@@ -184,7 +184,7 @@ + + void zero_small_f(EST_BackoffNgrammarState *s,void *params) + { +- int k; ++ EST_Litem *k; + double freq; + EST_String name; + +@@ -204,7 +204,8 @@ + + void frequency_of_frequencies(EST_DVector &ff, EST_Ngrammar &n,int this_order) + { +- int i,k,size; ++ int i,size; ++ EST_Litem *k; + double max=0.0; + + // if ff has zero size, do complete frequency of frequencies +@@ -302,8 +303,8 @@ + + void map_frequencies(EST_Ngrammar &n, const EST_DVector &map, const int this_order) + { +- int i,k; +- ++ int i; ++ EST_Litem *k; + + switch(n.representation()) + { +diff -ur festival/speech_tools.old/grammar/ngram/ngrammar_io.cc festival/speech_tools/grammar/ngram/ngrammar_io.cc +--- festival/speech_tools.old/grammar/ngram/ngrammar_io.cc 2004-09-30 08:53:36.000000000 -0400 ++++ festival/speech_tools/grammar/ngram/ngrammar_io.cc 2006-12-11 17:36:10.000000000 -0500 +@@ -281,7 +281,8 @@ + load_ngram_cstr_bin(const EST_String filename, EST_Ngrammar &n) + { + EST_TokenStream ts; +- int i,j,k,order; ++ int i,j,order; ++ EST_Litem *k; + int num_entries; + double approx_num_samples = 0.0; + long freq_data_start, freq_data_end; +@@ -407,7 +408,7 @@ + save_ngram_htk_ascii_sub(const EST_String &word, ostream *ost, + EST_Ngrammar &n, double floor) + { +- int k; ++ EST_Litem *k; + EST_String name; + double freq; + EST_StrVector this_ngram(2); // assumes bigram +@@ -734,7 +735,8 @@ + // awb's format + (void)trace; + ostream *ost; +- int i,k; ++ int i; ++ EST_Litem *k; + + if (filename == "-") + ost = &cout; +@@ -831,7 +833,8 @@ + if (n.representation() == EST_Ngrammar::sparse) + return misc_write_error; + +- int i,k; ++ int i; ++ EST_Litem *k; + FILE *ofd; + double lfreq = -1; + double count = -1; +diff -ur festival/speech_tools.old/grammar/wfst/wfst_train.cc festival/speech_tools/grammar/wfst/wfst_train.cc +--- festival/speech_tools.old/grammar/wfst/wfst_train.cc 2005-07-26 18:37:36.000000000 -0400 ++++ festival/speech_tools/grammar/wfst/wfst_train.cc 2006-12-11 17:36:10.000000000 -0500 +@@ -315,7 +315,8 @@ + LISP *ssplits; + gc_protect(&splits); + EST_String sname; +- int b,best_b,i; ++ int b,best_b; ++ EST_Litem *i; + int num_pdfs; + double best_score, score, sfreq; + +@@ -390,7 +391,7 @@ + // Find score of (a+b) vs (all-(a+b)) + EST_DiscreteProbDistribution ab(a); + EST_DiscreteProbDistribution all_but_ab(all); +- int i; ++ EST_Litem *i; + EST_String sname; + double sfreq, score; + for (i=b.item_start(); !b.item_end(i); +@@ -522,7 +523,7 @@ + EST_DiscreteProbDistribution pdf_split(&wfst.in_symbols()); + EST_DiscreteProbDistribution pdf_remain(&wfst.in_symbols()); + int in, tostate, id; +- int i; ++ EST_Litem *i; + double sfreq; + EST_String sname; + +diff -ur festival/speech_tools.old/include/EST_simplestats.h festival/speech_tools/include/EST_simplestats.h +--- festival/speech_tools.old/include/EST_simplestats.h 2004-04-30 12:56:49.000000000 -0400 ++++ festival/speech_tools/include/EST_simplestats.h 2006-12-11 17:36:10.000000000 -0500 +@@ -47,6 +47,8 @@ + #include "EST_TKVL.h" + #include "EST_types.h" + ++typedef size_t int_iter; ++ + /** A class for managing mapping string names to integers and back again, + mainly used for representing alphabets in n-grams and grammars etc. + +@@ -249,7 +251,8 @@ + /// Add this observation, may specify number of occurrences + void cumulate(const EST_String &s,double count=1); + /// Add this observation, i must be with in EST\_Discrete range +- void cumulate(const int i,double count=1); ++ void cumulate(EST_Litem *i,double count=1); ++ void cumulate(int i,double count=1); + /// Return the most probable member of the distribution + const EST_String &most_probable(double *prob = NULL) const; + /** Return the entropy of the distribution +@@ -265,17 +268,18 @@ + /// + double frequency(const int i) const; + /// Used for iterating through members of the distribution +- int item_start() const; ++ EST_Litem *item_start() const; + /// Used for iterating through members of the distribution +- int item_next(int idx) const; ++ EST_Litem *item_next(EST_Litem *idx) const; + /// Used for iterating through members of the distribution +- int item_end(int idx) const; ++ int item_end(EST_Litem *idx) const; ++ + /// During iteration returns name given index +- const EST_String &item_name(int idx) const; ++ const EST_String &item_name(EST_Litem *idx) const; + /// During iteration returns name and frequency given index +- void item_freq(int idx,EST_String &s,double &freq) const; ++ void item_freq(EST_Litem *idx,EST_String &s,double &freq) const; + /// During iteration returns name and probability given index +- void item_prob(int idx,EST_String &s,double &prob) const; ++ void item_prob(EST_Litem *idx,EST_String &s,double &prob) const; + + /// Returns discrete vocabulary of distribution + inline const EST_Discrete *const get_discrete() const { return discrete; }; +@@ -288,11 +292,13 @@ + accordingly. This is used when smoothing frequencies. + */ + void set_frequency(int i,double c); ++ void set_frequency(EST_Litem *i,double c); + + /// Sets the frequency of named item, without modifying {\tt num\_samples}. + void override_frequency(const EST_String &s,double c); + /// Sets the frequency of named item, without modifying {\tt num\_samples}. + void override_frequency(int i,double c); ++ void override_frequency(EST_Litem *i,double c); + + /** Sets the number of samples. Care should be taken on setting this + as it will affect how probabilities are calculated. +diff -ur festival/speech_tools.old/include/EST_Track.h festival/speech_tools/include/EST_Track.h +--- festival/speech_tools.old/include/EST_Track.h 2004-05-29 14:34:40.000000000 -0400 ++++ festival/speech_tools/include/EST_Track.h 2007-02-13 00:12:53.000000000 -0500 +@@ -61,6 +61,7 @@ + tff_htk, + tff_htk_fbank, + tff_htk_mfcc, ++ tff_htk_mfcc_e, + tff_htk_user, + tff_htk_discrete, + tff_xmg, +diff -ur festival/speech_tools.old/include/EST_TSimpleVector.h festival/speech_tools/include/EST_TSimpleVector.h +--- festival/speech_tools.old/include/EST_TSimpleVector.h 2006-07-06 08:57:24.000000000 -0400 ++++ festival/speech_tools/include/EST_TSimpleVector.h 2006-09-27 09:19:35.000000000 -0400 +@@ -60,6 +60,9 @@ + EST_TSimpleVector(const EST_TSimpleVector &v); + /// "size" constructor + EST_TSimpleVector(int n): EST_TVector(n) {}; ++ /// memory constructor ++ EST_TSimpleVector(int n, T* memory, int offset=0, ++ int free_when_destroyed=0): EST_TVector(n,memory) {}; + + /// resize vector + void resize(int n, int set=1); +diff -ur festival/speech_tools.old/include/EST_Wagon.h festival/speech_tools/include/EST_Wagon.h +--- festival/speech_tools.old/include/EST_Wagon.h 2006-08-11 18:39:02.000000000 -0400 ++++ festival/speech_tools/include/EST_Wagon.h 2006-12-02 11:44:48.000000000 -0500 +@@ -239,8 +239,7 @@ + extern EST_FMatrix wgn_DistMatrix; + extern EST_Track wgn_VertexTrack; + extern EST_Track wgn_UnitTrack; +-extern int wgn_VertexTrack_start; +-extern int wgn_VertexTrack_end; ++extern EST_Track wgn_VertexFeats; + + void wgn_load_datadescription(EST_String fname,LISP ignores); + void wgn_load_dataset(WDataSet &ds,EST_String fname); +diff -ur festival/speech_tools.old/lib/siod/siod.scm festival/speech_tools/lib/siod/siod.scm +--- festival/speech_tools.old/lib/siod/siod.scm 2003-03-31 09:28:24.000000000 -0500 ++++ festival/speech_tools/lib/siod/siod.scm 2006-12-11 17:36:10.000000000 -0500 +@@ -209,7 +209,13 @@ + (defun append2 (a b) + (if (null a) + b +- (cons (car a) (append2 (cdr a) b)))) ++ (begin ++ (let ((x (reverse a)) ++ (y b)) ++ (while x ++ (set! y (cons (car x) y)) ++ (set! x (cdr x))) ++ y)))) + + (defun rplacd (a b) + "(replacd A B) +diff -ur festival/speech_tools.old/main/wagon_main.cc festival/speech_tools/main/wagon_main.cc +--- festival/speech_tools.old/main/wagon_main.cc 2006-09-10 17:33:18.000000000 -0400 ++++ festival/speech_tools/main/wagon_main.cc 2006-12-02 14:46:44.000000000 -0500 +@@ -2,7 +2,7 @@ + /* */ + /* Centre for Speech Technology Research */ + /* University of Edinburgh, UK */ +-/* Copyright (c) 1996-2005 */ ++/* Copyright (c) 1996-2006 */ + /* All Rights Reserved. */ + /* */ + /* Permission is hereby granted, free of charge, to use and distribute */ +@@ -39,6 +39,8 @@ + /* */ + /* Added decision list support, Feb 1997 */ + /* */ ++/* Added vector support for Clustergen 2005/2006 */ ++/* */ + /*=======================================================================*/ + #include + #include +@@ -111,6 +113,54 @@ + return 0; + } + ++static int set_Vertex_Feats(EST_Track &wgn_VertexFeats, ++ EST_String &wagon_track_features) ++{ ++ int i,s=0,e; ++ EST_TokenStream ts; ++ ++ for (i=0; i\n"+ + " end (inclusive) channel for vertex indices\n"+ ++ "-track_feats \n"+ ++ " Track features to use, comma separated list\n"+ ++ " with feature numbers and/or ranges, 0 start\n"+ + "-unittrack \n"+ + " track for unit start and length in vertex track\n"+ + "-quiet No questions printed during building\n"+ +@@ -256,36 +311,53 @@ + else if (al.present("-track")) + { + wgn_VertexTrack.load(al.val("-track")); +- wgn_VertexTrack_start = 0; +- wgn_VertexTrack_end = wgn_VertexTrack.num_channels()-1; ++ wgn_VertexFeats.resize(1,wgn_VertexTrack.num_channels()); ++ for (i=0; i wgn_VertexTrack.num_channels())) ++ feats_start = al.ival("-track_start"); ++ if ((feats_start < 0) || ++ (feats_start > wgn_VertexTrack.num_channels())) + { + printf("wagon: track_start invalid: %d out of %d channels\n", +- wgn_VertexTrack_start, ++ feats_start, + wgn_VertexTrack.num_channels()); + exit(-1); + } ++ for (i=0; i wgn_VertexTrack.num_channels())) ++ feats_end = al.ival("-track_end"); ++ if ((feats_end < feats_start) || ++ (feats_end > wgn_VertexTrack.num_channels())) + { + printf("wagon: track_end invalid: %d between start %d out of %d channels\n", +- wgn_VertexTrack_end, +- wgn_VertexTrack_start, ++ feats_end, ++ feats_start, + wgn_VertexTrack.num_channels()); + exit(-1); + } ++ for (i=feats_end+1; i 0.0) ++ // printf("%d ",i); ++ // printf("\n"); + + if (al.present("-unittrack")) + { /* contains two features, a start and length. start indexes */ +diff -ur festival/speech_tools.old/siod/slib_str.cc festival/speech_tools/siod/slib_str.cc +--- festival/speech_tools.old/siod/slib_str.cc 2004-09-30 08:53:36.000000000 -0400 ++++ festival/speech_tools/siod/slib_str.cc 2006-09-27 11:54:29.000000000 -0400 +@@ -268,7 +268,7 @@ + LISP l_matches(LISP atom, LISP regex) + { + // t if printname of atom matches regex, nil otherwise +- EST_String pname = get_c_string(atom); ++ const EST_String pname = get_c_string(atom); + + if (pname.matches(make_regex(get_c_string(regex))) == TRUE) + return truth; +diff -ur festival/speech_tools.old/speech_class/EST_TrackFile.cc festival/speech_tools/speech_class/EST_TrackFile.cc +--- festival/speech_tools.old/speech_class/EST_TrackFile.cc 2006-09-10 16:32:14.000000000 -0400 ++++ festival/speech_tools/speech_class/EST_TrackFile.cc 2007-02-13 00:12:53.000000000 -0500 +@@ -522,7 +522,6 @@ + // } + + if( ascii ){ +- + for (j = 0; j < num_channels; ++j){ + tr.a(i, j) = ts.get().Float(ok); + if (!ok) +@@ -1254,6 +1253,11 @@ + return save_htk_as(filename, tmp, HTK_MFCC); + } + ++EST_write_status EST_TrackFile::save_htk_mfcc_e(const EST_String filename, EST_Track tmp) ++{ ++ return save_htk_as(filename, tmp, HTK_MFCC | HTK_ENERGY); ++} ++ + EST_write_status EST_TrackFile::save_htk_user(const EST_String filename, EST_Track tmp) + { + return save_htk_as(filename, tmp, HTK_USER); +@@ -2097,14 +2101,14 @@ + + EST_String EST_TrackFile::options_supported(void) + { +- EST_String s("Available track file formats:\n"); ++ EST_String s("AvailablE track file formats:\n"); + + for(int n=0; n< EST_TrackFile::map.n() ; n++) + { + const char *nm = EST_TrackFile::map.name(EST_TrackFile::map.token(n)); + const char *d = EST_TrackFile::map.info(EST_TrackFile::map.token(n)).description; + +- s += EST_String::cat(" ", nm, EST_String(" ")*(12-strlen(nm)), d, "\n"); ++ s += EST_String::cat(" ", nm, EST_String(" ")*(13-strlen(nm)), d, "\n"); + } + return s; + } +@@ -2137,6 +2141,9 @@ + {tff_htk_mfcc, { "htk_mfcc" }, + {FALSE, EST_TrackFile::load_htk, EST_TrackFile::save_htk_mfcc, + "htk file (as MFCC)"}}, ++{tff_htk_mfcc_e, { "htk_mfcc_e" }, ++{FALSE, EST_TrackFile::load_htk, EST_TrackFile::save_htk_mfcc_e, ++ "htk file (as MFCC_E)"}}, + {tff_htk_user, { "htk_user" }, + {FALSE, EST_TrackFile::load_htk, EST_TrackFile::save_htk_user, + "htk file (as USER)"}}, +diff -ur festival/speech_tools.old/speech_class/EST_TrackFile.h festival/speech_tools/speech_class/EST_TrackFile.h +--- festival/speech_tools.old/speech_class/EST_TrackFile.h 2004-05-29 14:34:42.000000000 -0400 ++++ festival/speech_tools/speech_class/EST_TrackFile.h 2007-02-13 00:12:53.000000000 -0500 +@@ -111,6 +111,8 @@ + static EST_write_status save_htk_fbank(SaveTrackFileArgs); + static EST_read_status load_htk_fbank(LoadTrackFileArgs); + ++ static EST_write_status save_htk_mfcc_e(SaveTrackFileArgs); ++ + static EST_write_status save_htk_mfcc(SaveTrackFileArgs); + static EST_read_status load_htk_mfcc(LoadTrackFileArgs); + +diff -ur festival/speech_tools.old/speech_class/EST_wave_io.cc festival/speech_tools/speech_class/EST_wave_io.cc +--- festival/speech_tools.old/speech_class/EST_wave_io.cc 2006-01-12 10:37:51.000000000 -0500 ++++ festival/speech_tools/speech_class/EST_wave_io.cc 2007-02-13 00:12:53.000000000 -0500 +@@ -173,7 +173,7 @@ + + current_pos = ts.tell(); + if (ts.fread(header,NIST_HDR_SIZE,1) != 1) +- return misc_read_error; ++ return wrong_format; + + if (strncmp(header,NIST_SIG,sizeof(NIST_SIG)) != 0) + return wrong_format; +diff -ur festival/speech_tools.old/stats/EST_DProbDist.cc festival/speech_tools/stats/EST_DProbDist.cc +--- festival/speech_tools.old/stats/EST_DProbDist.cc 2004-09-30 08:53:36.000000000 -0400 ++++ festival/speech_tools/stats/EST_DProbDist.cc 2006-12-11 17:36:12.000000000 -0500 +@@ -46,6 +46,39 @@ + #include "EST_TKVL.h" + #include "EST_simplestats.h" + ++/* We share ints and pointers for two types of probability distributions */ ++/* The know discrete sets can be indexed by ints which is *much* faster */ ++/* the indices pass around a pointers but the lower part contain ints in */ ++/* the discrete case */ ++/* On 64bit architectures this is a issue so we need have some macros */ ++/* to help us here. */ ++ ++const int est_64to32(void *c) ++{ /* this returns the bottom end of the pointer as an unsigned int */ ++ /* I believe this is a safe way to do it, we check the bits in the */ ++ /* 64 bit int and multiply them out in the 32 bit one */ ++ /* there might be better ways, but I think you'd need to think about */ ++ /* byte order then */ ++ long long l; ++ int d; ++ int i,x; ++ ++ l = (long long)c; ++ ++ for (i=0,d=0,x=1; i<24; i++) ++ { ++ if (l & 1) ++ d += x; ++ l = l >> 1; ++ x += x; ++ } ++ ++ return d; ++} ++/* #define tprob_int(X) ((sizeof(void *) != 8) ? est_64to32(X) : (int)X) */ ++#define tprob_int(X) (est_64to32(X)) ++ ++ + EST_DiscreteProbDistribution::EST_DiscreteProbDistribution(const EST_Discrete *d, + const double n_samples, const EST_DVector &counts) + { +@@ -109,7 +142,13 @@ + icounts.a_no_check(i) = 0; + } + +-void EST_DiscreteProbDistribution::cumulate(const int i,double count) ++void EST_DiscreteProbDistribution::cumulate(EST_Litem *i,double count) ++{ ++ icounts[tprob_int(i)] += count; ++ num_samples += count; ++} ++ ++void EST_DiscreteProbDistribution::cumulate(int i,double count) + { + icounts[i] += count; + num_samples += count; +@@ -257,6 +296,21 @@ + + } + ++void EST_DiscreteProbDistribution::set_frequency(EST_Litem *i,double c) ++{ ++ if (type == tprob_discrete) ++ { ++ num_samples -= icounts[tprob_int(i)]; ++ num_samples += c; ++ icounts[tprob_int(i)] = c; ++ } ++ else ++ { ++ cerr << "ProbDistribution: can't access string type pd with int\n"; ++ } ++ ++} ++ + + void EST_DiscreteProbDistribution::override_frequency(const EST_String &s,double c) + { +@@ -274,6 +328,14 @@ + cerr << "ProbDistribution: can't access string type pd with int\n"; + } + ++void EST_DiscreteProbDistribution::override_frequency(EST_Litem *i,double c) ++{ ++ if (type == tprob_discrete) ++ icounts[tprob_int(i)] = c; ++ else ++ cerr << "ProbDistribution: can't access string type pd with int\n"; ++} ++ + double EST_DiscreteProbDistribution::entropy() const + { + // Returns the entropy of the current distribution +@@ -305,70 +367,70 @@ + } + + // For iterating through members of a probability distribution +-int EST_DiscreteProbDistribution::item_start(void) const ++EST_Litem *EST_DiscreteProbDistribution::item_start(void) const + { + if (type == tprob_discrete) +- return 0; ++ return NULL; + else +- return (int)scounts.list.head(); ++ return scounts.list.head(); + } + +-int EST_DiscreteProbDistribution::item_end(int idx) const ++int EST_DiscreteProbDistribution::item_end(EST_Litem *idx) const + { + if (type == tprob_discrete) +- return (idx >= icounts.length()); ++ return (tprob_int(idx) >= icounts.length()); + else +- return ((EST_Litem *)idx == 0); ++ return (idx == 0); + } + +-int EST_DiscreteProbDistribution::item_next(int idx) const ++EST_Litem *EST_DiscreteProbDistribution::item_next(EST_Litem *idx) const + { + if (type == tprob_discrete) +- return ++idx; ++ return (EST_Litem *)(((unsigned char *)idx)+1); + else +- return (int)next((EST_Litem *)idx); ++ return next(idx); + } + +-const EST_String &EST_DiscreteProbDistribution::item_name(int idx) const ++const EST_String &EST_DiscreteProbDistribution::item_name(EST_Litem *idx) const + { + if (type == tprob_discrete) +- return discrete->name(idx); ++ return discrete->name(tprob_int(idx)); + else +- return scounts.list((EST_Litem *)idx).k; ++ return scounts.list(idx).k; + } + +-void EST_DiscreteProbDistribution::item_freq(int idx,EST_String &s,double &freq) const ++void EST_DiscreteProbDistribution::item_freq(EST_Litem *idx,EST_String &s,double &freq) const + { + if (type == tprob_discrete) + { +- s = discrete->name(idx); +- freq = icounts(idx); ++ s = discrete->name(tprob_int(idx)); ++ freq = icounts(tprob_int(idx)); + } + else + { +- s = scounts.list((EST_Litem *)idx).k; +- freq = scounts.list((EST_Litem *)idx).v; ++ s = scounts.list(idx).k; ++ freq = scounts.list(idx).v; + } + } + +-void EST_DiscreteProbDistribution::item_prob(int idx,EST_String &s,double &prob) const ++void EST_DiscreteProbDistribution::item_prob(EST_Litem *idx,EST_String &s,double &prob) const + { + if (type == tprob_discrete) + { +- prob = probability(idx); +- s = discrete->name(idx); ++ prob = probability(tprob_int(idx)); ++ s = discrete->name(tprob_int(idx)); + } + else + { +- s = scounts.list((EST_Litem *)idx).k; +- prob = (double)scounts.list((EST_Litem *)idx).v/num_samples; ++ s = scounts.list(idx).k; ++ prob = (double)scounts.list(idx).v/num_samples; + } + } + + ostream & operator<<(ostream &s, const EST_DiscreteProbDistribution &pd) + { + // Output best with probabilities +- int i; ++ EST_Litem *i; + double prob; + double sum=0; + EST_String name; +diff -ur festival/speech_tools.old/stats/EST_viterbi.cc festival/speech_tools/stats/EST_viterbi.cc +--- festival/speech_tools.old/stats/EST_viterbi.cc 2006-07-07 17:26:11.000000000 -0400 ++++ festival/speech_tools/stats/EST_viterbi.cc 2006-09-27 09:19:35.000000000 -0400 +@@ -165,7 +165,7 @@ + return (a < b); + } + +-static void init_dynamic_states(EST_VTPoint *p, EST_VTCandidate *cands) ++static int init_dynamic_states(EST_VTPoint *p, EST_VTCandidate *cands) + { + // In a special (hmm maybe not so special), the number of "states" + // is the number of candidates +@@ -175,6 +175,8 @@ + for (i=0, c=cands; c != 0; c=c->next,i++) + c->pos = i; + init_paths_array(p,i); ++ ++ return i; + } + + void EST_Viterbi_Decoder::set_pruning_parameters(float beam, float +diff -ur festival/speech_tools.old/stats/wagon/wagon_aux.cc festival/speech_tools/stats/wagon/wagon_aux.cc +--- festival/speech_tools.old/stats/wagon/wagon_aux.cc 2006-08-20 13:02:39.000000000 -0400 ++++ festival/speech_tools/stats/wagon/wagon_aux.cc 2006-12-12 10:45:19.000000000 -0500 +@@ -422,16 +422,19 @@ + + #if 1 + /* simple distance */ +- for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++) ++ for (j=0; j 0.0) + { +- i = members.item(pp); +- b += wgn_VertexTrack.a(i,j); ++ b.reset(); ++ for (pp=members.head(); pp != 0; pp=next(pp)) ++ { ++ i = members.item(pp); ++ b += wgn_VertexTrack.a(i,j); ++ } ++ a += b.stddev(); ++ count = b.samples(); + } +- a += b.stddev(); +- count = b.samples(); + } + #endif + +@@ -440,26 +443,37 @@ + /* worse in listening experiments */ + EST_SuffStats **cs; + int mmm; +- cs = new EST_SuffStats *[wgn_VertexTrack_end+1]; +- for (j=0; j<=wgn_VertexTrack_end; j++) +- cs[j] = new EST_SuffStats[wgn_VertexTrack_end+1]; ++ cs = new EST_SuffStats *[wgn_VertexTrack.num_channels()+1]; ++ for (j=0; j<=wgn_VertexTrack.num_channels(); j++) ++ cs[j] = new EST_SuffStats[wgn_VertexTrack.num_channels()+1]; + /* Find means for diagonal */ +- for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++) ++ for (j=0; j 0.0) ++ { + for (pp=members.head(); pp != 0; pp=next(pp)) ++ cs[j][j] += wgn_VertexTrack.a(members.item(pp),j); ++ } ++ } ++ for (j=0; j 0.0) + { +- mmm = members.item(pp); +- cs[i][j] += (wgn_VertexTrack.a(mmm,i)-cs[j][j].mean())* +- (wgn_VertexTrack.a(mmm,j)-cs[j][j].mean()); +- } +- for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++) +- for (i=j+1; i 0.0) ++ a += cs[i][j].stddev(); ++ } + count = cs[0][0].samples(); + #endif + +@@ -476,11 +490,12 @@ + for (qq=next(pp); qq != 0; qq=next(qq)) + { + y = members.item(qq); +- for (q=0.0,j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++) +- { +- d = wgn_VertexTrack(x,j)-wgn_VertexTrack(y,j); +- q += d*d; +- } ++ for (q=0.0,j=0; j 0.0) ++ { ++ d = wgn_VertexTrack(x,j)-wgn_VertexTrack(y,j); ++ q += d*d; ++ } + a += sqrt(q); + } + +@@ -562,7 +577,7 @@ + + /* a list of SuffStats on for each point in the trajectory */ + trajectory = new EST_SuffStats *[l]; +- width = wgn_VertexTrack_end+1; ++ width = wgn_VertexTrack.num_channels()+1; + for (j=0; j 0.0) ++ trajectory[ti][j] += wgn_VertexTrack.a(s+ni,j); ++ } + } + } + + /* find sum of sum of stddev for all coefs of all traj points */ + stdss.reset(); + for (ti=0; ti 0.0) ++ stdss += trajectory[ti][j].stddev(); ++ } + + // This is sum of all stddev * samples + score = stdss.mean() * members.length(); +@@ -597,7 +618,7 @@ + /* a list of SuffStats on for each point in the trajectory */ + trajectory = new EST_SuffStats *[l]; + for (j=0; j 0 && ti 0.0) ++ trajectory[ti][j] += wgn_VertexTrack.a(ni,j); + } + ti = l1; /* do it explicitly in case s1l < 1 */ +- for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++) +- trajectory[ti][j] += -1; ++ for (j=0; j 0.0) ++ trajectory[ti][j] += -1; + /* Second half */ + s += s1l+1; + for (ti++,n=0.0; s2l > 0 && ti 0.0) ++ trajectory[ti][j] += wgn_VertexTrack.a(ni,j); ++ } ++ for (j=0; j 0.0) ++ trajectory[ti][j] += -2; + } + + /* find sum of sum of stddev for all coefs of all traj points */ +@@ -640,12 +665,14 @@ + stdss.reset(); + m = 1.0/(float)l1; + for (w=0.0,ti=0; ti 0.0) + stdss += trajectory[ti][j].stddev() * w; + m = 1.0/(float)l2; + for (w=1.0,ti++; ti 0.0) ++ stdss += trajectory[ti][j].stddev() * w; + + // This is sum of all stddev * samples + score = stdss.mean() * members.length(); +@@ -824,25 +851,27 @@ + int bestp = 0; + EST_SuffStats *cs; + +- cs = new EST_SuffStats [wgn_VertexTrack_end+1]; ++ cs = new EST_SuffStats [wgn_VertexTrack.num_channels()+1]; + +- for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++) +- { +- cs[j].reset(); +- for (p=imp.members.head(); p != 0; p=next(p)) ++ for (j=0; j 0.0) + { +- cs[j] += wgn_VertexTrack.a(imp.members.item(p),j); ++ cs[j].reset(); ++ for (p=imp.members.head(); p != 0; p=next(p)) ++ { ++ cs[j] += wgn_VertexTrack.a(imp.members.item(p),j); ++ } + } +- } + + for (p=imp.members.head(); p != 0; p=next(p)) + { +- for (x=0,j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++) +- { +- d = (wgn_VertexTrack.a(imp.members.item(p),j)-cs[j].mean()) +- /* / b.stddev() */ ; +- x += d*d; +- } ++ for (x=0.0,j=0; j 0.0) ++ { ++ d = (wgn_VertexTrack.a(imp.members.item(p),j)-cs[j].mean()) ++ /* / cs[j].stddev() */ ; ++ x += d*d; ++ } + if (x < best) + { + bestp = imp.members.item(p); +@@ -853,7 +882,12 @@ + { + s << "( "; + s << wgn_VertexTrack.a(bestp,j); +- s << " 0 "; // fake stddev ++ // s << " 0 "; // fake stddev ++ s << " "; ++ if (finite(cs[j].stddev())) ++ s << cs[j].stddev(); ++ else ++ s << "0"; + s << " ) "; + if (j+1get_int_val(wgn_predictee); +- for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++) +- { +- b.reset(); +- for (pp=leaf->get_impurity().members.head(); pp != 0; pp=next(pp)) ++ for (j=0; j 0.0) + { +- i = leaf->get_impurity().members.item(pp); +- b += wgn_VertexTrack.a(i,j); ++ b.reset(); ++ for (pp=leaf->get_impurity().members.head(); pp != 0; pp=next(pp)) ++ { ++ i = leaf->get_impurity().members.item(pp); ++ b += wgn_VertexTrack.a(i,j); ++ } ++ predict = b.mean(); ++ actual = wgn_VertexTrack.a(pos,j); ++ if (wgn_count_field == -1) ++ count = 1.0; ++ else ++ count = dataset(p)->get_flt_val(wgn_count_field); ++ x.cumulate(predict,count); ++ y.cumulate(actual,count); ++ /* Normalized the error by the standard deviation */ ++ if (b.stddev() == 0) ++ error = predict-actual; ++ else ++ error = (predict-actual)/b.stddev(); ++ error = predict-actual; /* awb_debug */ ++ se.cumulate((error*error),count); ++ e.cumulate(fabs(error),count); ++ xx.cumulate(predict*predict,count); ++ yy.cumulate(actual*actual,count); ++ xy.cumulate(predict*actual,count); + } +- predict = b.mean(); +- actual = wgn_VertexTrack.a(pos,j); +- if (wgn_count_field == -1) +- count = 1.0; +- else +- count = dataset(p)->get_flt_val(wgn_count_field); +- x.cumulate(predict,count); +- y.cumulate(actual,count); +- /* Normalized the error by the standard deviation */ +- if (b.stddev() == 0) +- error = predict-actual; +- else +- error = (predict-actual)/b.stddev(); +- error = predict-actual; /* awb_debug */ +- se.cumulate((error*error),count); +- e.cumulate(fabs(error),count); +- xx.cumulate(predict*predict,count); +- yy.cumulate(actual*actual,count); +- xy.cumulate(predict*actual,count); +- } + } + + // Pearson's product moment correlation coefficient +@@ -437,34 +437,35 @@ + { + leaf = tree.predict_node((*dataset(p))); + pos = dataset(p)->get_int_val(wgn_predictee); +- for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++) +- { +- b.reset(); +- for (pp=leaf->get_impurity().members.head(); pp != 0; pp=next(pp)) ++ for (j=0; j 0.0) + { +- i = leaf->get_impurity().members.item(pp); +- b += wgn_VertexTrack.a(i,j); ++ b.reset(); ++ for (pp=leaf->get_impurity().members.head(); pp != 0; pp=next(pp)) ++ { ++ i = leaf->get_impurity().members.item(pp); ++ b += wgn_VertexTrack.a(i,j); ++ } ++ predict = b.mean(); ++ actual = wgn_VertexTrack.a(pos,j); ++ if (wgn_count_field == -1) ++ count = 1.0; ++ else ++ count = dataset(p)->get_flt_val(wgn_count_field); ++ x.cumulate(predict,count); ++ y.cumulate(actual,count); ++ /* Normalized the error by the standard deviation */ ++ if (b.stddev() == 0) ++ error = predict-actual; ++ else ++ error = (predict-actual)/b.stddev(); ++ error = predict-actual; /* awb_debug */ ++ se.cumulate((error*error),count); ++ e.cumulate(fabs(error),count); ++ xx.cumulate(predict*predict,count); ++ yy.cumulate(actual*actual,count); ++ xy.cumulate(predict*actual,count); + } +- predict = b.mean(); +- actual = wgn_VertexTrack.a(pos,j); +- if (wgn_count_field == -1) +- count = 1.0; +- else +- count = dataset(p)->get_flt_val(wgn_count_field); +- x.cumulate(predict,count); +- y.cumulate(actual,count); +- /* Normalized the error by the standard deviation */ +- if (b.stddev() == 0) +- error = predict-actual; +- else +- error = (predict-actual)/b.stddev(); +- error = predict-actual; /* awb_debug */ +- se.cumulate((error*error),count); +- e.cumulate(fabs(error),count); +- xx.cumulate(predict*predict,count); +- yy.cumulate(actual*actual,count); +- xy.cumulate(predict*actual,count); +- } + } + + // Pearson's product moment correlation coefficient +diff -ur festival/speech_tools.old/.time-stamp festival/speech_tools/.time-stamp +--- festival/speech_tools.old/.time-stamp 2006-09-27 10:59:11.000000000 -0400 ++++ festival/speech_tools/.time-stamp 2007-03-14 11:18:07.000000000 -0400 +@@ -1,2 +1,2 @@ + speech_tools 1.2.96 +-Wed Sep 27 10:59:11 EDT 2006 ++Wed Mar 14 11:18:07 EDT 2007 diff --git a/festival-1.96-speechtools-linklibswithotherlibs.patch b/festival-1.96-speechtools-linklibswithotherlibs.patch new file mode 100644 index 0000000..69a30f3 --- /dev/null +++ b/festival-1.96-speechtools-linklibswithotherlibs.patch @@ -0,0 +1,14 @@ +--- festival/speech_tools/config/project.mak.orig 2007-03-13 15:27:53.000000000 -0400 ++++ festival/speech_tools/config/project.mak 2007-03-13 15:29:12.000000000 -0400 +@@ -99,8 +99,9 @@ + PROJECT_LIBRARY_DIR_eststring = $(TOP)/lib + PROJECT_LIBRARY_DIR_estjava = $(TOP)/lib + +-PROJECT_LIBRARY_USES_estbase = eststring +- ++PROJECT_LIBRARY_USES_estbase = eststring m ++PROJECT_LIBRARY_USES_estools = estbase m ncurses ++PROJECT_LIBRARY_USES_eststring = m + PROJECT_LIBRARY_USES_estjava = estbase eststring + + PROJECT_LIBRARY_VERSION_estools = $(PROJECT_VERSION).1 diff --git a/festival-1.96-speechtools-ohjeezcxxisnotgcc.patch b/festival-1.96-speechtools-ohjeezcxxisnotgcc.patch new file mode 100644 index 0000000..e3d1627 --- /dev/null +++ b/festival-1.96-speechtools-ohjeezcxxisnotgcc.patch @@ -0,0 +1,13 @@ +--- festival/speech_tools/config/compilers/gcc_defaults.mak.orig 2007-03-13 16:28:39.000000000 -0400 ++++ festival/speech_tools/config/compilers/gcc_defaults.mak 2007-03-13 16:28:59.000000000 -0400 +@@ -39,10 +39,7 @@ + ########################################################################### + + CC=gcc +-CXX=gcc +-ifeq ($(OSTYPE),Darwin) + CXX=g++ +-endif + + COMPILER_DESC=FSF gcc + COMPILER_VERSION_COMMAND=$(CXX) -v 2>&1 | tail -1 | sed -e 's/^....//' diff --git a/festival-1.96-speechtools-rateconvtrivialbug.patch b/festival-1.96-speechtools-rateconvtrivialbug.patch new file mode 100644 index 0000000..91d08e0 --- /dev/null +++ b/festival-1.96-speechtools-rateconvtrivialbug.patch @@ -0,0 +1,12 @@ +--- festival/speech_tools/base_class/rateconv.cc.orig 2007-03-13 15:13:21.000000000 -0400 ++++ festival/speech_tools/base_class/rateconv.cc 2007-03-13 15:15:15.000000000 -0400 +@@ -384,7 +384,8 @@ + } + fir_stereo(inp + inoffset + inbaseidx, + coep + cycctr * firlen, firlen, +- outp + outidx++, outp + outidx++); ++ outp + outidx, outp + outidx + 1); ++ outidx += 2; + cycctr++; + if (!(cycctr %= up)) + inbaseidx += 2*down; diff --git a/festival-1.96-speechtools-shared-build.patch b/festival-1.96-speechtools-shared-build.patch new file mode 100644 index 0000000..b1ea85e --- /dev/null +++ b/festival-1.96-speechtools-shared-build.patch @@ -0,0 +1,11 @@ +--- festival-1.96/speech_tools/config/config.in.nonshared 2007-03-09 15:43:02.000000000 -0500 ++++ festival-1.96/speech_tools/config/config.in 2007-03-09 15:43:26.000000000 -0500 +@@ -61,7 +61,7 @@ + # VERBOSE=1 + #DEBUG=1 + # PROFILE=gprof +-#SHARED=2 ++SHARED=2 + + ## Directory specific selections which override the above + diff --git a/festival-gcc7.patch b/festival-gcc7.patch new file mode 100644 index 0000000..0c16e46 --- /dev/null +++ b/festival-gcc7.patch @@ -0,0 +1,21 @@ +diff -up festival/speech_tools/siod/siod.cc.me festival/speech_tools/siod/siod.cc +--- festival/speech_tools/siod/siod.cc.me 2018-01-31 11:15:01.148463177 +0100 ++++ festival/speech_tools/siod/siod.cc 2018-01-31 11:25:15.737355203 +0100 +@@ -459,7 +459,7 @@ char **siod_variable_generator(char *tex + matches = walloc(char *,siod_llength(lmatches)+1); + for (l=lmatches,i=0; l; l=cdr(l),i++) + matches[i] = wstrdup(PNAME(car(l))); +- matches[i] = '\0'; ++ matches[i] = NULL; + + return matches; + } +@@ -498,7 +498,7 @@ char **siod_command_generator (char *tex + matches = walloc(char *,siod_llength(lmatches)+1); + for (l=lmatches,i=0; l; l=cdr(l),i++) + matches[i] = wstrdup(PNAME(car(l))); +- matches[i] = '\0'; ++ matches[i] = NULL; + + return matches; + } diff --git a/festival-speech-tools-pulse.patch b/festival-speech-tools-pulse.patch new file mode 100644 index 0000000..49894b3 --- /dev/null +++ b/festival-speech-tools-pulse.patch @@ -0,0 +1,319 @@ +diff -up festival/lib/init.scm.pulse festival/lib/init.scm +--- festival/lib/init.scm.pulse 2009-09-29 02:05:53.156687751 -0400 ++++ festival/lib/init.scm 2009-09-29 02:14:18.911692694 -0400 +@@ -77,6 +77,9 @@ + ;;; Some default parameters + (Parameter.def 'Wavefiletype 'riff) + ++;;; default to pulseaudio ++(Parameter.def 'Audio_Method 'pulseaudio) ++ + ;;; Set default audio method + (cond + ((member 'nas *modules*) +diff -up festival/speech_tools/audio/audioP.h.pulse festival/speech_tools/audio/audioP.h +--- festival/speech_tools/audio/audioP.h.pulse 2004-07-15 19:03:04.000000000 -0400 ++++ festival/speech_tools/audio/audioP.h 2009-09-29 02:05:53.353695375 -0400 +@@ -40,6 +40,7 @@ + #define __AUDIOP_H__ + + int play_nas_wave(EST_Wave &inwave, EST_Option &al); ++int play_pulse_wave(EST_Wave &inwave, EST_Option &al); + int play_esd_wave(EST_Wave &inwave, EST_Option &al); + int play_sun16_wave(EST_Wave &inwave, EST_Option &al); + int play_voxware_wave(EST_Wave &inwave, EST_Option &al); +@@ -49,6 +50,7 @@ int play_irix_wave(EST_Wave &inwave, EST + int play_macosx_wave(EST_Wave &inwave, EST_Option &al); + + int record_nas_wave(EST_Wave &inwave, EST_Option &al); ++int record_pulse_wave(EST_Wave &inwave, EST_Option &al); + int record_esd_wave(EST_Wave &inwave, EST_Option &al); + int record_sun16_wave(EST_Wave &inwave, EST_Option &al); + int record_voxware_wave(EST_Wave &inwave, EST_Option &al); +diff -up festival/speech_tools/audio/gen_audio.cc.pulse festival/speech_tools/audio/gen_audio.cc +--- festival/speech_tools/audio/gen_audio.cc.pulse 2004-09-30 08:53:35.000000000 -0400 ++++ festival/speech_tools/audio/gen_audio.cc 2009-09-29 02:05:53.354687890 -0400 +@@ -89,6 +89,8 @@ int play_wave(EST_Wave &inwave, EST_Opti + { + if (nas_supported) + protocol = "netaudio"; // the default protocol ++ else if (pulse_supported) ++ protocol = "pulseaudio"; + else if (esd_supported) + protocol = "esdaudio"; + else if (sun16_supported) +@@ -111,6 +113,8 @@ int play_wave(EST_Wave &inwave, EST_Opti + + if (upcase(protocol) == "NETAUDIO") + return play_nas_wave(*toplay,al); ++ else if (upcase(protocol) == "PULSEAUDIO") ++ return play_pulse_wave(*toplay,al); + else if (upcase(protocol) == "ESDAUDIO") + return play_esd_wave(*toplay,al); + else if (upcase(protocol) == "SUNAUDIO") +@@ -246,6 +250,8 @@ EST_String options_supported_audio(void) + audios += " netaudio"; + else if (esd_supported) + audios += " esdaudio"; ++ if (pulse_supported) ++ audios += " pulseaudio"; + if (sun16_supported) + audios += " sun16audio"; + if (freebsd16_supported) +@@ -286,8 +292,10 @@ int record_wave(EST_Wave &wave, EST_Opti + { + if (nas_supported) + protocol = "netaudio"; // the default protocol ++ else if (pulse_supported) ++ protocol = "pulseaudio"; + else if (esd_supported) +- protocol = "esdaudio"; // the default protocol ++ protocol = "esdaudio"; + else if (sun16_supported) + protocol = "sun16audio"; + else if (freebsd16_supported) +@@ -306,6 +314,8 @@ int record_wave(EST_Wave &wave, EST_Opti + + if (upcase(protocol) == "NETAUDIO") + return record_nas_wave(wave,al); ++ else if (upcase(protocol) == "PULSEAUDIO") ++ return record_pulse_wave(wave,al); + else if (upcase(protocol) == "ESDAUDIO") + return record_esd_wave(wave,al); + else if (upcase(protocol) == "SUN16AUDIO") +diff -up festival/speech_tools/audio/Makefile.pulse festival/speech_tools/audio/Makefile +--- festival/speech_tools/audio/Makefile.pulse 2004-07-15 19:03:04.000000000 -0400 ++++ festival/speech_tools/audio/Makefile 2009-09-29 02:05:53.355692417 -0400 +@@ -44,7 +44,7 @@ LOCAL_DEFAULT_LIBRARY = estbase + H = audioP.h + CPPSRCS = gen_audio.cc nas.cc esd.cc sun16audio.cc voxware.cc \ + mplayer.cc win32audio.cc irixaudio.cc os2audio.cc \ +- macosxaudio.cc ++ macosxaudio.cc pulseaudio.cc + + SRCS = $(CPPSRCS) + OBJS = $(CPPSRCS:.cc=.o) +diff -up /dev/null festival/speech_tools/audio/pulseaudio.cc +--- /dev/null 2009-09-29 00:23:01.118964058 -0400 ++++ festival/speech_tools/audio/pulseaudio.cc 2009-09-29 02:05:53.357688202 -0400 +@@ -0,0 +1,134 @@ ++/*************************************************************************/ ++/* */ ++/* Centre for Speech Technology Research */ ++/* University of Edinburgh, UK */ ++/* Copyright (c) 1997,1998 */ ++/* Red Hat, Inc. */ ++/* Copyright (c) 2008 */ ++/* All Rights Reserved. */ ++/* */ ++/* Permission is hereby granted, free of charge, to use and distribute */ ++/* this software and its documentation without restriction, including */ ++/* without limitation the rights to use, copy, modify, merge, publish, */ ++/* distribute, sublicense, and/or sell copies of this work, and to */ ++/* permit persons to whom this work is furnished to do so, subject to */ ++/* the following conditions: */ ++/* 1. The code must retain the above copyright notice, this list of */ ++/* conditions and the following disclaimer. */ ++/* 2. Any modifications must be clearly marked as such. */ ++/* 3. Original authors' names are not deleted. */ ++/* 4. The authors' names are not used to endorse or promote products */ ++/* derived from this software without specific prior written */ ++/* permission. */ ++/* */ ++/* THE UNIVERSITY OF EDINBURGH AND THE CONTRIBUTORS TO THIS WORK */ ++/* DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING */ ++/* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT */ ++/* SHALL THE UNIVERSITY OF EDINBURGH NOR THE CONTRIBUTORS BE LIABLE */ ++/* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES */ ++/* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN */ ++/* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, */ ++/* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF */ ++/* THIS SOFTWARE. */ ++/* */ ++/*************************************************************************/ ++/* Author : Michal Schmidt */ ++/* Date : November 2008 */ ++/*-----------------------------------------------------------------------*/ ++/* Optional support for PulseAudio */ ++/*=======================================================================*/ ++ ++#include "EST_Wave.h" ++#include "EST_Option.h" ++#include "audioP.h" ++ ++#ifdef SUPPORT_PULSE ++ ++#include ++#include ++ ++int pulse_supported = TRUE; ++const static char *err_prefix = "Pulseaudio: "; ++ ++static int transfer_pulse_wave(EST_Wave &inwave, EST_Option &al, int record) ++{ ++ short *waveform; ++ int num_samples; ++ int err, pa_ret; ++ int ret = -1; ++ pa_simple *s = NULL; ++ pa_sample_spec ss; ++ ++ ss.format = PA_SAMPLE_S16NE; ++ ss.channels = 1; ++ ss.rate = inwave.sample_rate(); ++ ++ waveform = inwave.values().memory(); ++ num_samples = inwave.num_samples(); ++ ++ s = pa_simple_new(NULL, // Use the default server. ++ "Festival", // Our application's name. ++ record ? PA_STREAM_RECORD : PA_STREAM_PLAYBACK, ++ NULL, // Use the default device. ++ record ? "Record" : "Speech", // Description of our stream. ++ &ss, // Our sample format. ++ NULL, // Use default channel map ++ NULL, // Use default buffering attributes. ++ &err); ++ ++ if (!s) { ++ cerr << err_prefix << pa_strerror(err) << endl; ++ goto finish; ++ } ++ ++ pa_ret = record ? ++ pa_simple_read (s, waveform, num_samples*sizeof(short), &err) : ++ pa_simple_write(s, waveform, num_samples*sizeof(short), &err); ++ ++ if (pa_ret < 0) { ++ cerr << err_prefix << pa_strerror(err) << endl; ++ goto finish; ++ } ++ ++ if (!record && pa_simple_drain(s, &err) < 0) { ++ cerr << err_prefix << pa_strerror(err) << endl; ++ goto finish; ++ } ++ ++ ret = 1; ++finish: ++ if (s) ++ pa_simple_free(s); ++ return ret; ++} ++ ++int play_pulse_wave(EST_Wave &inwave, EST_Option &al) ++{ ++ return transfer_pulse_wave(inwave, al, 0); ++} ++ ++int record_pulse_wave(EST_Wave &inwave, EST_Option &al) ++{ ++ return transfer_pulse_wave(inwave, al, 1); ++} ++ ++#else ++int pulse_supported = FALSE; ++ ++int play_pulse_wave(EST_Wave &inwave, EST_Option &al) ++{ ++ (void)inwave; ++ (void)al; ++ cerr << "Audio: pulse not compiled in this version" << endl; ++ return -1; ++} ++ ++int record_pulse_wave(EST_Wave &inwave, EST_Option &al) ++{ ++ (void)inwave; ++ (void)al; ++ cerr << "Audio: pulse not compiled in this version" << endl; ++ return -1; ++} ++ ++#endif +diff -up festival/speech_tools/config/config.in.pulse festival/speech_tools/config/config.in +--- festival/speech_tools/config/config.in.pulse 2009-09-29 02:05:53.045693311 -0400 ++++ festival/speech_tools/config/config.in 2009-09-29 02:05:53.358687421 -0400 +@@ -79,6 +79,9 @@ OPTIMISE_sigpr = 3 + ## NCD's network audio system, This is recommended. + # INCLUDE_MODULES += NAS_AUDIO + ++## PulseAudio sound server ++INCLUDE_MODULES += PULSE_AUDIO ++ + ## Elightenment Sound Demon, for KDE etc. + # INCLUDE_MODULES += ESD_AUDIO + +diff -up festival/speech_tools/config/modules/Makefile.pulse festival/speech_tools/config/modules/Makefile +--- festival/speech_tools/config/modules/Makefile.pulse 2004-07-15 19:03:05.000000000 -0400 ++++ festival/speech_tools/config/modules/Makefile 2009-09-29 02:05:53.359687618 -0400 +@@ -41,7 +41,8 @@ RULESETS = efence.mak dmalloc.mak debugg + psola_tm.mak editline.mak tcl.mak \ + freebsd16_audio.mak irix_audio.mak linux16_audio.mak \ + sun16_audio.mak win32_audio.mak macosx_audio.mak \ +- mplayer_audio.mak nas_audio.mak esd_audio.mak ++ mplayer_audio.mak nas_audio.mak esd_audio.mak \ ++ pulse_audio.mak + + FILES = Makefile descriptions $(RULESETS) + +diff -up /dev/null festival/speech_tools/config/modules/pulse_audio.mak +--- /dev/null 2009-09-29 00:23:01.118964058 -0400 ++++ festival/speech_tools/config/modules/pulse_audio.mak 2009-09-29 02:05:53.361688082 -0400 +@@ -0,0 +1,9 @@ ++## Definitions for PulseAudio ++ ++INCLUDE_PULSE_AUDIO=1 ++ ++MOD_DESC_PULSE_AUDIO=PulseAudio support ++ ++AUDIO_DEFINES += -DSUPPORT_PULSE ++AUDIO_INCLUDES += -I$(PULSE_INCLUDE) ++MODULE_LIBS += -lpulse-simple +diff -up festival/speech_tools/config/project.mak.pulse festival/speech_tools/config/project.mak +--- festival/speech_tools/config/project.mak.pulse 2009-09-29 02:05:53.104720729 -0400 ++++ festival/speech_tools/config/project.mak 2009-09-29 02:05:53.362687372 -0400 +@@ -60,7 +60,7 @@ MODULE_DIRECTORY = $(TOP) + # List of all known modules + + DISTRIBUTED_MODULES = \ +- NAS_AUDIO ESD_AUDIO NATIVE_AUDIO MPLAYER_AUDIO \ ++ NAS_AUDIO PULSE_AUDIO ESD_AUDIO NATIVE_AUDIO MPLAYER_AUDIO \ + EDITLINE \ + SIOD WAGON SCFG WFST OLS \ + JAVA JAVA_CPP JAVA_MEDIA \ +@@ -109,6 +109,7 @@ PROJECT_LIBRARY_VERSION_estbase = $(PROJ + PROJECT_LIBRARY_VERSION_eststring = 1.2 + PROJECT_LIBRARY_VERSION_estjava = $(PROJECT_VERSION).1 + ++PROJECT_LIBRARY_NEEDS_SYSLIBS_estbase=1 + PROJECT_LIBRARY_NEEDS_SYSLIBS_estjava=1 + + PROJECT_DEFAULT_LIBRARY = estools +diff -up festival/speech_tools/config/systems/default.mak.pulse festival/speech_tools/config/systems/default.mak +--- festival/speech_tools/config/systems/default.mak.pulse 2005-07-17 09:06:49.000000000 -0400 ++++ festival/speech_tools/config/systems/default.mak 2009-09-29 02:05:53.364688115 -0400 +@@ -61,6 +61,12 @@ NAS_INCLUDE = /usr/X11R6/include + NAS_LIB = /usr/X11R6/lib + + ########################################################################### ++## Where to find PulseAudio ++ ++PULSE_INCLUDE = /usr/include ++PULSE_LIB = /usr/lib ++ ++########################################################################### + ## Where to find Enlightenment Speech Demon + + ESD_INCLUDE = /usr/local/include +diff -up festival/speech_tools/include/EST_audio.h.pulse festival/speech_tools/include/EST_audio.h +--- festival/speech_tools/include/EST_audio.h.pulse 2004-07-15 19:03:05.000000000 -0400 ++++ festival/speech_tools/include/EST_audio.h 2009-09-29 02:05:53.365689290 -0400 +@@ -43,6 +43,7 @@ + #include "EST_Option.h" + + extern int nas_supported; ++extern int pulse_supported; + extern int esd_supported; + extern int sun16_supported; + extern int freebsd16_supported; diff --git a/festival-use-pacat.patch b/festival-use-pacat.patch new file mode 100644 index 0000000..5c357df --- /dev/null +++ b/festival-use-pacat.patch @@ -0,0 +1,14 @@ +diff -up festival/lib/init.scm.use-pacat festival/lib/init.scm +--- festival/lib/init.scm.use-pacat 2008-10-27 21:35:08.000000000 -0400 ++++ festival/lib/init.scm 2008-10-27 21:41:08.000000000 -0400 +@@ -140,6 +140,10 @@ + (require 'token) + (require 'tts) + ++;;; Default to using pulseaudio (bug 467531) ++(Parameter.def 'Audio_Command "pacat --channels=1 --rate=$SR $FILE -n Festival --stream-name=Speech") ++(Parameter.set 'Audio_Method 'Audio_Command) ++ + ;;; + ;;; Local site initialization, if the file exists load it + ;;; diff --git a/festival.gcc47.patch b/festival.gcc47.patch new file mode 100644 index 0000000..2fee844 --- /dev/null +++ b/festival.gcc47.patch @@ -0,0 +1,92 @@ +--- speech_tools/include/EST_TIterator.h.orig 2012-02-25 12:09:30.926212818 -0600 ++++ speech_tools/include/EST_TIterator.h 2012-02-25 12:10:32.981099676 -0600 +@@ -101,7 +101,7 @@ + + /// Create an iterator ready to run over the given container. + EST_TIterator(const Container &over) +- { begin(over); } ++ { this->begin(over); } + + /// Copy an iterator by assignment + Iter &operator = (const Iter &orig) +@@ -109,7 +109,7 @@ + + /// Assigning a container to an iterator sets it ready to start. + Iter &operator = (const Container &over) +- { begin(over); return *this;} ++ { this->begin(over); return *this;} + + /// Set the iterator ready to run over this container. + void begin(const Container &over) +@@ -209,7 +209,7 @@ + + /// Create an iterator ready to run over the given container. + EST_TStructIterator(const Container &over) +- { begin(over); } ++ { this->begin(over); } + + const Entry *operator ->() const + {return &this->current();} +@@ -239,7 +239,7 @@ + + /// Create an iterator ready to run over the given container. + EST_TRwIterator(Container &over) +- { begin(over); } ++ { this->begin(over); } + + /// Set the iterator ready to run over this container. + void begin(Container &over) +@@ -289,7 +289,7 @@ + + /// Create an iterator ready to run over the given container. + EST_TRwStructIterator(Container &over) +- { begin(over); } ++ { this->begin(over); } + + Entry *operator ->() const + {return &this->current();} +--- speech_tools/include/EST_TNamedEnum.h.orig 2012-02-25 12:26:51.432455812 -0600 ++++ speech_tools/include/EST_TNamedEnum.h 2012-02-25 12:27:07.125450312 -0600 +@@ -130,7 +130,7 @@ + {this->initialise((const void *)defs); }; + EST_TNamedEnumI(EST_TValuedEnumDefinition defs[], ENUM (*conv)(const char *)) + {this->initialise((const void *)defs, conv); }; +- const char *name(ENUM tok, int n=0) const {return value(tok,n); }; ++ const char *name(ENUM tok, int n=0) const {return this->value(tok,n); }; + + }; + +--- speech_tools/base_class/EST_TSimpleMatrix.cc.orig 2012-02-25 12:34:37.095639209 -0600 ++++ speech_tools/base_class/EST_TSimpleMatrix.cc 2012-02-25 12:35:33.952865468 -0600 +@@ -97,7 +97,7 @@ + { + int copy_r = Lof(this->num_rows(), new_rows); + +- just_resize(new_rows, new_cols, &old_vals); ++ this->just_resize(new_rows, new_cols, &old_vals); + + memcpy((void *)this->p_memory, + (const void *)old_vals, +@@ -126,9 +126,9 @@ + int copy_r = Lof(this->num_rows(), new_rows); + int copy_c = Lof(this->num_columns(), new_cols); + +- just_resize(new_rows, new_cols, &old_vals); ++ this->just_resize(new_rows, new_cols, &old_vals); + +- set_values(old_vals, ++ this->set_values(old_vals, + old_row_step, old_column_step, + 0, copy_r, + 0, copy_c); +--- speech_tools/base_class/EST_TSimpleVector.cc.orig 2012-02-25 12:38:16.647543126 -0600 ++++ speech_tools/base_class/EST_TSimpleVector.cc 2012-02-25 12:38:41.571710862 -0600 +@@ -70,7 +70,7 @@ + T *old_vals =NULL; + int old_offset = this->p_offset; + +- just_resize(newn, &old_vals); ++ this->just_resize(newn, &old_vals); + + if (set && old_vals) + { diff --git a/festival.spec b/festival.spec new file mode 100644 index 0000000..836c332 --- /dev/null +++ b/festival.spec @@ -0,0 +1,1309 @@ +%define festivalversion 1.96 +# we ship the 1.4.2 docs for now. +%define docversion 1.4.2 +%define speechtoolsversion 1.2.96 + +Name: festival +Summary: Speech synthesis and text-to-speech system +Version: %{festivalversion} +Release: 41%{?dist} + +URL: http://www.cstr.ed.ac.uk/projects/festival/ +# the emacs file is GPL+, there is one TCL licensed source file +License: MIT and GPL+ and TCL + + +# Files needed for everything... +%define baseURL http://festvox.org/packed/festival/%{festivalversion} +Source0: %{baseURL}/festival-%{festivalversion}-beta.tar.gz +Source1: %{baseURL}/speech_tools-%{speechtoolsversion}-beta.tar.gz + +# Docs haven't been updated yet; here's the old ones +Source2: http://festvox.org/packed/festival/%{docversion}/festdoc-%{docversion}.tar.gz + +# Our local site config files. +Source50: festival-1.96-0.7-fedora-siteinit.scm +Source51: festival-1.96-0.7-fedora-sitevars.scm + +### DICTIONARIES +# Generic English dictionary +Source100: %{baseURL}/festlex_POSLEX.tar.gz +# American English dictionary +Source101: %{baseURL}/festlex_CMU.tar.gz +# OALD isn't included because it's got a more restrictive (non-commercial +# only) license. OALD voices not included for same reason. + +# Note on voice versions: I'm simply using the file date of the newest file +# in each set of tarballs. It happens that the dates for all files from each +# source (diphone, cmu_arctic, etc.) match, which is handy. + +### DIPHONE VOICES +%define diphoneversion 0.19990610 +Source200: %{baseURL}/festvox_kallpc16k.tar.gz +Source202: %{baseURL}/festvox_kedlpc16k.tar.gz + +### HTS VOICES (use Nagoya Institute of Technology's HTS based synthesizer) +# The Festvox site packages older versions of these as cmu_us_*_hts. +# These are from . +# And, ugh, the files seem to be only served via a script, not directly. +%define nitechbaseURL http://hts.sp.nitech.ac.jp/?plugin=attach&refer=Download&openfile= +%define nitechhtsversion 0.20061229 +Source220: %{nitechbaseURL}/festvox_nitech_us_awb_arctic_hts.tar.bz2 +Source221: %{nitechbaseURL}/festvox_nitech_us_bdl_arctic_hts.tar.bz2 +Source222: %{nitechbaseURL}/festvox_nitech_us_clb_arctic_hts.tar.bz2 +Source223: %{nitechbaseURL}/festvox_nitech_us_jmk_arctic_hts.tar.bz2 +Source224: %{nitechbaseURL}/festvox_nitech_us_rms_arctic_hts.tar.bz2 +Source225: %{nitechbaseURL}/festvox_nitech_us_slt_arctic_hts.tar.bz2 + +### Hispavoces Spanish voices http://forja.guadalinex.org/repositorio/projects/hispavoces/ +%define hispavocesversion 1.0.0 +Source300: http://v4.guadalinex.org/guadalinex-toro/pool-test/main/f/festival-spanish-voices/festival-spanish-voices_1.0.0.orig.tar.gz +Source301: COPYING.hispavoces + +### Multisyn voices left out because they're ~ 100MB each. + +### MBROLA voices left out, because they require MBROLA, which ain't free. + + +# Set defaults to American English instead of British English - the OALD +# dictionary (free for non-commercial use only) is needed for BE support +# Additionally, prefer the smaller (and I think nicer sounding) nitech hts +# voices. +Patch1: festival-1.96-nitech-american.patch + +# Whack some buildroot references +Patch2: festival_buildroot.patch + +# Use shared libraries +Patch3: festival-1.96-speechtools-shared-build.patch + +# Fix a coding error (see bug #162137). Need to upstream. +Patch5: festival-1.96-speechtools-rateconvtrivialbug.patch + +# Link libs with libm, libtermcap (see bug #198190). +# Need to upstream this. +Patch6: festival-1.96-speechtools-linklibswithotherlibs.patch + +# For some reason, CXX is set to gcc on everything but Mac OS Darwin, +# where it's set to g++. Yeah, well. We need it to be right too. +Patch7: festival-1.96-speechtools-ohjeezcxxisnotgcc.patch + +# Look for siteinit and sitevars in /etc/festival +Patch8: festival-1.96-etcsiteinit.patch + +# Alias old cmu names to new nitech ones +Patch9: festival-1.96-alias_cmu_to_nitech.patch + +# Look for speech tools here, not back there. +Patch10: festival-1.96-findspeechtools.patch + +# Build main library as shared, not just speech-tools +Patch11: festival-1.96-main-shared-build.patch + +# This is a hack to make the shared libraries build with actual +# sonames. Should pretty much do the right thing, although note +# of course that the sonames aren't official upstream. +Patch12: festival-1.96-bettersonamehack.patch + +# this updates speech_tools to a development version which fixes +# a 64-bit cleanliness issue (among other changes). +Patch20: festival-1.96-speechtools-1.2.96-beta+awb.patch + +# This makes festival use /usr/lib[arch]/festival/etc for its +# arch-specific "etc-path", rather than /usr/share/festival/etc/system_type. +# Then I use sed to replace the token with actual arch-specific libdir. +# A better way would be to actually make this a flexible makefile parameter, +# but that's something to take up with upstream. +Patch31: festival-1.96-kludge-etcpath-into-libarch.patch + +# Fixing format-security flaws +Patch60: festival-1.96-format-security.patch + +# For some reason, the Nitech voices (and the previous CMU versions) fail to +# define proclaim_voice, which makes them not show up in the voice +# descriptions, which makes gnome-speech not show them. +Patch90: festival-1.96-nitech-proclaimvoice.patch + +# Cure "SIOD ERROR: unbound variable : f2b_f0_lr_start" +Patch91: festival-1.96-nitech-fixmissingrequire.patch + +# An apparent copy-paste error in these voices -- slt is referenced +# in all of them. +Patch92: festival-1.96-nitech-sltreferences.patch + +Patch93: gcc43.patch + +# Native pulseaudio support, https://bugzilla.redhat.com/show_bug.cgi?id=471047 +Patch94: festival-speech-tools-pulse.patch + +Patch95: gcc44.patch + +# gcc 4.7 is finnicky about ambiguous function references' +Patch96: festival.gcc47.patch + +# Bring back old patch since gcc 4.7 no longer ignores unknown options +Patch97: no-shared-data.patch + +# There is a typo in the festival_server script +Patch98: festival-1.96-server-script-typo.patch + +Patch99: festival-gcc7.patch + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: pulseaudio-libs-devel +BuildRequires: texi2html +BuildRequires: ncurses-devel + +# Requires: festival-voice +# The hard dep below provides a festival-voice, no need to require it here. + +# This is hard-coded as a requirement because it's the smallest voice (and, +# subjectively I think the most pleasant to listen to and so a good +# default). +# +# Ideally, this would be a "suggests" instead of a hard requirement. +# +# Update: with the new nitech versions of the voices, slt-arctic is no +# longer the smallest. But... AWB has a strong scottish accent, and JMK a +# kind of odd canadian one, so they're not great candidates for inclusion. +# And I find RMS a bit hard to understand. BDL isn't much smaller than SLT, +# and since I like it better, I think I'm going to keep it as the default +# for a price 12k. So, in case anyone later questions why this is the +# default, there's the answer. :) +Requires: festvox-slt-arctic-hts + +Requires: festival-lib = %{version}-%{release} +Requires: festival-speechtools-libs = %{speechtoolsversion}-%{release} + + + + +%package lib +Summary: Library for the Festival speech synthesis system +# this is here to make sure upgrades go cleanly. In other cases, +# the auto-deps should handle this just fine. +Requires: festival-speechtools-libs = %{speechtoolsversion}-%{release} + +%package docs +Summary: Documentation for the Festival speech synthesis system +Version: %{docversion} +BuildArch: noarch + +%package speechtools-libs +Summary: The Edinburgh Speech Tools libraries +Version: %{speechtoolsversion} + +%package speechtools-utils +Summary: Miscellaneous utilities from the Edinburgh Speech Tools +Version: %{speechtoolsversion} + +%package speechtools-devel +Summary: Development files for Edinburgh Speech Tools libraries +Version: %{speechtoolsversion} +# Note: rpmlint complains incorrectly about +# "no-dependency-on festival-speechtools". +Requires: festival-speechtools-libs = %{speechtoolsversion}-%{release} + +%package -n festvox-kal-diphone +Summary: American English male speaker "Kevin" for Festival +Version: %{diphoneversion} +Provides: festival-voice +Provides: festvox-kallpc16k +BuildArch: noarch + +%package -n festvox-ked-diphone +Summary: American English male speaker "Kurt" for Festival +Version: %{diphoneversion} +Requires: festival +Provides: festival-voice +Provides: festvox-kedlpc16k +BuildArch: noarch + +%package -n festvox-awb-arctic-hts +Summary: Scottish-accent US English male speaker "AWB" for Festival +Version: %{nitechhtsversion} +Requires: festival +Provides: festival-voice +BuildArch: noarch + +%package -n festvox-bdl-arctic-hts +Summary: US English male speaker "BDL" for Festival +Version: %{nitechhtsversion} +Requires: festival +Provides: festival-voice +BuildArch: noarch + +%package -n festvox-clb-arctic-hts +Summary: US English female speaker "CLB" for Festival +Version: %{nitechhtsversion} +Requires: festival +Provides: festival-voice +BuildArch: noarch + +%package -n festvox-jmk-arctic-hts +Summary: Canadian-accent US English male speaker "JMK" for Festival +Version: %{nitechhtsversion} +Requires: festival +Provides: festival-voice +BuildArch: noarch + +%package -n festvox-rms-arctic-hts +Summary: US English male speaker "RMS" for Festival +Version: %{nitechhtsversion} +Requires: festival +Provides: festival-voice +BuildArch: noarch + +%package -n festvox-slt-arctic-hts +Summary: US English female speaker "SLT" for Festival +Version: %{nitechhtsversion} +Requires: festival +Provides: festival-voice +BuildArch: noarch + +%package -n hispavoces-pal-diphone +Summary: Male Spanish voice «PAL» for Festival +Version: %{hispavocesversion} +Requires: festival +Provides: festival-voice +BuildArch: noarch + +%package -n hispavoces-sfl-diphone +Summary: Female Spanish voice «SFL» for Festival +Version: %{hispavocesversion} +Requires: festival +Provides: festival-voice +BuildArch: noarch + +# This is last as a lovely hack to make sure Version gets set back +# to what it should be. Grr. +%package devel +Summary: Development files for the Festival speech synthesis system +Version: %{festivalversion} +# Note: rpmlint complains incorrectly about +# "no-dependency-on festival" +Requires: festival-speechtools-devel = %{speechtoolsversion}-%{release} +Requires: festival-lib = %{version}-%{release} +Requires: festival-lib + + + +%description +Festival is a general multi-lingual speech synthesis system developed +at CSTR. It offers a full text to speech system with various APIs, as +well as an environment for development and research of speech synthesis +techniques. It is written in C++ with a Scheme-based command interpreter +for general control. + +%description lib +The shared library used by the Festival text-to-speech and speech synthesis +system. + +%description docs +HTML, Postscript, and Texinfo documentation for the Festival text-to-speech +and speech synthesis system. + +%description speechtools-libs +The Edinburgh Speech Tools libraries, used by the Festival text-to-speech +and speech synthesis system. + +%description speechtools-utils +Miscellaneous utilities from the Edinburgh Speech Tools. Unless you have a +specific need for one of these programs, you probably don't need to install +this. + +%description speechtools-devel +Development files for the Edinburgh Speech Tools Library, used by the +Festival speech synthesis system. + + +%description -n festvox-kal-diphone +American English male speaker ("Kevin") for Festival. + +This voice provides an American English male voice using a residual excited +LPC diphone synthesis method. It uses the CMU Lexicon pronunciations. +Prosodic phrasing is provided by a statistically trained model using part of +speech and local distribution of breaks. Intonation is provided by a CART +tree predicting ToBI accents and an F0 contour generated from a model +trained from natural speech. The duration model is also trained from data +using a CART tree. + + +%description -n festvox-ked-diphone +American English male speaker ("Kurt") for Festival. + +This voice provides an American English male voice using a residual excited +LPC diphone synthesis method. It uses the CMU Lexicon for pronunciations. +Prosodic phrasing is provided by a statistically trained model using part of +speech and local distribution of breaks. Intonation is provided by a CART +tree predicting ToBI accents and an F0 contour generated from a model +trained from natural speech. The duration model is also trained from data +using a CART tree. + + +%description -n festvox-awb-arctic-hts +US English male speaker ("AWB") for Festival. AWB is a native Scottish +English speaker, but the voice uses the US English front end. + +This is a HMM-based Speech Synthesis System (HTS) voice from the Nagoya +Institute of Technology, trained using the CMU ARCTIC database. This voice +is based on 1138 utterances spoken by a Scottish English male speaker. The +speaker is very experienced in building synthetic voices and matched +prompted US English, though his vowels are very different from US English +vowels. Scottish English speakers will probably find synthesizers based on +this voice strange. Unlike the other CMU_ARCTIC databases this was recorded +in 16 bit 16KHz mono without EGG, on a Dell Laptop in a quiet office. The +database was automatically labelled using CMU Sphinx using the FestVox +labelling scripts. No hand correction has been made. + + +%description -n festvox-bdl-arctic-hts +US English male speaker ("BDL") for Festival. + +This is a HMM-based Speech Synthesis System (HTS) voice from the Nagoya +Institute of Technology, trained using the CMU ARCTIC database. This voice +is based on 1132 utterances spoken by a US English male speaker. The speaker +is experienced in building synthetic voices. This was recorded at 16bit +32KHz, in a sound proof room, in stereo, one channel was the waveform, the +other EGG. The database was automatically labelled using CMU Sphinx using +the FestVox labelling scripts. No hand correction has been made. + + +%description -n festvox-clb-arctic-hts +US English female speaker ("CLB") for Festival. + +This is a HMM-based Speech Synthesis System (HTS) voice from the Nagoya +Institute of Technology, trained using the CMU ARCTIC database. This voice +is based on 1132 utterances spoken by a US English female speaker. The +speaker is experienced in building synthetic voices. This was recorded at +16bit 32KHz, in a sound proof room, in stereo, one channel was the waveform, +the other EGG. The database was automatically labelled using CMU Sphinx +using the FestVox labelling scripts. No hand correction has been made. + + +%description -n festvox-jmk-arctic-hts +US English male speaker ("JMK") voice for Festival. JMK is a native Canadian +English speaker, but the voice uses the US English front end. + +This is a HMM-based Speech Synthesis System (HTS) voice from the Nagoya +Institute of Technology, trained using the CMU ARCTIC database. This voice +is based on 1138 utterances spoken by a US English male speaker. The speaker +is experienced in building synthetic voices. This was recorded at 16bit +32KHz, in a sound proof room, in stereo, one channel was the waveform, the +other EGG. The database was automatically labelled using CMU Sphinx using +the FestVox labelling scripts. No hand correction has been made. + +%description -n festvox-rms-arctic-hts +US English male speaker ("RMS") voice for Festival. + +This is a HMM-based Speech Synthesis System (HTS) voice from the Nagoya +Institute of Technology, trained using the CMU ARCTIC database. This voice +is based on 1132 utterances spoken by a US English male speaker. The speaker +is experienced in building synthetic voices. This was recorded at 16bit +32KHz, in a sound proof room, in stereo, one channel was the waveform, the +other EGG. The database was automatically labelled using EHMM an HMM labeler +that is included in the FestVox distribution. No hand correction has been +made. + +%description -n festvox-slt-arctic-hts +US English female speaker ("SLT") voice for Festival. + +This is a HMM-based Speech Synthesis System (HTS) voice from the Nagoya +Institute of Technology, trained using the CMU ARCTIC database. This voice +is based on 1132 utterances spoken by a US English female speaker. The +speaker is experienced in building synthetic voices. This was recorded at +16bit 32KHz, in a sound proof room, in stereo, one channel was the waveform, +the other EGG. The database was automatically labelled using CMU Sphinx +using the FestVox labelling scripts. No hand correction has been made. + +%description -n hispavoces-sfl-diphone +Female Castillian-Spanish (es_ES) voice «SFL» for Festival. + +This is a diphone-based male Spanish voice for the Festival speech synthesis +system. These original audio files were recorded by a professional voice +talent in a recording studio. + +This voice was developed by the Consejeria de Innovacion, Ciencia y Empresa +of the Junta de Andalucia on a project awarded to MP Sistemas in +collaboration with Intelligent Dialogue Systems (INDISYS). + +The primary objective was to integrate a higher-quality diphone-based +Spanish voice in Guadalinex v4.0, an Ubuntu-based Linux distribution +promoted by the Government of Andalusia (Spain). See +http://www.guadalinex.org for more information. + +%description -n hispavoces-pal-diphone +Male Castillian-Spanish (es_ES) voice «PAL» for Festival. + +This is a diphone-based male Spanish voice for the Festival speech synthesis +system. These original audio files were recorded by a professional voice +talent in a recording studio. + +This voice was developed by the Consejeria de Innovacion, Ciencia y Empresa +of the Junta de Andalucia on a project awarded to MP Sistemas in +collaboration with Intelligent Dialogue Systems (INDISYS). + +The primary objective was to integrate a higher-quality diphone-based +Spanish voice in Guadalinex v4.0, an Ubuntu-based Linux distribution +promoted by the Government of Andalusia (Spain). See +http://www.guadalinex.org for more information. + +%description devel +Development files for the Festival speech synthesis system. Install +festival-devel if you want to use Festival's capabilities from within your +own programs, or if you intend to compile other programs using it. Note that +you can also interface with Festival in via the shell or with BSD sockets. + + + +%prep +%setup -q -n festival -a 1 + +# speech tools +%setup -q -n festival -D -T -a 2 + +# exit out if they've fixed this, so we can remove this hack. +[ -x speech_tools/base_class/string/EST_strcasecmp.c ] || exit 1 +chmod -x speech_tools/base_class/string/EST_strcasecmp.c + +# dictionaries +%setup -q -n festival -D -T -b 100 +%setup -q -n festival -D -T -b 101 + +# voices +%setup -q -n festival -D -T -b 200 +%setup -q -n festival -D -T -b 202 +%setup -q -n festival -D -T -b 220 +%setup -q -n festival -D -T -b 221 +%setup -q -n festival -D -T -b 222 +%setup -q -n festival -D -T -b 223 +%setup -q -n festival -D -T -b 224 +%setup -q -n festival -D -T -b 225 +%setup -c -q -n festival -D -T -a 300 + +%patch1 -p1 -b .nitech +%patch2 -p1 -b .buildrootrefs +%patch3 -p1 -b .shared +%patch5 -p1 -b .bugfix +%patch6 -p1 -b .liblinking +%patch7 -p1 -b .cxx +%patch8 -p1 -b .etc +%patch9 -p1 -b .cmu2nitech +# patch9 creates a new file; patch helpfully makes a "backup" of the +# non-existent "original", which then has bad permissions. zap. +rm -f lib/alias_cmu_to_nitech.scm.cmu2nitech +%patch10 -p1 -b .findspeechtools +%patch11 -p1 -b .shared +%patch12 -p1 -b .soname + +%patch20 -p1 -b .awb + +%patch31 -p1 -b .libarch +# finish the kludge for arch-specific "etc" (misc. binaries) +for f in speech_tools/main/siod_main.cc src/arch/festival/festival.cc; do + sed -i -e 's,{{HORRIBLELIBARCHKLUDGE}},"%{_libdir}",' $f +done + +%patch60 -p1 -b .fmtsec + + +# no backups for these patches because +# the voice directories are copied wholesale +%patch90 -p1 +%patch91 -p1 +%patch92 -p1 +%patch93 -p1 -b .gcc43 +%patch94 -p1 -b .pulse +%patch95 -p1 -b .gcc44 +%patch96 -p0 -b .gcc47 +%patch97 -p1 -b .no-share +%patch98 -b .typo +%patch99 -p1 -b .gcc7 + +# zero length +rm festdoc-%{docversion}/speech_tools/doc/index_html.jade +rm festdoc-%{docversion}/speech_tools/doc/examples_gen/error_example_section.sgml +rm festdoc-%{docversion}/speech_tools/doc/tex_stuff.jade + + + +%build + +# build speech tools (and libraries) +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/speech_tools/lib +pushd speech_tools + %configure + # -fPIC 'cause we're building shared libraries and it doesn't hurt + # -fno-strict-aliasing because of a couple of warnings about code + # problems; if $RPM_OPT_FLAGS contains -O2 or above, this puts + # it back. Once that problem is gone upstream, remove this for + # better optimization. + make \ + CFLAGS="$RPM_OPT_FLAGS -fPIC -fno-strict-aliasing" \ + CXXFLAGS="$RPM_OPT_FLAGS -fPIC -fno-strict-aliasing" +popd + +# build the main program +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/src/lib +# instead of doing this, maybe we should patch the make process +# so it looks in the right place explicitly: +export PATH=$(pwd)/bin:$PATH +%configure +make \ + FTLIBDIR="%{_datadir}/festival/lib" \ + CFLAGS="$RPM_OPT_FLAGS -fPIC" \ + CXXFLAGS="$RPM_OPT_FLAGS -fPIC" + +# build the patched CMU dictionary +pushd lib/dicts/cmu + make +popd + + +%install +# "make install" for this package is, um, "interesting". It seems geared for +# local user-level builds. So, rather than doing that and then patching it +# up, do the right parts by hand as necessary. + +# install speech tools libs, binaries, and include files +pushd speech_tools + + make INSTALLED_LIB=$RPM_BUILD_ROOT%{_libdir} make_installed_lib_shared + # no thanks, static libs. + rm $RPM_BUILD_ROOT%{_libdir}/*.a + + make INSTALLED_BIN=$RPM_BUILD_ROOT%{_libexecdir}/speech-tools make_installed_bin_static + # this list of the useful programs in speech_tools comes from + # upstream developer Alan W. Black; the other stuff is to be removed. + pushd $RPM_BUILD_ROOT%{_libexecdir}/speech-tools + ls | + grep -Evw "ch_wave|ch_track|na_play|na_record|wagon|wagon_test" | + grep -Evw "make_wagon_desc|pitchmark|pm|sig2fv|wfst_build" | + grep -Evw "wfst_run|wfst_run" | + xargs rm + popd + + pushd include + for d in $( find . -type d | grep -v win32 ); do + make -w -C $d INCDIR=$RPM_BUILD_ROOT%{_includedir}/speech_tools/$d install_incs + done + # Um, yeah, so, "EST" is not a very meaningful name for the include dir. + # The Red Hat / Fedora package has traditionally put this stuff under + # "speech_tools", and that's what we're gonna do here too. + mv $RPM_BUILD_ROOT%{_includedir}/speech_tools/EST/*.h \ + $RPM_BUILD_ROOT%{_includedir}/speech_tools/ + rmdir $RPM_BUILD_ROOT%{_includedir}/speech_tools/EST + mv $RPM_BUILD_ROOT%{_includedir}/speech_tools/unix/EST/EST_* \ + $RPM_BUILD_ROOT%{_includedir}/speech_tools/unix/ + rmdir $RPM_BUILD_ROOT%{_includedir}/speech_tools/unix/EST + mv $RPM_BUILD_ROOT%{_includedir}/speech_tools/instantiate/EST/instantiate/EST_* \ + $RPM_BUILD_ROOT%{_includedir}/speech_tools/instantiate/ + rm -rf $RPM_BUILD_ROOT%{_includedir}/speech_tools/instantiate/EST + mv $RPM_BUILD_ROOT%{_includedir}/speech_tools/sigpr/EST/EST_* \ + $RPM_BUILD_ROOT%{_includedir}/speech_tools/sigpr + rmdir $RPM_BUILD_ROOT%{_includedir}/speech_tools/sigpr/EST + mv $RPM_BUILD_ROOT%{_includedir}/speech_tools/ling_class/EST/EST_* \ + $RPM_BUILD_ROOT%{_includedir}/speech_tools/ling_class + rmdir $RPM_BUILD_ROOT%{_includedir}/speech_tools/ling_class/EST + popd + + cp README ../README.speechtools + +popd + +# install the dictionaries +TOPDIR=$( pwd ) +pushd lib/dicts + mkdir -p $RPM_BUILD_ROOT%{_datadir}/festival/lib/dicts + # we want to put the licenses in the docs... + cp COPYING.poslex $OLDPWD/COPYING.poslex + cp cmu/COPYING $OLDPWD/COPYING.cmudict + for f in wsj.wp39.poslexR wsj.wp39.tri.ngrambin ; do + install -m 644 $f $RPM_BUILD_ROOT%{_datadir}/festival/lib/dicts/ + done + mkdir -p $RPM_BUILD_ROOT%{_datadir}/festival/lib/dicts/cmu + pushd cmu + # note I'm keeping cmudict-0.4.diff and cmudict_extensions.scm to + # satisfy the "all changes clearly marked" part of the license -- these + # are the changes. And yes, the ".out" file is the one actually used. + # Sigh. + for f in allowables.scm cmudict-0.4.diff cmudict-0.4.out \ + cmudict_extensions.scm cmulex.scm cmu_lts_rules.scm; do + install -m 644 $f $RPM_BUILD_ROOT%{_datadir}/festival/lib/dicts/cmu/ + done + popd +popd + +# install the voices +pushd lib/voices + # get the licenses. This is probably too clever by half, but oh well. + for f in $( find . -name COPYING ); do + n=$( echo $f | sed 's/.*\/\(.*\)\/COPYING/COPYING.\1/' ) + mv $f $OLDPWD/$n + done + # ditch the readme files -- these aren't very useful. + # Except keep a README.htsvoice, because it contains license information. + cp us/nitech_us_awb_arctic_hts/hts/README.htsvoice $OLDPWD/README.htsvoice + find . -name 'README*' -exec rm {} \; +popd +# kludge! nitech_us_awb_arctic_hts is missing its COPYING file. It should +# be the same as the other nitech files, though, so just copy one. +cp COPYING.nitech_us_bdl_arctic_hts COPYING.nitech_us_awb_arctic_hts +cp -a lib/voices $RPM_BUILD_ROOT%{_datadir}/festival/lib + +mkdir -p $RPM_BUILD_ROOT%{_datadir}/festival/lib/voices/es/ +cp -a festival-spanish-voices-1.0.0/* $RPM_BUILD_ROOT%{_datadir}/festival/lib/voices/es/ +cp %{SOURCE301} . + +# okay, now install the main festival program. + +# binaries: +make INSTALLED_BIN=$RPM_BUILD_ROOT%{_bindir} make_installed_bin_static +install -m 755 bin/text2wave $RPM_BUILD_ROOT%{_bindir} + +# install the shared library +cp -a src/lib/libFestival.so* $RPM_BUILD_ROOT%{_libdir} + +# this is just nifty. and it's small. +install -m 755 examples/saytime $RPM_BUILD_ROOT%{_bindir} + +# man pages +mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1 +cp -a doc/*.1 $RPM_BUILD_ROOT%{_mandir}/man1 + +# lib: the bulk of the program -- the scheme stuff and so on +pushd lib + mkdir -p $RPM_BUILD_ROOT%{_datadir}/festival/lib + for f in *.scm festival.el *.ent *.gram *.dtd *.ngrambin speech.properties ; do + install -m 644 $f $RPM_BUILD_ROOT%{_datadir}/festival/lib/ + done + mkdir -p $RPM_BUILD_ROOT%{_datadir}/festival/lib/multisyn/ + install -m 644 multisyn/*.scm $RPM_BUILD_ROOT%{_datadir}/festival/lib/multisyn/ +popd + +# "etc" -- not in the configuration sense, but in the sense of "extra helper +# binaries". +pushd lib/etc + # not arch-specific + mkdir -p $RPM_BUILD_ROOT%{_datadir}/festival/lib/etc + install -m 755 email_filter $RPM_BUILD_ROOT%{_datadir}/festival/lib/etc + # arch-specific + mkdir -p $RPM_BUILD_ROOT%{_libdir}/festival/etc + install -m 755 */audsp $RPM_BUILD_ROOT%{_libdir}/festival/etc +popd + +# the actual /etc. :) +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/festival +# use our version of this file +rm $RPM_BUILD_ROOT%{_datadir}/festival/lib/siteinit.scm +install -m 644 %{SOURCE50} $RPM_BUILD_ROOT%{_sysconfdir}/festival/siteinit.scm +install -m 644 %{SOURCE51} $RPM_BUILD_ROOT%{_sysconfdir}/festival/sitevars.scm + +# copy in the intro.text. It's small and makes (intro) work. in the future, +# we may want include more examples in an examples subpackage +mkdir -p $RPM_BUILD_ROOT%{_datadir}/festival/examples/ +install -m 644 examples/intro.text $RPM_BUILD_ROOT%{_datadir}/festival/examples + + +# header files +mkdir -p $RPM_BUILD_ROOT%{_includedir}/festival +cp -a src/include/* $RPM_BUILD_ROOT%{_includedir}/festival + +# Clean up some junk from the docs tarball. +pushd festdoc-%{docversion}/speech_tools/doc + rm -fr CVS arch_doc/CVS man/CVS speechtools/arch_doc/CVS + rm -f .*_made .speechtools_html .tex_done +popd + +# info pages +mkdir -p $RPM_BUILD_ROOT%{_infodir} +cp -p festdoc-%{docversion}/festival/info/* $RPM_BUILD_ROOT%{_infodir} + + + + + +%files +%doc ACKNOWLEDGMENTS COPYING NEWS README +%doc COPYING.poslex COPYING.cmudict +%dir %{_sysconfdir}/festival +%config(noreplace) %{_sysconfdir}/festival/siteinit.scm +%config(noreplace) %{_sysconfdir}/festival/sitevars.scm +%{_bindir}/festival +%{_bindir}/festival_client +%{_bindir}/festival_server +%{_bindir}/festival_server_control +%{_bindir}/text2wave +%{_bindir}/saytime +%dir %{_datadir}/festival +%dir %{_datadir}/festival/lib +%{_datadir}/festival/lib/*.scm +%{_datadir}/festival/lib/festival.el +%{_datadir}/festival/lib/*.ent +%{_datadir}/festival/lib/*.gram +%{_datadir}/festival/lib/*.dtd +%{_datadir}/festival/lib/*.ngrambin +%{_datadir}/festival/lib/speech.properties +%{_datadir}/festival/lib/dicts +%{_datadir}/festival/lib/etc +%dir %{_datadir}/festival/lib/multisyn +%{_datadir}/festival/lib/multisyn/*.scm +%dir %{_datadir}/festival/examples +%{_datadir}/festival/examples/intro.text +%dir %{_libdir}/festival +%dir %{_libdir}/festival/etc +%{_libdir}/festival/etc/* +%{_mandir}/man1/* + +%files lib +%doc COPYING +%{_libdir}/libFestival.so.* + +%files docs +%doc festdoc-%{docversion}/festival/html/*html +%{_infodir}/* + +%files speechtools-libs +%doc README.speechtools +%{_libdir}/libestbase.so.* +%{_libdir}/libestools.so.* +%{_libdir}/libeststring.so.* + +%files speechtools-utils +%doc README.speechtools +%dir %{_libexecdir}/speech-tools +%{_libexecdir}/speech-tools/* + +%files speechtools-devel +%doc festdoc-%{docversion}/speech_tools +%{_libdir}/libestbase.so +%{_libdir}/libestools.so +%{_libdir}/libeststring.so +%dir %{_includedir}/speech_tools +%{_includedir}/speech_tools/* + +%files -n festvox-kal-diphone +%doc COPYING.kal_diphone +%dir %{_datadir}/festival/lib/voices +%dir %{_datadir}/festival/lib/voices/english +%{_datadir}/festival/lib/voices/english/kal_diphone + +%files -n festvox-ked-diphone +%doc COPYING.ked_diphone +%dir %{_datadir}/festival/lib/voices +%dir %{_datadir}/festival/lib/voices/english +%{_datadir}/festival/lib/voices/english/ked_diphone + +%files -n festvox-awb-arctic-hts +%doc COPYING.nitech_us_awb_arctic_hts COPYING.hts README.htsvoice +%dir %{_datadir}/festival/lib/voices +%dir %{_datadir}/festival/lib/voices/us +%{_datadir}/festival/lib/voices/us/nitech_us_awb_arctic_hts + +%files -n festvox-bdl-arctic-hts +%doc COPYING.nitech_us_bdl_arctic_hts COPYING.hts README.htsvoice +%dir %{_datadir}/festival/lib/voices +%dir %{_datadir}/festival/lib/voices/us +%{_datadir}/festival/lib/voices/us/nitech_us_bdl_arctic_hts + +%files -n festvox-clb-arctic-hts +%doc COPYING.nitech_us_clb_arctic_hts COPYING.hts README.htsvoice +%dir %{_datadir}/festival/lib/voices +%dir %{_datadir}/festival/lib/voices/us +%{_datadir}/festival/lib/voices/us/nitech_us_clb_arctic_hts + +%files -n festvox-jmk-arctic-hts +%doc COPYING.nitech_us_jmk_arctic_hts COPYING.hts README.htsvoice +%dir %{_datadir}/festival/lib/voices +%dir %{_datadir}/festival/lib/voices/us +%{_datadir}/festival/lib/voices/us/nitech_us_jmk_arctic_hts + +%files -n festvox-rms-arctic-hts +%doc COPYING.nitech_us_rms_arctic_hts COPYING.hts README.htsvoice +%dir %{_datadir}/festival/lib/voices +%dir %{_datadir}/festival/lib/voices/us +%{_datadir}/festival/lib/voices/us/nitech_us_rms_arctic_hts + +%files -n festvox-slt-arctic-hts +%doc COPYING.nitech_us_slt_arctic_hts COPYING.hts README.htsvoice +%dir %{_datadir}/festival/lib/voices +%dir %{_datadir}/festival/lib/voices/us +%{_datadir}/festival/lib/voices/us/nitech_us_slt_arctic_hts + +%files -n hispavoces-pal-diphone +%doc COPYING.hispavoces +%dir %{_datadir}/festival/lib/voices +%dir %{_datadir}/festival/lib/voices/es +%dir %{_datadir}/festival/lib/voices/es/JuntaDeAndalucia_es_pa_diphone/ +%{_datadir}/festival/lib/voices/es/JuntaDeAndalucia_es_pa_diphone/* + +%files -n hispavoces-sfl-diphone +%doc COPYING.hispavoces +%dir %{_datadir}/festival/lib/voices +%dir %{_datadir}/festival/lib/voices/es +%dir %{_datadir}/festival/lib/voices/es/JuntaDeAndalucia_es_sf_diphone/ +%{_datadir}/festival/lib/voices/es/JuntaDeAndalucia_es_sf_diphone/* + +%files devel +%doc COPYING +%{_libdir}/libFestival.so +%dir %{_includedir}/festival +%{_includedir}/festival/* + + +%changelog +* Thu Jul 25 2019 Fedora Release Engineering - 1.96-41 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 1.96-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jul 31 2018 Florian Weimer - 1.96-39 +- Rebuild with fixed binutils + +* Fri Jul 13 2018 Fedora Release Engineering - 1.96-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 1.96-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 31 2018 Than Ngo - 1.96-36 +- add BR on texi2html instead tetex, minimal tex BR +- fix FTBS with gcc7 + +* Wed Aug 02 2017 Fedora Release Engineering - 1.96-35 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.96-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 1.96-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Feb 03 2016 Fedora Release Engineering - 1.96-32 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 1.96-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat May 02 2015 Kalev Lember - 1.96-30 +- Rebuilt for GCC 5 C++11 ABI change + +* Sat Aug 16 2014 Fedora Release Engineering - 1.96-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 1.96-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon May 12 2014 Jaromir Capik - 1.96-27 +- Fixing format security flaws (#1037060) + +* Sat Aug 03 2013 Fedora Release Engineering - 1.96-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sat Mar 02 2013 Bruno Wolff III - 1.96-25 +- Fix typo in server script - bz 614200 + +* Thu Feb 07 2013 Jon Ciesla - 1.96-24 +- Minor Merge review fixes, BZ 225748. + +* Mon Jan 7 2013 Matthias Clasen - 1.96-23 +- Add tighter inter-subpackage deps (recommended by rpmdiff) + +* Mon Jan 7 2013 Matthias Clasen - 1.96-22 +- Fix directory ownership for /usr/share/festival/lib/voices/es + +* Thu Jul 19 2012 Fedora Release Engineering - 1.96-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Feb 25 2012 Bruno Wolff III - 1.96-20 +- Fix to build with gcc 4.7 + +* Fri Jan 13 2012 Fedora Release Engineering - 1.96-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Feb 22 2011 Tim Niemueller - 1.96-18 +- Fix install paths of speech_tools includes (rhbz #242607) + +* Tue Feb 08 2011 Fedora Release Engineering - 1.96-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Sep 29 2009 Matthias Clasen - 1.96-16 +- Add native pulseaudio support (#471047) + +* Thu Sep 10 2009 Bernie Innocenti - 1.96-15 +- Disable esd support (resolves: rhbz#492982) + +* Wed Jul 29 2009 Matthias Clasen - 1.96-14 +- Rebuild + +* Fri Jul 24 2009 Fedora Release Engineering - 1.96-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Sat Apr 18 2009 Matthias Clasen - 1.96-12 +- Add Spanish voices from the guadalinex project, in the + hispavoces-pal-diphone and hispavoces-sfl-diphone subpackages + (#496011) + +* Tue Mar 24 2009 Jesse Keating - 1.96-11 +- Drop the explicit dep on festival-voice, as it is redundant and + causes problems with multiple providers + +* Thu Feb 26 2009 Matthias Clasen 1.96-10 +- Fix build with gcc 4.4 + +* Tue Feb 24 2009 Matthias Clasen 1.96-9 +- Make -docs and all the festvox subpackages noarch + +* Tue Feb 24 2009 Fedora Release Engineering - 1.96-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Nov 23 2008 Matthias Clasen - 1.96-7 +- Tweak summaries + +* Mon Oct 27 2008 Ray Strode - 1.96-6 +- interoperate with other apps by using pacat for audio output + (bug 467531) + +* Fri Jul 18 2008 Tom "spot" Callaway - 1.96-5 +- fix license tag + +* Fri Feb 22 2008 Matthias Clasen - 1.96-4 +- Fix the build with gcc 4.3 + +* Mon Feb 18 2008 Fedora Release Engineering - 1.96-3 +- Autorebuild for GCC 4.3 + +* Wed Nov 7 2007 Stepan Kasal 1.96-2 +- fix a typo in a summary and in festival-1.96-nitech-proclaimvoice.patch +- Resolves: #239216 + +* Tue Mar 20 2007 Ray Strode 1.96-1 +- rebuild + +* Mon Mar 19 2007 David Zeuthen 1.96-0.11 +- Forgot to add the .scm files + +* Mon Mar 19 2007 David Zeuthen 1.96-0.10 +- Update to Matthew Miller's much improved package (#232105) +- Move the buildroot patch around + +* Sun Mar 18 2007 Matthew Miller 1.96-0.9 +- fix the library link patch to use -lncurses instead of -ltinfo -- + the later is all that's really needed, but the former works on older + distros too. + +* Fri Mar 16 2007 Matthew Miller 1.96-0.8 +- festival-devel depends on the libraries package, not base festival. this + raises an multilib question: need to obsolete festival.i386 on x86_64. + Right now, there's no mechanism for doing that. Fortunately, all the + changes in packaging happen to make it so that the current version doesn't + conflict with the old release, so one will get unused cruft but not + breakage when upgrading. +- Bite teh proverbial bullet and make libFestival build shared. +- update speech-tools soname patch to work in the more general case needed + by the festival main build +- make said shared-lib a subpackage to avoid multiarching the whole thing +- split festival-devel and speechutils-devel in anticipation of future + plan of actually decoupling these packages. +- note that rpmlint complains about "missing" deps on the devel packages. it + should be fixed to recognize requiring a -lib/libs package is sufficent or + better. +- add saytime script. Because, really, what else is this package *for*? +- add the intro.text so (intro) works. 196 more bytes won't kill us. :) +- remove $PATH from LD_LIBRARY_PATH used in build. (What the heck?) +- add defattr to all subpackages. I don't think it's strictly necessary + since putting it in the first package seems sufficient, but that's + probably not behavior to count on. +- make descriptions and summaries use more consistant language + +* Thu Mar 15 2007 Matthew Miller 1.96-0.7 +- Upstream baseurl now includes version. (Thanks Alan Black @ cmu) +- Update siteinit patch to also incorporate sitevars +- Add sitevars as a config file +- Ship our own siteinit and sitevars as sources +- In default sitevars, reference /usr/local/share/festival/lib as another + place to look for voices (it's okay if that doesn't exist). Hopefully, + this will encourage people who want to install non-RPM-packaged voices to + keep from doing it in /usr/share. +- Fix wrong references to slt voice in other nitech voices +- Fix wrongly commented-out (require 'f2bf0lr) in awb, clb, and rms voices. +- Stop untarring source files and use the setup macro properly. +- Get rid of silly DATA.TMP directories for installing voices and + dictionaries. +- Stop making ../speechtools link. Currently solved by patching to look + in the current directory; could also do this by moving everything up + a directory. +- TODO: festival-buildroot.patch could stand to be updated. May not + even be needed anymore. +- Drop the 8k versions of the diphone voices, since there's not really + any point. If you want smaller, use one of the arctic_hts voices + instead. And overall, this saves us about 4.5M. + +* Wed Mar 14 2007 Matthew Miller 1.96-0.6 +- Fix copy-paste error in JMK description (thanks Matthias Clasen) +- Remove "nitech-us-" from the names of those voice packages to make the + package names shorter. (This will also be more convenient if we switch to + the cmu versions in the future.) +- made aliases so old cmu_us_*_arctic_hts voice names still work. +- Look for /etc/festival/siteinit.scm (and move siteinit.scm there!) +- Mark siteinit.scm as a config file +- Remove some non-useful stuff from speech-tools-utils. +- Move main dir from /usr/share/festival to /usr/share/festival/lib at + request of upstream. Also, we can drop the FHS (well, "fsstnd" -- it's + old) patch and just pass FTLIBDIR to make. Which, hey, we were already + doing. Yay redundancy. +- clean up CFLAGS and CXXFLAGS. "-fpermissive" was hiding bad stuff. +- update speech tools with patch from AWB to fix 64-bit build issue + with EST_DProbDist +- there's still some compiler warnings which should be addressed upstream. +- The nitech hts voices don't properly proclaim_voice, making them not + show up for gnome-speech and thus making orca crash. See details in the + comments in bug #232105. + +* Tue Mar 13 2007 Matthew Miller 1.96-0.5 +- use festvox- instead of festival-voice for voice packages -- matches + upstream tarballs, and is shorter. Also, use shorter form of + the date-based version. +- get the README.htsvoice from the nitech voices -- it contains + license info. +- build (but don't enable by default) ESD support in speech-tools (bug + #198908) +- fix coding error noted in bug #162137 -- need to push this upstream. +- link speech tools libraries with -lm, -ltermcap, -lesd and with themselves + (bug #198190, partially) +- holy sheesh. Use g++ for CXX, not gcc. Fixes bug #198190 completely. + +* Tue Mar 13 2007 Matthew Miller 1.96-0.4 +- subpackages! Split out speech-tools, docs, voices. +- long descriptions for the individual voices, carefully gathered from + readmes and web sites. +- ooh. replace cmu_hts voices with the updated versions from upstream + . Two new voices, and updated versions of + the others. (The voices packaged at festvox.org are apparently based on + older versions of these, which in turn are from the CMU upstream.) +- TODO: make aliases for the cmu voices. +- arguably, voices should be made in to their own src.rpms. They don't need + anything from here to build. That's for a future version. (At that time, + the gigantic multisyn voices could be added.) The CMU dict needs festival + installed to build, but I don't think it needs the source, so dicts could + be subpackages too. And the docs are also a good candidate for separation. + speech-tools, though, is incestuously used in the festival build process + and I think it makes sense to keep that bundled. +- TODO: check through the speechtools-utils for what should actually be + packaged; fix the include path for siod (and anything else that needs it). +- TODO: package festival.el so it just works with emacs. +- TODO: reinvent festival_server_control as a proper init script +- TODO: put the festival server in sbin, maybe? +- Another question: should we drop the 8k diphone voices? Any point? +- Changed "X11-like" to "MIT-style" (which is what X11 is) to make rpmlint + happy. +- make %%{festivalversion} macro to deal with all of the changes to version + in subpackages. Kludgy, but there's RPM for you. + +* Tue Mar 13 2007 Matthew Miller 1.96-0.3 +- oh! The "etc-path" is important after all. Map that into + /usr/lib[arch]/festival via a kludge. +- make cmu_us_slt_arctic_hts the default voice, in preparation for + splitting the voice packages. (thankfully, there's already a fallback + mechanism -- cool!) + +* Mon Mar 12 2007 Matthew Miller 1.96-0.2 +- clean up accidental backup file left in updated awb_arctic_hts + tarball +- remove /usr/share/festival/etc (see bug #228315) +- move unpackage voices to the prep section where it belongs +- other minor spec file readability changes +- "make install" for this package is, um, "interesting". It seems + geared for local user-level builds. So, rather than doing that and + then patching it up, do the right parts by hand as necessary. (The + previous version of the spec file did a convoluted mix of both.) +- don't install static libs. +- took out the massive hack that munges EST_*.h to speech_tools/EST_*.h in + the installed header files -- programs should instead use + -I/usr/include/speech_tools, shouldn't they? Put this back if I'm wrong. +- TODO -- autogenerated speech_tools docs +- festvox_ellpc11k.tar.gz, the spanish voice, wasn't getting installed anyway + due to a license question. Since it's also gone upstream, removing. + +* Fri Mar 09 2007 Matthew Miller 1.96-0.1 +- Preliminary update to 1.96 +- Update to new cmu_us_*_arctic files -- they're changed upstream, + although they don't appear to be versioned. Awesome. The current + versions are those found in the same directory with the 1.96 files. +- ditto festlex_CMU.tar.gz +- add macro for speechtoolsversion +- minor update to festival-1.96-american.patch. +- update shared build patch and rename to make more obvious that + it applies to the speechtools portion of the package. +- gcc 4 build patches now upstream. +- localhost-connections patch now upstream. +- note that festvox_ellpc11k.tar.gz and festvox_kallpc8k.tar.gz are no longer + in the directory tree upstream; drop? + +* Fri Jan 19 2007 Miroslav Lichvar - 1.95-6 +- link with ncurses +- add dist tag +- make scriptlets safer + +* Wed Jul 12 2006 Jesse Keating - 1.95-5.2.1 +- rebuild + +* Fri Feb 10 2006 Jesse Keating - 1.95-5.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 1.95-5.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Sun Jan 22 2006 Ray Strode - 1.95-5 +- get gnopernicus working again. Patch from + Fernando Herrera (bug 178312) +- add a lot of compiler flags and random cruft to get + festival to build with gcc 4.1 + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Oct 10 2005 Florian La Roche +- another try to get it to compile again + +* Tue Apr 28 2005 - 1.95-3 +- require info packages so the post does not fail +- remove /usr/bin/VCLocalRule from buildroot since it is + an extranious file that does not need to be installed + +* Wed Apr 27 2005 Miloslav Trmac - 1.95-2 +- Fix build with gcc 4 (#156132) +- Require /sbin/install-info for scriptlets (#155698) +- Don't ship %%{_bindir}/VCLocalRules (#75645) + +* Fri Feb 25 2005 - 1.95-1 +- patch from Matthew Miller to update to 1.95. Full changelog below + +* Mon Feb 7 2005 Matthew Miller 1.95-0.mattdm8 +- put speech-tools binaries in /usr/libexec/speech-tools so as to not + clutter /usr/bin. Another approach would be to make speech-tools a + separate package and to make these utilities a subpackage of that. +- macro-ize /usr/bin, /usr/lib, /usr/include + +* Sun Feb 6 2005 Matthew Miller 1.95-0.mattdm6 +- worked on this some more +- made actually work -- put back rest of fsstnd patch which I had broken +- made kludge for lack of sonames in shared libraries -- I think I did the + right thing +- put back american as the default -- british dicts are non-free. + +* Wed Jan 5 2005 Matthew Miller 1.95-0.mattdm1 +- preliminary update to 1.95 beta +- add really nice CMU_ARCTIC HTS voices, which is the whole point of wanting + to do this. (They have a free license.) +- switch to festvox.org north american upstream urls +- keep old doc files -- there's no new ones yet. +- add comment to specfile about reason for lack of OALD (British) voices -- + they've got a more restrictive license. +- change license to "X11-style", because that's how they describe it. +- remove exclusivearch. I dunno if this builds on other archs, but I + also don't know why it wouldn't. +- fancier buildroot string, 'cause hey, why not. +- more "datadir" macros +- remove most of Patch0 (fsstnd) -- can be done by setting variables instead. + there's some bits in speechtools still, though +- update Patch3 (shared-build) +- don't apply patches 20 and 21 -- no longer needed. +- disable adding "FreeBSD" and "OpenBSD" to the dictionary for now. Probably + a whole list of geek words should be added. Also, the patch was applied + in an icky kludgy way. + +* Thu Jul 29 2004 Miloslav Trmac - 1.4.2-25 +- Update for gcc 3.4 + +* Wed Jul 28 2004 Miloslav Trmac - 1.4.2-24 +- Use shared libraries to reduce package size +- Don't ship patch backup files + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Tue May 4 2004 Jonathan Blandford 1.4.2-21 +- Remove the spanish voices until we get clarification on the license + +* Sat Apr 10 2004 Warren Togami +- BR libtermcap-devel #104722 + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Mon Aug 25 2003 Bill Nottingham 1.4.2-19 +- clean up buildroot references (#75643, #77908, #102985) +- remove some extraneous scripts +- fix build with gcc-3.3 + +* Thu Jun 12 2003 Elliot Lee 1.4.2-17 +- Rebuild + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Thu Jan 9 2003 Tim Powers 1.4.2-15 +- redirect install-info spewage + +* Tue Jan 7 2003 Jens Petersen 1.4.2-14 +- put info files in infodir +- add post and postun script to install and uninstall info dir file entry +- drop postscript and info files from docs + +* Wed Dec 11 2002 Tim Powers 1.4.2-13 +- rebuild + +* Thu Aug 15 2002 Bernhard Rosenkraenzer 1.4.2-12 +- Adapt to current libstdc++ + +* Tue Jul 23 2002 Tim Powers 1.4.2-10 +- build using gcc-3.2-0.1 + +* Wed Jul 3 2002 Trond Eivind Glomsrød 1.4.2-9 +- Add some missing helpprograms (# 67698) + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Mon Jun 10 2002 Trond Eivind Glomsrød 1.4.2-7 +- Fix some rpmlint errors + +* Mon Jun 10 2002 Bernhard Rosenkraenzer 1.4.2-6 +- Fix ISO C++ compliance + +* Mon Mar 18 2002 Tim Powers +- rebuilt + +* Thu Mar 14 2002 Trond Eivind Glomsrød 1.4.2-2 +- Get rid of CVS directiories in doc dir +- Fix broken symlinks for components from speech_tools + +* Wed Mar 6 2002 Trond Eivind Glomsrød +- 1.4.2 +- Lots of fixes to make it build, more needed +- Cleanups +- Update URL +- Fix docs inclusion +- Drop prefix +- Use %%{_tmppath} + +* Wed Aug 2 2000 Bernhard Rosenkraenzer +- Add defattr (Bug #15033) + +* Tue Jul 25 2000 Bernhard Rosenkraenzer +- fix build on current 7.0 + +* Mon Jul 17 2000 Bernhard Rosenkraenzer +- fix build on current 7.0 + +* Thu Jul 6 2000 Bernhard Rosenkraenzer +- FHSify + +* Mon Jun 19 2000 Bernhard Rosenkraenzer +- Fix build on non-x86 + +* Sun Apr 22 2000 Bernhard Rosenkraenzer +- initial packaging diff --git a/festival_buildroot.patch b/festival_buildroot.patch new file mode 100644 index 0000000..527f969 --- /dev/null +++ b/festival_buildroot.patch @@ -0,0 +1,105 @@ +--- festival/src/scripts/festival_server.sh.foo 2003-08-25 23:47:26.000000000 -0400 ++++ festival/src/scripts/festival_server.sh 2003-08-25 23:48:36.000000000 -0400 +@@ -36,11 +36,6 @@ + # # + ########################################################################### + +-TOP=__TOP__ +-EST=__EST__ +- +-#__SHARED_SETUP__ +- + useage() + { + cat <$@ +- @echo "\"true\" ; exec "$(FESTIVAL_HOME)/bin/festival --script '$$0 $$*' >>$@ ++ @echo "\"true\" ; exec "/usr/bin/festival --script '$$0 $$*' >>$@ + cat $< >>$@ + chmod +x $@ + +--- festival/speech_tools/scripts/build_docbook_index.prl.foo 2003-08-25 23:37:59.000000000 -0400 ++++ festival/speech_tools/scripts/build_docbook_index.prl 2003-08-25 23:38:54.000000000 -0400 +@@ -35,8 +35,6 @@ + END + } + +-#__SHARED_SETUP__ +- + $title=''; + $mode='debug'; + $verbose=0; +--- festival/speech_tools/scripts/cxx_to_docbook.prl.foo 2003-08-25 23:38:58.000000000 -0400 ++++ festival/speech_tools/scripts/cxx_to_docbook.prl 2003-08-25 23:39:02.000000000 -0400 +@@ -37,8 +37,6 @@ + END + } + +-#__SHARED_SETUP__ +- + $level=0; + $title=undef; + $chapter='chapter'; +--- festival/speech_tools/scripts/pm.prl.foo 2003-08-25 23:45:19.000000000 -0400 ++++ festival/speech_tools/scripts/pm.prl 2003-08-25 23:45:28.000000000 -0400 +@@ -56,8 +56,6 @@ + END + } + +-#__SHARED_SETUP__ +- + while ($#ARGV>=0) + { + if ($ARGV[0] eq "-f") +--- festival/speech_tools/scripts/raw_to_xgraph.prl.foo 2003-08-25 23:45:35.000000000 -0400 ++++ festival/speech_tools/scripts/raw_to_xgraph.prl 2003-08-25 23:45:40.000000000 -0400 +@@ -56,8 +56,6 @@ + END + } + +-#__SHARED_SETUP__ +- + $stream = STDIN; + $sample_rate = 1; + +--- festival/speech_tools/scripts/resynth.sh.foo 2003-08-25 23:45:48.000000000 -0400 ++++ festival/speech_tools/scripts/resynth.sh 2003-08-25 23:45:57.000000000 -0400 +@@ -63,8 +63,6 @@ + exit $1 + } + +-#__SHARED_SETUP__ +- + invert=false + voiced='' + pre=0 +--- festival/speech_tools/scripts/tex_to_images.prl.foo 2003-08-25 23:46:20.000000000 -0400 ++++ festival/speech_tools/scripts/tex_to_images.prl 2003-08-25 23:46:41.000000000 -0400 +@@ -79,8 +79,6 @@ + exit($_[0]); + } + +-#__SHARED_SETUP__ +- + $out_pattern="image_NNN.FFF"; + $scale=3; + $over=2; diff --git a/gcc43.patch b/gcc43.patch new file mode 100644 index 0000000..1257eef --- /dev/null +++ b/gcc43.patch @@ -0,0 +1,36 @@ +diff -up festival/src/modules/Text/text_modes.cc.gcc43 festival/src/modules/Text/text_modes.cc +--- festival/src/modules/Text/text_modes.cc.gcc43 2008-02-22 21:50:33.000000000 -0500 ++++ festival/src/modules/Text/text_modes.cc 2008-02-22 21:50:41.000000000 -0500 +@@ -59,8 +59,8 @@ static void um_apply_filter(const EST_St + void tts_file_user_mode(LISP filename, LISP params) + { + +- volatile EST_String tmpname = make_tmp_filename(); +- volatile EST_String inname = get_c_string(filename); ++ EST_String tmpname = make_tmp_filename(); ++ EST_String inname = get_c_string(filename); + volatile EST_String filter; + volatile EST_TokenStream ts; + volatile LISP func; +diff -up festival/speech_tools/base_class/EST_TSimpleVector.cc.gcc43 festival/speech_tools/base_class/EST_TSimpleVector.cc +--- festival/speech_tools/base_class/EST_TSimpleVector.cc.gcc43 2006-07-06 08:57:18.000000000 -0400 ++++ festival/speech_tools/base_class/EST_TSimpleVector.cc 2008-02-22 21:43:03.000000000 -0500 +@@ -43,6 +43,7 @@ + #include "EST_TSimpleVector.h" + #include "EST_matrix_support.h" + #include ++#include + #include "EST_cutils.h" + + template void EST_TSimpleVector::copy(const EST_TSimpleVector &a) +diff -up festival/speech_tools/base_class/EST_TSimpleMatrix.cc.gcc43 festival/speech_tools/base_class/EST_TSimpleMatrix.cc +--- festival/speech_tools/base_class/EST_TSimpleMatrix.cc.gcc43 2004-09-30 08:53:35.000000000 -0400 ++++ festival/speech_tools/base_class/EST_TSimpleMatrix.cc 2008-02-22 21:43:03.000000000 -0500 +@@ -44,6 +44,7 @@ + #include "EST_TVector.h" + #include + #include ++#include + #include "EST_cutils.h" + + template diff --git a/gcc44.patch b/gcc44.patch new file mode 100644 index 0000000..ea27595 --- /dev/null +++ b/gcc44.patch @@ -0,0 +1,22 @@ +diff -up festival/speech_tools/speech_class/EST_wave_io.cc.gcc44 festival/speech_tools/speech_class/EST_wave_io.cc +--- festival/speech_tools/speech_class/EST_wave_io.cc.gcc44 2009-02-26 17:26:58.672421948 -0500 ++++ festival/speech_tools/speech_class/EST_wave_io.cc 2009-02-26 17:50:02.065661124 -0500 +@@ -68,7 +68,7 @@ static const char *NIST_END_SIG = "end_h + + int nist_get_param_int(const char *hdr, const char *field, int def_val) + { +- char *p; ++ const char *p; + int val; + + if (((p=strstr(hdr,field)) != NULL) && +@@ -84,7 +84,8 @@ int nist_get_param_int(const char *hdr, + + char *nist_get_param_str(const char *hdr, const char *field, const char *def_val) + { +- char *p,*val; ++ const char *p; ++ char *val; + int size; + + if (((p=strstr(hdr,field)) != NULL) && diff --git a/no-shared-data.patch b/no-shared-data.patch new file mode 100644 index 0000000..e495637 --- /dev/null +++ b/no-shared-data.patch @@ -0,0 +1,20 @@ +diff -up festival/speech_tools/config/compilers/gcc_defaults.mak.no-shared-data festival/speech_tools/config/compilers/gcc_defaults.mak +--- festival/speech_tools/config/compilers/gcc_defaults.mak.no-shared-data 2008-02-22 13:45:50.000000000 -0500 ++++ festival/speech_tools/config/compilers/gcc_defaults.mak 2008-02-22 13:46:24.000000000 -0500 +@@ -73,12 +73,12 @@ PROFILE_gprof_CCFLAGS = -pg + PROFILE_gprof_CXXFLAGS = -pg + PROFILE_gprof_LINKFLAGS = -pg + +-SHARED_CCFLAGS = -fPIC -fno-shared-data +-SHARED_CXXFLAGS = -fPIC -fno-shared-data +-SHARED_LINKFLAGS = -fno-shared-data ++SHARED_CCFLAGS = -fPIC ++SHARED_CXXFLAGS = -fPIC ++SHARED_LINKFLAGS = + + ifndef GCC_MAKE_SHARED_LIB +- MAKE_SHARED_LIB = $(CXX) -shared -fno-shared-data -o XXX -Wl,-soname,YYY ++ MAKE_SHARED_LIB = $(CXX) -shared -o XXX -Wl,-soname,YYY + else + MAKE_SHARED_LIB = $(GCC_MAKE_SHARED_LIB) + endif diff --git a/sources b/sources new file mode 100644 index 0000000..7c3aff6 --- /dev/null +++ b/sources @@ -0,0 +1,14 @@ +74915f4ffb13471c7e529ae92b392453 festival-1.96-beta.tar.gz +887e0c7586facb97cfc0114a105763b2 speech_tools-1.2.96-beta.tar.gz +742c266e4c4978fae2b5c1bf6f549eb4 festlex_POSLEX.tar.gz +66d39c6f7b8e9d9beade051312365020 festlex_CMU.tar.gz +abbd12e1d04ecdcae07f1d0044f3a947 festvox_kallpc16k.tar.gz +35d4a2f377d05913ddae61db542afca1 festvox_kedlpc16k.tar.gz +faabc25a6c1b11854c41adc257c47bdb festdoc-1.4.2.tar.gz +907c3cf44dbf42aa1489a910e0db3204 festvox_nitech_us_awb_arctic_hts.tar.bz2 +5a3101bb0df8962e1f5b98017941244c festvox_nitech_us_bdl_arctic_hts.tar.bz2 +5a48d97d2531b977c130ca6dba1ed558 festvox_nitech_us_clb_arctic_hts.tar.bz2 +f45ba3678a020df667f7e6a606a375c1 festvox_nitech_us_jmk_arctic_hts.tar.bz2 +8ee4de08602a45bad47f93e045cdd242 festvox_nitech_us_rms_arctic_hts.tar.bz2 +3b3cac2a15f423ad55ff5d27291de538 festvox_nitech_us_slt_arctic_hts.tar.bz2 +ebae47b2020f7b3e0a62b9ce7eeebb66 festival-spanish-voices_1.0.0.orig.tar.gz