tts-edge-languages.md 14 KB

Edge TTS 支持的语言 / 音色清单

自动生成自 edge-tts 7.2.8 (--list-voices)。共 316 个音色,覆盖 74 种语言

项目当前使用: zh-CN-XiaoxiaoNeural(中文温柔女声,在 server/src/config/models.jsontts.defaultVoice 配置)。

特性: Edge TTS 是 Microsoft Edge 浏览器的"大声朗读"引擎,基于 Azure 神经网络,完全免费免 API Key、单次最长 ~3000 字符、中文安全 1000 字。

中文方言(项目最常用)

Locale 方言 音色数 常用音色
zh-CN 普通话(中国大陆) 6 XiaoxiaoNeural, XiaoyiNeural, YunjianNeural, YunxiNeural...
zh-HK 粤语(香港) 3 HiuGaaiNeural, HiuMaanNeural, WanLungNeural
zh-TW 国语(台湾) 3 HsiaoChenNeural, HsiaoYuNeural, YunJheNeural
zh-CN-sichuan 四川话 0
zh-CN-liaoning 东北话 0
zh-CN-shaanxi 陕西方言 0

全部中文音色(14 个)

ShortName 性别 风格
zh-CN-XiaoxiaoNeural Female Warm
zh-CN-XiaoyiNeural Female Lively
zh-CN-YunjianNeural Male Novel
zh-CN-YunxiaNeural Male Cute
zh-CN-YunxiNeural Male Lively, Sunshine
zh-CN-YunyangNeural Male Professional, Reliable
zh-HK-HiuGaaiNeural Female Friendly, Positive
zh-HK-HiuMaanNeural Female Friendly, Positive
zh-HK-WanLungNeural Male Friendly, Positive
zh-TW-HsiaoChenNeural Female Friendly, Positive
zh-TW-HsiaoYuNeural Female Friendly, Positive
zh-TW-YunJheNeural Male Friendly, Positive

全部 74 种语言汇总

按字母排序,展示每个 Locale 的音色数:

