我正在寻找一种从视频中删除人声的方法。最初,我有以下几点:
- 视频1.mp4
- 语音1.mp3
video1有图像,只有非人类声音,而voice1只有一个人声 然后我将video1与语音 1 结合起来创建video2.m4,因此在video2中,我可以听到来自视频 1和语音1的音频。值得一提的是,视频1和语音1的长度相同,约为2分钟。
这是一年前的事了。我不小心删除了视频1.mp4但我仍然有视频2和语音1。现在我需要再次获取视频1.mp4。换句话说,如何从视频中删除语音12?如何从视频中删除人声2?
我不在乎这是通过软件、命令行还是计算机代码(也许是 Phyton;我听说Python可以用音频做很酷的事情(。
注意:在StackOverflow(从视频或音频文件中删除人声(中有一个类似的问题,但它没有解释如何删除音频。
问题
与其将其视为删除不需要的声音的问题,不如将其视为简单地撤消两个信号的总和。目前我们有三个音频信号需要考虑,让我们调用它们
A
:视频的音轨1.mp4B
:语音的音频1.mp3C
: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
您可以将文件导入到以下文件之一中:
- 大胆
- 车库乐队
- 实况调查组
- Adobe Premier/Audition
- Final Cut Pro
任何可以编辑音频的软件也应该能够反转音频信号。对于您用来即时进行调整的任何 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)
。