关于 voice-clone
面向 ListenHub 用户的持久化语音克隆技能,可创建私有语音并在之后复用,也支持管理已克隆语音。流程要求先试听,再经用户明确确认后保存。
主要功能
- 01用 1–6 个音频文件创建语音克隆
- 02试听临时语音后确认保存
- 03列出、检查、重命名或删除语音
- 04查看语音配额与剩余确认次数
- 05通过 speaker ID 在其他功能中使用语音
适用场景
- 01保存本人声音以供后续朗读
- 02管理已克隆的私有语音
- 03语音名额用尽时释放一个名额
- 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 个参考音频文件转换为可重复使用的私人声音:
- 创建——上传参考音频;任务会克隆出一个临时声音。
- 轮询——等待克隆完成并试听预览。
- 确认——为声音命名并保留。只有此时它才会成为永久说话人。
确认时才会产生费用:在套餐的每周期配额内免费,超出后每个收费 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 或凭据详情
前提条件
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 密钥,否则优先使用上述登录命令。- 克隆语音仅对账号私有;列出说话人时,它们会与官方语音一同显示。