Community编程与开发github.com

Cartesia 希伯来语 TTS

使用 Cartesia Sonic 3.6 生成希伯来语配音,支持用户自己的克隆声音或库存声音,正确处理发音(包括附加元音符号、数字和时间转换),并通过 Gemini 逐词检查、修复错误,将修复记录保存在个人发音列表中。同时支持通过 API 即时创建语音克隆。

Cartesia 希伯来语 TTS 是什么?

该技能专为需要生成自然希伯来语语音的开发者和 AI 代理用户设计,解决了希伯来语文本到语音(TTS)中的核心痛点:发音不准确。由于希伯来语文本通常缺乏元音符号(nikud),模型在猜测元音、性别和数字读法时容易出错。该技能通过一系列自动化步骤确保语音输出的准确性:首先,它会根据语言规则准备脚本,为歧义词添加元音符号,并将数字和时间转换为正确词形和性别的口语单词。然后,它使用 Cartesia Sonic 3.6 引擎生成高保真音频。生成后,技能会调用 Gemini API 逐个单词检查语音输出,对比实际听到的单词与预期读法。对于检测到的错误,它会自动修正脚本并重新生成,最多尝试三轮。所有经过验证的词汇修正会被保存到用户的个人发音词典中,以便在未来的所有配音任务中自动应用,从而逐步减少错误。技能还支持通过语音样本快速创建声音克隆,并给出如何录制最佳样本的建议。该技能兼容大多数支持 node 20+ 和 CLI 工具的 AI 代理平台(如 Claude Code、Cursor 等),通过清晰的脚本和命令行驱动工作流,非常适合需要高质量、可定制的希伯来语配音的开发者。

兼容平台~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/guyaga/10d10s-bonus-cartesia-hebrew-tts/tree/HEAD

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Cartesia 希伯来语 TTS 是做什么的?

声音本身开箱即用,听起来非常自然。几乎所有失败都来自于发音:未标元音的希伯来语让模型猜测元音、性别以及如何读取数字。因此,工作主要在于准备文本和检查结果。

脚本位于此文件旁边的 scripts/ 目录下。使用 node(20 或更高版本)运行,并切换到输出文件所在的文件夹。个人数据存储在 ~/.cartesia-tts 目录中:包括密钥文件(.env)、默认声音和设置(config.json)以及发音列表(lexicon.json)。更新技能时不会触碰该文件夹。

首次运行

使用用户的语言,用平实的语言与用户沟通,并在每个步骤后等待他们。

  1. 运行 node scripts/doctor.mjs。该操作免费。它会打印 READY,或提示需要修复的内容。

  2. 密钥: 如果缺少某个密钥,请运行 node scripts/doctor.mjs --keys。它会在文本编辑器中打开密钥文件,用户需要粘贴以下内容:

    • CARTESIA_API_KEY,来自 play.cartesia.ai(API 密钥)。免费账户即可使用。
    • GEMINI_API_KEY,来自 aistudio.google.com(与课程第一天使用的密钥相同)。

    切勿要求用户将密钥粘贴到聊天中,也切勿打印密钥。

  3. 声音: 询问用户是想要克隆自己的声音(参见“克隆声音”)还是暂时使用库存声音(node scripts/voices.mjs --language he,然后 --set-default <id>)。

  4. 再次运行 doctor.mjs,直到显示 READY,然后通过“制作配音”生成一句简短的测试语音,以便用户能听到效果。

制作配音

  1. 保存原始文件 为 <name>.original.txt,保持原样不变。

  2. 准备脚本。 阅读 references/hebrew-rules.md,然后保存 <name>.txt,其中包含:

    • 数字、时间和价格应使用正确词形的口语单词表示
    • 对歧义词加上完整的元音符号(nikud),包括前缀字母,其余部分保持原样
    • 英文名称使用英文字母,并确保标点符号清晰

    改变单词的写法,而不是改变所说的内容。如果改写确实有帮助,例如替换正式的时间表达,请在摘要中说明。

  3. 生成并检查:

    node scripts/speak.mjs <name>.txt <name>.wav --check
    

    如果需要,可以添加 --emotion none、--speed 1.0 或 --voice <id>。如果需要 MP3 格式,请使用 .mp3 作为输出文件名。它还会生成 <name>.wav.sent.txt(发送的确切文本)和 <name>.wav.check.json(检查报告)。退出代码 2 表示检查发现了错误。

  4. 仅修复失败的部分。 检查可能会标记一个实际发音正确的单词,因此首先将 heard_as 与你预期的读法进行比较,如果匹配,则忽略该单词的报告。对于每个真实错误,在 <name>.txt 中修正并重新生成。优先顺序:添加或修正完整的元音符号,然后重新拼写,最后替换为同义词。最多尝试 3 轮,并报告剩余问题,因为更多重试很少有帮助,且每次重试都会消耗积分。

  5. 记住真实的修复。 如果一个单词需要修复且含义始终相同,请将其添加到 ~/.cartesia-tts/lexicon.json(如果文件不存在,则创建),该文件会在每次运行时自动应用:

    [{ "text": "גוללים", "say": "גּוֹלְלִים" }]
    

    匹配基于精确的完整单词,因此请为带有前缀的形式添加单独的条目。排除像 ספר 这样的同形异义词,因为正确的读法取决于句子,固定的替换会破坏其他用法。

  6. 报告结果: 音频路径、检查结果、你更改的所有单词,以及提醒用户听取的提示。

检查在捕捉错误单词方面比捕捉细微的发音更好。 在测试中,它给三个不同的配音片段给出了相同的满分。PASS 表示未检测到错误,最终判断由用户的耳朵决定。当要求比较不同片段的感受时,给用户提供片段本身,而不是根据分数来选择。

一次只生成一个片段,因为 Cartesia 根据计划限制并发请求。

检查已有的配音片段

node scripts/check.mjs <音频文件> <脚本.txt> --json report.json

克隆声音

node scripts/clone.mjs <音频片段> --name "声音名称" --language he --set-default

仅克隆用户自己的声音,或获得明确许可的声音所有者。如果是其他人的声音且许可不明确,请停止并询问。不加 --set-default 可以先试听克隆效果,然后通过 --voice <id> 参数将其传递给 speak.mjs。在上传前就音频片段给出建议,因为克隆会紧密复制它:

  • 30 到 60 秒(Sonic 3.6 最多学习 60 秒),一位说话者,安静的房间,文件大小小于 16 MB
  • 自然说话,而不是像播音员一样
  • 以所需的情绪录制,因为一个欢快的片段会让克隆出的声音在所有内容中都带着欢快的情绪

专业级声音克隆需要 30 分钟以上的音频和更高级的计划。它们改进的是相似度,而不是发音,因此无法修复读错的单词。详细信息:https://docs.cartesia.ai/build-with-cartesia/capability-guides/clone-voices-pro

费用

Sonic 每字符消耗 1 积分,每分钟音频大约需要 750 到 800 积分。Cartesia 的免费计划包含每月 20,000 积分和即时声音克隆,适用于评估和个人使用。商业用途需要付费计划,每月 5 美元起。当前详细信息:https://www.cartesia.ai/pricing。Gemini 检查使用用户的 Gemini 密钥。

相关技能