在虚拟世界里用自己的原声太出戏了!
什么是RVC?
RVC项目是新晋的变声方案,使用更先进的声音处理算法。在效果上比旧世代的变声方案有明显的进步。在这里只会用到推理,也就是给自己的声音添加另一种音色。
预准备
RVC实际上相当吃配置,这还没算上Nvdia语音降噪带来的性能消耗。
个人配置:
硬件
- Oculus Quest2
- Ryzen2600+RTX2070
软件
- VoiceMeeter Banana
- NvdiaBroadCast
- RVC
VoiceMeeter 传送门:VOICEMEETER Virtual Audio Mixer.
NvdiaBroadCast 传送门:NVIDIA Broadcast App: AI-Powered Voice and Video | NVIDIA
RVC 项目传送门:Retrieval-based-Voice-Conversion-WebUI
下载与安装
VoiceMeeter
VoiceMeeter不仅仅是混音软件,还能分离处理电脑中不同的声音来源。选择Banana版本——相比标准版多一个虚拟输入控制,而且是免费的。安装完成后需要重启。
NvdiaBroadCast
NvdiaBroadCast是仅限20系及以上的英伟达显卡使用的降噪软件。以默认配置安装。
RVC
RVC项目是新晋的变声方案。在这里只会用到推理,也就是给自己的声音添加另一种音色。在Github的Release中获取到。
配置与使用
通常,声音在系统的流程上是这样的:
阶段一 | 声音捕获 | 从麦克风获取原声 |
阶段二 | Nvdia降噪 | 经过NvdiaBroadcast,转出到VoiceMeeter |
阶段三 | RVC变声 | RVC捕获Nvdia降噪,处理后转出到VoiceMeeter |
阶段四 | 声音输出 | VoiceMeeter控制输出,把处理后的声音转入软件 |
实际上,这些阶段每一个部分都可以算作独立的麦克风与扬声器,因为他们是声音流转过程中的一部分,每一个部分都有输入输出的功能。这可能相当令人费解。
总之,我们一步一步来。最终的目的是让VoiceMeeter接管处理后的声音,然后输出到需要的软件中。
Nvdia降噪
在英伟达降噪面板中进行设置:
- 将麦克风选项的设备调整为自己使用的麦克风;
- 将扬声器选项设置为VoiceMeeter Input的虚拟扬声器。
如果你安装了Banana版本,你可能会注意到,扬声器这里有两个选项:
- VoiceMeeter Input
- VoiceMeeter Aux Input
这两个扬声器是VoiceMeeter的虚拟输入端。建议把第一个Input作为语音端口,第二个作为系统声音端口。这样就不会搞混。
把麦克风与扬声器设置中的噪音消除与房间回声消除全部打开。它的效果相当不错。
RVC变声
现在,打开RVC,选中go-realtime-gui.bat
。这是适用于N卡的项目。如果设备是A卡或者I卡,使用go-realtime-gui-dml.bat
。
警告:我没有尝试过
go-realtime-gui-dml.bat
,因为我用的是N卡。不保证这个教程对A卡、I卡用户的可用性。
RVC提供的图形界面有三个主要板块:
- 加载模型。添加的音色取决与模型。默认情况下,会使用kikiV1模型。
- 音频设备。在这里设置输入与输出设备。
- 设置。对声音进行细节的把控。
虽然还可以在Config中进行更细致的改动,但是简单使用的话图形界面中的设置就够用了。
我们先来看模型。默认情况下,会使用kikiV1模型。
然后选择音频设备。你可能在选项中看到了相当多的选项,即使是同一个设备也有很多选项。
这是因为在声音处理方案上有MME、WDM、ASPI等等方案。虽然MME方案的延迟和音质都不出众,但胜在稳定。我们先使用MME项目;确定可以使用没有问题后,再考虑切换别的处理方案。
在输入设备中,选择NvdiaBroadCast MME,这样就可以导入降噪后的声音了。
在输出设备中,选择VoiceMeeter Input,把处理后的声音导入第一个虚拟输入口。
接下来进行设置。
- 大多数设置保持默认即可。
- 响应阈值可以适度调低,避免失声。
- 响度因子可以适度调低。
- 音高算法建议使用rmvpe。
- harvest进程数越多,速度越快,越消耗性能。
- 关闭输入和输出降噪。打开可能导致失声。
完成后,打开【开始音频转换】。
VoiceMeeter 处理
初次启动VoiceMeeter可能会对仪表盘感到混乱与无助——但实际上,它的运作逻辑是相当清晰的。
对于VoiceMeeter,两个重要概念是「虚拟与真实」还有「输入与输出」。
尽管很难理解,但先试着把界面从左到右看成一条流水线吧。
- VoiceMeeter主界面中,左侧的
HARDWARE INPU1
中选择硬件输入麦克风。
- 如果选择你录音的麦克风,你可以在这里听到自己的原声。
- 如果选择NVDIA BROADCAST,你可以听到自己降噪后的原声。
- 需要的话,按
MUTE
来静音这个接口。
在中间的
VIRTUAL INPUTS
有两个先前提到的虚拟输入口。你可以将Windows右下角的系统声音输出选择为VoiceMeeter Aux Input。这样,第一个输入接口负责处理人声,第二个输入接口负责处理人声以外的声音。需要的话,按MUTE
来静音这个接口。在右侧的
HARDWARE OUT
控制输出的设备。可以选择自己的耳机,或者中意的扬声器。你可能已经注意到了——VoiceMeeter已经接管了Windows的声音处理。需要的话,按MUTE
来静音这个接口。
如果一切正常,那么已经能够在自己的扬声器中听到自己的声音了。如果觉得延迟过高,可以尝试更换处理方案,或者在VB的设置中降低采样延迟。
收尾
实际上完全没有必要去购买那些奇怪的教程或者模型。需要的话,可以找来自己喜欢的声音,来训练一个模型的。
话又说回来,即使在虚拟世界,该社恐还是会社恐啊……
经验
值得注意的是,「麦克风」和「扬声器」都是抽象概念。对于系统来说均能输出声音。
- Headset Microphone,还有Headphone等等硬件获取声音的麦克风,这类设备作为硬件输入,显示在VB面板中最左侧的
HARDWARE INPUT
。 - AudioRelay等等软件,捕获手机麦克风、然后输出声音的方式,是通过软件模拟一个麦克风来发声。尽管如此,这依旧可以当作硬件输入,VB会把它们识别为真正的麦克风,同样显示在VB面板中最左侧的
HARDWARE INPUT
。 - 英伟达降噪有有麦克风与扬声器两张选项卡,分别能够对麦克风和扬声器在发出声音前进行降噪,然后再次作为麦克风输出。这相当于一个中继站——对于VB来说,这同样是一个硬件输入,显示在VB面板中最左侧的
HARDWARE INPUT
。
是的,无论物理存在与否,他们都可以作为硬件输入,即使是模拟出来的。一定要理清自己设备中每一个声音设备的意义。
这些硬件输入的麦克风,都能在英伟达的麦克风面板中找到。