mcpField
V
voice-clone

voice-clone

github.com/marswaveai创意与媒体8192 次安装5 周前更新
代码仓库

关于 voice-clone

面向 ListenHub 用户的持久化语音克隆技能,可创建私有语音并在之后复用,也支持管理已克隆语音。流程要求先试听,再经用户明确确认后保存。

主要功能

  1. 01用 1–6 个音频文件创建语音克隆
  2. 02试听临时语音后确认保存
  3. 03列出、检查、重命名或删除语音
  4. 04查看语音配额与剩余确认次数
  5. 05通过 speaker ID 在其他功能中使用语音

适用场景

  1. 01保存本人声音以供后续朗读
  2. 02管理已克隆的私有语音
  3. 03语音名额用尽时释放一个名额
  4. 04在保存前试听克隆效果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/marswaveai/skills --skill voice-clone

安装后在 Claude Code 中输入/voice-clone确认已加载。

详细介绍

适用场景

  • 用户想从录音中克隆声音,并将其保留以供日后使用
  • 用户说“用我自己的声音朗读”“克隆我的声音”“clone my voice”“custom voice”
  • 用户想管理已克隆的声音(列出、重命名、删除)
  • 用户达到声音数量上限,需要释放名额

不适用场景

  • 用户只想在单次生成中通过参考音频克隆声音,不保存任何内容——改用 /listenhub-voice 和 reference 声音
  • 用户只想让现有的 ListenHub 声音朗读文本(使用 /tts)
  • 用户想制作播客、解说视频、音乐或 AI 视频(使用相应技能)

/listenhub-voice 与 /voice-clone:/listenhub-voice 根据公开音频 URL 为单次请求克隆声音,不保存任何内容。/voice-clone 会创建一个持久的私人说话人,拥有自己的说话人 ID,可用于 /tts、/podcast 以及 ListenHub 的所有其他功能——代价是需要确认步骤、占用套餐配额并保存一个声音名额。

目的

将 1–6 个参考音频文件转换为可重复使用的私人声音:

  1. 创建——上传参考音频;任务会克隆出一个临时声音。
  2. 轮询——等待克隆完成并试听预览。
  3. 确认——为声音命名并保留。只有此时它才会成为永久说话人。

确认时才会产生费用:在套餐的每周期配额内免费,超出后每个收费 300 点数;且仅在用户明确授权扣费时才会收费。未确认的任务会在 7 天后过期。

严格限制

  • 始终按照 shared/cli-authentication.md 检查 CLI 身份验证
  • 按照 shared/cli-patterns.md 处理 CLI 执行、错误和交互模式
  • 任何交互前,始终按照 shared/config-pattern.md 读取配置
  • 未经用户明确同意,绝不确认声音——确认可能会消耗 300 点数。先展示预览,再询问。
  • 只有当用户在本次对话中表示同意消耗点数时,才可传入 --use-credits。否则服务端会拒绝扣费,这是安全的默认行为。
  • 绝不克隆用户未获得授权的声音。 如果录音不是用户本人的声音,上传前先询问用户是否获得了说话人的许可;如果没有,则停止操作。
  • 绝不编造说话人 ID——确认后从 voice-clone speakers 读取
  • 绝不透露提供商名称、内部任务状态、DAO、MongoDB 或凭据详情
每个多选步骤都必须使用 AskUserQuestion 工具——不要以纯文本形式打印选项。一次只问一个问题。等待用户回答后再继续。配额用尽后确认克隆会消耗点数,因此在用户明确表示要保留声音之前,绝不运行 `voice-clone confirm`(也不传入 `--auto-confirm`)。

前提条件

listenhub auth status --json

按照 shared/cli-authentication.md 自动处理安装和登录。克隆声音需要付费套餐——免费账户会在确认步骤遇到升级错误。

工作流

步骤 1 — 收集参考音频

如果用户未提供音频文件路径,则询问路径。接受 1–6 个本地文件(.mp3、.wav、.m4a、.flac、.ogg、.aac);通常使用单个文件即可。

请提前说明限制:单个文件 ≤5MB,总计 ≤20MB。使用没有背景音乐的清晰语音,克隆效果最佳。

步骤 2 — 确认许可

如果录音不是用户本人的声音,则询问用户是否获得了说话人的许可。如果没有,则停止操作——不得设法绕过未经同意克隆他人声音的限制。

步骤 3 — 选择语言

询问录音使用的语言:zh 或 en。

步骤 4 — 创建并等待
listenhub voice-clone create --file <path> --lang <zh|en> --json

有多个文件时,重复使用 --file。该命令会轮询,直到克隆完成,并返回 demoAudioUrl,这是临时语音的试听链接。--no-wait 会立即返回任务 ID;稍后可通过 listenhub voice-clone get <taskId> --json 查询。

如果任务失败,请如实说明原因——通常是音频太短、太长或没有清晰的语音——并提出换一段录音重试。

步骤 5 — 试听,然后询问是否保留

向用户提供试听 URL,并询问是否保留此语音。不要主动替用户确认。

如果用户想保留,请询问语音名称(最多 50 个字符)和性别(male / female / other),然后:

listenhub voice-clone confirm --task-id <taskId> --name "<name>" --gender <gender> --json

如果响应提示配额已用完,需要 300 积分,请先征得用户同意再使用积分。只有在用户明确同意后,才执行:

listenhub voice-clone confirm --task-id <taskId> --name "<name>" --gender <gender> --use-credits --json
步骤 6 — 提供说话人 ID
listenhub voice-clone speakers --json

从列表中读取新语音的 speakerInnerId,并告知用户,现在可以在任何需要语音的地方使用它,例如:

listenhub tts create --text "..." --speaker-id <speakerInnerId>

管理克隆语音

目标命令
列出语音、配额和剩余确认次数listenhub voice-clone speakers --json
查看某个语音listenhub voice-clone speaker <speakerId> --json
重命名/更改性别listenhub voice-clone update <speakerId> --name "<name>" --gender <gender> --json
删除语音(释放一个名额)listenhub voice-clone delete <speakerId> --json

speakers 会返回 maxSpeakers(套餐可同时保留的语音数量)和 remainingConfirmations(本周期还包含的确认次数)。当用户达到 maxSpeakers 上限时,在克隆其他语音前,先询问要删除哪个现有语音——删除语音会释放一个名额,但不会退还已用的确认次数。

错误处理

症状含义处理方法
需要升级克隆语音需要付费套餐告知用户;不要重试
需要积分配额已用完,扣费未经授权重新运行并使用 --use-credits 前,先征得用户同意
达到语音上限套餐中已有 maxSpeakers 个语音提议列出并删除一个语音
已确认任务此前已确认从 voice-clone speakers 中读取说话人 ID——不会重复扣费
未检测到语音/时长无效参考音频不可用请用户提供更清晰或更长的录音
繁忙/暂时不可用另一个确认正在处理中,或发生暂时性故障等待几秒后重试同一命令

备注

  • openapi 命令组为 API 密钥用户提供相同的流程,另支持日语和一次性 --auto-confirm 模式:listenhub openapi voice-clone create --consent ...。除非用户明确使用 API 密钥,否则优先使用上述登录命令。
  • 克隆语音仅对账号私有;列出说话人时,它们会与官方语音一同显示。

评论

支持 Markdown