波形比较

Waveform Comparison

我正在进行个人研究项目。

我的 objective 是能够识别声音并通过将其波形与我的数据库中的波形进行比较来确定它是否属于 IPA。我对 Mathematica、SciPy 和 PyBrain 有一定的了解。

对于第一阶段,我只使用英语(美国)注音字母表。 我有一个在网上找到的简单的英文音标测试库。这里的技巧是:

我想把一个声音文件分成对应不同音节的波形——这需要学习算法。因此,'I like apples' 将被分割成构成句子的音节波形。

然后将每个波形与英语 PA 的波形进行比较。我不确定该怎么做。我正在考虑使用 Praat 来检测波形,捕获波形的图像并通过图像分析将其与存储在数据库中的波形进行比较(这很有趣)。

这里的问题是,我不知道如何让 Praat 自动生成波形文件,然后将其在音节之间切割成波形块。从逻辑上讲,我只会为学习算法准备测试用例并教 comp 去做。

不需要波形图像 - 我可以用快速傅立叶变换来做这件事并比较两个 fft's - 在 x% 的误差范围内认为它是 y 音节吗?

坦率地说,我不太了解 Praat,但我发现您的项目非常酷且有趣。我有使用声音检测汽车电机故障的经验,这可能与您的项目有关。我使用神经网络和 SVM 进行分类,因为多篇研究论文证明了这一点。因此,我对自己选择的方式没有任何怀疑。所以我的建议是,也许你应该研究并阅读一些关于它的论文。当你有这样的问题时它真的很有帮助(它会起作用吗?我可以用它代替还是我使用的是最佳解决方案?等等......)。祝你好运,这是一个很棒的项目:)

你可以试试 Praat scripting.

仅使用 FFT 会给您带来相当糟糕的结果。非常长的特征向量将很难分割并且 运行 对其进行任何训练。这是一个音节的数千分。一些深度神经网络能够应对它,但前提是你正确地设计了它们并提供了巨大的训练集。使用神经网络的优势在于它们可以从 "raw data" 为您构建特征(我也会考虑 fft "raw")。然而,当您处理声音时,它并不是那么迫切需要 - 您可以手动设计功能。就声音而言,科学非常清楚 "features" 声音的种类。

您可以使用 Yaafe. I recommend checking it even if you are not doing it in C++ or Python - the link I provided also delivers formulas for calculating them. I used some of them in my kiwi classifier 等库计算这些特征。

另一个好方法来自 scikit-talkbox,它提供了您可能需要的工具。