RVC Next

实时变声

实时 页面把麦克风里的声音即时转换成所选音色,再送到耳机、扬声器或虚拟声卡(例如给直播、语音聊天软件使用)。整个页面从上到下分成三块:音频设备、音色与参数、缓冲与降噪,底部固定着 开始 / 停止 按钮和状态栏。

实时转换跑在一个独立的后台进程里,和服务器、转换任务互不干扰;它打开的是服务器所在电脑上的声卡,而不是你正在用的浏览器所在的设备。

页面显示“此服务器暂不支持实时转换。”

说明服务器的 Python 环境里没有安装 sounddevice(PortAudio 的 Python 封装)。在 Linux 上还需要系统级的 libportaudio2。安装方法见 安装。

快速上手

  1. 打开左侧导航的 实时。
  2. 在 音频设备 区域选好 输入(麦克风)和 输出(耳机;要在 Discord、OBS 等程序中使用,选虚拟声卡,见 在其他程序中使用实时变声)。对着麦克风说话,输入电平 表应该会跳动;点 输出 旁边的 测试,应能听到一声提示音。
  3. 在 音色 选择器里选一个音色,按需调整 音色参数(例如男声转女声把 音高 调到 +12 左右)。
  4. 第一次使用时,开始按钮的位置可能显示 需要 … 和 下载(大小) 按钮:实时转换总是需要 HuBERT;音色有音高引导、且音高算法选的是 RMVPE、FCPE 或 CREPE 时,还需要对应的模型(pm 和 SwiftF0 不需要额外下载)。点下载,完成后按钮会恢复。
  5. 点底部的 开始。按钮会依次显示正在进行的每一步(检查音频设备,加载 PyTorch、音色和模型,然后 正在预热…),进入 运行中 后即可开口说话。
  6. 结束时点 停止。

下次打开页面时,上一次的设备、音色、参数和缓冲设置都会自动恢复,直接点 开始 即可。

使用本浏览器的麦克风

页面顶部的 服务器设备 和 本浏览器 决定声音从哪里来、到哪里去。本浏览器 使用打开网页的设备的麦克风和扬声器——例如用笔记本或手机连接另一台电脑上的 rvc-next,或者服务器根本没有声卡(这时只有这一个选项):浏览器通过 WebSocket 把麦克风发送到服务器,并从一个小的抖动缓冲中播放转换后的声音(60 ms,断音后重新缓冲;积压超过 250 ms 的部分会被丢弃)。

  • 第一次点 开始 时浏览器会请求麦克风权限,请允许。浏览器自带的回声消除、降噪和自动增益会被关闭,因为它们会干扰转换——请戴耳机。
  • 会话以浏览器的音频采样率运行(通常是 48 或 44.1 kHz)。音色、参数、缓冲、效果、增益(来自 设置 › 音频)和录音与服务器设备相同;监听、输入电平表和 测试 只属于服务器设备。
  • 实际延迟是显示的延迟,加上网络往返时间和 60 ms 缓冲。同一场所的有线或良好 Wi-Fi 网络能让它保持较小;标题下的一行显示缓冲和断音次数。
  • 浏览器只允许 HTTPS 页面或 localhost 使用麦克风;配置 HTTPS 见远程访问。
  • 关闭标签页,或连接中断 3 秒,会话就会停止。同一时间只能连接一个浏览器:后连接的会接管。

音频设备

设备面板的标题是 {主机名} 上的音频设备,提醒你这些是服务器那台电脑的设备。如果你是从另一台电脑远程打开网页,面板会额外提示:这些设备属于服务器所在的电脑,而不是此浏览器。 右上角的 刷新设备 按钮会重新扫描设备;停止状态下页面可见时,也会每 5 秒自动刷新一次。

同一个设备面板也出现在 设置 › 音频 中,两处改的是同一份设置。

输入、输出与监听

项目作用
输入麦克风。只要设备面板显示着,下方的 输入电平 表就实时显示音量:第一次 开始 之前、会话运行中、停止之后(包括出错停止)都是如此。电平表在后台打开,页面不会等它;麦克风被拔出或被占用时,可用后会自动恢复。可在 设置 › 音频 › 停止时显示输入电平 中关闭。
输出转换后的声音送往这里。下方的 输出电平 显示 rvc-next 送往该设备的声音(转换后的声音,或 监听自己 时的输入),没有声音时显示 —。旁边的 测试 按钮会在该设备上播放一段提示音。要把声音交给其他程序,请选择虚拟声卡的播放端(在其他程序中使用实时变声);要转换某台输出设备播放的声音,见 录制输出设备。
监听可选的第二个输出,默认 不监听。适合“输出给虚拟声卡、自己用耳机听”的场景。选了监听设备后会出现 监听电平 表、测试 按钮,以及:
 监听内容转换后 / 输入 / 两者(原声与转换后的声音叠加)
 监听音量−60 ~ +12 dB,默认 0 dB

设备菜单的排列规则:

  • 每台设备占一整行,菜单展开后和这一行一样宽,长名称会换行而不会被截断。名称下方还有一行说明:推荐的驱动、声道数和默认采样率。
  • 服务器还在列出设备时(需要一点时间,安装的驱动较多时更久),每个菜单显示 正在查找音频设备…。
  • 列表较长时(九项或以上,Windows 上很常见),顶部有搜索框。
  • 第一项总是 系统默认:跟随操作系统当前的默认设备。
  • 接着是系统默认的那台设备(带 默认 标签),然后按名称排序;虚拟声卡带 虚拟 标签。
  • 菜单里每一项是一台物理设备,显示完整名称。Windows 上同一个麦克风会同时出现在 MME、DirectSound、WASAPI 等多个驱动下,rvc-next 会把它们合并成一项,并自动选择推荐的驱动(Windows 上依次偏好 ASIO、WASAPI、WDM-KS、DirectSound、MME;Linux 上依次是 JACK、ALSA、PulseAudio;大多数 Linux 发行版自带的 PortAudio 没有 PulseAudio 驱动,PulseAudio 和 PipeWire 以 ALSA 设备 pulse、pipewire、default 的形式出现)。
  • 之前保存、但现在没连接的设备仍会以灰色显示,并带 未连接 标签。

录制输出设备(内录)

想转换电脑播放的声音而不是麦克风(视频、游戏、通话等),打开 设置 › 音频 › 把输出设备当作输入(内录)。输入菜单里就会同时列出所有输出设备,带 内录 标签;选中其中一台,它播放的声音就成为输入。

系统录制方式说明
WindowsWASAPI 环回任何输出设备、任何采样率都可以;没有声音播放时得到的是静音
Linux每个输出在 PulseAudio/PipeWire 里的监视器(“Monitor of …”)需要正在运行的 PulseAudio 或 PipeWire(pipewire-pulse)
macOS仅靠系统无法录制安装 BlackHole 等环回驱动,把声音送到它,再把它的输入(普通输入设备)选为输入

无法录制时,设备面板会说明原因。转换后的声音要送到另一台设备(耳机,或给其他程序用的虚拟声卡):如果录制的正是播放转换声音的那台输出,声音会被反复录回去,rvc-next 会拒绝(会录到自己的输出)。关闭该设置后,这些输入会再次隐藏。

输入设备无法“播放进去”,所以输出菜单只列输出设备。要把转换后的声音交给其他程序,请把虚拟声卡的播放端(例如 CABLE Input)选为输出,其他程序录制它的录音端(CABLE Output)。在其他程序中使用实时变声 分步讲解了 Windows、macOS 和 Linux 上的设置。

监听自己

监听自己 开关会把输入的原声直接送到监听设备(没有设置监听设备时送到输出),用来检查“麦克风 → 耳机”这条路由是否通畅。

  • 停止状态下打开:只做直通,不加载音色。
  • 运行中打开:设置了监听设备时,监听设备听到原声、输出仍是转换后的声音;没有设置监听设备时,输出会直接变成原声(相当于临时绕过转换)。

高级

展开 高级 可以看到:

