使用 Python 获取声音输入并查找相似的声音

Posted

技术标签:

【中文标题】使用 Python 获取声音输入并查找相似的声音【英文标题】:Get sound input & Find similar sound with Python 【发布时间】:2016-07-21 04:10:17 【问题描述】:

我想做的就像使用 Python 的“Shazam”或“SoundHound”,只有声音版本,而不是音乐。

例如,当我发出声音(例如关门声)时,在声音列表中找到最相似的声音数据。

我不知道你能不能理解,因为我的英语不好,但想象一下“Shazam”的声音版本。

我知道“Shazam”没有开放的 API。 有没有像'Shazam'这样的API? 或者, 如何实现?

【问题讨论】:

【参考方案1】:

您可以使用多个库,但例如,它们都不会将样本归类为“关门”。但是您可以使用这些库进行特征提取并构建/获取声音数据集,构建分类器,对其进行训练并将其用于声音分类。

图书馆:

    Friture - Friture 是一个图形程序,旨在对音频输入进行实时时频分析。它提供了一组可视化小部件来显示音频数据,例如示波器、频谱分析仪、滚动 2D 频谱图。

    LibXtract - LibXtract 是一个简单、便携、轻量级的音频特征提取函数库。该库的目的是提供一组相对详尽的特征提取原语,这些原语被设计为“级联”以创建提取层次结构。

    Yaafe - Yet Another Audio Feature Extractor 是用于音频分析的工具箱。易于使用且高效地同时提取大量音频特征。支持 WAV 和 MP3 文件,或嵌入 C++、Python 或 Matlab 应用程序中。

    Aubio - Aubio 是一种用于从音频信号中提取注释的工具。它的功能包括在每次攻击之前对声音文件进行分段、执行音高检测、敲击节拍以及从现场音频中生成 MIDI 流。

    LibROSA - 用于音频和音乐分析的 python 模块。它易于使用,并实现了许多常用的音乐分析功能。

如果您确实选择使用我上面提到的建议,我建议 scikit-learn 作为机器学习库。它包含许多您可能想要使用的分类器。

【讨论】:

【参考方案2】:

这里的问题是音乐有结构,而你想要找到的声音可能有不同的特征。以门为例,仅门的重量、尺寸和材料就会影响它将产生的声学特征的类型。如果您想通过相似性进行搜索,则功能袋方法可能是一种简单的(ish)方法。但是,有不同的方法,例如通过沿声音频谱图的滑动窗口进行采样,并尝试(通过相似性)与您录制的先前声音匹配,声音分解等......

【讨论】:

以上是关于使用 Python 获取声音输入并查找相似的声音的主要内容,如果未能解决你的问题,请参考以下文章

如何从 python 中的麦克风获取声音输入,并即时处理它?

python 2.7输入任意字母数字,输出其对应的莫尔斯码并播放声音

使用 NAudio 使用 asioout 录制时如何使声音更大?

用 Python 播放声音 [重复]

用 Python 播放声音 [重复]

无法在 Docker 上托管语音识别和声音播放应用程序