是否有从音频信号中提取特征的程序?

信息处理 声音的 特征提取
2022-02-05 20:15:15

我正在寻找一种方法来获取 .wav 文件并从中提取可用于进一步分类的特征(这些特征可以是 MFCC 统计数据、自动编码器表示等)。我知道它可能与任务相关,但我正在寻找一些有意义的标准功能集。我正在尝试将音频信号(主要是音乐)分类为一组类别,例如“安静的音乐”、“激动人心的音乐”等。

我想知道是否有现有的软件(最好是用于 Linux)接受这种音频信号(例如 .wav 格式)并输出特征指纹。

3个回答

openSMILE 音频特征提取工具包可能能够提供您想要的功能,其中输入是 .wav 文件,输出提取音频特征。见:http ://audeering.com/technology/opensmile/

openSMILE 提供了一个命令行可执行文件,它与定义要提取的特征的配置文件相结合。该可执行文件具有适用于 Linux 和 Windows(32 位)的二进制文件,我还从源代码构建了可执行文件以在 macOS 上使用。它提供了自己的对象来计算 MFCC、能量、音高等特征,以及“色度”音乐特征(这可能有助于音乐分类)。它带有许多已用于音频分类任务的预构建功能配置,例如视听情感挑战 ( http://sspnet.eu/avec2017/ )。

下面是如何使用 openSMILE 从单个 .wav 文件和所选配置中提取特征的示例。output.arff是 Weka 机器学习库使用的一种格式。

SMILExtract -C config/emobase.conf -I input.wav -O output.arff

自定义配置也可以使用 openSMILE 配置语言以及 openSMILE 下载中包含的大量 PDF 文档来编写。

这具有原始问题中描述的所需功能:

寻找一种方法来获取 .wav 文件并从中提取可用于进一步分类的特征

一个相对简单的方法是编写用于数据提取的 MATLAB/GNU Octave/Python 脚本(后两个是开源的)。一个主要优点是,只要您编写脚本,很多工作都可以自动完成。根据您想要做什么,许多功能可能以内置函数的形式存在。

虽然该应用程序的 GUI 软件也可能存在,但我认为编写自己的脚本是值得的,因为它具有可重复性,并且您可以控制提取链中的每个步骤。这使您可以轻松地稍微更改功能,例如更改标准树皮频带定义,以便将两个最低频带分别分成两个频带,我在一些音频分类出版物中看到过。

另一个优点是,对于您自己编写的进一步分类算法,您可以轻松地将它们连接到您的代码。

来自深度神经网络的音频嵌入是分类、相似性度量、语义搜索等任务的表示音频的良好候选者。

OpenL3是一个很好的实现。它是用 Python 实现的,并提供了一个简单的API它还有一个用于提取嵌入的命令行工具,保存为 Numpy 文件。