也许有人拥有Praat 脚本,可以获取有关音频文件的所有可能信息(音高,格式,强度)?。
答案 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脚本,转换Table和related 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