自动生成自 edge-tts 7.2.8 (--list-voices)。共 316 个音色,覆盖 74 种语言。
项目当前使用: zh-CN-XiaoxiaoNeural(中文温柔女声,在 server/src/config/models.json 的 tts.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 |
| 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 |
按字母排序,展示每个 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/tts/generate 接口传 voiceId 字段:
{
"text": "你好世界",
"voiceId": "zh-CN-YunxiNeural"
}
前端用 10 个统一 ID(voice_01~voice_10)展示,后端 edge-tts.provider.ts:51-62 的 EDGE_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 等)。
tts.service.ts 的 splitText)。--rate 参数是后处理时间拉伸,听感等同于播放器 audio.playbackRate(见 docs/tts-speed-note.md 或代码 commit dd1fea03)。provider.registry.ts)。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 音色清单"