Locale 语言 音色数 主要音色
af-ZA 南非荷兰语 Afrikaans 2 AdriNeural, WillemNeural
am-ET 阿姆哈拉语 Amharic 2 AmehaNeural, MekdesNeural
ar-AE 阿拉伯语 Arabic 2 FatimaNeural, HamdanNeural
ar-BH 阿拉伯语 Arabic 2 AliNeural, LailaNeural
ar-DZ 阿拉伯语 Arabic 2 AminaNeural, IsmaelNeural
ar-EG 阿拉伯语 Arabic 2 SalmaNeural, ShakirNeural
ar-IQ 阿拉伯语 Arabic 2 BasselNeural, RanaNeural
ar-JO 阿拉伯语 Arabic 2 SanaNeural, TaimNeural
ar-KW 阿拉伯语 Arabic 2 FahedNeural, NouraNeural
ar-LB 阿拉伯语 Arabic 2 LaylaNeural, RamiNeural
ar-LY 阿拉伯语 Arabic 2 ImanNeural, OmarNeural
ar-MA 阿拉伯语 Arabic 2 JamalNeural, MounaNeural
ar-OM 阿拉伯语 Arabic 2 AbdullahNeural, AyshaNeural
ar-QA 阿拉伯语 Arabic 2 AmalNeural, MoazNeural
ar-SA 阿拉伯语 Arabic 2 HamedNeural, ZariyahNeural
ar-SY 阿拉伯语 Arabic 2 AmanyNeural, LaithNeural
ar-TN 阿拉伯语 Arabic 2 HediNeural, ReemNeural
ar-YE 阿拉伯语 Arabic 2 MaryamNeural, SalehNeural
az-AZ 阿塞拜疆语 Azerbaijani 2 BabekNeural, BanuNeural
bg-BG 保加利亚语 Bulgarian 2 BorislavNeural, KalinaNeural
bn-BD 孟加拉语 Bengali 2 NabanitaNeural, PradeepNeural
bn-IN 孟加拉语 Bengali 2 BashkarNeural, TanishaaNeural
bs-BA 波斯尼亚语 Bosnian 2 GoranNeural, VesnaNeural
ca-ES 加泰罗尼亚语 Catalan 2 EnricNeural, JoanaNeural
cs-CZ 捷克语 Czech 2 AntoninNeural, VlastaNeural
cy-GB 威尔士语 Welsh 2 AledNeural, NiaNeural
da-DK 丹麦语 Danish 2 ChristelNeural, JeppeNeural
de-AT 德语 German 2 IngridNeural, JonasNeural
de-CH 德语 German 2 JanNeural, LeniNeural
de-DE 德语 German 6 AmalaNeural, ConradNeural, FlorianMultilingualNeural...
el-GR 希腊语 Greek 2 AthinaNeural, NestorasNeural
en-AU 英语 English 2 NatashaNeural, WilliamMultilingualNeural
en-CA 英语 English 2 ClaraNeural, LiamNeural
en-GB 英语 English 5 LibbyNeural, MaisieNeural, RyanNeural...
en-HK 英语 English 2 SamNeural, YanNeural
en-IE 英语 English 2 ConnorNeural, EmilyNeural
en-IN 英语 English 3 NeerjaExpressiveNeural, NeerjaNeural, PrabhatNeural
en-KE 英语 English 2 AsiliaNeural, ChilembaNeural
en-NG 英语 English 2 AbeoNeural, EzinneNeural
en-NZ 英语 English 2 MitchellNeural, MollyNeural
en-PH 英语 English 2 JamesNeural, RosaNeural
en-SG 英语 English 2 LunaNeural, WayneNeural
en-TZ 英语 English 2 ElimuNeural, ImaniNeural
en-US 英语 English 17 AnaNeural, AndrewMultilingualNeural, AndrewNeural...
en-ZA 英语 English 2 LeahNeural, LukeNeural
es-AR 西班牙语 Spanish 2 ElenaNeural, TomasNeural
es-BO 西班牙语 Spanish 2 MarceloNeural, SofiaNeural
es-CL 西班牙语 Spanish 2 CatalinaNeural, LorenzoNeural
es-CO 西班牙语 Spanish 2 GonzaloNeural, SalomeNeural
es-CR 西班牙语 Spanish 2 JuanNeural, MariaNeural
es-CU 西班牙语 Spanish 2 BelkysNeural, ManuelNeural
es-DO 西班牙语 Spanish 2 EmilioNeural, RamonaNeural
es-EC 西班牙语 Spanish 2 AndreaNeural, LuisNeural
es-ES 西班牙语 Spanish 3 AlvaroNeural, ElviraNeural, XimenaNeural
es-GQ 西班牙语 Spanish 2 JavierNeural, TeresaNeural
es-GT 西班牙语 Spanish 2 AndresNeural, MartaNeural
es-HN 西班牙语 Spanish 2 CarlosNeural, KarlaNeural
es-MX 西班牙语 Spanish 2 DaliaNeural, JorgeNeural
es-NI 西班牙语 Spanish 2 FedericoNeural, YolandaNeural
es-PA 西班牙语 Spanish 2 MargaritaNeural, RobertoNeural
es-PE 西班牙语 Spanish 2 AlexNeural, CamilaNeural
es-PR 西班牙语 Spanish 2 KarinaNeural, VictorNeural
es-PY 西班牙语 Spanish 2 MarioNeural, TaniaNeural
es-SV 西班牙语 Spanish 2 LorenaNeural, RodrigoNeural
es-US 西班牙语 Spanish 2 AlonsoNeural, PalomaNeural
es-UY 西班牙语 Spanish 2 MateoNeural, ValentinaNeural
es-VE 西班牙语 Spanish 2 PaolaNeural, SebastianNeural
et-EE 爱沙尼亚语 Estonian 2 AnuNeural, KertNeural
fa-IR 波斯语 Persian 2 DilaraNeural, FaridNeural
fi-FI 芬兰语 Finnish 2 HarriNeural, NooraNeural
fil-PH 菲律宾语 Filipino 2 AngeloNeural, BlessicaNeural
fr-BE 法语 French 2 CharlineNeural, GerardNeural
fr-CA 法语 French 4 AntoineNeural, JeanNeural, SylvieNeural...
fr-CH 法语 French 2 ArianeNeural, FabriceNeural
fr-FR 法语 French 5 DeniseNeural, EloiseNeural, HenriNeural...
ga-IE 爱尔兰语 Irish 2 ColmNeural, OrlaNeural
gl-ES 加利西亚语 Galician 2 RoiNeural, SabelaNeural
gu-IN 古吉拉特语 Gujarati 2 DhwaniNeural, NiranjanNeural
he-IL 希伯来语 Hebrew 2 AvriNeural, HilaNeural
hi-IN 印地语 Hindi 2 MadhurNeural, SwaraNeural
hr-HR 克罗地亚语 Croatian 2 GabrijelaNeural, SreckoNeural
hu-HU 匈牙利语 Hungarian 2 NoemiNeural, TamasNeural
id-ID 印度尼西亚语 Indonesian 2 ArdiNeural, GadisNeural
is-IS 冰岛语 Icelandic 2 GudrunNeural, GunnarNeural
it-IT 意大利语 Italian 4 DiegoNeural, ElsaNeural, GiuseppeMultilingualNeural...
ja-JP 日语 Japanese 2 KeitaNeural, NanamiNeural
jv-ID 爪哇语 Javanese 2 DimasNeural, SitiNeural
ka-GE 格鲁吉亚语 Georgian 2 EkaNeural, GiorgiNeural
kk-KZ 哈萨克语 Kazakh 2 AigulNeural, DauletNeural
km-KH 高棉语 Khmer 2 PisethNeural, SreymomNeural
kn-IN 卡纳达语 Kannada 2 GaganNeural, SapnaNeural
ko-KR 韩语 Korean 3 HyunsuMultilingualNeural, InJoonNeural, SunHiNeural
lo-LA 老挝语 Lao 2 ChanthavongNeural, KeomanyNeural
lt-LT 立陶宛语 Lithuanian 2 LeonasNeural, OnaNeural
lv-LV 拉脱维亚语 Latvian 2 EveritaNeural, NilsNeural
mk-MK 马其顿语 Macedonian 2 AleksandarNeural, MarijaNeural
ml-IN 马拉雅拉姆语 Malayalam 2 MidhunNeural, SobhanaNeural
mn-MN 蒙古语 Mongolian 2 BataaNeural, YesuiNeural
mr-IN 马拉地语 Marathi 2 AarohiNeural, ManoharNeural
ms-MY 马来语 Malay 2 OsmanNeural, YasminNeural
mt-MT 马耳他语 Maltese 2 GraceNeural, JosephNeural
my-MM 缅甸语 Burmese 2 NilarNeural, ThihaNeural
nb-NO 挪威语(书面) Norwegian Bokmål 2 FinnNeural, PernilleNeural
ne-NP 尼泊尔语 Nepali 2 HemkalaNeural, SagarNeural
nl-BE 荷兰语 Dutch 2 ArnaudNeural, DenaNeural
nl-NL 荷兰语 Dutch 3 ColetteNeural, FennaNeural, MaartenNeural
pl-PL 波兰语 Polish 2 MarekNeural, ZofiaNeural
ps-AF 普什图语 Pashto 2 GulNawazNeural, LatifaNeural
pt-BR 葡萄牙语 Portuguese 3 AntonioNeural, FranciscaNeural, ThalitaMultilingualNeural
pt-PT 葡萄牙语 Portuguese 2 DuarteNeural, RaquelNeural
ro-RO 罗马尼亚语 Romanian 2 AlinaNeural, EmilNeural
ru-RU 俄语 Russian 2 DmitryNeural, SvetlanaNeural
si-LK 僧伽罗语 Sinhala 2 SameeraNeural, ThiliniNeural
sk-SK 斯洛伐克语 Slovak 2 LukasNeural, ViktoriaNeural
sl-SI 斯洛文尼亚语 Slovenian 2 PetraNeural, RokNeural
so-SO 索马里语 Somali 2 MuuseNeural, UbaxNeural
sq-AL 阿尔巴尼亚语 Albanian 2 AnilaNeural, IlirNeural
sr-RS 塞尔维亚语 Serbian 2 NicholasNeural, SophieNeural
su-ID 巽他语 Sundanese 2 JajangNeural, TutiNeural
sv-SE 瑞典语 Swedish 2 MattiasNeural, SofieNeural
sw-KE 斯瓦希里语 Swahili 2 RafikiNeural, ZuriNeural
sw-TZ 斯瓦希里语 Swahili 2 DaudiNeural, RehemaNeural
ta-IN 泰米尔语 Tamil 2 PallaviNeural, ValluvarNeural
ta-LK 泰米尔语 Tamil 2 KumarNeural, SaranyaNeural
ta-MY 泰米尔语 Tamil 2 KaniNeural, SuryaNeural
ta-SG 泰米尔语 Tamil 2 AnbuNeural, VenbaNeural
te-IN 泰卢固语 Telugu 2 MohanNeural, ShrutiNeural
th-TH 泰语 Thai 2 NiwatNeural, PremwadeeNeural
tr-TR 土耳其语 Turkish 2 AhmetNeural, EmelNeural
uk-UA 乌克兰语 Ukrainian 2 OstapNeural, PolinaNeural
ur-IN 乌尔都语 Urdu 2 GulNeural, SalmanNeural
ur-PK 乌尔都语 Urdu 2 AsadNeural, UzmaNeural
uz-UZ 乌兹别克语 Uzbek 2 MadinaNeural, SardorNeural
vi-VN 越南语 Vietnamese 2 HoaiMyNeural, NamMinhNeural
zh-CN 中文 Chinese 6 XiaoxiaoNeural, XiaoyiNeural, YunjianNeural...
zh-HK 中文 Chinese 3 HiuGaaiNeural, HiuMaanNeural, WanLungNeural
zh-TW 中文 Chinese 3 HsiaoChenNeural, HsiaoYuNeural, YunJheNeural
zu-ZA 祖鲁语 Zulu 2 ThandoNeural, ThembaNeural

