语言代码

各接口推荐使用同一套语言短代码。

推荐在转录、对齐、文本归一化、播报、Realtime、MCP 工具和 CLI 选项里统一使用小写短代码,例如 zh、yue、en、ja。各接口还接受哪些写法、如何归一,见下文;播报示例筛选和声音库是例外。

本页讲的是音频或文本本身的语言,与 App、CLI 的界面语言无关,也不是语言模型。

代码写法

以下规则适用于转录、对齐、文本归一化、播报合成与 Realtime,以及调用它们的 MCP 工具和 CLI 选项。两处不做归一的例外见例外。

  • 推荐写法:ISO 639-1 两字母代码。唯一的三字母代码是粤语 yue。
  • 大小写与分隔符:匹配时忽略大小写和首尾空白,_ 与 - 等价。ZH、en_US、ja 都有效。
  • 地区与文字子标签:可以传完整的 BCP-47 标签,会落到对应语言:en-US、en-GB → en,pt-BR → pt,zh-CN、zh-Hans、zh-TW、zh-Hant-TW → zh。
  • 其他写法:ISO 639-3 代码(eng、deu、cmn、fil)和英文名称(English、Mandarin、Cantonese)同样能识别。新接入建议统一用短代码。
  • 响应:转录、对齐、文本归一化返回的 language 字段是解析后的代码,例如 zh 或 yue。
传入解析为
zh、zh-CN、zh-Hans、zh-TW、zh-HK、zh-Hant、cmn、Mandarinzh
yue、zh-yue、Cantoneseyue
en、en-US、en-GB、eng、Englishen
pt、pt-BR、pt-PTpt
tl、fil、Filipinotl
nb、nob、nor、Norwegiannb
zh-HK 和 zh-TW 表示中文(普通话),不是粤语。粤语音频或文本请传 yue。

中文的繁简不算单独的语言。转录和对齐把 zh-Hant 当作 zh;文本归一化在 tn 方向会按显式中文标签决定新生成读法的字形:zh-Hant,或地区为 TW、HK、MO 时输出繁体;文字子标签优先于地区,所以 zh-Hans-TW 仍是简体;原文保留的部分不做字形转换,itn 不受影响;翻译则把繁体中文作为独立目标语言 zh-hant。

省略、und 与 auto

代码写法是统一的;不传 language 时怎么处理、有哪些特殊取值,按能力而定:

能力省略undauto
转录从音频自动检测拒绝拒绝
对齐从参考文本判定语言;判定不出时按不带语言对齐不提供语言信息:逐词在所有语言里匹配,归一化按文本逐段选读法拒绝
文本归一化拒绝,language 必填不提供语言信息:按文本逐段选读法拒绝
播报自动选择不是播报取值与省略相同

und 是 BCP-47 中「未确定」的标签,UND、und-Latn 都按 und 处理。

各接口的 language 参数

接口参数必填省略时不支持的取值
POST /v1/audio/transcriptionslanguage(multipart)否从音频检测400 asr_language_unsupported,param=language
POST /v1/audio/alignmentslanguage(multipart)否从参考文本判定标签格式不对返回 400 bad_request;所选模型不覆盖该语言返回 422 language_unsupported;都带 param=language
POST /v1/text/normalizationslanguage(JSON)是400 normalization_invalid_request无法识别的标签返回 400 normalization_invalid_request;没有归一化规则的语言返回 422 normalization_language_unsupported
POST /v1/audio/speechlanguage、segments[].language否自动选择422 language_unsupported
POST /v1/audio/voiceslanguage(multipart)否按 zh-CN 保存—
GET /v1/audio/speech/exampleslanguage(查询参数)否不筛选—
WS /v1/realtimesession.audio.input.transcription.language否从音频检测—
WS /v1/realtimesession.audio.output.language否使用识别出的说话语言—

Realtime 的 session.audio.output.language 是对话语言:识别出说话语言之前,内置音色按它选择参考 profile;识别出之后以识别结果为准。/v1/text/segmentations 和说话人相关接口不接收语言。声音库按传入的标签保存,见例外。

MCP 工具与 CLI 选项把同样的取值交给同样的能力:

MCP 工具CLI 选项能力
edgespeak_transcribe、edgespeak_transcribe_file:languageedgespeak-cli transcribe --language转录
edgespeak_align:languageedgespeak-cli align --language对齐
edgespeak_create_speech:languageedgespeak-cli speech --language播报
edgespeak_add_voice:languageedgespeak-cli voices add --language声音库,默认 zh-CN
edgespeak_speech_examples:languageedgespeak-cli speech-examples --language示例筛选

edgespeak-cli transcribe --language 需要能连上网关(桌面 App 或 edgespeak-cli serve)。连不上时命令直接报错退出,不会忽略这个选项。

