# 音频与语言支持

> iKho 转写引擎支持的音频格式、采样率与声道建议、语言支持矩阵,以及说话人分离与时间戳的能力边界。

## 支持的音频格式

转写 API 通过 `file_url` 接收音频文件,当前支持以下三种格式。提交方式见[提交音频转写](/docs/api-reference/transcription/submit/)。

| 格式 | 容器与编码 | 建议码率 | 典型来源 |
|---|---|---|---|
| `mp3` | MPEG 音频,有损压缩 | 中等码率即可满足转写,过低码率会损失高频细节 | 会议录音软件导出、历史存量音频 |
| `m4a` | MP4 容器,常见 AAC 编码 | 同等码率下压缩效率高于 mp3,适合移动端上传 | 手机录音应用、移动端 SDK 采集 |
| `wav` | PCM 无压缩或轻量编码 | 无压缩,体积最大,信息保留最完整 | S1 录音卡导出、专业录音设备 |

三种格式的转写质量差异主要来自录音本身的信噪比,而不是容器格式。已有的压缩音频不必转成 wav 再上传,重复转码不会找回丢失的信息。

## 采样率与声道建议

转写对采样率与声道的要求比音乐存档低。定性结论如下。

  
- 采样率:16kHz 以上的音频即可满足转写需要。更高采样率(如 44.1kHz、48kHz)不会损害效果,但对识别准确率的增益有限,主要代价是文件体积与上传流量。
  
- 声道:单声道即可。人声内容通常不依赖立体声信息,双声道文件体积接近翻倍,转写收益很小。
  
- 已有音频不必重采样:如果素材本身是 44.1kHz 立体声,直接上传即可,不需要预处理;引擎会自行处理。

如果你在自建采集链路(例如自研 App 的录音模块),推荐直接按 16kHz 单声道采集,在音质与流量之间取得平衡。

## 单文件大小与时长上限

内测期的单文件大小上限、单任务时长上限与分片大小,以联调口径为准,由对接工程师在开通时提供。文件上传采用分片机制,见[文件上传 API 总览](/docs/api-reference/file/overview/)。

推荐实践:

  
- 超长录音分段提交:数小时以上的连续录音,建议按自然停顿切成若干段,每段作为独立任务提交。单段失败只需重转该段,轮询与重试的粒度也更可控。
  
- 切分点避开句子中间:在静音或换话题处切分,避免把一句话切成两半,影响切分点附近的识别与说话人标注。
  
- 保留原始文件:分段只影响提交粒度,建议在你侧保留完整原始音频,便于后续回放定位。

## 语言支持矩阵

转写引擎的语言能力如下表,按当前实际水平如实标注。语言通过提交任务时的 `params.transcribe.language` 指定,`auto` 为自动识别。

| 语言 | 支持状态 | 说明 |
|---|---|---|
| 中文普通话 | 主力优化 | 核心场景,长期持续投入,推荐优先用于普通话内容 |
| 中英混说 | 支持 | 同一句话中英文夹杂可正确识别,适合技术讨论、外企会议等场景 |
| 英语 | 支持 | 纯英语内容可用 |
| 粤语及其他方言、语种 | 评估中 | 暂不承诺效果,有明确需求可在联调时与对接工程师沟通 |

「主力优化」与「支持」为当前可用能力,「评估中」表示尚未达到可承诺的水平。请勿在你的产品中向用户承诺「评估中」条目的效果。

## 说话人分离

开启 `params.diarization.enabled` 后,引擎会区分不同发言人,并在结果的每个片段上给出 `speaker` 标签(如「发言人 1」「发言人 2」)。标签是任务内的聚类编号,不同任务之间不保证同一个人拿到同一编号。

### 效果边界

  
- 近场对话效果最好:说话人距离麦克风较近、逐个发言的场景(面对面访谈、桌面会议)分离最稳定。
  
- 重叠发言会降准:多人同时说话时,重叠区间的说话人归属与文本准确率都会下降,这是当前技术的普遍局限。
  
- 远场弱信号会降准:说话人距离麦克风远、混响大或底噪高时,声纹特征变弱,可能出现同一人被拆成多个标签、或不同人被合并的情况。

### 场景建议

  
- 一对一访谈、医疗随访、销售拜访这类双人对话场景,是说话人分离效果最好的形态,建议优先在这类场景中使用该能力。
  
- 多人会议建议配合较好的拾音条件(麦克风置于桌面中央、控制环境噪音),并在产品设计上允许用户对说话人标签做人工纠正。
  
- 如需跨任务识别同一个人,可开启 `return_embedding` 获取声纹向量,在你侧做归一处理;向量的具体维度与格式以联调口径为准。

## 时间戳精度

转写结果按句级片段对齐时间:`data.segments` 中的每个片段带 `start_ms` 与 `end_ms`,单位为毫秒,与[查询转写任务](/docs/api-reference/transcription/get-task/)的响应结构一致。

  segments 片段示例
    
  

  
```
{
  "speaker": "发言人 1",
  "start_ms": 4200,
  "end_ms": 9800,
  "text": "华东区上周新增了三家门店,整体环比增长百分之十二。"
}
```

使用时注意两点。

  
- 粒度是句级:时间戳标注的是整句的起止,当前不提供逐词时间戳。做回放定位、字幕滚动时按句对齐即可;需要更细粒度对齐的场景,请在联调时说明。
  
- 起止时间相对音频文件开头:`start_ms` 从 0 计起。如果你按上文建议对超长录音做了分段,拼接展示时需要在你侧为每段加上偏移量。
