我曾经有一个场景,其中用户使用表演者的实时音频捕捉音乐会场景,同时设备正在从音频广播设备下载实时流媒体。我更换实时嘈杂音频(录制时捕获)我已经流式传输并保存在我的手机中(质量好的音频)。现在我正在手动设置音频偏移,同时进行合并,这样我就可以在准确的位置同步音频和视频活动。
现在我要做的是自动化音频同步过程。而不是将视频与给定偏移的清晰音频合并,我希望通过适当的同步自动合并视频和清晰的音频。
为此我需要找到我应该用清晰音频替换嘈杂音频的偏移量。当用户开始录制并停止录制时,我将获取实时音频样本并与实时流式音频进行比较,并从中获取该音频的确切部分并在完美时间同步。
有没有人知道如何通过比较两个音频文件并与视频同步来找到偏移量。?
答案 0 :(得分:7)
这是一个简洁明了的答案。
•这并不容易 - 它将涉及信号处理和数学 •快速Google为我提供this解决方案,包括代码 •有关上述技术的更多信息here •在尝试将其移植到iOS之前,我建议至少获得基本的理解 •我建议您使用iOS上的Accelerate框架进行快速傅里叶变换等 •我不同意在服务器上执行此操作的其他答案 - 设备目前功能强大。用户不会介意几秒钟处理看似神奇的事情。
修改强>
顺便说一下,我觉得值得退一步。而 像这样的数学和花哨的信号处理可以产生很好的效果,并且 做一些非常神奇的东西,可以有偏远的情况 算法崩溃了(希望不经常)。
如果不是复杂的信号处理, 还有另一种方式吗?经过一番思考,可能会有。如果你见面 以下所有条件:
•您可以控制服务器组件(音频广播器) 装置)
•广播公司了解“真实音频”录音 延迟
•广播公司和接收方正在以某种方式进行通信 允许准确的时间同步...然后计算音频偏移的任务变得合理 不重要的。您可以使用NTP或其他更准确的时间 同步方法使全局有一个参考点 时间。然后,它就像计算之间的差异一样简单 音频流时间码,其中时间码基于全局 参考时间。
答案 1 :(得分:1)
这可能被证明是一个难题,因为即使信号是相同的事件,噪声的存在使得比较更难。你可以考虑运行一些后期处理以减少噪音,但是它自身的降噪是一个广泛的非平凡主题。
另一个问题可能是这两个设备捕获的信号实际上可能差别很大,例如高质量的音频(我想从实时混音控制台输出?)将与现场版本完全不同(这是猜测是通过手机麦克风拍摄的舞台监听/ FOH系统出来的?)
也许最简单的启动方法是使用cross correlation进行时间延迟分析。
互相关函数中的峰值表示两个信号之间的相对时间延迟(采样中),因此您可以相应地应用移位。
答案 2 :(得分:0)
我不太了解这个主题,但我认为你正在寻找"音频指纹识别"。 Similar question here.
另一种(更容易出错)方式是通过语音到文本库(或API)运行两种声音并匹配相关部分。这当然不是很可靠。在歌曲和音乐会中经常重复的句子可能是有用的。
此外,在移动设备上进行音频处理可能效果不佳(因为低性能或高电池电量消耗或两者兼而有之)。如果你那样的话,我建议你使用服务器。
祝你好运。