Praat脚本可导出有关音频的所有可能数据

时间:2016-02-04 15:05:20

标签: praat

也许有人拥有Praat 脚本,可以获取有关音频文件的所有可能信息(音高,格式,强度)?enter image description here

2 个答案:

答案 0 :(得分:1)

假设通过"关于音频的所有可能数据"你意味着基频,共振峰结构和强度等值线(而不是光谱,脉冲等),最简单的方法是分别生成Pitch,{{ 3}}和Formant个对象。

pitch     = To Pitch: 0, min_f0, max_f0
formant   = To Formant (burg): 0,
  ... total_formants, max_formant, 0.025, 50
intensity = To Intensity: min_f0, 0, "yes"

您仍然需要知道关于您正在处理的音频的一些事情,例如您感兴趣的最大共振峰的可能频率,或者范围内的范围您可以根据自己的方法估算f0范围来估算基本原因(

)。

至于导出,我认为你的意思是你希望从 Praat的程序中访问这些信息。这可能是最困难的部分,因为Praat没有任何标准的方法来导出数据,它使用的数据格式虽然都是基于文本的,但都非常...... Praat-具体(您可以使用Intensity命令检查它们。)

您可以在Praat中处理它们,并将您想要的数据放入this plugin对象中,使用您想要的任何格式和结构,并将其另存为制表符或逗号分隔文件(请参阅我的Save as text file... )。首先,您可以使用Formant对象可用的Down to Table...命令,该命令将创建一个包含共振峰数据的表。然后,您可以展开该表以包含Pitch和Intensity对象(或您需要的任何对象)中的数据。

或者,Praat使用的大多数(=并非所有)基于文本的格式几乎 YAML,因此您可以尝试转换它们并将它们 as as is 读入无论你想在以后使用什么程序。我写了几个这样做的Perl脚本,转换Tablerelated answer JSON / YAML,以及to从Praat GUI执行此操作。你可能想检查一下。

答案 1 :(得分:0)

这是一个脚本解决了这个问题。

form Give the parameters for pause analysis
   comment soundname:
    text soundname 1.wave   
   comment outputFileName.csv:
    text outputFileName result.csv
endform

min_f0 = 75
max_f0 = 350

Read from file: soundname$
soundname$ = selected$ ("Sound")

select Sound 'soundname$'
formant = To Formant (burg): 0, 4, 5000, 0.025, 50
formantStep = Get time step


selectObject: formant
table = Down to Table: "no", "yes", 6, "yes", 3, "yes", 3, "yes"
numberOfRows = Get number of rows

select Sound 'soundname$'
pitch = To Pitch: 0, min_f0, max_f0

selectObject: table
Append column: "Pitch"

for step to numberOfRows
    selectObject: table
    t = Get value: step, "time(s)"

    selectObject: pitch
    pitchValue = Get value at time: t, "Hertz", "Nearest"

    selectObject: table
    Set numeric value: step, "Pitch", pitchValue
endfor


#export to csv
selectObject: table
Save as comma-separated file: outputFileName$
removeObject(table)

echo Ok