本文主要是介绍Praat对于undefined的取值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在提取基频值的时候有一些值是没有定义的,输出窗口显示undefinded,如果单纯把这个当成一个字符串是行不通的,比如pitchvalue="--undefined--",这是不可能的。字符串不可能等于数值,实现的方式是直接用pitchvalue=undefined,在这里的undefined相当于一个预定义常量。
例:声音文件和标注文件有一些偏差,比如标注文件都要比声音文件提前0.1-0.5秒,在实现的时候是通过声音的Pitch文件找到Pitch值不为undefined的第一个值,然后再将这个时长偏差减小0.3,作为起始的清音段,这样通过针对TextGrid的Shift操作就可以了。代码如下:
path$="\old\"
savePath$="\new\"
Create Strings as file list... fileList 'path$'*.wav
fileNumber=Get number of strings
for iFile from 1 to fileNumberselect Strings fileListfileName$=Get string... 'iFile'simpleName$=fileName$-".wav"wavFileName$=simpleName$+".wav"textGridName$=simpleName$+".TextGrid"Read from file... 'path$''textGridName$'labsil$=Get label of interval... 1 1if labsil$<>"sil"pause The first interval lab is NOT sil.elsetimeEnd=Get end point... 1 1endifRead from file... 'path$''wavFileName$'To Pitch... 0 60 600numberOfFrames=Get number of framesiFrame=0repeatiFrame=iFrame+1pitchValue=Get value in frame... 'iFrame' Hertzuntil pitchValue<>undefinedtime2=Get time from frame number... 'iFrame'if time2>timeEndselect TextGrid 'simpleName$'temp=time2-timeEnd-0.03Shift times by... tempendifselect TextGrid 'simpleName$'Save as text file... 'savePath$''textGridName$'select Sound 'simpleName$'Save as WAV file... 'savePath$''fileName$'select TextGrid 'simpleName$'plus Sound 'simpleName$'plus Pitch 'simpleName$'Remove
endfor
select Strings fileList
Removeexit over!
这篇关于Praat对于undefined的取值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!