如何仅从文件中获取乐器并删除人声?
我了解这称为卡拉OK。
如何仅从文件中获取乐器并删除人声?
我了解这称为卡拉OK。
Answers:
可以做到这一点的软件称为sox
它具有卡拉OK选项:
哎呀
异相立体声效果。将立体声混合为双单声道,其中每个单声道包含左右立体声声道之间的差异。这有时被称为“卡拉OK”效果,因为它通常具有从录音中删除大部分或全部人声的效果。
所以从命令行这...
sox song.wav music.wav oops
会删除人声创建音乐。
再简单不过了吗?
还有更多程序。大胆 也可以做到。它是图形的。
这是一个如何。您需要手动执行自动操作的Sox自动化程序,这样会有点困难,但同时也会让您进行更多调整(因此,根据经验,一个或另一个可能是更好的选择)。
libsox-fmt-mp3
软件包,此方法也不适用于MP3 。使用MP3时,输出中有人声。
要从立体声录音中实时删除人声,我们可以添加LADSPA滤波器作为脉冲音频的声音输出。史蒂夫·哈里斯(Steve Harris)的LADSPA插件提供了一个相当不错的卡拉OK插件,该插件可以从立体声录音中删除中央人声,并且也可以与Audacity配合使用。
这些插件将与swh-plugins 软件包一起安装。语音消除和连续单声道转换的数量作为控制参数给出,单位为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插件,人声越靠中越好。单声道录音将不起作用。
大多数程序中的“删除人声”选项使用了一个巧妙的技巧。通常,在录制歌曲时,人声会居中,这意味着它们在左右声道中的音量相等。另一方面,通常乐器偏心,这意味着它们在左声道或右声道的声音更大。因此,您可以尝试通过“减去”两个通道来消除人声。由于两者的声音相同,因此它们会完全消失。由于一种乐器比另一种乐器响亮,因此它们比较安静,但仍然存在。
显然,该技术不适用于没有单独左右轨道的单声道文件。而且,它或多或少地产生单声道输出。即使是使用集中人声和偏心乐器录制的歌曲,通常也无法完全消除人声。
尽管Virtual DJ可能使用一些秘密或专有算法来实现更好的性能,但我发现这种可能性不大,尤其是考虑到他们的FAQ内容。实际上,他们甚至为替代程序提出了建议,顺便说一句,无论如何,我都会推荐相同的程序。