项目说明
输入 · 驱动 / 输出 · 驱动同一台物理设备有多个驱动(host API)时才显示,推荐项标为 …(推荐)。
输入 · 声道 / 输出 · 声道输入的所选声道混成单声道;输出把声音写到所选声道。默认项 默认(声道 1)(输入)/ 默认(声道 1+2)(输出,单声道设备为声道 1),也可选 声道 N 或 混合 1+2。
采样率自动(默认)或设备支持的固定采样率。自动时使用输出设备的默认采样率(不支持时用 48 kHz)。
独占模式(WASAPI)仅当输出走 WASAPI 驱动时显示。独占模式可以降低延迟,但会让其他程序无法同时使用该设备。
输入音量−24 ~ +24 dB,默认 0 dB,在输入被测量电平和转换之前作用:调高声音小的麦克风,或调低过响的。
输出音量−60 ~ +12 dB,默认 0 dB,作用于送往输出设备的转换结果。

运行中修改音量(或监听的来源)会从下一块开始生效,不会重新打开设备。

多通道声卡

默认时输入只读取第 1 声道。如果你的麦克风接在声卡的第 2 声道(常见于多通道声卡),请明确选择 声道 2 或 混合 1+2。

面板底部有一行状态,例如 48 kHz · 单个双工流 · 估计延迟 640 毫秒:

  • 单个双工流:输入和输出走同一个驱动、同一个采样率,用一个流同时收发,延迟最低。
  • 分离的输入输出流:两者无法合成一个流(驱动或采样率不同),中间多一个缓冲区,延迟会多出一个块长。

测量真实延迟

估计值依赖驱动报告的延迟,而这个值往往偏乐观。状态行下方的 测量延迟 会实际测一次:

  1. 把输出接回输入:用音频线连接输出和输入、使用虚拟声卡自带的回环,或把扬声器靠近麦克风。
  2. 点击 测量延迟。几秒内,输出设备播放四段短噪声,输入设备同时监听。测量时实时变声必须已停止(监听自己 也要关闭),输入电平表会暂停。
  3. 结果类似:实测延迟 620 毫秒:经过设备的往返 560 毫秒 + 转换 60 毫秒(估计 580 毫秒)。

往返 是实测值:测试噪声经过实时变声所用的同一组缓冲(输出预填充、设备双向的缓冲、音频线或空气)。转换 部分是转换器自身的延迟(交叉淡化 + 10 ms,开启输入降噪时再加 min(交叉淡化, 40 ms)),只取决于设置,因此是计算值;SOLA 每块最多会让它少 10 ms。只要没有欠载,推理耗时不会增加延迟。

只要输入、输出和块长不变,测量结果就一直有效。用这些设置运行时,状态栏会在估计值旁显示 实测 N 毫秒,顶栏的实时变声标签也改用实测值。改交叉淡化或降噪只会重新计算转换部分;换设备或改块长会清除测量结果。

如果没有检测到返回的噪声,面板会提示:检查连接并调高音量。如果各段噪声返回的时间不一致(断音,或两个设备之间时钟漂移),请加大块长,或让输入输出使用同一驱动。用扬声器和麦克风测量时,结果包含声音在空气中传播的时间(约每米 3 毫秒)。

设备问题与修复按钮

每次修改设备,rvc-next 都会在后台实际尝试按当前配置打开设备:先让驱动检查设置,实时转换停止时还会把输出和监听设备真正运行片刻(输入设备本来就为 输入电平 表打开着)。所以问题会在点 开始 之前就显示在对应设备下方,测试 声音或 监听自己 失败时也一样。问题格式为 原因:服务器给出的说明(说明文字来自服务器,为英文,会写出设备名称):

