【问题标题】:Remove human voice from audio/video with software or command line使用软件或命令行从音频/视频中删除人声
【发布时间】:2019-12-23 16:41:08
【问题描述】:

我正在寻找一种从视频中删除人声的方法。最初,我有以下内容:

  • video1.mp4
  • voice1.mp3

video1 有图像并且只有非人声,而 voice1 只有一个人声 然后我将 video1 voice1 来创建 video2.m4,所以在 video2 我可以听到来自 video1 和来自 voice1 的音频时间>。值得一提的是,video1voice1 的长度相同,约为 2 分钟。

这是一年前的事了。我不小心删除了 video1.mp4,但我还有 video2voice1.。现在我需要再次获取 video1.mp4。换句话说,如何从 video2 中删除 voice1? 如何从 video2 中删除人声?

我不在乎这是通过软件、命令行,甚至是计算机代码(也许是 Phyton;我听说 Python 可以用音频做一些很酷的事情)。

注意:* (Removal of Human Voice from a video or audio file) 中有一个类似的问题,但没有说明如何删除音频。

【问题讨论】:

  • 您可以反转语音音频并将其添加到 video2.mp4 中。如果 voice1 音频在添加到视频 1 时没有以任何方式发生变化,它应该被取消。
  • 这当然不是去除人声,而只是简单的phase cancellation
  • 在软件方面,无论你用来组合音频和视频的任何东西,都应该能够: 1. 反转语音1。 2.将倒置的voice1文件添加到video2中
  • 感谢您的回复。您可以将其发布为带有如何取消相位的链接的答案吗?那会很有帮助

标签: audio video


【解决方案1】:

问题

与其将其视为消除不需要的声音的问题,不如将其视为简单地取消两个信号的总和。目前我们要考虑三个音频信号,让我们调用它们

  • A: video1.mp4 的音轨
  • Bvoice1.mp3的音频
  • CAB 的总和(即 C = A + B),现在是 video2.mp4 的音轨

我们无法再访问A,但我们仍然拥有BC

理想情况

理想情况假设:

  • AB 长度相同
  • 两个信号的相加没有任何过滤

解决方案

这种情况下的解决方案相当简单,我们需要做的就是将B 乘以-1 的增益值(即反转),然后将其与信号C 相加。

如果

C = A + B

那么

A = C - B
A = C + (B * -1)

鉴于您首先对这些信号求和,我假设您可以使用一些音频/视频编辑软件。要反转 B,您可以将文件导入以下之一:

任何可以编辑音频的软件也应该能够反转音频信号。对于您用于即时调整的任何DAW,将CB 放在同一个项目中可能是理想的。

注意事项

  • 如果B 的增益发生了变化(即C = A + xB),那么解决方案仍然相当简单,因为您只需将-B 乘以一个因数x
  • 如果B 的长度与A 的长度不同,则需要将-BC 正确对齐,以便取消信号。

非理想情况

如果您认为 B 已经应用了一些流程,则解决方案会涉及更多。这个过程可以是任何东西,滤波(EQ)、延迟、混响、音高转换、速度转换。让我们将此进程称为函数H(),如果B 是该进程的输入,则为:H(B)

C = A + H(B)

我们可以再简单地反转B,我们现在需要首先对B应用完全相同的过程,然后反转H(B)可能不等于H(-B)。您应该先以完全相同的方式处理B,然后在最后反转它。

如果由于某种原因您不记得应用于B 的过程,那么这会让您有点卡住。在这种情况下,您最好的选择是尝试并通过试错来重新创建该过程。 H(B) 可能会有一些残余,除非您完全匹配流程。

【讨论】: