"Reference audio and emotions" replaces Edit emotions: a large window with the voices on top (main voice, emotions, new emotion) and every clip of the character below, one row each (listen, file and length, its line editable in place, where else it is used, Main / Aux for the voice picked), with filters, search and paging. Auxiliary references (timbre averaged in, v1 / v2 / v2Pro), fixed lines (`lines`) and lengths need Anomalous_TTS interface 18. tts_voice_refs.js holds the rules; the old clip search and merge helper go. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
22 KiB
音频工作台使用说明
插件里也能看简版:进入音频页后,点右上角的 !。
0. 需要什么
音频页用 GPT-SoVITS 给角色配音,需要节点包 Anomalous_TTS。
- 没装时,音频页中间会写它能做什么、怎么装。页面不会弹窗打扰你。
- 装好后,重启 ComfyUI,再点“刷新音色”就能看到角色。
- 没装也不影响插件的其他功能。
左边的侧栏
- 分组:角色按语言分组(中文、日语、英语、未标语言)。点组名可以收起,下次打开还是收着的。只有一组时不分组。
- 展开角色:点角色名左边的小箭头,下面会列出它的每条声音(主声音、
{开心}这样的情绪)。点一条就在右边播放,再点一下停。 - 拖到节点上:侧栏里的角色可以直接拖到节点上,和拖右边卡片的标题栏一样。
- 小红点:角色名后面有小红点,说明这个角色有问题(读取失败,或者没有能当主声音的音频)。鼠标停在点上能看到原因。
- 搜索:角色有 6 个以上时,顶上会出现搜索框,可以搜角色名、别名或情绪名。
- 拖文件:把音频、模型文件拖到侧栏里的某个角色上,会打开“添加文件”;拖到空白处就是导入新角色。
还没有角色的话,先看第 4 节“导入角色”。
1. 角色卡片怎么用
每个角色一张卡片:
┌───────────────────────────────────────────────┐
│ ⠿ 🎙 Arona 参考音频 读音 添加文件 3 角色音色预设 │ ← 标题栏:代表“整个角色”
├───────────────────────────────────────────────┤
│ ▶ MAIN “それぞれの学園…” [{main}] │ ← 每一行:一条参考音频
│ ▶ ANGRY “相手の雰囲気が…” [{angry}] │
│ ▶ HAPPY “うん、よし!…” [{happy}] │
└───────────────────────────────────────────────┘
| 操作 | 结果 |
|---|---|
| 点 ▶ | 试听这一条 |
点右边的 复制 {标签} 按钮(角色设了情绪才有) |
复制标签,粘贴到台词里 |
| 拖标题栏 → 放到 角色语音 (GPT-SoVITS) 节点 | 节点的“角色”设为这个角色 |
| 参考音频与情绪 / 读音 / 添加文件 | 见第 2、4 节 |
情绪靠台词里的 {happy} 这种标签来切换,所以拖的是整个角色,不是某一条音频。
拖动时看提示
拖动时,鼠标旁边有一个提示框:
- 白色:
松手:GPT-SoVITS 节点的角色设为 Arona。可以松手。 - 黄色:拖到了不合适的节点,提示会写原因和正确做法。这时候松手什么也不会改。
目前只接收 角色语音 (GPT-SoVITS) 节点,其他节点一律不接收。这是故意的:插件不靠猜,避免写错地方。
2. 配音:一段话多种情绪
- 在 角色语音 页顶部从 角色 切到 配音。先在左边列表里点一个角色,贴进来的台词就由 TA 念。
- 把整段台词粘贴进去,点 分成句子。每句话会变成一张卡片。
- 每张卡片点一下情绪(主声音 / happy / angry……),旁边的小喇叭能听这个情绪原本的参考声音。角色只有主声音时不显示情绪按钮。也可以直接改字;鼠标移到卡片上会出现 ✂(在光标处拆开)、↧(和下一句合并)、×(删除)。
直接生成,不用画布
页面够宽时分成两栏:左边是台词卡片,右边是 生成语音 和设置面板。窗口窄或者浏览器停靠在侧边时,这些放在台词下面。两种情况都只有台词这一块会滚动,句子再多,按钮也一直看得见。
左边选,右边改;设置分三层。 右边的面板跟着你选了什么变,最上面一条路径告诉你现在改的是哪一层,比如 整份剧本 › Aris › 第 2 句,点前面的就回到上一层(Esc 也行):
- 整份剧本(什么都没选):所有人默认按这个念。下面列出剧本里的每个角色,点一个就只改 TA。
- 角色(在左边列表里点角色):这个角色在这份剧本里怎么念,只影响 TA 的句子。点 以后都这样念,把 TA 的快慢和语言存成平时的,以后的剧本也这样。
- 句子(点句子,Ctrl / Shift 多选):谁念 点名字就换人;只影响选中的这几句,卡片上会出现一个小黄标签写着改了什么。
每一层都是同样三行:快慢、语气、语言。每行右边的小标签写着这个值是哪一层定的:黄色“这一句”、紫色角色名、灰色“整份剧本”或“默认”,还有“TA 平时”(存过的默认)。点标签就跳到那一层;点 ↺ 让这一层不再单独设,跟上一层走。越具体的越优先:这一句 > 角色 > 整份剧本 > 角色平时的设置。
语气下面有 ▶ 试听这句 和 看数字(和平时比差在哪、具体数字,top_k、temperature 这些可以直接改)。面板最下面一行是 永久设置(语气档位、角色的专属设置),它们不只管这份剧本,所以单独放着。
草稿箱:每份剧本都会自动存成一份草稿(改动后半秒就存,存在 ComfyUI 的 user 文件夹里,清浏览器缓存、换浏览器都不会丢)。配音页最上面一条写着这份剧本的名字(点一下改名;没起名就用第一句台词),旁边是 新建(开一份空白的,这份留着)、草稿箱 和 关闭剧本。草稿箱里每份剧本一张卡片,写着谁念、几句、什么时候改的,可以打开、改名、复制一份、删除;删掉的放在 最近删除 里 30 天,随时找回。刷新或重启 ComfyUI 后,打开的还是刚才那份;从音频库“重新配音”会另开一份,不会盖掉手上的。按角色、按句分开设置需要 Anomalous_TTS 接口版本 17(1.1.0);旧版本时整段按第一句的角色念,面板上会提示。
- 点 生成语音。插件直接交给 ComfyUI 生成,画布上的工作流一个不动;ComfyUI 正在出图时会先排队。
- 生成完自动播放,写着“生成好了,用时几秒”。文件存在
output/audio/角色名/;点 已存进音频库 › 直接去音频库。 - 不满意:
- 某一句不好,点那张卡片上的 ↻,只把这一句换一版,其他句子不变(直接用缓存,很快)。
- 整段都不好,点 整段换一版,换一个种子全部重新生成。
需要 Anomalous_TTS 接口版本 11 以上;旧版本时这里会提示更新,仍然可以推送到节点、在画布上运行。
放进自己的工作流
生成按钮下面的 放进自己的工作流 一栏,把剧本写进画布上的 角色语音 (GPT-SoVITS) 节点:
- 点 推送到节点:写进选中的节点。画布上只有一个这种节点时,不用选。
- 按住 拖到节点,把整段剧本拖到某个节点上。
- 点 复制剧本:复制带标签的台词,例如
{main} 老师,早上好! {happy} 今天也要加油哦!
推送和拖动都会同时设置“角色”和“台词”,写错了可以按 Ctrl+Z 撤回。节点里原来有台词时,会先问要不要覆盖。
某个词总是读错
角色卡片上的 读音 打开这个角色的读音表:左边写剧本里的字,右边写让它实际读的字,例如 C站 → 西站、粘进 → 沾进。剧本和字幕照常写,只影响念出来的声音。
- 每一行的 现在 听这个角色现在怎么读左边的字,改后 听右边的字,对比着改。试听不会存进音频库。
- 日语模型说中文时特别有用:它发不好的音(选、全这类 ü,模型、行这类后鼻音)换成好读的同音字,或在前面加个字;英文字母写成读音相近的汉字。
- 长的先匹配,只替换一遍。只对这个角色生效。
3. 找回结果
- 生成的音频在图标栏的 音频库:
- 每条会显示台词、声音和种子,可以试听、按台词搜索、删除。
- 只在预览里出现、还没保存的临时结果,列在“未保存的预览”里,点 保存 就能存到
output/audio/。
4. 导入角色和设置
设置
工具栏上有 导入角色。还没有角色时,中间是一块空的导入区,直接把文件拖进去或点 + 导入角色。
存放位置、基础文件这些设置在左边侧栏的最下面:GPT-SoVITS 设置,点开是一个窗口。基础文件(GPT-SoVITS 生成时要用的几个公用模型)缺了不会挡路(第一次生成时会自动下载),所以只在这个入口上放一个小黄点:已有角色用到的基础文件还没下载时才出现。窗口里第一行写着缺几个、多大,可以 现在下载,也可以点 不再提醒;都齐了时写着“一切就绪”。以后导入了要用新基础文件的角色(比如第一个中文角色),小黄点会再出现。缺 Python 包时是小红点,不能关掉。下载的进度也写在这个入口下面。
标题旁边的小标签写着状态(一切就绪 / 缺几个基础文件 / 缺 Python 包)。下面分成几类,一次看一类;哪一类需要你处理,名字旁边有个小黄点,打开窗口时直接停在那一类:
-
语气:平时用哪种语气(平稳 / 自然 / 生动 / 自建的),可以试听、设为默认;右上角 简单 / 看数字 切换要不要显示具体数字。
-
说别的语言:角色说的不是参考音频的语言(比如日语角色说中文)时用哪种语气。
-
基础文件:每一项是已就绪、缺少还是下载中,可以单个 下载 或 全部下载。只说日语的角色不需要中文那几项;标“可选”的缺了也能用。缺 Python 包时这里给出安装命令,复制到命令行运行后重启 ComfyUI。
-
存放位置:
- 角色存放位置:导入的角色都放在这里,默认
ComfyUI/models/gpt_sovits/。 - 其他位置:设置文件里写的其他角色文件夹,以及
extra_model_paths.yaml里的文件夹。
- 角色存放位置:导入的角色都放在这里,默认
-
设置文件:Anomalous_TTS 的设置文件
ComfyUI/user/anomalous_tts.json的位置,可以复制路径。存放位置、其他角色文件夹和已有的 GPT-SoVITS 整合包(用包里的底模,不用再下一遍)都在这个文件里改,窗口里改不了:节点不接受网页指定的本机路径,这样网页就决定不了它在哪里建、删文件夹或读哪些文件。路径写完整,改完不用重启:{ "format": 1, "storage": "D:/voices", "libraries": ["E:/old voices"], "pretrained": ["D:/GPT-SoVITS/GPT_SoVITS"] }要换存放位置,先把角色文件夹自己移过去,再改
storage。
导入表单里选了语言后,下面会用小字写出生成时还要用到哪些底模。
这些操作会读写运行 ComfyUI 那台电脑上的文件,所以只能在那台电脑上用;从别的设备打开时按钮是灰的。
导入角色(新用户从这里开始)
点 导入角色。第一次打开时会有一段遮罩引导,一步步指给你看;之后随时点窗口右上角的 ? 再看一遍。窗口顶上写着现在在哪一步:① 选方式 → ② 放入文件 → ③ 导入。
① 选方式:窗口先问“你手上有什么?”
- 一个角色:这个角色的 GPT 模型、SoVITS 模型和几段参考音频。会一步步带你放好。
- 很多角色 / 整合包:一次导入好几个角色,或者选一个 GPT-SoVITS 整合包文件夹,会按名字自动分好。
- 给已有角色加声音:选一个已经导入的角色,往里面加参考音频、台词文件或新模型。
直接把文件拖到音频页或这个窗口上,会跳过这一步,按“很多角色”处理(一个角色的文件也能正确认出来)。选错了可以点 ‹ 换一种方式(还没放文件时才有)。
② 放入文件:每个角色一张卡片,卡片最上面是一份待办清单,永远高亮下一步,按钮就在那一行:
- 放 GPT 模型(
.ckpt,在整合包的GPT_weights文件夹里) - 放 SoVITS 模型(
.pth,在SoVITS_weights文件夹里) - 放几段参考音频(3~10 秒、说得清楚的)
- 选一段当主声音:在音频列表里点 ☆,变成 ★ 就是主声音(一般会自动选好)
- 给角色起个名字(一般会从模型文件名自动填好;卡片标题就是名字,可以直接改)
做完一项就打勾;卡片标题旁写着“还差 N 步”,全部完成变成绿色的 可以导入。任何时候都可以直接把文件拖进窗口,会自动放到对的地方。
参考音频一段一行:点前面的 ▶ 试听,再点一次(■)停止;点另一段就直接换过去,方便一段段对比着挑。上传中、还没分给角色的音频都能听。填上情绪名(例如“开心”)就成了 {开心}。不在 3~10 秒的音频不会导入(节点用不了它们),连同同名的台词文件一起收进卡片底部的“不导入”,点开能看到是哪些。一个角色音频很多时先显示前 60 段,点 显示全部 看其余的。台词会自动从同名 .txt / .lab 或标注文件里找;台词框是黄框表示台词取自文件名,请确认;红色虚线框表示没找到,可以粘贴,也可以把 .txt / .lab / .list 拖到框里。卡片底部是台词文件和 角色说的语言(一般自动判断就行)。
很多角色 / 整合包时:
- 一个文件夹一个角色:一个文件夹里(包括它的子文件夹)只有一套 GPT + SoVITS 模型,还有音频或台词,它就是一个角色,用文件夹名当角色名。比如
派蒙/里有model-e10.ckpt、model_e10.pth和参考音频,角色就叫“派蒙”;两个角色的模型都叫model也不会混在一起。文件夹叫v2、v4这类版本名时,前面加上上一级的名字(“派蒙 v2”)。 - 模型放在整合包的
GPT_weights*/SoVITS_weights*里,或者好几个角色的模型平铺在一起时,按模型文件名配成角色:ALuoNa-e15.ckpt和ALuoNa_e16_s224.pth都算ALuoNa。好几轮(e5、e10、e15)时自动用轮数最大的。 - 其他的按所在的文件夹(同一个文件夹里的模型)、文件夹名(比如
参考音频/ALuoNa/)或文件名开头分给对应的角色。同一个文件夹里有Guang和Guang_v4两套模型时,归Guang。 - 没分给任何角色的
.list标注文件,每个角色都放一份(节点按文件名找台词,不会找错)。 - 同一个角色里有同名的文件(比如
开心/01.wav和难过/01.wav),后来的会在前面加上文件夹名(难过_01.wav),同名的台词文件一起改,不会丢;鼠标停在文件名上能看到原来的文件。 - 分不出来的放在最上面一张黄色卡片里,放进角色后才上传。文件多时一个文件夹一行,可以把整个文件夹一次放到某个角色;点开这一行,也能一个一个选。分错的文件,右边也能改。
- 不会读的文件夹:
runtime、pretrained_models、venv这类 Python 环境和底模文件夹;整合包里(旁边有runtime、GPT_weights*、webui.py这些)的GPT_SoVITS、logs、output、TEMP、tools,里面是程序、训练中间存档和数据集切片。你自己起名叫output、GPT_SoVITS的文件夹照常读;你直接选中或拖进来的那个文件夹一定会读。跳过了哪些,窗口里会写出来。 - 一次最多读 5000 个文件。
- 角色很多时先打开一批(20 个角色,或者大约 800 个文件),其余的在“打开下一批”按钮里;这一批导入完,下一批会自动打开。这样一次拖进很大的文件夹也不会卡。
- 一次要上传很多文件(超过 1500 个或 2 GB)时会先问你要不要继续。文件都是从浏览器上传给节点的,节点不会按路径去读你电脑上的文件。
- 卡片收起时只有一行,点开看详情,一次只展开一张。右上角 + 继续添加 可以再加文件,+ 新角色 手动加一个角色。
③ 导入:底部按钮写着“导入 N 个角色”,只导入“可以导入”的那些。每个角色单独导入,一个失败不影响其他的;失败的留在窗口里标红,改好再点一次。全部导入完窗口自动关闭,并滚到新角色的卡片。底部还写着会保存到哪里(想换地方,在设置里改存放位置)。
节点会建好 角色名/GPT_weights/、SoVITS_weights/、参考音频/ 和设置文件。一律复制,原文件不动;中途出错时存放位置保持原样,不会留下半个角色。
给已有角色加音频或情绪:点卡片上的 添加文件,或者把文件拖到那张卡片(或侧栏里的角色名)上。这时放进来的文件都归这个角色,模型可以不放。已有的文件不会被覆盖,主声音也不会被换掉(除非你点了“★ 主声音”)。
一条一条加也不会越加越乱:
- 角色里已经有一模一样的文件,那一行是灰色的“角色里已有,跳过”,不会再复制一份。
- 标注文件(
.list等)再放一次,只会把新的行追加进角色里已有的那份,写着“合并新台词”。 - 只加一条音频、不带标注文件时,台词会从角色里已有的标注文件里找。
- 只有“同名但内容不同”的文件会标红,不能导入。改个文件名,或者删掉那一行。
角色文件夹的规则
- 一个角色就是一个文件夹,里面至少有一个
.ckpt(GPT 权重)和一个.pth(SoVITS 权重)。 - 角色文件夹放在存放位置里(默认
ComfyUI/models/gpt_sovits/),也可以放在extra_model_paths.yaml里写的gpt_sovits目录。自己往存放位置里放整理好的角色文件夹也可以,点 刷新音色 就能看到。 - 同一个角色有日配、中配两个版本时,会显示成
阿罗娜/日配、阿罗娜/中配两个角色。
参考音频与情绪
点角色卡片上的 参考音频与情绪,打开一个大窗口:
- 上面一排是声音:主声音、每个情绪(后面写着“1 主 2 副”),最后是 + 新情绪。点一个声音,下面的勾选就只管它。情绪可以改名、删除。
- 下面是这个角色的全部参考音频,每条一行:▶ 试听、文件名和长度、台词、还用在哪(比如“主声音·副”)。没用上的音频就留在列表里。可以按 全部 / 这个声音用的 / 已用上 / 没台词 筛选,也能搜台词或文件名;先显示 60 条,往下点“再显示一些”。
- 主参考:决定这个声音的语气和念法。每个声音一条,要 3~10 秒、有台词(太长太短的会标黄,不能当主参考)。主声音也可以 改回自动挑,让节点自己选。
- 副参考:只用来融合音色,让声音更稳、更像本人。可以勾好几条,不需要台词,建议同一个人、音质干净的 2~4 条。只有 v1 / v2 / v2Pro 模型用得上,v3 / v4 的角色这一列是灰的。
- 改台词:直接点一行的台词就能改;找不到台词的会写“没找到台词,点这里填”。改过的台词存在角色的设置里,比
.txt/ 标注文件优先,原来的文件不动。清空就换回文件里的台词。 - 点 保存。设置会写进角色文件夹里的
anomalous_tts.json,由节点检查后保存。有问题(比如某个情绪还没选主参考)会提示,什么都不会改。没保存就关窗口会先问一句。
副参考、改台词和音频长度需要 Anomalous_TTS 接口版本 18(1.1.0);旧版本只能选主参考,窗口里会说明。
文件名本身带情绪的音频(例如 Arona_Talk.开心.wav)会被自动识别,不用再填一遍。只是扩展名的部分不算情绪,例如 Arona_Talk.ogg.wav、Arona_Talk.ogg (1).ogg。
角色列表会缓存一会儿,切换页面不会卡。往模型文件夹里加了角色或音频后,点 刷新音色 才会重新读取。
台词里的其他写法
[普拉娜]:换人说。要写角色名或别名。[pause:1s]:停顿。
5. 常见问题
| 现象 | 原因和解决 |
|---|---|
| 拖到节点上提示“列表里还没有 …” | ComfyUI 还没刷新节点定义。按 R 后再拖 |
| 标题栏拖不动 | 这个角色没有主声音 |
| 拖到别的语音节点被拒绝 | 目前只支持“角色语音 (GPT-SoVITS)”节点 |
| 卡片上提示“没有找到合适的主声音” | 角色文件夹里没有 3~10 秒、找得到台词的音频。点“参考音频与情绪”手动选一条 |
| 新放进去的角色或音频没出现 | 点 刷新音色。节点那边在 ComfyUI 里按 R 刷新下拉框 |
| 侧栏里看不到“GPT-SoVITS 设置”,工具栏上没有“导入角色” | Anomalous_TTS 版本太旧(没有接口版本 3)。更新 Anomalous_TTS 后重启 ComfyUI |
| 同名文件导入时报“有重名的文件” | Anomalous_TTS 早于接口版本 9。更新后重启 ComfyUI |
| “导入角色”是灰的 | 页面是从别的设备打开的。导入会写文件,只能在运行 ComfyUI 的电脑上做 |