我正在尝试解决以下问题:
假设我有一个参考声音,并且我知道的录音至少包含一次参考声音。如何确定音频中播放声音的位置?较长的录音可能有噪音,我不能假设与录音中播放的声音完全一致(意思是,如果我知道除了参考声音之外的录音中播放的声音的内容,我不能只是减去从录音本身)。
我正在尝试的方法如下:
- 从录制的声音中抓取参考声音的大小
- 对于每个窗口,计算 N 个主频率(通过在 FFT 结果中找到峰值幅度)
- 将点分配给参考声音的主要频率(其中最主要的得分为 N,最少的得分为 1)
- 将窗口的主要频率与这些频率进行比较并对其进行评分
接下来的几个部分只是实验性的,用于缩小结果范围。
- 对匹配项进行一些过滤(例如,分数低于可能分数一半的匹配项被过滤掉)
- 查看重叠匹配并计算与参考声音的互相关(使用每个可能的时间偏移,更喜欢最大结果)。更喜欢需要较小班次的比赛
- 在匹配的端点上执行该转变
问题是我还想检测是否播放了部分参考声音,如果参考声音快速连续播放两次,其中一个被切断,第 6 步将不允许这样做。
似乎必须有一个不像这样临时的解决方案。我对DSP领域很陌生,所以可能有些简单的东西我不知道。
有任何想法吗?
谢谢!