我正在寻找一种从视频中消除人声的方法。最初,我有以下几点:
video1有图像,只有没有人声,而voice1只有一个人声。然后我将video1和voice1组合在一起,创建video2.m4,因此在video2中,我既可以听到video1的声音,也可以听到voice1的声音。值得一提的是video1和voice1的长度相同,约为2分钟。
这是一年前。我不小心删除了video1.mp4,但仍然有video2和voice1。现在,我需要再次获取video1.mp4。换句话说,如何从video2中删除voice1? 如何从video2消除人的声音?
我不在乎是通过软件,命令行,甚至是计算机代码(也许是Phyton;我听说Python可以用音频做一些很棒的事情)。
注意:StackOverflow(Removal of Human Voice from a video or audio file)中也有类似的问题,但是没有说明如何删除音频。
最佳答案
问题
与其将其视为消除不必要声音的问题,不如将其视为消除两个信号之和。目前,我们要考虑三个音频信号,让我们称之为
A
:video1.mp4的音轨B
:voice1.mp3的音频C
:A
和B
(即C = A + B
)之和,现在是video2.mp4
我们不再可以访问
A
,但是仍然可以使用B
和C
。理想情况
理想情况假设:
A
与B
的长度相同解
这种情况下的解决方案相当简单,我们要做的就是将
B
乘以-1
的增益值(即反相),然后将其与信号C
相加。如果
C = A + B
然后
A = C - B
A = C + (B * -1)
首先考虑到这些信号的总和,我假设您可以使用某些音频/视频编辑软件。要反转
B
,可以将文件导入以下内容之一:任何可以编辑音频的软件也应该能够转换音频信号。对于正在使用中进行即时调整的DAW,将
C
和B
放在同一个项目中可能是理想的。注意事项
B
的增益(即C = A + xB
),则解决方案仍然是微不足道的,因为您只需将-B
乘以一个系数x
B
与A
的长度不同,则需要正确地将-B
与C
对齐,以消除信号。 非理想情况
如果您考虑对
B
进行了某些处理,则解决方案会涉及更多一点。该过程可以是任何东西,包括滤波(EQ),延迟,混响,音高变化,速度变化。让我们将此过程称为H()
函数,如果B
是该过程的输入,则为:H(B)
。,即
C = A + H(B)
我们可以在更长的时间内简单地反转
B
,我们现在需要首先将完全相同的过程应用于B
,然后反转,因为H(B)
可能不等于H(-B)
。您应该首先以完全相同的方式处理B
,然后最后将其反转。如果由于某种原因您不记得应用于
B
的过程,那么您可能会有些困惑。在这种情况下,您最好的选择是尝试通过错误尝试重新创建流程。除非您完全匹配该过程,否则H(B)
可能会有些残留。