Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: yovoice-workflows description: Step-by-step tool sequences for common yovoice tasks — narration, voice settings and saved characters, multi-role story dubbing, writing and generating a whole song, scoring an underscore. Use whenever a task spans creating or changing works and generating audio.
yovoice workflows
Work types: text 语音 (narration / voice-over), story 故事配音 (multi-speaker subtitles), music 音乐 (AI song generation), score 编曲 (arrangement rendering). Every workflow starts from the <ui_context> of the user message and uses the same pattern: read, change, then act.
Narration (配一段旁白)
get_workon the open text work, orcreate_work{"kind":"text","title":...} for a new one.update_work{"id","text"} with the narration; optionallyupdate_work{"id","modelId"} to pick an installed voice model fromlist_models.generate_work{"id"}; reply that generation started, then checkget_generation_status{"id"} when the user asks or before claiming success.
Voice settings and characters (声音设置与角色)
Everything in the right-hand inspector is editable with update_work {"id","settings":{...}}. Fields and ranges differ per model: load the yovoice-voice skill only when the user asks for such a change.
- Save a voice as a reusable character:
save_character{"name","fromWork":<work id>} copies the work's current voice settings; add "settings" to tweak. No need to create a work for this, and it does not switch the page. - Use one:
list_characters, thenupdate_work{"id","characterId"}; for a story speakerupdate_work{"id","speakerSettings":[{"speaker","characterId"}]}. - Changing one speaker's parameters only:
speakerSettings[{"speaker","settings":{...}}]. - Deleting a character goes through
propose_action.
Multi-role story dubbing (多角色故事配音)
create_work{"kind":"story","title":...}, orget_workan existing story.list_voicesfor uploaded reference voices. Assign one voice per character when the user wants specific voices.update_work{"id","subtitles":{"speakers":[{"name":..., "voiceId":...}],"cues":[{"speaker":...,"text":...}]}} — speaker matches by name or 1-based index; every cue needs a speaker.generate_workwhen every speaker's model is installed. Generation runs cue by cue;get_generation_statusreports progress.
Write a song and generate it (写一首歌并生成)
create_work{"kind":"music","title":...}.- Follow the yovoice-lyrics skill, then apply with
update_work{"id","text":<style>,"lyrics":...,"instrumental":false,"language":"zh"}. list_models: an installedace-step-*oryue2-*model is required. If missing, propose installing it withpropose_action{"action":"install_model","target":<model id>}.update_work{"id","modelId":...} thengenerate_work(for YuE2 in score mode, after step 5). Music takes longer than voice; say so and let the user check later.- With a
yue2-*model in score mode, write the score first and let the user review and listen to it before generating; melody scores, covers, instrumentals and musical edits follow the yovoice-music skill.
Underscore / arrangement (给作品配乐)
create_work{"kind":"score","title":...}.- Follow the yovoice-score skill, then apply with
update_work{"id","score":{...}}. Validation errors come back verbatim; fix exactly the reported note or track and submit again. - Scores render with a sound font (
*-sf2): confirm one is installed vialist_models, thenupdate_work{"id","modelId":"musescore-general-sf2"} andgenerate_work. Rendering needs no inference engine.
Rules that always apply
- One intent per turn; after finishing, answer in one or two sentences in the user's language.
generate_workreturns immediately. Never claim audio exists untilget_generation_statusshows a completedlatest.- Modifying a work the user has open? Just update it — the editor refreshes by itself (
open_workis only for switching to another work). - Unknown id or voice:
list_works/list_voicesfirst instead of guessing.