# 翻译

> 转录时或之后，把转录文本翻译成另一种语言，并读取双语或仅译文的文本、SRT 和 VTT。

Canonical: https://transcript1.com/zh/docs/translation
Language: zh-Hans
Last updated: 2026-10-31

transcript1 先转录媒体，再把转录文本翻译成你选择的一种语言。翻译按片段对齐，并保留原始时间戳和说话人。它只翻译文字：没有配音，也没有翻译后的音频。

翻译免费。它使用 0 分钟，在用量记录中显示为免费的“Translation”条目。转录的分钟照常计算，翻译失败既不会让转录文本失败，也不会退还。

## 转录时同步翻译

在创建转录的请求中加入 `translate_to`。它是两位小写 ISO 639-1 代码，例如 `es` 或 `en`。它适用于 `POST /v1/transcriptions` JSON 请求体中的视频链接、分块上传预留，以及一次性 multipart 上传。

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "translate_to": "es"}'
```

上传文件时，把 `translate_to` 作为表单字段发送：

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -F file=@interview.m4a \
  -F translate_to=en
```

MCP 的 `transcribe` 工具也接受 `translate_to`。每次请求一种目标语言。

## 翻译已有的转录文本

为已完成的转录任务申请翻译：

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/translations" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"language": "en"}'
```

API 返回 `202`：

```json
{
  "transcription_id": "tr_8fK2Lm0PqRsTuVwXyZaBcD",
  "language": "en",
  "status": "processing"
}
```

| 状态 | 含义 |
|---|---|
| `404` | 找不到该转录任务。 |
| `409 transcript_not_ready` | 转录任务尚未达到 `completed`。 |
| `422` | 语言不是有效的两位代码。 |

该调用是幂等的。状态为 `processing` 或 `completed` 的翻译会原样返回，`failed` 的翻译会被重试。MCP 工具 `translate_transcription` 接受 `id` 和 `language`。

## 读取翻译

`GET /v1/transcriptions/:id` 以及文本、SRT、VTT 下载都接受 `translation`：

| `translation` | 结果 |
|---|---|
| `both` （默认） | JSON 片段会带上 `translation` 字段。文本把译文放在原文下面。SRT 和 VTT 字幕块有两行：先原文，再译文。 |
| `only` | 译文取代 `text`。时间戳和说话人保持不变。 |
| `none` | 只有原始转录文本。 |

响应中有 `translation` 对象；如果没有申请翻译，则为 `null`：

```json
{
  "translation": { "language": "es", "status": "completed" }
}
```

`status` 为 `processing`、`completed` 或 `failed`。翻译失败时还会有 `error` 消息。`wait` 也会等待已申请的翻译；等待超时时，状态为 `processing`。MCP 的 `get_transcription` 工具有取值相同的 `translation` 参数。

## Webhook

除了保持不变的 `transcription.completed` 和 `transcription.failed`，还有两个事件报告翻译结果：

| `type` | 发送时机 |
|---|---|
| `transcription.translation.completed` | 已申请的翻译达到 `completed`。 |
| `transcription.translation.failed` | 已申请的翻译达到 `failed`。 |

`data` 是转录对象加上 `translation: { language, status, error }`。签名和投递规则见 [Webhooks](https://transcript1.com/zh/docs/webhooks)。