切换音色 / 语言

命令行测试

# 中文女声(默认)
edge-tts --voice zh-CN-XiaoxiaoNeural --text "你好世界" --write-media out.mp3

# 粤语女声
edge-tts --voice zh-HK-HiuMaanNeural --text "你好,這是粵語測試" --write-media cantonese.mp3

# 四川话
edge-tts --voice zh-CN-sichuan-YunxiNeural --text "今天天气好巴适" --write-media sc.mp3

# 英语男声
edge-tts --voice en-US-GuyNeural --text "Hello, world." --write-media en.mp3

# 日语女声
edge-tts --voice ja-JP-NanamiNeural --text "こんにちは" --write-media ja.mp3

# 一次性列出全部语音
edge-tts --list-voices > voices.txt

项目内修改默认音色

编辑 server/src/config/models.json:

{
  "tts": {
    "defaultVendor": "edge",
    "defaultModel": "edge-tts",
    "defaultVoice": "zh-CN-XiaoxiaoNeural"   // ← 改这里
  }
}

或者环境变量覆盖(在 server/.env):

EDGE_TTS_VOICE=zh-HK-HiuMaanNeural

API 调用时按音色生成

前端 → 后端 /api/tts/generate 接口传 voiceId 字段:

{
  "text": "你好世界",
  "voiceId": "zh-CN-YunxiNeural"
}

