Arabic Voice Ready
阿拉伯语TTS在可预测的地方失败。在文本中修复它们,然后再生成音频——每次重新生成都会消耗积分。
工作流程
- 以目标方言撰写脚本。 埃及广告自然地使用一般语(عامية)(例:“اطلب دلوقتي”、“بس”、“في المية”)。保持句子简短:每个句子一个想法,4–9个单词。
- 在草稿上运行归一化工具——它会根据方言的读法拼写数字,处理
%、范围、千位分隔符、阿拉伯-印度数字、域名和常见外来词:node scripts/normalize.mjs "خصم 20% من 5 لـ 15 نوفمبر بـ 359 جنيه" --dialect=egy --pauses # 输出:خصم عشرين في المية من خمسة لِـخمستاشر نوفمبر بـ تلتمية وتسعة وخمسين جنيه--dialect=msa给出标准阿拉伯语数字(خمسة عشر، عشرون بالمئة)。--pauses在句子之间添加[short pause](ElevenLabs v3/v4 音频标签)。 - 应用 references/pronunciation.md 中的手动规则,处理脚本无法决定的部分:歧义词上的音符、品牌名、埃及语中的字母 ج / ق / ث / ذ、外来词的重音。
- 添加 references/elevenlabs-tags.md 中的交付标签——适量使用(每 2–3 个句子一个情感标签)。
- 生成两遍录音,听取后只修复出错的单词。 在脚本中记录每次修复,以便下次录音保留修复。
最重要的规则
- 绝不让引擎猜测数字。 在埃及广告中,“15”可能会被读作“خمسة عشر”,“20%”可能会被读作“عشرون بالمئة”。始终预拼写。
- 当阿拉伯字母歧义时,外来词使用拉丁字母。 在埃及语中,“ج”发硬音 /g/,因此“جل”被读作 gal。请写
gel。与“memory foam”类似,如果它出错,.com→ “دوت كوم”。 - 仅在需要处加注音符。 全元音标记的文本听起来很机器人化。只给被误读的单词加元音:“البِيضاء”、“خَصْم”、“كُمْفُورْت”。
- 品牌名: 按照品牌自己的读法拼写,对于辅音簇加注静音符:“ماكْس كُمْفُورْت”、“نُون”、“جُومْيا”。
- 价格: 货币只说一次:“بـ تلتمية وتسعة وخمسين جنيه بدل أربعمية وتسعة وأربعين”。
- 日期: “من خمسة لِخَمَسْتاشَر نوفمبر”——ل 与数字连接;“خمستاشر”上的音符阻止它被读成“خمسة عشر”。
- 不要承诺无法证实的东西。 广告脚本不得编造价格、折扣或医疗声明;从真实来源读取数字。
文件
scripts/normalize.mjs—— 零依赖归一化工具(CLI +import { normalize, numberToWords })。scripts/normalize.test.mjs——node --test scripts/normalize.test.mjs。references/pronunciation.md—— 埃及语发音陷阱与修复。references/elevenlabs-tags.md—— 适用于阿拉伯语的音频标签。examples/—— 前后对比脚本。