1#!/bin/sh 2#####################################################-*-mode:shell-script-*- 3## ## 4## Carnegie Mellon University and ## 5## Alan W Black and Kevin A. Lenzo ## 6## Copyright (c) 1998-2000 ## 7## All Rights Reserved. ## 8## ## 9## Permission is hereby granted, free of charge, to use and distribute ## 10## this software and its documentation without restriction, including ## 11## without limitation the rights to use, copy, modify, merge, publish, ## 12## distribute, sublicense, and/or sell copies of this work, and to ## 13## permit persons to whom this work is furnished to do so, subject to ## 14## the following conditions: ## 15## 1. The code must retain the above copyright notice, this list of ## 16## conditions and the following disclaimer. ## 17## 2. Any modifications must be clearly marked as such. ## 18## 3. Original authors' names are not deleted. ## 19## 4. The authors' names are not used to endorse or promote products ## 20## derived from this software without specific prior written ## 21## permission. ## 22## ## 23## CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK ## 24## DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ## 25## ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT ## 26## SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE ## 27## FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ## 28## WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ## 29## AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ## 30## ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ## 31## THIS SOFTWARE. ## 32## ## 33########################################################################### 34### ## 35### Generate LPC coefficients and residual for diphones (or otherwise) ## 36### ## 37############################################################################ 38 39if [ $# = 0 ] 40then 41 echo "Extract lpc coefficients and residuals" 42 echo "Usage: bin/make_lpc wav/*.wav" 43 echo "Expects pm/*.pm to exist, and creates lpc/*.lpc and lpc/*.res" 44 echo "If etc/powfacts exists, waveform will be power normalized" 45 echo "for LPC and residual extraction, wav/*.wav will be unchanged though." 46 exit 1 47fi 48 49if [ ! "$ESTDIR" ] 50then 51 echo "environment variable ESTDIR is unset" 52 echo "set it to your local speech tools directory e.g." 53 echo ' bash$ export ESTDIR=/home/awb/projects/speech_tools/' 54 echo or 55 echo ' csh% setenv ESTDIR /home/awb/projects/speech_tools/' 56 exit 1 57fi 58 59for i in $* 60do 61 fname=`basename $i .wav` 62 echo $i LPC 63 64 # Potentially normalise the power (if powfact is there) 65 if [ -f etc/powfacts ] 66 then 67 powfact=`awk '{if ($1 == "'$fname'") print $2}' etc/powfacts` 68 if [ ! "$powfact" ] 69 then 70 powfact=1.0 71 fi 72 $ESTDIR/bin/ch_wave -scale $powfact $i -o /tmp/tmp$$.wav 73 else 74 cat $i >/tmp/tmp$$.wav 75 fi 76 # Change the overall volume too, of the normalised file 77 # $ESTDIR/bin/ch_wave -scaleN 0.65 -o /tmp/tmp$$.wav /tmp/tmp$$.wav 78 79 # and if you want to resample, now is the time (can be combine with above) 80 #$ESTDIR/bin/ch_wave -F 11025 -o /tmp/tmp$$.wav /tmp/tmp$$.wav 81 82 # Extract the LPC coefficients 83 $ESTDIR/bin/sig2fv /tmp/tmp$$.wav -o lpc/$fname.lpc -otype est_binary -lpc_order 16 -coefs "lpc" -pm pm/$fname.pm -preemph 0.95 -factor 3 -window_type hamming 84 # Extract the residual 85 $ESTDIR/bin/sigfilter /tmp/tmp$$.wav -o lpc/$fname.res -otype nist -lpcfilter lpc/$fname.lpc -inv_filter 86 87 rm /tmp/tmp$$.wav 88done 89