Praat提取时长及共振峰F1 F2脚本

form 提取时长基频
    comment 输入文件所在的目录(包括声音文件和标注文件):
    text read_path E:\L2-ARCTIC corpus (v3.0)\data
    comment 输入保存结果的路径
    text save_path E:\L2-ARCTIC corpus (v3.0)\data\result.txt
    comment 输入音段层:
    positive phon_tier 2
    comment 输入单词层:
    positive word_tier 1
endform

if right$(read_path$, 1) = "\"
    read_path$ = read_path$ - "\"
endif

deleteFile: save_path$
appendFileLine: save_path$, "文件名称" + tab$ + "音素" +tab$ + "时长" + tab$ + "所在词" + tab$ + "所在词时长" + tab$ + "共振峰F1" + tab$ + "共振峰F2"

Create Strings as file list: "fileList", read_path$ + "\*.TextGrid"
numberOfFiles = Get number of strings

for iFile from 1 to numberOfFiles
    selectObject: "Strings fileList"
    fileName$ = Get string: iFile
    simpleName$ = fileName$ - ".TextGrid"

    textGridFileName$ = read_path$ + "\" + simpleName$ + ".TextGrid"
    wavFileName$ = read_path$ + "\" + simpleName$ + ".wav"

    Read from file: textGridFileName$
    Read from file: wavFileName$
# Time step,0.00625和0结果一样  Maximum forman,男5000 女5500
    To Formant (burg): 0, 5, 5000, 0.025, 50

    selectObject: "TextGrid " + simpleName$
    numberOfIntervals = Get number of intervals: phon_tier
    for iInterval from 1 to numberOfIntervals
        selectObject: "TextGrid " + simpleName$
        sTime = Get start point: phon_tier, iInterval
        eTime = Get end point: phon_tier, iInterval
        duration = eTime-sTime

        labelOfInterval$ = Get label of interval: phon_tier, iInterval

        intervalWordTier = Get interval at time: word_tier, sTime
        sTimeWord = Get start point: word_tier, intervalWordTier
        eTimeWord = Get end point: word_tier, intervalWordTier
        durationWord = eTimeWord - sTimeWord
        labelOfIntervalWord$ = Get label of interval: word_tier, intervalWordTier
        output$ = simpleName$ + tab$ + labelOfInterval$ + tab$ + fixed$(duration, 3) + tab$ + labelOfIntervalWord$ + tab$ + fixed$(durationWord, 3) + tab$
        selectObject: "Formant " + simpleName$        
        f1 = Get mean: 1, sTime, eTime, "Hertz"
        f2 = Get mean: 2, sTime, eTime, "Hertz"
        output$ = output$ + fixed$(f1, 0) + tab$ + fixed$(f2, 0)

        appendFileLine: save_path$, output$
    endfor
    
    selectObject: "TextGrid " + simpleName$
    Remove
    selectObject: "Sound " + simpleName$
    Remove
    selectObject: "Formant " + simpleName$
    Remove
endfor

selectObject: "Strings fileList"
Remove

exit 脚本运行结束! 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值