#!/bin/sh #####################################################-*-mode:shell-script-*- ## ## ## Carnegie Mellon University and ## ## Alan W Black and Kevin A. Lenzo ## ## Copyright (c) 1998-2000 ## ## 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. ## ## ## ########################################################################### ## ## ## Find power normalization factor for each waveform file ## ## Finds power for each labelled vowel ## ## Finds mean power for each vowel ## ## Finds power factor for each file (used by make_lpc) ## ## ## ## ## ## Naively assumes that vowels in phoneset start with (upper or lower ## ## letter vowels) ## ## ## ## usage: bin/find_powerfactors lab/*.lab ## ## ## ########################################################################### if [ $# = 0 ] then echo "Find power normalization factor for each file" echo "Usage: bin/find_powerfactors lab/*.lab" echo "Will create etc/powfacts used by bin/make_lpc" exit 1 fi for i in $* do fname=`basename $i .lab` echo $fname >/dev/tty cat $i | awk 'BEGIN {fname="'$fname'"; } {if (($3 ~ /^[AaEeIiOoUu@].*/) && ($3 != "using")) { printf("echo START %s %s\n",fname,$3); printf("$ESTDIR/bin/ch_wave -start %f -end %f wav/%s.wav -otype raw -ostype ascii\n",ltime,$1,fname); } if ($3 != "DB") ltime=$1}' | sh | awk 'BEGIN {fname="start";} {if ($1 == "START") { if (fname != "start") print fname,ph,t,sqrt(t/l) fname = $2; ph=$3; l=1; t=0; } else { t += $1*$1; l++; }} END { print fname,ph,t,sqrt(t/l) }' done >etc/all_vpower # Find the mean power for each vowel cat etc/all_vpower | awk '{vp[$2] += $4; vn[$2] += 1;} END {for (i in vp) printf("vp[\"%s\"] = %f;\n",i,vp[i]/vn[i]); }' >etc/mean_vpow # find the power modficiation factor for each file cat etc/all_vpower | awk 'BEGIN {'"`cat etc/mean_vpow`"' lfile = ""; t = 0; nt = 0; } {if (($1 != lfile) && (lfile != "")) { printf("%s %f\n",lfile,nt/t); nt = 0; t = 0; } if (vp[$2] != 0) { t += $4; nt += vp[$2]; } lfile = $1; } END { printf("%s %f\n",lfile,nt/t); }' >etc/powfacts