原因含义处理方式
未连接找不到该设备提示 选择其他设备:在菜单里换一个
被其他程序占用设备正被别的程序使用若开着独占模式,会出现 关闭独占模式 按钮;否则提示 选择其他设备
会录到自己的输出输入录制的正是播放转换声音的输出(或监听)设备提示 选择其他设备:换一个输入或输出
不支持此声道数驱动不肯以这个声道数打开设备(rvc-next 已经选用设备报告可用的声道数,出现这一条通常是开了独占模式或设备有了变化)若开着独占模式,会出现 关闭独占模式 按钮;否则提示 选择其他设备(同一设备换个驱动通常就行)
不支持此格式设备拒绝当前采样率点 使用 48 kHz 按钮
启动后立即停止驱动接受了设置,但音频流一运行就被结束(设备被禁用或已断开、被其他程序独占,或驱动故障)提示 选择其他设备(同一设备换个驱动常常可行);开着独占模式时出现 关闭独占模式
麦克风权限被拒绝系统没有授予麦克风权限提示 如何授予权限:在系统的隐私设置中允许
回退到默认设备保存的设备不在了,将改用系统默认设备提示 选择其他设备

设备下方还可能出现一行提示,说明保存的设备是怎样被重新找到的,例如 在另一个驱动下找到了 {设备名}。(换了驱动但还是同一台设备),或 未找到 {设备名}:使用系统默认设备。

输出设备不见了怎么办

点 开始 时,如果保存的输出设备已经不存在,而系统默认设备可用,rvc-next 不会悄悄把声音送到默认设备(那可能是你的外放扬声器),而是弹出确认框:保存的输出设备不存在,将使用系统默认设备。 只有点 使用默认输出启动 才会继续。输入或监听设备完全找不到时,则直接报错,需要先换一个设备。

音色与参数

中间一块是 音色 选择器和 音色参数 面板,和 转换 页面用的是同一套控件,含义见 音色参数。在实时页面上:

  • 参数面板上方会提示 拖动时即时生效。:运行中拖动 音高、共振峰、索引强度、辅音保护、响度匹配 滑块,或切换 音高算法,都会立刻作用到正在转换的声音上,不会中断。
  • 切换到一个尚未下载的音高模型时,会继续使用当前的算法并提示缺少的模型。
  • 切换音色是热切换:新音色在后台加载,旧音色继续转换,加载完成后在两个块之间无缝切过去,HuBERT 和音高模型保持加载。新音色加载失败时,会继续使用原来的音色,选择器也会退回原来的音色。
  • 多说话人音色会显示 说话人 菜单,运行中也可以切换;换了音色后,说话人会回到新音色的第一个说话人。若该说话人有专属索引(spk<N>),也会一并换上。
  • 选择一个音色会载入它的默认预设;预设 按钮可以载入或保存预设,详见 音色参数。

缓冲与降噪

缓冲与降噪 区域控制声音如何分块送进模型。每个滑块的说明末尾会用 (+N ms) 标出它在估计延迟中所占的份额。

设置范围(默认)作用延迟份额运行中修改
块长20–1500 ms(250)每步处理的音频长度。越长越稳定,越短越快2 × 块长重新缓冲
交叉淡化10–150 ms(50)块之间的重叠,使衔接平滑等于交叉淡化重新缓冲
上下文50–5000 ms(2500)每个块附带给模型的过去音频。越多越平滑,耗时也越多不增加延迟,但增加计算量重新缓冲
输入门限−60–0 dB(−60)低于此电平的输入会被静音,−60 dB 为关闭无即时生效
输入降噪开 / 关(关)转换前对输入降噪min(交叉淡化, 40 ms)即时生效
输出降噪开 / 关(关)对转换结果降噪无即时生效
降噪强度0–1(0.9)开启任一降噪时显示:噪声被压低多少;1 去除最多,也可能带走一些人声无即时生效
相位声码器交叉淡化开 / 关(关)用相位声码器(来自 RVC 后来的实时界面,Applio 也采用)代替普通交叉淡化拼接各块:当相邻两块以不同相位渲染同一个声音时,普通交叉淡化在拼接中间会出现音量下陷,这种方式不会无即时生效

“重新缓冲”是指:运行中修改块长、交叉淡化或上下文时,音频流会被关闭并按新的缓冲区重新打开,会有一次短暂的中断,但音色不会重新加载。

估计延迟是怎么算的

