我怎样才能从文件中获取乐器并删除人声?
我知道这叫卡拉OK。
答案1
答案2
为了从立体声录音中实时删除人声,我们可以添加LADSPA 过滤器作为 pulseaudio 的声音输出。Steve Harris 的 LADSPA 插件它将从立体声录音中删除中央人声,并且还可以与 Audacity 一起使用。
这些插件将随软件包一起安装swh-插件 . 语音消除量和连续单声道转换量以 dB 为单位作为控制参数。
要应用效果,我们需要知道默认音频接收器的 pulseaudio 名称
pacmd list-sinks
默认接收器名称以星号标记,如下例所示:
* index: 1
name: <alsa_output.pci-0000_00_14.2.analog-stereo>
然后我们可以使用以下命令应用 karako 过滤器
pactl load-module module-ladspa-sink sink_name=Karaoke master=<name> plugin=karaoke_1409 label=karaoke control=-30
替换<name>
为您的音频设备的名称(例如alsa_output.pci-0000_00_14.2.analog-stereo
)。
记下上述命令输出的模块编号,以防我们再次想要删除它(pactl unload-module <nmber>
)。所有模块都将被删除,并且默认值将重置为pulseaudio -k
。
此control
参数在此处给出语音去除的-30
dB,值越高(即负值越小,如-10
),人声越多(但音乐效果更好),值越低(即负值越大,如-60
),人声越少,但原始音乐去除效果也更好。正值也是可以的,但会导致严重失真。
在开始播放音乐播放器之前,选择这个新创建的音频输出接收器作为声音设置中的输出。
请注意,并非所有音乐录音都适合此卡拉 OK 插件,人声越集中越好。单声道录音不适用。
答案3
大多数程序中的“移除人声”选项都使用了一个巧妙的技巧。通常,录制歌曲时,人声位于中央,这意味着它们在左右声道中的音量相同。另一方面,乐器通常位于中心之外,这意味着它们在左声道或右声道中的声音较大。因此,您可以尝试通过“减去”两个声道来移除人声。由于两个声道中的人声相同,因此它们会完全消失。由于乐器在一个声道中的声音比另一个声道中的声音大,因此它们会更安静,但仍然存在。
这种技术显然不适用于没有单独左右声道的单声道文件。此外,它或多或少会产生单声道输出。即使是录制时人声居中而乐器不在中心的歌曲,它通常也无法完全消除人声。
虽然 Virtual DJ 可能使用了一些秘密或专有算法来实现更好的性能,但我认为这不太可能,尤其是考虑到他们的有关该主题的常见问题解答。事实上,他们甚至推荐了一个替代方案,碰巧的是,这个方案和我本来要推荐的方案是一样的。