音乐检测(不识别)

时间:2013-01-03 16:11:30

标签: c# audio audio-processing

我正在尝试构建一个C#应用,可以检测视频中是否存在音乐。 无论采用何种格式,我都可以获得Audio发现。然而,我在音乐探测方面遇到了障碍。

有很多关于音频指纹的帖子以及如何用C#/任何语言进行操作。但是,我想要在电影中出现音乐的粗略输入/输出时间,我不关心音乐是什么。

音乐不太可能存在于任何指纹数据库中。所以很可能是一个完全计算分析。

有任何聪明的想法吗?或者我是最好的实现节拍检测算法并逐个处理它。然后估算进/出点?

3 个答案:

答案 0 :(得分:4)

我能想到的只有两件事可以清楚地将“音乐”与其他所有音频/声音区分开来:

  1. Meter :几乎所有合成的音乐都有一个电表。理论上,这应该可以通过FFT检测,但使用apprx的频率范围。 0.25hz到10hz(而不是通常的20hz-20Khz)。在实践中?我不知道,但似乎值得一试。

  2. 调音:几乎所有专业音乐都有共同点,包括专业歌手的声音(当他们有音乐伴奏时),但任何其他声音是他们将全部采用12音均衡模式进行相同的“调音”。换句话说,它们的频率总是被2 ^(1/12)的精确多次幂分开。一旦建立了调整,他们永远不会处于这些步骤之间的间隙中。包括人类声音在内的正常声音遍布整个频谱,但音乐几乎总是在缩放音符的+/- 10分之内。

  3. 方法#1是不确定的,我不知道是否有人试过它。

    但是#2是明确的,你可以用音频频谱分析仪实际看到这一点,但FFT必须具有非常高的辨别力(每个八度音程至少36个分区)。但是有一些捕获,例如:

    • 区分音乐和其他同步声音/噪音
    • 弦乐器,如吉他和小提琴,经常“弯曲”音符不正常
    • 长号和无人陪伴的人声,可以在音符之间“滑动”,或者使用正气而不是平等的和弦。
    • 以编程方式确定电影中不同位置的“曲调”(不一定是绝对的,只在任何一首音乐中保持稳定)
    • 谐波:音符通常不仅仅是简单的正弦波,这意味着在那里混合了很多谐波频率。谐波不像刻度那样呈指数,它们是整数倍,因此它们不与基本音符对齐。幸运的是,谐波的幅度几乎总是低于基调,所以应该可以“寻找峰值”。

    那些是我的“聪明”想法。现在只是实施的一个小问题......; - )

答案 1 :(得分:0)

您可以使用“Microsoft Expression Encoder”处理视频和音频

答案 2 :(得分:0)

OP的问题可归纳如下:

在视频的通用音频流中,尝试检测“音乐”与“其他所有内容”。

指纹数据库中不太可能存在“音乐”。

此上下文中的“其他所有内容”必须包括:

  1. 语音
  2. 沉默
  3. 合成声音
  4. foley声音(爆炸,枪声,脚步声等)
  5. 我们还必须假设广义视频的音频声道经过回声,混响,多声道平移等高度处理。

    在一般视频案例中,所有上述音频元素将混合在一起形成最终音频,使问题域绝对无比。

    这是一个非常具有挑战性的问题,很可能没有简单或强大的解决方案。

    为了支持这一前提,一般的音乐分类器(让我们称之为MuCLAS),其中未知音乐样本是分类器训练集的成员,是一个非常困难的问题,因为创建训练涉及大量费用设置,以及调整和创建分类器索引。

    但OP的问题域比MuCLAS问题域大得多,因为OP的未知数据集的熵要高得多。相对于MuCLAS,这意味着更高的复杂性和成本。

    上述前提的另一个支持论点是,一般语音识别的现有技术假定并坚持未知数据集中的熵远低于OP数据集的隐含熵。

    语音识别是自主模式识别领域中资金最多的问题之一。