如何从两个音频文件中找到偏移?一个是嘈杂的,一个很清楚



我曾经有一个场景,用户用表演者的实时音频捕获音乐会场景,同时设备正在下载从音频广播设备下载实时流。我已经流式传输并保存在手机中的嘈杂音频(录制时捕获了)确切的位置。

现在我想做的是自动化音频同步的过程。当时我想在给定偏移量下将视频与清晰的音频合并我想将视频与清晰的音频自动合并与正确的同步。

为此,我需要找到应该用清晰的音频替换嘈杂音频的偏移量。e.g。当用户启动录制并停止录制时,我将使用该实时音频示例,并与实时流音频进行比较,并从该音频中获取该音频的确切部分,并在完美的时间同步。

有人知道如何通过比较两个音频文件并与视频同步来找到偏移。?

这是一个简洁明了的答案。

•这并不容易 - 它将涉及信号处理和数学。
•快速的Google给我这个解决方案,包括代码。
•这里有有关上述技术的更多信息。
•我建议在尝试将其移植到iOS之前至少获得基本理解。
•我建议您在iOS上使用加速框架进行快速傅立叶变换等
•我不同意有关在服务器上进行的其他答案 - 这些天设备非常强大。用户不会介意几秒钟的处理,以使某些事情发生的事情发生。

编辑

顺便说一句,我认为值得退后一秒钟。尽管 像这样的数学和精美的信号处理可以带来很好的结果,并且 做一些非常神奇的事情,可能会有外围的情况 算法崩溃(希望不经常)。

如果不是随着信号处理而变得复杂,该怎么办 还有另一种方式吗?经过一番思考,可能会有。如果你见面 以下所有条件:

•您正在控制服务器组件(音频广播公司 设备)
•广播公司意识到"真实音频"录制 潜伏期
•广播公司和接收器正在以某种方式进行交流 这允许准确的时间同步

...然后计算音频偏移的任务变得合理 琐碎的。您可以使用NTP或其他更准确的时间 同步方法,因此有一个全局参考点 时间。然后,这与计算之间的差异一样简单 音频流时间代码,时间代码基于全局 参考时间。

这可能是一个困难的问题,即使信号是相同的事件,噪声的存在也会使比较更加困难。您可以考虑运行一些后处理以降低噪音,但是降低自我的噪音是一个广泛的非平凡话题。

另一个问题可能是,这两个设备捕获的信号实际上可能有很大不同,例如,质量高质量的音频(我猜是来自Live Mix Console的输出?)将与实时版本大不相同(这是猜测手机麦克风捕获的舞台监视器/FOH系统是否出现?)

也许最简单的开始方法是使用跨相关进行时间延迟分析。

交叉相关函数中的峰将表明两个信号之间的相对时间延迟(样品中),因此您可以相应地应用偏移。

我对这个主题一无所知,但我认为您正在寻找"音频指纹"。这里的类似问题。

一种替代方法(更容易出错)的方式正在通过语音到文本库(或API)并匹配相关部分。当然,这不是很可靠。句子在歌曲和音乐会中经常重复。

此外,在移动设备上进行音频处理可能不佳(由于性能低或电池量高或两者兼而有之)。我建议您使用那样使用服务器。

祝你好运。

相关内容

最新更新