#!/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 contour for each waveform file ## ## Finds power for each labelled vowel ## ## Finds mean power for each vowel ## ## Construct power contour interpolating between vowels to break ## ## points ## ## ## ## Naively assumes that vowels in phoneset start with (upper or lower ## ## letter vowels) ## ## ## ## usage: bin/find_powercontours lab/*.lab ## ## ## ########################################################################### if [ $# = 0 ] then echo "Find power normalization contour for each file" echo "Usage: bin/find_powercontours lab/*.lab" exit 1 fi for i in $* do fname=`basename $i .lab` echo $fname >/dev/tty cat $i | sed 's/h#/pau/' | awk 'BEGIN {fname="'$fname'"; } {if ((($3 ~ /^[AaEeIiOoUu].*/) || ($3 ~ "SIL") || ($3 ~ "pau")) && ($3 != "using")) { printf("echo START %s %s %f\n",fname,$3,(ltime+$1)/2); printf("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,point,t,sqrt(t/l) fname = $2; ph=$3; point=$4; l=1; t=0; } else { t += $1*$1; l++; }} END { # dont care about final pau # print fname,ph,point,t,sqrt(t/l) }' done >etc/all_vpower # Find the mean power for each vowel cat etc/all_vpower | awk '{vp[$2] += $5; vn[$2] += 1;} END {for (i in vp) printf("vp[\"%s\"] = %f;\n",i,vp[i]/vn[i]); }' >etc/mean_vpow if [ ! -d pow ] then mkdir pow fi # find the power modficiation contour for each file cat etc/all_vpower | awk 'BEGIN {'"`cat etc/mean_vpow`"' lfile = ""; t = 0; nt = 0; } {if ($1 != lfile) { if (lfile != "") printf("EOF\n"); printf("cat >pow/%s.lab < 0) printf("%f 123 %f\n",$3,vp[$2]/$5); } lfile = $1; } END { printf("EOF\n"); }' | sh