我有兴趣使用 Praat 对数百个 .wav 音频样本(每个大约 10 秒)进行批量分析。Praat 是否可以分析目录中的所有文件,为每个文件“获取音调”(或获取语音报告),并将所有这些打印到 .csv 或 .txt 文件中?
我尝试过修改一些在线可用的脚本,但是对编程知识很少,我发现这很困难。如果有人提供一些代码让我开始,我将不胜感激!
我有兴趣使用 Praat 对数百个 .wav 音频样本(每个大约 10 秒)进行批量分析。Praat 是否可以分析目录中的所有文件,为每个文件“获取音调”(或获取语音报告),并将所有这些打印到 .csv 或 .txt 文件中?
我尝试过修改一些在线可用的脚本,但是对编程知识很少,我发现这很困难。如果有人提供一些代码让我开始,我将不胜感激!
Praat 使用目录列表的方式是使用Strings
对象。您可以生成具有Strings
文件名或目录名的对象,然后遍历这些对象以打开每个单独的文件并以您喜欢的任何方式处理它。
至于输出,您可以手动输出到文本文件,或者您可以将分析结果保存在一个Table
对象中,然后可以将其保存为 acsv
或txt
您喜欢的形式。您可以在我的相关答案中看到这一点。
在这种情况下,你想要的是这样的
form Process files...
sentence Path /path/to/your/files
endform
# Optional: make sure the path has a trailing slash
path$ = if right$(path$) = "/" then path$ else path$ + "/" fi
output = Create Table with column names: "output", 0,
... "file mean_pitch"
files = Create Strings as file list: "files", path$ + "*wav"
total_files = Get number of strings
for i to total_files
selectObject: files
filename$ = Get string: i
sound = Read from file: path$ + filename$
# Run whatever kind of analysis you want here
# For example, get the mean pitch for each file
pitch = To Pitch: 0, 75, 600
mean = Get mean: 0, 0, "Hertz"
selectObject: output
Append row
row = Get number of rows
Set string value: row, "file", filename$
Set numeric value: row, "mean_pitch", mean
removeObject: sound, pitch
endfor
selectObject: output
Save as comma-separated file: path$ + "output.csv"
removeObject: files, output