产品文档
语音翻译
更新于 2026-09-04
语音识别与翻译一次完成:音频进、原文与译文同时出,支持文件与实时流式两种形态。
能力与场景
语音翻译在一次调用内完成语音识别与目标语翻译,返回带时间戳的分段原文与译文。典型场景:跨语言会议记录、视频双语字幕生成、口语对话实时翻译、广播节目蒙汉互转。提供录音文件(同步 HTTP)与实时流式(WebSocket)两种形态;识别语言与纯语音识别产品一致,译文目标语言与文本翻译产品一致。
端点列表
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /v1/translate/speech | 录音文件识别 + 翻译(multipart 上传或 audioUrl) |
| WSS | /v1/translate/speech/realtime | 实时流式识别 + 翻译(WebSocket,逐分句推送译文) |
每个端点的请求参数、响应结构与可运行代码示例见本页下方「API 参考」(随接口定义自动生成,始终与线上一致)。
调用要点
- 文件接口与语音识别的转写接口同构:multipart 上传 file 或 JSON 提交 audioUrl,另需必填
targetLang指定译文目标语言。 - 实时接口协议与实时语音识别一致,start 控制帧多一个必填
targetLang;最终分句(isFinal=true)带segmentId,随后以translation帧推送该分句译文。完整帧协议与可运行示例见本页下方「API 参考」。 - 实时场景译文为逐分句异步返回,网络抖动或个别分句翻译失败不影响识别流与计费。
- 按音频**时长(秒)**计费(与语音识别相同口径),翻译环节不额外收费。
支持语种
- 先识别后翻译:
language指定音频语言,targetLang指定译文语言,两个参数取值域不同。 - 实时流式接口(WebSocket)的 start 帧使用同名字段与同一取值域。
音频语言(参数 language):
| 代码 | 语种 | 说明 |
|---|---|---|
xle_mw | 西里尔蒙古文 | 默认值;蒙古国通用的西里尔字母书写 |
mw | 传统蒙古文 | 与西里尔蒙古文语音相同,差别只在识别结果的书写系统 |
zh | 中文 | 简体中文 |
en | 英语 | — |
es | 西班牙语 | — |
fr | 法语 | — |
de | 德语 | — |
ja | 日语 | — |
ko | 韩语 | — |
ru | 俄语 | — |
pt | 葡萄牙语 | — |
ar | 阿拉伯语 | — |
hi | 印地语 | — |
id | 印尼语 | — |
yue | 粤语 | 繁体书写 |
译文语言(参数 targetLang):
| 代码 | 语种 | 说明 |
|---|---|---|
zh | 中文 | 简体中文 |
en | 英语 | — |
mw | 传统蒙古文 | 回鹘式蒙古文(竖排),Unicode 国标编码 |
xle_mw | 西里尔蒙古文 | 蒙古国通用的西里尔字母书写 |
es | 西班牙语 | — |
fr | 法语 | — |
de | 德语 | — |
ja | 日语 | — |
ko | 韩语 | — |
ru | 俄语 | — |
pt | 葡萄牙语 | — |
ar | 阿拉伯语 | — |
hi | 印地语 | — |
id | 印尼语 | — |
yue | 粤语 | 繁体书写 |
la | 拉丁转写 | 传统蒙古文的拉丁字母转写 |
ipa | 国际音标 | 输出 IPA 音标标注 |
kk | 哈萨克语 | — |
bo | 藏语 | — |
ug | 维吾尔语 | — |
完整代码表与各产品对照见「语种与语言代码」。
计费
- 计费单位:秒
- 每月免费额度于月初重置,优先于余额抵扣;超出部分按单价从智能云余额扣费。
- 仅对成功的调用计费;失败调用不扣费。
- 实时单价与免费额度见本页下方「当前价格」(后台调价即时生效),总规则见「计费与免费额度」。
当前价格
以下为实时生效价,与定价页同源;调价后此处立即同步。仅对成功调用计费,免费额度优先抵扣。
| 计费单位 | 单价 | 每月免费额度 |
|---|---|---|
| 按秒计费 | ¥0.02 / 秒 | 360 秒 / 月 |
API 参考
本产品共 2 个接口,以下内容随接口定义自动生成。 需要跨产品查找接口时可前往接口索引。
语音翻译(识别 + 翻译一体)
/v1/translate/speech整段音频识别并翻译到目标语言,一次调用返回分段原文与译文。支持 wav/mp3/m4a/aac/flac/ogg/opus/webm 等常见格式(不支持的格式服务端自动转码)。两种投递方式:multipart/form-data 上传 file 字段,或 application/json 提交 audioUrl 由服务端下载(超时 30 秒)。音频上限 100MB。按有效语音秒数计费,翻译不额外收费。
请求参数application/json
| 参数 | 类型 | 说明 |
|---|---|---|
file可选 | file | 音频文件(multipart 方式,与 audioUrl 二选一) |
audioUrl可选 | string | 音频公网 URL(JSON 方式,与 file 二选一) 示例: https://example.com/meeting.mp3 |
targetLang必填 | string | 译文目标语言(必填) 示例: zh |
language可选 | string | 音频语言(默认 mn) 示例: mn |
diarization可选 | boolean | 是否开启说话人分离 示例: false |
响应示例200 · application/json
{
"text": "Сайн байна уу Би туслах байна",
"translation": "你好 我是助手",
"segments": [
{
"start": 0.4,
"end": 3.2,
"text": "Сайн байна уу",
"translation": "你好",
"speaker": "说话人1"
}
],
"durationSeconds": 63
}代码示例
curl -X POST "https://cloud.heimori.cn/v1/translate/speech" \
-H "Authorization: Bearer sk-heimori-..." \
-F "file=@example.wav" \
-F "audioUrl=https://example.com/meeting.mp3" \
-F "targetLang=zh" \
-F "language=mn" \
-F "diarization=false"实时语音翻译(WebSocket 流式)
wss://cloud.heimori.cn/v1/translate/speech/realtime在实时识别的基础上,对每个最终分句异步推送译文。识别链路与 /v1/asr/realtime 完全一致,仅 start 帧多一个 targetLang,并多出 translation 帧。基址 wss://cloud.heimori.cn。
鉴权:握手时携带 Authorization: Bearer sk-heimori-... 请求头;
浏览器原生 WebSocket 不能自定义请求头,可改用查询参数 ?key=sk-heimori-...(注意不要把密钥暴露在前端页面里,建议由你的服务端中转)。
音频格式:二进制帧为 16kHz / 16-bit / 单声道 PCM(小端), 单帧不超过 128KB 且字节数为偶数;建议每 100–200ms 发送一帧。
帧协议:
| 方向 | 帧 | 说明 |
|---|---|---|
| C→S | {"type":"start","language":"xle_mw","targetLang":"zh","sampleRate":16000,"format":"pcm"} | 开始会话;language 为音频语言,targetLang 为译文语言 |
| S→C | {"type":"started","requestId":"..."} | 会话就绪 |
| C→S | 二进制 PCM 帧 | 持续发送音频 |
| S→C | {"type":"result","text":"...","isFinal":false} | 识别中间结果 |
| S→C | {"type":"result","text":"...","isFinal":true,"segmentId":1} | 分句最终识别结果,带分句编号 |
| S→C | {"type":"translation","segmentId":1,"text":"原文","translation":"译文"} | 该分句的译文(异步到达,按 segmentId 关联);翻译失败时 translation 为 null 并附 error |
| C→S | {"type":"end"} | 音频发送完毕,服务端会等待未完成的分句翻译(最多 10 秒) |
| S→C | {"type":"done","durationSeconds":12.4} | 会话结束并给出计费时长 |
| S→C | {"type":"error","code":"...","message":"..."} | 任意阶段的错误 |
language 取值(音频语言):xle_mw / mw / zh / en / es / fr / de / ja / ko / ru / pt / ar / hi / id / yue(默认 xle_mw)。
targetLang 取值(译文语言):zh / en / mw / xle_mw / es / fr / de / ja / ko / ru / pt / ar / hi / id / yue / la / ipa / kk / bo / ug。
连接约束:
- 建立连接后 30 秒内必须发送
start,否则以invalid_request关闭; - 连续 120 秒无任何消息视为空闲,服务端主动关闭;
- 单连接最长 60 分钟音频;
- 每条连接占用一个并发席位(与密钥的并发上限共享)。
计费:与实时语音识别相同,按音频秒数计;分句翻译不额外计费。
握手参数
| 参数 | 类型 | 说明 |
|---|---|---|
keyquery可选 | string | API Key(仅当客户端无法设置 Authorization 请求头时使用,二选一) 示例: sk-heimori-... |
代码示例
# 用 wscat 手工调试(npm install -g wscat);二进制音频帧无法在终端手敲,
# 这里只演示握手与控制帧,完整示例见 Python / JavaScript 标签
wscat -c "wss://cloud.heimori.cn/v1/translate/speech/realtime" \
-H "Authorization: Bearer sk-heimori-..."
> {"type":"start","language":"xle_mw","targetLang":"zh"}
< {"type":"started","requestId":"..."}
> {"type":"end"}
< {"type":"done","durationSeconds":0}