估计延迟 ≈ 块长 + 交叉淡化 + 10 ms(拼接搜索)+ 块长(输出端预填充)+ 设备自身的输入、输出延迟;分离的输入输出流再加一个块长;开启输入降噪再加 min(交叉淡化, 40 ms)。默认设置(块长 250 ms、交叉淡化 50 ms)在双工流下约为 560 ms 加上设备延迟。

停止状态下修改缓冲设置会直接保存到设置里;运行中修改则立即发给正在运行的会话,同样会被记住。

效果

缓冲设置下方的 效果 与转换页上的效果链相同(效果),作用于每个转换好的块,再播放出去;混响的尾音和压缩器的包络会在块之间延续。修改从下一个块起生效,不需要重新缓冲,并与其他实时变声设置一起保存;监听自己 直通输入时不经过效果。这里不提供 变调:在实时流中,pedalboard 的变调会压住约一秒的音频;请用音色的 音高。

开始、停止与状态栏

页面底部固定着一条栏:

  • 开始 / 停止 按钮。从点击的那一刻起,按钮上依次显示启动的每一步:正在检查音频设备…、正在启动实时进程…(仅首次启动)、正在加载 PyTorch 和计算设备…(仅首次启动)、正在加载音色…、正在加载索引…、正在加载 HuBERT…、正在加载音高模型…、正在预热…;无需执行的步骤会跳过。停止过程中显示 正在停止…。没有选音色时按钮不可用,并提示 选择一个音色以开始。
  • 出错时,按钮上方会显示错误说明(因错误停止),一直保留到下一次 开始,或点它的 × 按钮关闭。
    • 音频设备出问题时会指明是哪一个:输入设备不可用、输出设备不可用 或 监听设备不可用,后面是原因(被其他程序占用、未连接、不支持此格式…)和设备名称,例如 The output device “Speakers (Realtek)” is in use by another program, or refused to open: …。输入和输出共用一个音频流、又无法判断是哪一个时,消息会同时列出两者。
    • 实时进程本身退出时(驱动或 GPU 库崩溃、系统内存耗尽等),标题为 后台进程意外退出,消息说明它是如何结束的(退出代码或信号),输出中有线索时也会给出原因。
    • 详情 逐项列出所有字段(设备、驱动、驱动自己的消息、异常、退出代码…),调用栈和进程最后的输出完整显示。复制 会把这些内容复制为文本,可直接贴到问题反馈里。

状态栏每秒更新 10 次,包括:

内容说明
输入 / 输出 电平表输入与转换后输出的音量(RMS 与峰值)
负载推理耗时(最近 50 块的第 95 百分位;不足 10 块时取中位数)÷ 块长。超过 80% 时进度条变成警示色,表示模型快跟不上实时了;超过 100% 时显示 >100%,输出会断音。某一块晚了时,会话会跳过过时的输入并裁掉输出缓冲里多出的部分,延迟不会因此一直增加
将块长增加到 N 毫秒负载过高时出现。按最近推理耗时的 95 分位估算一个能让负载回到约 70% 的块长(上限 1500 ms),点一下即应用
延迟 N ms当前的估计端到端延迟
实测 N 毫秒实测延迟,当测量结果与本次会话的设备和块长相符时显示
N 次欠载 / N 次溢出输出缓冲用空了(会听到断续)/ 输入缓冲溢出的次数,只在发生过时显示
GPU N MB实时进程占用的显存

录音

实时变声运行时,开始按钮旁的 录音 会把会话写成输出文件夹里的 WAV 文件(<日期>/live/)。可以选择保留什么:

选项文件
变声与输入(立体声)左声道是输入,右声道是变声结果:便于对比,或之后单独编辑其中之一
仅变声只有变声结果,单声道
仅输入只有你的输入,单声道(经过 输入音量)

之后按钮显示 停止录音 · 0:12。录音在你停止它、实时变声停止或采样率改变时结束,随后出现在实时页的 录音 一节和所有输出列表中,并记录所用的音色和参数。录音不在音频线程上进行,不会让任何一块变晚。输出音量和监听音量不作用于录音。