例外

  • 播报示例筛选(GET /v1/audio/speech/examples、edgespeak_speech_examples、edgespeak-cli speech-examples):只判断第一个子标签是不是 zh,其余取值一律返回英文示例,包括 cmn、Mandarin、yue 以及带首尾空格的 zh。请传 zh 或 en。
  • 声音库(POST /v1/audio/voices、edgespeak_add_voice、edgespeak-cli voices add):只去掉首尾空白,按传入的标签原样保存为音色的 locale 和 names 的键,English 不会被转成 en 或 en-US。请传 zh-CN、en-US 这类 locale。

常用语言速查

使用默认对齐模型时,表中所有语言都支持对齐。

语言代码也可传转录归一化翻译
中文(普通话)zhzh-CN、zh-TW、zh-Hans、zh-Hant、cmn✓✓✓
粤语yuezh-yue✓—✓
英语enen-US、en-GB✓✓✓
日语jaja-JP✓✓✓
韩语koko-KR✓✓✓
法语frfr-FR、fr-CA✓✓✓
德语dede-DE✓✓✓
西班牙语eses-ES、es-MX✓✓✓
葡萄牙语ptpt-BR、pt-PT✓✓✓
俄语ruru-RU✓✓✓
阿拉伯语arar-SA✓✓✓
意大利语itit-IT✓✓✓
越南语vivi-VN✓✓✓
泰语thth-TH✓✓✓
印尼语idid-ID✓✓✓
印地语hihi-IN✓✓✓

播报支持哪些语言取决于模型,见播报。

各能力支持的语言

各能力覆盖的语言范围不同。请按实际调用的能力核对,不要默认所有语言处处可用。

转录

30 种语言:zh en yue ar de fr es pt id it ko ru th vi ja tr hi ms nl sv da fi pl cs tl fa el hu mk ro。

所有转录模型使用同一份列表。

对齐

模型语言
EdgeSpeak/Lattice-2(默认)语言目录中的全部语言、混合语言文本、und,以及 nan、wuu 这类格式合法的其他标签(后者没有词典读法,效果弱于 und)
EdgeSpeak/Lattice-1仅 zh、en、de。und 和目录外标签返回 400 bad_request;目录内的其他语言返回 422 language_unsupported

目录外的标签会保留文字与地区子标签,例如 nan-Hant。对齐如何应用文本归一化见强制对齐。

文本归一化

55 种语言,tn 与 itn 相同:ar az bg bs ca cs da de el en es et fa fi fr he hi hr hu hy id is it ja ka kk km ko lo lt lv mk mn mr ms my nb nl pl pt ro ru sk sl sq sr sv sw ta th tl tr uk vi zh。

粤语 yue 没有归一化规则。运行中服务的实际列表和各语言可用类别见 GET /v1/models 中 EdgeSpeak/Skylark 条目的 x_edgespeak.normalization.languages_by_mode 与 classes_by_language。

播报

每个播报模型支持的语言各不相同。以 GET /v1/models 中该模型的 supported_languages 为准;x_edgespeak.speech_language.open_set 为 true 时,模型还接受列表以外的 ISO 639 代码。列表内语言的地区和文字变体(如 zh-TW、en-US)同样可用,auto 总是可用。

模型语言
k2-fsa/OmniVoice开放集合:语言目录全部语言及其他 ISO 639 代码
Qwen/Qwen3-TTS-*zh en de fr es pt it ko ru ja
IndexTeam/IndexTTS-2.5zh en ja es ar
FireRedTeam/FireRedTTS3zh yue en de fr es it pt ru ja ko ar cs nl fi el hi id pl ro th tr uk vi,另有 21 种写作 zh-x-<name> 的汉语方言,如 zh-x-sichuan
FireRedTeam/FireRedTTS3-Instruct同样 24 种语言,不含方言
openbmb/VoxCPM2zh en de ja
BreezeBlue/Breeze-TTS-2zh en

FireRedTTS3-Instruct、VoxCPM2 和 Breeze-TTS-2 本身不接收语言输入:对它们来说,language 用来挑选对应的参考音,并且仍会按列表校验。从运行中的服务列出每个模型的语言:

Shell
curl --fail-with-body "$EDGESPEAK_BASE_URL/models" \
  | jq '.data[] | select(.supported_languages) | {id, supported_languages}'

翻译

38 种目标语言:语言目录中标记的 36 种,外加繁体中文 zh-hant 和维吾尔语 ug。翻译标签一律小写保存,如 JSON 导出里的 target_langs 字段。翻译的用法见翻译要求怎么写。

语言目录

EdgeSpeak 识别 82 种语言。表中的代码、ISO 639-3 代码都可以作为输入;默认对齐模型覆盖全部语言。后三列标出其他能力支持哪些语言。

