setup_flite 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #!/bin/sh
  2. #####################################################-*-mode:shell-script-*-
  3. ## ##
  4. ## ##
  5. ## Language Technologies Institute ##
  6. ## Carnegie Mellon University ##
  7. ## Copyright (c) 2001-2008 ##
  8. ## All Rights Reserved. ##
  9. ## ##
  10. ## Permission is hereby granted, free of charge, to use and distribute ##
  11. ## this software and its documentation without restriction, including ##
  12. ## without limitation the rights to use, copy, modify, merge, publish, ##
  13. ## distribute, sublicense, and/or sell copies of this work, and to ##
  14. ## permit persons to whom this work is furnished to do so, subject to ##
  15. ## the following conditions: ##
  16. ## 1. The code must retain the above copyright notice, this list of ##
  17. ## conditions and the following disclaimer. ##
  18. ## 2. Any modifications must be clearly marked as such. ##
  19. ## 3. Original authors' names are not deleted. ##
  20. ## 4. The authors' names are not used to endorse or promote products ##
  21. ## derived from this software without specific prior written ##
  22. ## permission. ##
  23. ## ##
  24. ## CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK ##
  25. ## DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ##
  26. ## ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT ##
  27. ## SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE ##
  28. ## FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ##
  29. ## WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ##
  30. ## AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ##
  31. ## ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ##
  32. ## THIS SOFTWARE. ##
  33. ## ##
  34. ###########################################################################
  35. ## ##
  36. ## Setup the current directory for building a FLITE voice from a ##
  37. ## a festvox voice ##
  38. ## ##
  39. ###########################################################################
  40. if [ ! "$ESTDIR" ]
  41. then
  42. echo "environment variable ESTDIR is unset"
  43. echo "set it to your local speech tools directory e.g."
  44. echo ' bash$ export ESTDIR=/home/awb/projects/speech_tools/'
  45. echo or
  46. echo ' csh% setenv ESTDIR /home/awb/projects/speech_tools/'
  47. exit 1
  48. fi
  49. if [ ! "$FLITEDIR" ]
  50. then
  51. echo "environment variable FLITEDIR is unset"
  52. echo "set it to your local festvox directory e.g."
  53. echo ' bash$ export FLITEDIR=/home/awb/projects/flite/'
  54. echo or
  55. echo ' csh% setenv FLITEDIR /home/awb/projects/flite/'
  56. exit 1
  57. fi
  58. if [ ! -d wav ]
  59. then
  60. echo "I'm expecting this directory to contain a festvox voice which"
  61. echo "should at least contain a wav/ directory, but haven't found one "
  62. echo "Are you sure this is the right directory to build in?"
  63. echo -n "Answer y/n? "
  64. read answer
  65. if [ "$answer" != "y" ]
  66. then
  67. echo "setup aborted"
  68. exit -1
  69. fi
  70. fi
  71. if [ ! -f etc/voice.defs ]
  72. then
  73. echo "Can't find etc/voice.defs file"
  74. echo "don't know what voice to convert"
  75. echo "Setup for conversion of $1 to flite FAILED"
  76. exit 1
  77. fi
  78. mkdir -p flite
  79. . ./etc/voice.defs
  80. if [ "$FV_LANG" = "us" ]
  81. then
  82. # I showed have been more consistent
  83. FV_FLITE_LANG=usenglish
  84. FV_FLITE_LEX=cmu_lex
  85. FV_FLITE_LEX_DIR=cmulex
  86. else
  87. FV_FLITE_LANG=cmu_${FV_LANG}_lang
  88. FV_FLITE_LEX=cmu_${FV_LANG}_lex
  89. FV_FLITE_LEX_DIR=${FV_FLITE_LEX}
  90. fi
  91. if [ $# = 1 ]
  92. then
  93. FV_TYPE=$1
  94. fi
  95. cat $FLITEDIR/tools/Makefile.flite |
  96. sed 's%__FLITEDIR__%'$FLITEDIR'%' $i |
  97. sed 's%__VOICETYPE__%'$FV_TYPE'%' |
  98. sed 's%__FLITELANG__%'$FV_FLITE_LANG'%' |
  99. sed 's%__FLITELEX__%'$FV_FLITE_LEX_DIR'%' |
  100. sed 's%__VOICETYPE__%'$FV_TYPE'%' |
  101. sed 's%__VOICENAME__%'$FV_VOICENAME'%' >flite/Makefile
  102. cat $FLITEDIR/tools/build_flite |
  103. sed 's%__FLITEDIR__%'$FLITEDIR'%' >bin/build_flite
  104. chmod +x bin/build_flite
  105. if [ -f flite/$FV_VOICENAME.c ]
  106. then
  107. echo flite/$FV_VOICENAME.c already exists
  108. echo not overwriting it with a new copy
  109. else
  110. if [ "$FV_TYPE" = "diphone" ]
  111. then
  112. cat $FLITEDIR/tools/VOICE_diphone.c |
  113. sed 's%__NICKNAME__%'$FV_NAME'%' |
  114. sed 's%__FLITELANG__%'$FV_FLITE_LANG'%' |
  115. sed 's%__FLITELEX__%'$FV_FLITE_LEX'%' |
  116. sed 's%__VOICENAME__%'$FV_VOICENAME'%g' >flite/$FV_VOICENAME.c
  117. elif [ "$FV_TYPE" = "ldom" ]
  118. then
  119. cat $FLITEDIR/tools/VOICE_ldom.c |
  120. sed 's%__NICKNAME__%'$FV_NAME'%' |
  121. sed 's%__FLITELANG__%'$FV_FLITE_LANG'%' |
  122. sed 's%__FLITELEX__%'$FV_FLITE_LEX'%' |
  123. sed 's%__VOICENAME__%'$FV_VOICENAME'%g' >flite/$FV_VOICENAME.c
  124. elif [ "$FV_TYPE" = "cg" ]
  125. then
  126. cat $FLITEDIR/tools/VOICE_cg.c |
  127. sed 's%__NICKNAME__%'$FV_NAME'%' |
  128. sed 's%__FLITELANG__%'$FV_FLITE_LANG'%' |
  129. sed 's%__FLITELEX__%'$FV_FLITE_LEX'%' |
  130. sed 's%__VOICENAME__%'$FV_VOICENAME'%g' >flite/$FV_VOICENAME.c
  131. else
  132. cat $FLITEDIR/tools/VOICE_clunits.c |
  133. sed 's%__NICKNAME__%'$FV_NAME'%' |
  134. sed 's%__FLITELANG__%'$FV_FLITE_LANG'%' |
  135. sed 's%__FLITELEX__%'$FV_FLITE_LEX'%' |
  136. sed 's%__VOICENAME__%'$FV_VOICENAME'%g' >flite/$FV_VOICENAME.c
  137. fi
  138. fi
  139. cp -p $FLITEDIR/main/flite_main.c flite/flite_main.c
  140. echo "#define VOXNAME" $FV_VOICENAME >flite/voxdefs.h
  141. echo "#define REGISTER_VOX register_"$FV_VOICENAME >>flite/voxdefs.h
  142. echo "#define UNREGISTER_VOX unregister_"$FV_VOICENAME >>flite/voxdefs.h
  143. echo "#define VOXHUMAN \"$FV_NAME\"" >>flite/voxdefs.h
  144. echo "#define VOXGENDER \"unknown\"" >>flite/voxdefs.h
  145. echo "#define VOXVERSION 1.0" >>flite/voxdefs.h
  146. echo "Setup flite build for "$FV_VOICENAME" "$FV_TYPE" complete"
  147. exit 0