产品文档

语音翻译

更新于 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 个接口,以下内容随接口定义自动生成。 需要跨产品查找接口时可前往接口索引

语音翻译(识别 + 翻译一体)

POST/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

200 响应
{
  "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 流式)

WSSwss://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可选
stringAPI 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}