0

我已经在 Praat 编写脚本只有几个星期了,所以请耐心等待。我正在尝试在带注释的语音数据语料库中提取每个口语单词的音高轮廓。我可以毫无问题地提取整个长声音文件的音高轮廓,并且可以将 .wav 文件压缩成单个口语单词的较小 .wav 文件,但是当我尝试循环遍历较小的 .wavs 时,我经常收到此错误:

要分析此声音,“最小音高”不得小于 [某个数字]。

这个数字似乎很随意。有没有一种好方法可以To Pitch:根据给定 .wav 的最小音高动态更改参数?

#initialize counter
i = 0

#loop through .wav files
for current_file from 1 to file_count
   i = i + 1
   select Strings list
   filename$ = Get string... current_file
   Read from file... 'source_directory$'/'filename$'
   appendInfoLine: string$(i)+ "/" + string$(file_count) + " " + filename$

   To Pitch: 0.1, 75, 600

   #create pitch file
   pitch_file$ = filename$ - "wav" + "pit"

   #write to pitch file
   no_of_frames = Get number of frames
   for frame from 1 to no_of_frames
       time = Get time from frame number: frame
       pitch = Get value in frame: frame, "Hertz"
       appendFileLine: pitch_file$, "'time','pitch'"
   endfor

endfor
4

1 回答 1

0

您可能已经想通了,但如果没有,请尝试将时间步长从 0.1 更改为 0.01 甚至更小(To Pitch:0.01、75、600),或者如果不影响您的分析,请延长时间间隔。

我今天遇到了完全相同的错误,感谢您对持续时间的描述,我有点弄清楚问题出在哪里。在Praat查看节线时,放大后可以看到数据点。如果在单个区间内点数少于四个,则会出现错误(完全放大区间时不要计算点数,查看区间留小计算时有多余的空格)。

当我使间隔更长一些(包括第四个节点)或以编程方式设置更小的时间步长时,错误消失了。我使用了一个可以访问 Praat 的 python 包,但过程应该类似。当然,如果您有更好的解决方案,我想听听:)

于 2019-08-03T15:08:31.347 回答