Anomalous_TTS no longer takes a folder or file path on this computer from a request (ComfyUI-Manager review of the node): the storage place, other character folders and pretrained sources are set only in its settings file, and imported files are always uploaded. - GPT-SoVITS settings shows the storage place, other places and package sources without change, move or remove buttons, and names the node's settings file (status.settings_file) with a copy button and how to edit it. - The import window drops "from this computer": no server path picker (ui_tts_path_picker.js is gone), no local folder scan or local clip preview; a very large upload is confirmed instead. - tts_setup_api.js loses the removed routes; formatSize moves there. - The storage-change activity entry, unused locale keys and picker CSS go. Verified: tools/check_structure.mjs; tts_setup_api in Node with fetch stubbed; the settings card, batch hero, add menu, file sources and player rendered with jsdom and stubbed ComfyUI scripts. Not run in ComfyUI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018P2T2R7TFbJsc3C9maCD8B
18 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. 配音:一段话多种情绪
- 在 角色语音 页顶部从 角色 切到 配音,或者在角色卡片上点 配音,直接带着这个角色过去。谁来念,在左边列表里点角色或在上方选。
- 把整段台词粘贴进去,点 分成句子。每句话会变成一张卡片。
- 每张卡片点一下情绪(主声音 / happy / angry……),旁边的小喇叭能听这个情绪原本的参考声音。角色只有主声音时不显示情绪按钮。也可以直接改字;鼠标移到卡片上会出现 ✂(在光标处拆开)、↧(和下一句合并)、×(删除)。
直接生成,不用画布
页面够宽时分成两栏:左边是台词卡片,右边是 生成语音 和 念法。窗口窄或者浏览器停靠在侧边时,生成按钮和设置放在台词下面。两种情况都只有台词这一块会滚动,句子再多,按钮也一直看得见。
- 念法 一直显示:语言(自动 / 中 / 日 / 英)点一下就选,语速用滑块。第一次用的是这个角色的默认值。
下面的 细调(一般不用动) 收着:候选数量
top_k、候选范围top_p、随机程度temperature、防重复repetition_penalty,鼠标停在输入框上有说明。调过时那一行后面会写“调过”。 - 某次效果满意,点 把这套设置存为这个角色的默认:语言、语速和细调都会记住,下次打开这个角色直接用。种子不存,它只对当时那段台词有意义。
- 点 生成语音。插件直接交给 ComfyUI 生成,画布上的工作流一个不动;ComfyUI 正在出图时会先排队。
- 生成完自动播放,写着“生成好了,用时几秒”。文件存在
output/audio/角色名/;点 已存进音频库 › 直接去音频库。 - 不满意:
- 某一句不好,点那张卡片上的 ↻,只把这一句换一版,其他句子不变(直接用缓存,很快)。
- 整段都不好,点 整段换一版,换一个种子全部重新生成。
需要 Anomalous_TTS 接口版本 11 以上;旧版本时这里会提示更新,仍然可以推送到节点、在画布上运行。
放进自己的工作流
生成按钮下面的 放进自己的工作流 一栏,把剧本写进画布上的 角色语音 (GPT-SoVITS) 节点:
- 点 推送到节点:写进选中的节点。画布上只有一个这种节点时,不用选。
- 按住 拖到节点,把整段剧本拖到某个节点上。
- 点 复制剧本:复制带标签的台词,例如
{main} 老师,早上好! {happy} 今天也要加油哦!
推送和拖动都会同时设置“角色”和“台词”,写错了可以按 Ctrl+Z 撤回。节点里原来有台词时,会先问要不要覆盖。
某个词总是读错
角色卡片上的 读音 打开这个角色的读音表:左边写剧本里的字,右边写让它实际读的字,例如 C站 → 西站、粘进 → 沾进。剧本和字幕照常写,只影响念出来的声音。
- 每一行的 现在 听这个角色现在怎么读左边的字,改后 听右边的字,对比着改。试听不会存进音频库。
- 日语模型说中文时特别有用:它发不好的音(选、全这类 ü,模型、行这类后鼻音)换成好读的同音字,或在前面加个字;英文字母写成读音相近的汉字。
- 长的先匹配,只替换一遍。只对这个角色生效。
3. 找回结果
- 生成的音频在图标栏的 音频库:
- 每条会显示台词、声音和种子,可以试听、按台词搜索、删除。
- 只在预览里出现、还没保存的临时结果,列在“未保存的预览”里,点 保存 就能存到
output/audio/。
4. 导入角色和设置
设置
工具栏上有 导入角色。还没有角色时,中间是一块空的导入区,直接把文件拖进去或点 + 导入角色。
存放位置、底模这些设置在左边侧栏的最下面:GPT-SoVITS 设置,点开是一个窗口。底模缺了不会挡路(第一次生成时会自动下载),所以只在这个入口上放一个小黄点:已有角色用到的底模还没下载时才出现。窗口里第一行写着缺几个、多大,可以 现在下载,也可以点 不再提醒。以后导入了要用新底模的角色(比如第一个中文角色),小黄点会再出现。缺 Python 包时是小红点,不能关掉。下载的进度也写在这个入口下面。
窗口里有:
-
角色存放位置:导入的角色都放在这里,默认
ComfyUI/models/gpt_sovits/。 -
其他位置:设置文件里写的其他角色文件夹,以及
extra_model_paths.yaml里的文件夹。 -
底模:每个底模是已就绪、缺少还是下载中。可以单个 下载 或 全部下载。只说日语的角色不需要中文底模;标“可选”的缺了也能用。
-
Python 包:缺了哪种语言要的包,会给出安装命令,复制到命令行运行后重启 ComfyUI。
-
设置文件: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目录。自己往存放位置里放整理好的角色文件夹也可以,点 刷新音色 就能看到。 - 同一个角色有日配、中配两个版本时,会显示成
阿罗娜/日配、阿罗娜/中配两个角色。
编辑情绪
点角色卡片上的 编辑情绪:
- 主声音
{main}:选一条 3~10 秒的参考音频。留空的话,节点会自己挑一条。 - 情绪:每行填一个情绪名(例如“开心”),再从角色文件夹里选一条参考音频。输入框可以直接打字搜索文件名。
- 参考台词:可以不填,节点会自己去找同名
.txt或 GPT-SoVITS 的标注文件。 - 点 保存。设置会写进角色文件夹里的
anomalous_tts.json,由节点检查后保存。选了不存在的文件时,会提示原因,什么都不会改。
文件名本身带情绪的音频(例如 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 的电脑上做 |