检测音频流中的特征

本文关键字:特征 音频流 检测 | 更新日期: 2023-09-27 18:10:11

我想编写/编程/开发一种算法,可以识别来自/mic音频线的数据中的许多特征。音频流将是音乐,我想过滤掉特征来区分歌曲,通过区分,我的意思是你可以区分歌曲的类型。

我绝对想检测的一个关键的事情是这首歌有什么样的酒吧/节拍。例如,我想知道这首歌是否是3/4拍子。

我找到的唯一有用的文章是关于BPM检测的,但这不足以区分一首歌和另一首歌。

FFT是一个很好的开始,从音频流中获得不同的特征,但我不知道从哪里开始。有可能用FFT获得酒吧/节拍吗?这方面有什么好的教程/代码示例吗?

FFT是否足以获得音频流的良好特征,或者是否有任何其他算法可以很好地获得音频流的特征?

最好是用c#,因为这是我最有经验的编程语言。这在c#中是可能的还是其他更好的语言?

总结一下我的问题,我正在寻找关于在音频流中找到特征以获得节拍/小节和其他信息以区分歌曲的任何信息。

检测音频流中的特征

我喜欢阅读这个博主的相关文章:

http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/

作者讨论了指纹歌曲。如果你将一组歌曲标记为具有你正在寻找的品质,然后将数据输入某种学习算法/分类器,你可能会取得一些成功。

我不认为这是一个已经解决的问题,因此给你一个明确的答案是不可能的,据我所知。

祝你好运!

傅里叶变换会告诉你声音的频率。这可能足以告诉你他们的钥匙是在哪里记录的。我怀疑它能告诉你更多的东西。

软件(如Shazam)可以识别两段录制的音乐是相同的。你想做一些不同的事情——你想以分类的形式提取意义。将此与语音识别进行比较;这是一个类似的问题。音乐实际上要难得多,因为通常要用到好几种乐器。我们的大脑可以通过非常复杂的模式识别提取出单个乐器(鼓,吉他),然后使用单个乐器来确定节拍和节拍。就像我们开着电视听谈话一样。电脑还不能把声音分解成不同的声音,也不能简单地听到连续的声音。这让我觉得,提取有意义的信息(节拍、拍子)至少要等到我们能在电脑上把声音分解成不同的"声音"之后。

你想做的事总有一天会成为可能,而且会很棒。但我认为我们还有一段距离;也许当计算机能够流利地翻译语音时,它们也能流利地翻译音乐。也许10年后。

开源aubio库从音频中提取功能。它是用C编写的,但可以作为托管实现的参考。或者你可以P/Invoke。

aubio是一个用于从音频信号中提取注释的工具。它的功能包括在每次攻击之前分割声音文件,执行音高检测,敲击节拍和从实时音频中产生midi流。