如何找到两个音频文件的偏移量?一吵一清
how to find an offset from two audio file ? one is noisy and one is clear
我曾经有过这样的场景,用户使用表演者的实时音频捕捉音乐会场景,同时设备正在从音频广播公司下载实时流device.later我替换了实时嘈杂的音频(捕捉录制时)与我流式传输并保存在 phone 中的那个(优质音频)。现在我在合并时通过反复试验手动设置音频偏移,这样我就可以同步音频和视频 activity 在确切的位置。
现在我想做的是自动执行 audio.instead 的同步过程,在给定的偏移量处合并视频和清晰的音频我想通过适当的同步自动合并视频和清晰的音频。
为此,我需要找到我应该用清晰的 audio.e.g 替换嘈杂音频的偏移量。当用户开始录制和停止录制时,我将获取实时音频样本并与实时流式传输音频进行比较,并从中获取该音频的确切部分并在完美的时间同步。
有谁知道如何通过比较两个音频文件并与视频同步来找到偏移量吗?
我不太了解这个主题,但我认为您正在寻找 "audio fingerprinting"。 Similar question here.
另一种(更容易出错)的方法是 运行 通过语音到文本库(或 API)和匹配相关部分的声音。这当然不太可靠。歌曲中经常重复的句子和音乐会可能是器乐。
此外,在移动设备上进行音频处理可能效果不佳(因为性能低下或电池消耗高或两者兼而有之)。如果你这样做,我建议你使用服务器。
祝你好运。
这是一个简洁明了的答案。
• 这并不容易 - 它将涉及信号处理和数学。
• 快速 Google 给我 this 解决方案,包括代码。
• 有关上述技术的更多信息 here。
• 我建议您在尝试将其移植到 iOS.
之前至少获得基本的了解
• 我建议您在 iOS 上使用 Accelerate 框架进行快速傅立叶变换等
• 我不同意关于在服务器上执行此操作的其他答案 - 现在的设备功能非常强大。用户不会介意几秒钟的处理来让看似神奇的事情发生。
Edit
As an aside, I think it's worth taking a step back for a second. While
math and fancy signal processing like this can give great results, and
do some pretty magical stuff, there can be outlying cases where the
algorithm falls apart (hopefully not often).
What if, instead of getting complicated with signal processing,
there's another way? After some thought, there might be. If you meet
all the following conditions:
• You are in control of the server component (audio broadcaster
device)
• The broadcaster is aware of the 'real audio' recording
latency
• The broadcaster and receiver are communicating in a way
that allows accurate time synchronisation
...then the task of calculating audio offset becomes reasonably
trivial. You could use NTP or some other more accurate time
synchronisation method so that there is a global point of reference
for time. Then, it is as simple as calculating the difference between
audio stream time codes, where the time codes are based on the global
reference time.
这可能会被证明是一个难题,因为即使信号属于同一事件,噪声的存在也会使比较变得更加困难。您可以考虑 运行 一些 post 处理来降低噪音,但降噪本身是一个广泛的重要话题。
另一个问题可能是两个设备捕获的信号实际上可能有很大差异,例如高质量音频(我猜是现场混音控制台的输出?)将与现场版本(哪个猜测是来自 phone 麦克风捕获的舞台监听器/FOH 系统吗?)
也许最简单的开始方法是使用 cross correlation 进行时间延迟分析。
互相关函数中的峰值表明两个信号之间的相对时间延迟(以样本为单位),因此您可以相应地应用偏移。
我曾经有过这样的场景,用户使用表演者的实时音频捕捉音乐会场景,同时设备正在从音频广播公司下载实时流device.later我替换了实时嘈杂的音频(捕捉录制时)与我流式传输并保存在 phone 中的那个(优质音频)。现在我在合并时通过反复试验手动设置音频偏移,这样我就可以同步音频和视频 activity 在确切的位置。
现在我想做的是自动执行 audio.instead 的同步过程,在给定的偏移量处合并视频和清晰的音频我想通过适当的同步自动合并视频和清晰的音频。
为此,我需要找到我应该用清晰的 audio.e.g 替换嘈杂音频的偏移量。当用户开始录制和停止录制时,我将获取实时音频样本并与实时流式传输音频进行比较,并从中获取该音频的确切部分并在完美的时间同步。
有谁知道如何通过比较两个音频文件并与视频同步来找到偏移量吗?
我不太了解这个主题,但我认为您正在寻找 "audio fingerprinting"。 Similar question here.
另一种(更容易出错)的方法是 运行 通过语音到文本库(或 API)和匹配相关部分的声音。这当然不太可靠。歌曲中经常重复的句子和音乐会可能是器乐。
此外,在移动设备上进行音频处理可能效果不佳(因为性能低下或电池消耗高或两者兼而有之)。如果你这样做,我建议你使用服务器。
祝你好运。
这是一个简洁明了的答案。
• 这并不容易 - 它将涉及信号处理和数学。
• 快速 Google 给我 this 解决方案,包括代码。
• 有关上述技术的更多信息 here。
• 我建议您在尝试将其移植到 iOS.
之前至少获得基本的了解
• 我建议您在 iOS 上使用 Accelerate 框架进行快速傅立叶变换等
• 我不同意关于在服务器上执行此操作的其他答案 - 现在的设备功能非常强大。用户不会介意几秒钟的处理来让看似神奇的事情发生。
Edit
As an aside, I think it's worth taking a step back for a second. While math and fancy signal processing like this can give great results, and do some pretty magical stuff, there can be outlying cases where the algorithm falls apart (hopefully not often).
What if, instead of getting complicated with signal processing, there's another way? After some thought, there might be. If you meet all the following conditions:
• You are in control of the server component (audio broadcaster device)
• The broadcaster is aware of the 'real audio' recording latency
• The broadcaster and receiver are communicating in a way that allows accurate time synchronisation...then the task of calculating audio offset becomes reasonably trivial. You could use NTP or some other more accurate time synchronisation method so that there is a global point of reference for time. Then, it is as simple as calculating the difference between audio stream time codes, where the time codes are based on the global reference time.
这可能会被证明是一个难题,因为即使信号属于同一事件,噪声的存在也会使比较变得更加困难。您可以考虑 运行 一些 post 处理来降低噪音,但降噪本身是一个广泛的重要话题。
另一个问题可能是两个设备捕获的信号实际上可能有很大差异,例如高质量音频(我猜是现场混音控制台的输出?)将与现场版本(哪个猜测是来自 phone 麦克风捕获的舞台监听器/FOH 系统吗?)
也许最简单的开始方法是使用 cross correlation 进行时间延迟分析。
互相关函数中的峰值表明两个信号之间的相对时间延迟(以样本为单位),因此您可以相应地应用偏移。