#!/bin/sh ####################################################-*-mode:shell-script-*- ## ## ## Carnegie Mellon University ## ## Copyright (c) 2005 ## ## 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 F0 mean/std min (mean-3*std) max (mean+3*std) from upto 100 ## ## files sampled from the promptlist ## ## ## ########################################################################### if [ ! "$ESTDIR" ] then echo "environment variable ESTDIR is unset" echo "set it to your local speech tools directory e.g." echo ' bash$ export ESTDIR=/home/awb/projects/speech_tools/' echo or echo ' csh% setenv ESTDIR /home/awb/projects/speech_tools/' exit 1 fi if [ ! "$FESTVOXDIR" ] then echo "environment variable FESTVOXDIR is unset" echo "set it to your local festvox directory e.g." echo ' bash$ export FESTVOXDIR=/home/awb/projects/festvox/' echo or echo ' csh% setenv FESTVOXDIR /home/awb/projects/festvox/' exit 1 fi PROMPTFILE=etc/txt.done.data if [ $# = 1 ] then PROMPTFILE=$1 fi SILENCE=pau F0MIN=50 F0MAX=400 NUMPROMPTS=`cat $PROMPTFILE | wc -l | awk '{print $1}'` cat $PROMPTFILE | awk 'BEGIN { NP='$NUMPROMPTS'; ENOUGH=100.0 if (NP/ENOUGH > 2) { f=int(NP/ENOUGH) } else f = 1; } { if (NR%f == 0) print $2 }' | while read i do $ESTDIR/bin/ch_wave -scaleN 0.9 wav/$i.wav -F 16000 | $ESTDIR/bin/pda -otype ascii -fmin $F0MIN -fmax $F0MAX done | awk '{ if ($1 > 0.0) { count += 1 sum += $1 sumsq += $1*$1 } } function std (sum, sumx, n) { if (n==1) n=2; return sqrt(((n*sumx)-(sum*sum)) / (n*(n-1))) } function mean (sum,n) { return sum/n; } END { m=mean(sum,count); s=std(sum,sumsq,count); printf("F0MEAN=%d\n",m); printf("F0STD=%d\n",s); printf("F0MAX=%d\n",m+(3*s)); if (m-(3*s) < 50) printf("F0MIN=%d\n",50); else printf("F0MIN=%d\n",m-(3*s)); }' >etc/f0.params