前端统一音色 ID → 实际 Edge TTS 音色映射

前端用 10 个统一 ID(voice_01~voice_10)展示,后端 edge-tts.provider.ts:51-62EDGE_VOICE_MAP 把它们映射到实际 Edge 音色:

前端 ID 实际 Edge 音色 描述
voice_01 zh-CN-XiaoxiaoNeural 温柔女声
voice_02 zh-CN-YunxiNeural 磁性男声
voice_03 zh-CN-XiaoyiNeural 活泼女声
voice_04 zh-CN-YunyangNeural 知性女声(新闻)
voice_05 zh-CN-YunjianNeural 阳光男声
voice_06 zh-CN-YunyangNeural 沧桑男声
voice_07 zh-CN-XiaoxiaoNeural 甜美女声
voice_08 zh-CN-YunxiNeural 清朗男声
voice_09 zh-CN-XiaoyiNeural 亲切女声
voice_10 zh-CN-XiaoshuangNeural 稚嫩童声

当前 10 个统一 ID 实际只用到 6 种 Edge 音色,语音方案日后续可补充粤语、英语等跨语言音色(增加 voiceId 11~20 等)。

已知限制

  • 文本长度: 单次 ~3000 字符(中文约 1000 字),超出会被服务端拒绝。代码已自动按 1000 字分段拼接(tts.service.tssplitText)。
  • 语速控制: --rate 参数是后处理时间拉伸,听感等同于播放器 audio.playbackRate(见 docs/tts-speed-note.md 或代码 commit dd1fea03)。
  • 稳定性: 依赖微软服务器,偶尔会限频(502/timeout),代码已加 retry + 多个 vendor fallback(provider.registry.ts)。
  • 没商用授权: 内部使用 OK,正式商用建议切阿里云 CosyVoice/Qwen-TTS。

如何更新本文档

Edge TTS 升级可能新增/删除音色,重新生成:

# 1. 服务器上导出最新列表
ssh root@8.159.134.106 "edge-tts --list-voices" > /tmp/voices.txt

# 2. 本地跑脚本生成
node deploy-package/scripts/gen-edge-tts-doc.js /tmp/voices.txt > docs/tts-edge-languages.md

# 3. 提交
git add docs/tts-edge-languages.md deploy-package/edge-voices-snapshot.txt
git commit -m "docs(tts): 更新 Edge TTS 音色清单"