回声隐藏技术

信息处理 fft 声音的 离散信号
2022-02-01 07:04:29

我试图弄清楚如何使用 DSP 技术来将人工回声添加到声音文件中,但更重要的是能够检测到这些回声。我一直在这里阅读它: http ://www.snotmonkey.com/work/school/405/methods.html#echo

有人可以指出一些使用 Apple Accelerate 框架的示例代码,以便能够检测来自麦克风的声音中隐藏的回声吗?此外,为了检测回声,重要的是应用程序不需要了解原始声音,这意味着它应该可以在任何正在播放的具有这些回声的声音中检测到。

感谢您提供任何信息。

2个回答

到目前为止,我还没有尝试过音频隐写术,但无论如何,也许这些想法对你有一些用处。

将回声添加到信号中非常容易,因为此过程只是将信号的延迟版本添加回自身。您可能希望对小于 1 的附加信号,以避免产生比原始声音更大的回声。在 DSP 术语中,此过程对应于具有脉冲响应的 FIR 滤波,该脉冲响应由零时的增量脉冲 ( ) 和时移加权的增量脉冲组成: 其中为样本延迟时间, fgainfgain1δ[n]

b=δ[n]+fgainδ[nLdelay],
Ldelay
a=1
因为它是 FIR 滤波器。要获得多个回声,只需使用多个延迟增量脉冲。

对于检测信号中隐藏的回声,是否可以通过自适应滤波算法获得令人满意的性能也许值得一试。例如,我想到了(标准化)最小均方([N]LMS)算法。我相信您可以从互联网上下载多种编程语言的实现。将信号同时用作自适应滤波算法的输入信号和所需信号将导致自消除行为。也许,通过分析滤波器系数,您可以了解信号中是否有回声,如果有,延迟时间是多少。

如果您尝试使用问题链接所指向的网页中描述的倒谱方法,请注意让您的信号块足够长以捕获回波。

我对 Apple Accelerate 一无所知,但一种可行的方法是自相关。如果您的数据中存在回波,则将其与自身相关应显示多个峰值 - 较大的峰值表示信号与其自身的相关性,较小的峰值表示信号与其回波的相关性。这假设回声在整个收集过程中是恒定的,如果您尝试实时识别回声,则可能难以实现。