顶栏的实时标签

会话处于活动状态时(运行中、加载中、重新连接中等),所有页面的顶栏都会显示一个实时标签,例如 实时 · 620 毫秒;加载等过程中则显示当前状态。点击标签回到 实时 页面,点它右侧的 按钮可以在任何页面直接停止。重新连接或出错时,标签会变成红色。

设备断开与自动重连

运行中拔掉耳机或 USB 麦克风时:

  1. 会话进入 正在重新连接设备… 状态,顶栏标签显示这一状态并变红;页面底部会说明断开的是哪个设备,例如 输出设备已断开 以及它的名称。
  2. 服务器每 2 秒重新扫描一次设备。
  3. 原设备重新出现(包括在另一个驱动下找到同一台设备)时,自动重新打开并回到 运行中,音色不需要重新加载。

这个行为由 设置 › 音频 › 自动重新连接丢失的设备 控制(默认开启)。关闭后,设备一旦断开,会话就直接停止,错误说明会指出断开的是哪个设备。

和其他任务一起使用 GPU

实时转换在 GPU 上运行时会占用 GPU:

  • 此时排队的 GPU 任务(转换、分离、训练等)会显示 等待 GPU,并提供 仍然运行 按钮,提示 实时转换正在使用 GPU。同时运行可能导致声音卡顿。
  • 实时会话活动时,顶栏的 释放显存 不可用。停止后,空闲的实时进程仍会保留已加载的模型以便下次快速启动,此时可以用 释放显存 释放。
  • 显存不足时会话会以 GPU 不可用或显存不足 停止,实时进程和服务器都会自动卸载已加载的模型。可以关闭其他占显存的程序后重试,或在 设置 › 计算 中改用 CPU。

降低延迟的建议

  1. 先保证不卡顿,再压延迟。 从默认的 250 ms 块长开始,观察 负载:长期低于 50% 再逐步减小块长;超过 80% 或出现 欠载 就加大块长(或直接点 将块长增加到 N 毫秒)。
  2. 让输入输出走同一个驱动和采样率,状态行显示 单个双工流,可以省掉一个块长的延迟。
  3. 使用低延迟驱动:Windows 上优先 WASAPI 或 ASIO,Linux 上优先 JACK 或 ALSA,在 高级 › 驱动 中选择。
  4. 上下文 不增加延迟,但会增加每块的计算量;负载偏高时可以从 2500 ms 适当减小。
  5. 交叉淡化 直接计入延迟,一般 50 ms 足够;开启 输入降噪 会再增加最多 40 ms。
  6. 音高算法上,pm 最快,RMVPE 质量最好;GPU 较弱时可以试试 pm。
  7. GPU 上默认启用 设置 › 计算 › 实时转换使用 CUDA Graph,可以减少每块的开销。

ASIO(Windows)

专业声卡常提供 ASIO 驱动,延迟通常比 WASAPI 更低。默认情况下 ASIO 不会被列出,需要:

  1. 打开 设置 › 音频,开启 启用 ASIO 驱动(Windows)。
  2. 回到 实时 页面,点 刷新设备。支持 ASIO 的设备会以 ASIO 作为推荐驱动,也可以在 高级 › 驱动 中手动选择。

实时后台进程在第一次使用时启动并一直保留。切换 ASIO 开关后如果 ASIO 设备打不开,重启一次 rvc-next 服务器即可让新设置作用于实时进程。

用命令行运行

不打开网页也可以实时变声,设备和参数默认沿用网页里保存的设置:

rvc-next live devices          # 列出音频设备
rvc-next live check            # 检查保存的设备和格式
rvc-next live test-tone        # 在输出设备上播放提示音
rvc-next live run -v 我的音色 --pitch 12   # 开始实时转换,Ctrl+C 结束

live run 还支持 --block-ms、--crossfade-ms、--context-ms、--threshold-db、--denoise-strength、--phase-vocoder、--input-gain、--record both|converted|input、--allow-fallback 等选项,完整列表见 命令参考。

本页目录