Uses Anomalous_TTS interface v4.
- Setup card: "where characters are kept" replaces the library list.
"Change..." picks a folder on the ComfyUI machine and asks whether the
current characters move along (move / don't move / cancel). A move shows
its progress (characters, and bytes when copying across disks) and the
studio redraws when it ends; an error says where it stopped.
- "Other places" lists earlier storage places that still hold characters
and yaml folders; x on an earlier place stops listing it (files kept).
- Import form: no location picker; new characters go to the storage place
and the form shows the exact path.
- The "add library" action is gone (no longer offered by the node).
Tested: node tests/tts_setup_api.mjs (storage calls, moving summary).
Isolated ComfyUI in the browser: change storage with move (both
characters moved, a non-character folder left, config updated), change
back without moving (old place listed under other places, stale move
message not shown), remove the earlier place (characters unlisted, files
kept), import form shows the storage path; a .list dropped on a clip's
text box fills it without being added as a file.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Each clip shows where its line came from (same-name .txt / .lab,
annotation file, or the file name, marked as a guess to check).
- Dropping a .txt / .lab / .list on a clip's line box fills it: a plain
file is the line, an annotation file is searched for that clip (same
rule as the node, including the name without the emotion part).
- .lab is an importable line file.
Tested: node tests/tts_setup_api.mjs (textFromFile added).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Fixed sections for GPT weight, SoVITS weight, reference clips and line
files; files dropped anywhere on the form go to their section. One GPT
and one SoVITS: a new one replaces the old, and from a batch the latest
epoch is kept (the others are named in a note).
- The save location is one line ("Saved to …/gpt_sovits/<name>") with
"Change location"; the library list only shows when asked for.
- Name clashes are shown while typing; an exact match offers "add to that
character instead", which switches the form to add mode in place.
- Unsupported SoVITS versions (v3/v4) are marked and block the import;
clips outside 3-10 s cannot be the main voice.
- After an import the studio scrolls to the new card and highlights it.
Tested: node tests/tts_setup_api.mjs (epoch pick, name clash, version
block, clip range added). Isolated ComfyUI in the browser: name clash and
switch to add mode, three GPT epochs -> e15 kept, SoVITS replaced by a v4
file -> blocked, short clips not selectable as main, add-mode import of a
clip as {平静} with the card highlighted.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Uses Anomalous_TTS interface v3 so a new user can get going without
editing extra_model_paths.yaml or sorting model folders by hand.
- Setup card on the GPT-SoVITS studio: character libraries (add/remove),
pretrained files (per-item or all download with progress, or use an
existing GPT-SoVITS package) and missing Python packages with the
install command. Collapses to one line when ready.
- Import form: drop files, pick them in the browser, or pick them on the
ComfyUI machine (server-side path picker, no upload). Name, SoVITS
version, clip length, lines, main voice and language are filled in from
the node's inspect; emotions per clip. Uploads go in 8 MB chunks.
- "Add files" on a card, or a drop onto it, adds clips and emotions to
that character without replacing its main voice.
- Hidden for nodes without v3; disabled when the page is not opened on
the ComfyUI machine.
- New modules: tts_setup_api.js (calls + pure form rules),
ui_tts_setup.js, ui_tts_import.js, ui_tts_path_picker.js and
styles/12-tts-setup.css. ui_audio_studio.js only wires them in.
Tested: node tests/tts_setup_api.mjs (new, local) plus the audio engine,
node target and script rule tests. Isolated ComfyUI with both plugins in
the browser: setup card for a fresh user, package as pretrained source,
library add, import from local paths (lines found in all.txt), file drop
onto a card (chunked upload, add mode), cancel discards the upload.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>