1

我一直在为 Praat 做一些音频分析的工作。但是,我发现了一些在 Python 中使用 Praat 的库,并且想做同样的事情。

该站点提供了许多可以在使用 praat 时提取的功能。我已按照他的说明将其“集成”到 python 中。http://homepage.univie.ac.at/christian.herbst//python/index.html 但是,我无法让它工作。它返回错误:\ OSError: [Errno 2] No such file or directory

我还找到了另一个库:https ://pypi.python.org/pypi/python-praat-scripts 。这也会返回错误(当我运行下面的代码时): OSError: [Errno 13] Permission denied

from praatinterface import PraatLoader
pl = PraatLoader(praatpath ='/Users/user/Downloads/praat6015_mac64.dmg')
text = pl.run_script('formants.praat', 'sample.wav', 5, 5500)
formants = pl.read_praat_out(text)

如果有人可以帮助我将 praat 正确集成到 python,那就太好了。谢谢。

4

2 回答 2

1

[免责声明:我是提到的 Parselmouth 图书馆的作者]

如果您不介意尝试另一个库,Parselmouth将 Praat 集成到 Python 中,无需外部 Praat 二进制文件:

import parselmouth
resulting_objects = parselmouth.praat.run_file('formants.praat', 'sample.wav', 5, 5500)

resulting_objects变量将包含已选择的 Praat 对象的列表,因此如果您确保选择了该Formant对象,则会返回该对象。或者,如果要捕获输出窗口,请运行

import parselmouth
output_string = parselmouth.praat.run_file('formants.praat', 'sample.wav', 5, 5500, capture_output=True)

另一种选择是从 Python 本身调用分析,并执行以下操作:

import parselmouth
sound = parselmouth.Sound("sample.wav")
formant = sound.to_formant_burg(max_number_of_formants=5, maximum_formant=5500)
formant.get_value_at_time(3, 0.5) # For the value of formant 3 at 0.5 seconds
于 2018-08-07T18:34:38.697 回答
0

我没有使用您的任何工具,但似乎问题可能出在您的praatpath变量上。在您链接到的页面中,它们应该指向 Praat 二进制文件,而在您的示例中,您让它们指向带有 64 位 Mac 版本的 Praat 存档。

您必须先安装 Praat。这些说明非常标准,但引用了 Praat 网站:

下载后,您的网络浏览器可能会.dmg直接打开文件;然后您将看到该程序PraatPraat.app. 如果您的浏览器没有打开该文件,那么您应该在“下载”窗口(或您的主目录的“下载”文件夹中).dmg双击该文件;.dmg双击后您可能会看到该程序PraatPraat.app直接,或者您可能会看到一个名为 的磁盘图标Praat6016,当您打开它时会显示该程序PraatPraat.app。要安装 Praat,只需将程序拖到您的应用程序Praat文件夹(或其他任何地方)。Praat.app

一旦完成,praatpath变量应该指向这个可执行文件。

这适用于您的第二个示例,但我怀疑第一个示例的问题可能相似(即,它不知道 Praat 在哪里,因为它要么未安装,要么不在PATH)。

于 2016-04-14T17:30:37.483 回答