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 fileNumber
	select Strings fileList
	fileName$=Get string... 'iFile'
	simpleName$=fileName$-".wav"
	wavFileName$=simpleName$+".wav"
	textGridName$=simpleName$+".TextGrid"
	Read from file... 'path$''textGridName$'
	labsil$=Get label of interval... 1 1
	if labsil$<>"sil"
		pause The first interval lab is NOT sil.
	else
		timeEnd=Get end point... 1 1
	endif
	Read from file... 'path$''wavFileName$'
	To Pitch... 0 60 600
	numberOfFrames=Get number of frames
	iFrame=0
	repeat
		iFrame=iFrame+1
		pitchValue=Get value in frame... 'iFrame' Hertz
	until pitchValue<>undefined
	time2=Get time from frame number... 'iFrame'
	if time2>timeEnd
		select TextGrid 'simpleName$'
		temp=time2-timeEnd-0.03
		Shift times by... temp
	endif
	select 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
Remove

exit over!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极地语音工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值