我想编写/编程/开发一种算法,可以从线路输入/麦克风音频中识别数据的许多特征。音频流将是音乐,我想过滤掉特征以将歌曲彼此区分开来,通过区分我的意思是您可以将歌曲的流派分开。
我绝对想检测的一件重要事情是这首歌有什么样的小节/节拍。例如,我想知道这首歌是否是 3/4 拍。
我找到的唯一有用的文章是关于 BPM 检测的,但这不足以区分一首歌曲和另一首歌曲。
FFT 是从音频流中获取不同特征的良好开端,但我不知道从哪里开始。是否有可能通过 FFT 获得小节/节拍?有关于此的任何好的教程/代码示例吗?
FFT 是否足以获得音频流的良好特性,或者是否有任何其他算法可以很好地获得音频流的特性?
我最好在 C# 中执行此操作,因为这是我最熟悉的编程语言。这在 C# 中可行还是其他语言更好?
总结一下我的问题,我正在寻找有关在音频流中查找特征以获取节拍/小节和其他信息以区分歌曲的任何信息。
最佳答案
我喜欢阅读这位博主的相关文章:
http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/
作者讨论指纹识别歌曲。如果你labelled一组具有您正在寻找的品质的歌曲,然后将数据输入某种类型的 learning algorithm/classifier ,您可能会取得一些成功。
我不认为这是一个已解决的问题,因此据我所知不可能给你一个明确的答案。
祝你好运!
关于c# - 检测音频流中的特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118219/