shithub: flite

Download patch

ref: a7ec22a8ea9f6480ae3e7e15710c991f80f79dcd
parent: f15235c1d015f08c9278ac5f5fa6096da716a651
author: Alan W Black <[email protected]>
date: Thu Nov 16 03:19:03 EST 2017

better support for voice feats

--- a/tools/Makefile
+++ b/tools/Makefile
@@ -49,7 +49,7 @@
           make_voice_list wfst2c build_lex clunit_prune \
           a2byte.pl a2short.pl a2int.pl flite_rename_voice \
           make_lang_list make_new_lang_lex flitechecks \
-          add_flite_feats run_flitecheck quantize_params 
+          add_flite_feats make_flite_feats run_flitecheck quantize_params 
 SCM=make_lex.scm make_lts.scm make_cart.scm play_sync.scm \
     make_phoneset.scm make_vallist.scm make_clunits.scm \
     make_didb.scm make_didb2.scm make_f0lr.scm make_lts_wfst.scm \
--- a/tools/VOICE_cg.c
+++ b/tools/VOICE_cg.c
@@ -65,6 +65,9 @@
     /* Things that weren't filled in already. */
     flite_feat_set_string(vox->features,"name","__VOICENAME__");
 
+    /* Voice specific features from ../etc/voice.feats */
+#include "__VOICENAME___voice_feats.c"
+
     /* Lexicon */
     lex = __FLITELEX___init();
     flite_feat_set(vox->features,"lexicon",lexicon_val(lex));
--- a/tools/build_flite
+++ b/tools/build_flite
@@ -382,6 +382,12 @@
                    "."
                    "flite/")'
 
+   touch flite/${FV_VOICENAME}_voice_feats.c
+   if [ -f etc/voice.feats ]
+   then
+      ${FLITEDIR}/tools/make_flite_feats etc/voice.feats >flite/${FV_VOICENAME}_voice_feats.c
+   fi
+   
    if [ "$FV_LANG_TYPE" = "grapheme" ]
    then
       echo cg_convert: converting phoneset table
--- /dev/null
+++ b/tools/make_flite_feats
@@ -1,0 +1,66 @@
+#!/bin/sh
+###########################################################################
+##                                                                       ##
+##                  Language Technologies Institute                      ##
+##                     Carnegie Mellon University                        ##
+##                         Copyright (c) 2017                            ##
+##                        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.                                                      ##
+##                                                                       ##
+##  CARNEGIE MELLON UNIVERSITY 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 CARNEGIE MELLON UNIVERSITY 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.                                                       ##
+##                                                                       ##
+###########################################################################
+##                                                                       ##
+##  Make feats for a voice so that they are in the linked in version     ##
+##                                                                       ##
+##  $FLITEDIR/tools/make_flite_feats ../etc/voice.feats >VOICENAME_voice_feats.c                                                               ##
+##                                                                       ##
+##  ../etc/voice.feats should look something like                        ##
+##                                                                       ##
+##  age 42                                                               ##
+##  gender male                                                          ##
+##  variant Scots                                                        ##
+##                                                                       ##
+##  If ./COPYING exists, the content is added as the feature copyright  ##
+##                                                                       ##
+###########################################################################
+
+export LANG=C
+
+awk '{if (NF > 1) print $0}' $1 | sed 's/"/\\"/g' |
+awk '{printf("flite_feat_set_string(vox->features,\"%s\",\"",$1);
+     for (i=2; i<NF; i++)
+            printf("%s ",$i);
+     printf("%s\");\n",$NF);}'
+
+if [ -f COPYING ]
+then
+   cat COPYING | sed 's/"/\\"/g' |
+   awk 'BEGIN {printf("flite_feat_set_string(vox->features,\"copyright\",\" \\n\"\n");}
+        { printf("\"%s\\n\"\n",$0); }
+        END {printf(");\n");}'
+fi
+
+exit
+