11

我曾经有一个场景,用户使用表演者的实时音频捕获音乐会场景,同时设备正在从音频广播设备下载实时流媒体。后来我用我替换了实时嘈杂音频(录制时捕获)已流式传输并保存在我的手机中(优质音频)。现在我在合并时手动设置音频偏移量,并根据反复试验,以便我可以在确切位置同步音频和视频活动。

现在我想做的是自动化音频同步的过程。而不是在给定的偏移量处将视频与清晰的音频合并,我想通过适当的同步自动将视频与清晰的音频合并。

为此,我需要找到我应该用清晰的音频替换嘈杂的音频的偏移量。例如,当用户开始录制并停止录制时,我将获取实时音频的样本并与实时流式传输的音频进行比较并获取确切的音频该音频的一部分并在完美的时间同步。

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

4

3 回答 3

7

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

• 这并不容易——它将涉及信号处理和数学。
• 一个快速的谷歌给了我这个解决方案,包括代码。•这里
有关于上述技术的更多信息。 • 我建议您在尝试将其移植到iOS 之前至少获得一个基本的了解。 • 我建议您在iOS 上使用Accelerate框架来进行快速傅立叶变换等 • 我不同意其他关于在服务器上执行此操作的答案- 现在设备非常强大。用户不会介意几秒钟的处理时间来让看似神奇的事情发生。


编辑

顺便说一句,我认为值得退后一步。虽然像这样的数学和花哨的信号处理可以产生很好的结果,并做一些非常神奇的事情,但可能存在算法崩溃的异常情况(希望不会经常出现)。

如果不是让信号处理变得复杂,而是有另一种方法怎么办?经过一番思考,可能会有。如果您满足以下所有条件:

• 您可以控制服务器组件(音频广播设备)
• 广播公司知道“真实音频”录制延迟
• 广播公司和接收器以允许准确时间同步的方式进行通信

...然后计算音频偏移的任务变得相当简单。您可以使用 NTP 或其他更准确的时间同步方法,以便有一个全球时间参考点。然后,它就像计算音频流时间码之间的差异一样简单,其中时间码基于全局参考时间。

于 2017-01-04T02:44:06.393 回答
1

这可能被证明是一个难题,因为即使信号属于同一事件,噪声的存在也会使比较变得更加困难。您可以考虑运行一些后处理来降低噪音,但降噪本身是一个广泛而重要的话题。

另一个问题可能是两个设备捕获的信号实际上可能有很大差异,例如高质量的音频(我猜是来自现场混音控制台的输出?)将与现场版本完全不同(这是猜测出来的)由手机麦克风捕获的舞台监听/ FOH 系统?)

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

互相关函数中的峰值表明两个信号之间的相对时间延迟(以样本为单位),因此您可以相应地应用偏移。

于 2017-01-05T14:12:11.943 回答
0

我对此主题了解不多,但我认为您正在寻找“音频指纹”。类似的问题在这里。

另一种(也更容易出错)的方法是通过语音转文本库(或 API)运行这两种声音并匹配相关部分。这当然不是很可靠。句子经常在歌曲和音乐会中重复,可能是乐器。

此外,在移动设备上进行音频处理可能无法很好地播放(因为性能低或电池消耗大或两者兼而有之)。如果你这样做,我建议你使用服务器。

祝你好运。

于 2017-01-02T13:18:59.960 回答