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/README.en.md b/README.en.md deleted file mode 100644 index 9f7cba6..0000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# festival - -#### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md deleted file mode 100644 index b91f42b..0000000 --- a/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# festival - -#### 介绍 -{**以下是码云平台说明,您可以替换此简介** -码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 码云特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/festdoc-1.4.2.tar.gz b/festdoc-1.4.2.tar.gz new file mode 100644 index 0000000..3355ee2 Binary files /dev/null and b/festdoc-1.4.2.tar.gz differ 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-beta.tar.gz b/festival-1.96-beta.tar.gz new file mode 100644 index 0000000..1bf80da Binary files /dev/null and b/festival-1.96-beta.tar.gz differ 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-spanish-voices_1.0.0.orig.tar.gz b/festival-spanish-voices_1.0.0.orig.tar.gz new file mode 100644 index 0000000..21fda49 Binary files /dev/null and b/festival-spanish-voices_1.0.0.orig.tar.gz differ 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.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..889a30a --- /dev/null +++ b/festival.spec @@ -0,0 +1,357 @@ +Name: festival +Version: 1.96 +Release: 40 +Summary: Festival Speech Synthesis System +License: MIT and GPL+ and TCL +URL: http://www.cstr.ed.ac.uk/projects/festival/ + +%define docversion 1.4.2 +%define speechtoolsversion 1.2.96 +%define baseURL http://festvox.org/packed/festival/%{version} +%define diphoneversion 0.19990610 +%define nitechbaseURL http://hts.sp.nitech.ac.jp/?plugin=attach&refer=Download&openfile= +%define nitechhtsversion 0.20061229 +%define hispavocesversion 1.0.0 + +Source0: %{baseURL}/festival-%{version}-beta.tar.gz +Source1: %{baseURL}/speech_tools-%{speechtoolsversion}-beta.tar.gz +Source2: http://festvox.org/packed/festival/%{docversion}/festdoc-%{docversion}.tar.gz +Source50: festival-1.96-0.7-fedora-siteinit.scm +Source51: festival-1.96-0.7-fedora-sitevars.scm +Source100: %{baseURL}/festlex_POSLEX.tar.gz +Source101: %{baseURL}/festlex_CMU.tar.gz +Source200: %{baseURL}/festvox_kallpc16k.tar.gz +Source202: %{baseURL}/festvox_kedlpc16k.tar.gz +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 +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 + +Patch1: festival-1.96-nitech-american.patch +Patch2: festival_buildroot.patch +Patch3: festival-1.96-speechtools-shared-build.patch +Patch5: festival-1.96-speechtools-rateconvtrivialbug.patch +Patch6: festival-1.96-speechtools-linklibswithotherlibs.patch +Patch7: festival-1.96-speechtools-ohjeezcxxisnotgcc.patch +Patch8: festival-1.96-etcsiteinit.patch +Patch9: festival-1.96-alias_cmu_to_nitech.patch +Patch10: festival-1.96-findspeechtools.patch +Patch11: festival-1.96-main-shared-build.patch +Patch12: festival-1.96-bettersonamehack.patch +Patch20: festival-1.96-speechtools-1.2.96-beta+awb.patch +Patch31: festival-1.96-kludge-etcpath-into-libarch.patch +Patch60: festival-1.96-format-security.patch +Patch90: festival-1.96-nitech-proclaimvoice.patch +Patch91: festival-1.96-nitech-fixmissingrequire.patch +Patch92: festival-1.96-nitech-sltreferences.patch +Patch93: gcc43.patch +Patch94: festival-speech-tools-pulse.patch +Patch95: gcc44.patch +Patch96: festival.gcc47.patch +Patch97: no-shared-data.patch +Patch98: festival-1.96-server-script-typo.patch +Patch99: festival-gcc7.patch + +BuildRequires: gcc gcc-c++ pulseaudio-libs-devel texi2html ncurses-devel +Requires(post): /sbin/ldconfig +Requires(postun): /sbin/ldconfig + +Provides: %{name}-lib = %{version}-%{release} +Provides: %{name}-speechtools-libs = %{speechtoolsversion}-%{release} +Provides: %{name}-speechtools-utils = %{speechtoolsversion}-%{release} +Provides: festvox-kal-diphone = %{diphoneversion}-%{release} +Provides: festvox-ked-diphone = %{diphoneversion}-%{release} +Provides: festvox-awb-arctic-hts = %{nitechhtsversion}-%{release} +Provides: festvox-bdl-arctic-hts = %{nitechhtsversion}-%{release} +Provides: festvox-clb-arctic-hts = %{nitechhtsversion}-%{release} +Provides: festvox-jmk-arctic-hts = %{nitechhtsversion}-%{release} +Provides: festvox-rms-arctic-hts = %{nitechhtsversion}-%{release} +Provides: festvox-slt-arctic-hts = %{nitechhtsversion}-%{release} +Provides: hispavoces-pal-diphone = %{hispavocesversion}-%{release} +Provides: hispavoces-sfl-diphone = %{hispavocesversion}-%{release} +Provides: festival-voice festvox-kallpc16k festvox-kedlpc16k +Obsoletes: %{name}-lib < %{version}-%{release} +Obsoletes: %{name}-speechtools-libs < %{speechtoolsversion}-%{release} +Obsoletes: %{name}-speechtools-utils < %{speechtoolsversion}-%{release} +Obsoletes: festvox-kal-diphone < %{diphoneversion}-%{release} +Obsoletes: festvox-ked-diphone < %{diphoneversion}-%{release} +Obsoletes: festvox-awb-arctic-hts < %{nitechhtsversion}-%{release} +Obsoletes: festvox-bdl-arctic-hts < %{nitechhtsversion}-%{release} +Obsoletes: festvox-clb-arctic-hts < %{nitechhtsversion}-%{release} +Obsoletes: festvox-jmk-arctic-hts < %{nitechhtsversion}-%{release} +Obsoletes: festvox-rms-arctic-hts < %{nitechhtsversion}-%{release} +Obsoletes: festvox-slt-arctic-hts < %{nitechhtsversion}-%{release} +Obsoletes: hispavoces-pal-diphone < %{hispavocesversion}-%{release} +Obsoletes: hispavoces-sfl-diphone < %{hispavocesversion}-%{release} + +%description +Festival offers a general framework for building speech synthesis systems +as well as including examples of various modules. As a whole it offers full +text to speech through a number APIs: from shell level, though a Scheme +command interpreter, as a C++ library, from Java, and an Emacs interface. + +%package devel +Summary: Header files for festival +Version: %{version} +Requires: %{name} = %{version}-%{release} + +Provides: %{name}-speechtools-devel = %{speechtoolsversion}-%{release} +Obsoletes: %{name}-speechtools-devel < %{speechtoolsversion}-%{release} + +%description devel +Header files for festival. + +%package help +Summary: Documents for %{name} +Buildarch: noarch +Requires: man info +Requires(post): /sbin/install-info +Requires(postun): /sbin/install-info + +Provides: %{name}-docs = %{docversion}-%{release} +Obsoletes: %{name}-docs < %{docversion}-%{release} + +%description help +Man pages and other related documents for %{name}. + +%prep +%setup -q -n festival -a 1 +%setup -q -n festival -D -T -a 2 + +[ -x speech_tools/base_class/string/EST_strcasecmp.c ] || exit 1 +chmod -x speech_tools/base_class/string/EST_strcasecmp.c + +%setup -q -n festival -D -T -b 100 +%setup -q -n festival -D -T -b 101 +%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 +%patch2 -p1 +%patch3 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +rm -f lib/alias_cmu_to_nitech.scm.cmu2nitech +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch20 -p1 +%patch31 -p1 +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 +%patch90 -p1 +%patch91 -p1 +%patch92 -p1 +%patch93 -p1 +%patch94 -p1 +%patch95 -p1 +%patch96 -p0 +%patch97 -p1 +%patch98 +%patch99 -p1 + +rm festdoc-%{docversion}/speech_tools/doc/index_html.jade +rm festdoc-%{docversion}/speech_tools/doc/tex_stuff.jade +rm festdoc-%{docversion}/speech_tools/doc/examples_gen/error_example_section.sgml + +%build +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/speech_tools/lib +pushd speech_tools + %configure + make \ + CFLAGS="$RPM_OPT_FLAGS -fPIC -fno-strict-aliasing" \ + CXXFLAGS="$RPM_OPT_FLAGS -fPIC -fno-strict-aliasing" +popd + +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/src/lib +export PATH=$(pwd)/bin:$PATH +%configure +make \ + FTLIBDIR="%{_datadir}/festival/lib" \ + CFLAGS="$RPM_OPT_FLAGS -fPIC" \ + CXXFLAGS="$RPM_OPT_FLAGS -fPIC" + +pushd lib/dicts/cmu + make +popd + +%install +pushd speech_tools + make INSTALLED_LIB=%{buildroot}%{_libdir} make_installed_lib_shared + rm %{buildroot}%{_libdir}/*.a + make INSTALLED_BIN=%{buildroot}%{_libexecdir}/speech-tools make_installed_bin_static + + pushd %{buildroot}%{_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=%{buildroot}%{_includedir}/speech_tools/$d install_incs + done + mv %{buildroot}%{_includedir}/speech_tools/EST/*.h \ + %{buildroot}%{_includedir}/speech_tools/ + rmdir %{buildroot}%{_includedir}/speech_tools/EST + mv %{buildroot}%{_includedir}/speech_tools/unix/EST/EST_* \ + %{buildroot}%{_includedir}/speech_tools/unix/ + rmdir %{buildroot}%{_includedir}/speech_tools/unix/EST + mv %{buildroot}%{_includedir}/speech_tools/instantiate/EST/instantiate/EST_* \ + %{buildroot}%{_includedir}/speech_tools/instantiate/ + rm -rf %{buildroot}%{_includedir}/speech_tools/instantiate/EST + mv %{buildroot}%{_includedir}/speech_tools/sigpr/EST/EST_* \ + %{buildroot}%{_includedir}/speech_tools/sigpr + rmdir %{buildroot}%{_includedir}/speech_tools/sigpr/EST + mv %{buildroot}%{_includedir}/speech_tools/ling_class/EST/EST_* \ + %{buildroot}%{_includedir}/speech_tools/ling_class + rmdir %{buildroot}%{_includedir}/speech_tools/ling_class/EST + popd + + cp README ../README.speechtools +popd + +TOPDIR=$( pwd ) +pushd lib/dicts + mkdir -p %{buildroot}%{_datadir}/festival/lib/dicts + 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 %{buildroot}%{_datadir}/festival/lib/dicts/ + done + mkdir -p %{buildroot}%{_datadir}/festival/lib/dicts/cmu + + pushd cmu + 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 %{buildroot}%{_datadir}/festival/lib/dicts/cmu/ + done + popd +popd + +pushd lib/voices + for f in $( find . -name COPYING ); do + n=$( echo $f | sed 's/.*\/\(.*\)\/COPYING/COPYING.\1/' ) + mv $f $OLDPWD/$n + done + cp us/nitech_us_awb_arctic_hts/hts/README.htsvoice $OLDPWD/README.htsvoice + find . -name 'README*' -exec rm {} \; +popd + +cp COPYING.nitech_us_bdl_arctic_hts COPYING.nitech_us_awb_arctic_hts +cp -a lib/voices %{buildroot}%{_datadir}/festival/lib +mkdir -p %{buildroot}%{_datadir}/festival/lib/voices/es/ +cp -a festival-spanish-voices-1.0.0/* %{buildroot}%{_datadir}/festival/lib/voices/es/ +cp %{SOURCE301} . + +make INSTALLED_BIN=%{buildroot}%{_bindir} make_installed_bin_static +install -m 755 bin/text2wave %{buildroot}%{_bindir} +cp -a src/lib/libFestival.so* %{buildroot}%{_libdir} +install -m 755 examples/saytime %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_mandir}/man1 +cp -a doc/*.1 %{buildroot}%{_mandir}/man1 + +pushd lib + mkdir -p %{buildroot}%{_datadir}/festival/lib + for f in *.scm festival.el *.ent *.gram *.dtd *.ngrambin speech.properties ; do + install -m 644 $f %{buildroot}%{_datadir}/festival/lib/ + done + mkdir -p %{buildroot}%{_datadir}/festival/lib/multisyn/ + install -m 644 multisyn/*.scm %{buildroot}%{_datadir}/festival/lib/multisyn/ +popd + +pushd lib/etc + mkdir -p %{buildroot}%{_datadir}/festival/lib/etc + install -m 755 email_filter %{buildroot}%{_datadir}/festival/lib/etc + mkdir -p %{buildroot}%{_libdir}/festival/etc + install -m 755 */audsp %{buildroot}%{_libdir}/festival/etc +popd + +mkdir -p %{buildroot}%{_sysconfdir}/festival +rm %{buildroot}%{_datadir}/festival/lib/siteinit.scm +install -m 644 %{SOURCE50} %{buildroot}%{_sysconfdir}/festival/siteinit.scm +install -m 644 %{SOURCE51} %{buildroot}%{_sysconfdir}/festival/sitevars.scm +mkdir -p %{buildroot}%{_datadir}/festival/examples/ +install -m 644 examples/intro.text %{buildroot}%{_datadir}/festival/examples +mkdir -p %{buildroot}%{_includedir}/festival +cp -a src/include/* %{buildroot}%{_includedir}/festival + +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 + +mkdir -p %{buildroot}%{_infodir} +cp -p festdoc-%{docversion}/festival/info/* %{buildroot}%{_infodir} + +%ldconfig_scriptlets + +%post help +/sbin/install-info %{_infodir}/festival.info.gz %{_infodir}/dir --section "Accessibility" > /dev/null 2>&1 + +%postun help +if [ "$1" = 0 ]; then + /sbin/install-info --delete %{_infodir}/festival.info.gz %{_infodir}/dir --section "Accessibility" > /dev/null 2>&1 +fi + +%files +%defattr(-,root,root) +%doc README README.* +%license COPYING COPYING.* + +%dir %{_sysconfdir}/festival +%config(noreplace) %{_sysconfdir}/festival/siteinit.scm +%config(noreplace) %{_sysconfdir}/festival/sitevars.scm + +%{_bindir}/* +%dir %{_datadir}/festival +%{_datadir}/festival/* + +%{_libdir}/libFestival.so.* +%{_libdir}/libestbase.so.* +%{_libdir}/libestools.so.* +%{_libdir}/libeststring.so.* +%dir %{_libdir}/festival +%{_libdir}/festival/etc/* + +%dir %{_libexecdir}/speech-tools +%{_libexecdir}/speech-tools/* + +%files devel +%defattr(-,root,root) +%doc festdoc-%{docversion}/speech_tools +%{_libdir}/lib*.so +%dir %{_includedir}/festival +%{_includedir}/festival/* +%dir %{_includedir}/speech_tools +%{_includedir}/speech_tools/* + +%files help +%defattr(-,root,root) +%doc ACKNOWLEDGMENTS NEWS +%doc festdoc-%{docversion}/festival/html/*html +%{_infodir}/* +%{_mandir}/man1/* + +%changelog +* Thu Dec 5 2019 openEuler Buildteam - 1.96-40 +- Package init 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/festlex_CMU.tar.gz b/festlex_CMU.tar.gz new file mode 100644 index 0000000..1d69d2e Binary files /dev/null and b/festlex_CMU.tar.gz differ diff --git a/festlex_POSLEX.tar.gz b/festlex_POSLEX.tar.gz new file mode 100644 index 0000000..ab5f563 Binary files /dev/null and b/festlex_POSLEX.tar.gz differ diff --git a/festvox_kallpc16k.tar.gz b/festvox_kallpc16k.tar.gz new file mode 100644 index 0000000..49aa1b0 Binary files /dev/null and b/festvox_kallpc16k.tar.gz differ diff --git a/festvox_kedlpc16k.tar.gz b/festvox_kedlpc16k.tar.gz new file mode 100644 index 0000000..ee774f7 Binary files /dev/null and b/festvox_kedlpc16k.tar.gz differ diff --git a/festvox_nitech_us_awb_arctic_hts.tar.bz2 b/festvox_nitech_us_awb_arctic_hts.tar.bz2 new file mode 100644 index 0000000..caf158c Binary files /dev/null and b/festvox_nitech_us_awb_arctic_hts.tar.bz2 differ diff --git a/festvox_nitech_us_bdl_arctic_hts.tar.bz2 b/festvox_nitech_us_bdl_arctic_hts.tar.bz2 new file mode 100644 index 0000000..4e66680 Binary files /dev/null and b/festvox_nitech_us_bdl_arctic_hts.tar.bz2 differ diff --git a/festvox_nitech_us_clb_arctic_hts.tar.bz2 b/festvox_nitech_us_clb_arctic_hts.tar.bz2 new file mode 100644 index 0000000..e06bcbd Binary files /dev/null and b/festvox_nitech_us_clb_arctic_hts.tar.bz2 differ diff --git a/festvox_nitech_us_jmk_arctic_hts.tar.bz2 b/festvox_nitech_us_jmk_arctic_hts.tar.bz2 new file mode 100644 index 0000000..0b1dcde Binary files /dev/null and b/festvox_nitech_us_jmk_arctic_hts.tar.bz2 differ diff --git a/festvox_nitech_us_rms_arctic_hts.tar.bz2 b/festvox_nitech_us_rms_arctic_hts.tar.bz2 new file mode 100644 index 0000000..bef29be Binary files /dev/null and b/festvox_nitech_us_rms_arctic_hts.tar.bz2 differ diff --git a/festvox_nitech_us_slt_arctic_hts.tar.bz2 b/festvox_nitech_us_slt_arctic_hts.tar.bz2 new file mode 100644 index 0000000..cbfbab4 Binary files /dev/null and b/festvox_nitech_us_slt_arctic_hts.tar.bz2 differ 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/speech_tools-1.2.96-beta.tar.gz b/speech_tools-1.2.96-beta.tar.gz new file mode 100644 index 0000000..43b8095 Binary files /dev/null and b/speech_tools-1.2.96-beta.tar.gz differ