代码语言ISO 639-3转录归一化翻译
af南非荷兰语afr
ar阿拉伯语ara arb✓✓✓
az阿塞拜疆语aze azj✓
be白俄罗斯语bel
bg保加利亚语bul✓
bn孟加拉语ben✓
bo藏语bod tib✓
bs波斯尼亚语bos✓
ca加泰罗尼亚语cat✓
cs捷克语ces cze✓✓✓
cy威尔士语cym wel
da丹麦语dan✓✓
de德语deu ger✓✓✓
el希腊语ell gre✓✓
en英语eng✓✓✓
es西班牙语spa✓✓✓
et爱沙尼亚语est ekk✓
eu巴斯克语eus
fa波斯语fas pes✓✓✓
fi芬兰语fin✓✓
fr法语fra fre✓✓✓
ga爱尔兰语gle
gu古吉拉特语guj✓
he希伯来语heb✓✓
hi印地语hin✓✓✓
hr克罗地亚语hrv✓
hu匈牙利语hun✓✓
hy亚美尼亚语hye✓
id印尼语ind✓✓✓
is冰岛语isl ice✓
it意大利语ita✓✓✓
ja日语jpn✓✓✓
ka格鲁吉亚语kat geo✓
kk哈萨克语kaz✓✓
km高棉语khm✓✓
kn卡纳达语kan
ko韩语kor✓✓✓
lg卢干达语lug
lo老挝语lao✓
lt立陶宛语lit✓
lv拉脱维亚语lav lvs✓
mi毛利语mri mao
mk马其顿语mkd mac✓✓
ml马拉雅拉姆语mal
mn蒙古语mon khk✓✓
mr马拉地语mar✓✓
ms马来语msa zsm✓✓✓
my缅甸语mya bur✓✓
nb书面挪威语nob nor✓
nl荷兰语nld dut✓✓✓
nn新挪威语nno
or奥里亚语ori ory
pa旁遮普语pan
pl波兰语pol✓✓✓
pt葡萄牙语por✓✓✓
ro罗马尼亚语ron rum✓✓
ru俄语rus✓✓✓
si僧伽罗语sin
sk斯洛伐克语slk slo✓
sl斯洛文尼亚语slv✓
sn绍纳语sna
so索马里语som
sq阿尔巴尼亚语sqi als✓
sr塞尔维亚语srp✓
st南索托语sot
sv瑞典语swe✓✓
sw斯瓦希里语swa swh✓
ta泰米尔语tam✓✓
te泰卢固语tel✓
th泰语tha✓✓✓
tl他加禄语(菲律宾语)tgl fil✓✓✓
tn茨瓦纳语tsn
tr土耳其语tur✓✓✓
ts聪加语tso
uk乌克兰语ukr✓✓
ur乌尔都语urd✓
vi越南语vie✓✓✓
xh科萨语xho
yo约鲁巴语yor
yue粤语✓✓
zh中文(普通话)zho cmn✓✓✓
zu祖鲁语zul

对齐:已知语言时请显式传入

不传 language 时,对齐只根据参考文本判定语言。书写系统相同的语言可能因此被混淆:例如用汉字写成的粤语文本可能被当成普通话,结果只有少数字能对上音频。显式传 language=yue 可以避免自动语言判定造成的这类偏差。

已知语言时请显式传入。und 只用于混合语言、音译文本,或没有对应代码的语言。

示例

转录粤语音频:

Shell
curl --fail-with-body "$EDGESPEAK_BASE_URL/audio/transcriptions" \
  -F file=@cantonese.wav -F language=yue -F response_format=json

把已知的粤语文稿对齐到同一段音频:

Shell
curl --fail-with-body "$EDGESPEAK_BASE_URL/audio/alignments" \
  -F file=@cantonese.wav -F text="今日天氣好好。" -F language=yue

把书面文本归一化为繁体中文读法:

Shell
curl --fail-with-body "$EDGESPEAK_BASE_URL/text/normalizations" \
  -H "Content-Type: application/json" \
  -d '{"text":"8:15","language":"zh-TW","mode":"tn","top_k":1}'

输出示例(节选):

JSON
{
  "task": "normalize",
  "language": "zh",
  "mode": "tn",
  "alternatives": [{ "rank": 0, "text": "八點十五分" }]
}

响应里返回的是解析后的代码 zh;zh-TW 标签只决定了输出繁体字。

转录语言不受支持时返回稳定错误码。请按 error.code 分支处理,不要解析 message:

JSON
{"error":{"message":"unsupported language: 'tlh'","type":"invalid_request_error","code":"asr_language_unsupported","param":"language"}}

message 回显你传入的值,仅供诊断。