# Bản dịch

> Dịch transcript sang ngôn ngữ khác khi chuyển thành văn bản hoặc sau đó, và đọc văn bản, SRT, VTT song ngữ hoặc chỉ bản dịch.

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

transcript1 chuyển tệp phương tiện thành văn bản trước, rồi dịch văn bản transcript sang một ngôn ngữ bạn chọn. Bản dịch được căn theo từng đoạn và giữ nguyên mốc thời gian cùng người nói gốc. Đây chỉ là dịch văn bản: không lồng tiếng và không có âm thanh đã dịch.

Dịch miễn phí. Dịch dùng 0 phút và hiện trong lịch sử sử dụng của bạn như một mục miễn phí "Translation". Phút chuyển thành văn bản vẫn tính như thường, và một bản dịch thất bại không bao giờ làm transcript thất bại hay hoàn lại phút.

## Dịch ngay khi chuyển thành văn bản

Thêm `translate_to` vào yêu cầu tạo bản chuyển văn bản. Đó là mã ISO 639-1 gồm hai chữ cái thường, ví dụ `es` hoặc `en`. Tham số hoạt động với liên kết video trong body JSON của `POST /v1/transcriptions`, với việc đặt chỗ tải lên theo phần và với tải lên multipart một bước.

```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"}'
```

Với tải tệp lên, hãy gửi `translate_to` dưới dạng trường biểu mẫu:

```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
```

Công cụ MCP `transcribe` cũng nhận `translate_to`. Mỗi yêu cầu một ngôn ngữ đích.

## Dịch transcript đã có sẵn

Yêu cầu dịch cho một bản chuyển văn bản đã hoàn tất:

```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 trả về `202`:

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

| Trạng thái | Ý nghĩa |
|---|---|
| `404` | Không tìm thấy bản chuyển văn bản. |
| `409 transcript_not_ready` | Bản chuyển văn bản chưa ở trạng thái `completed`. |
| `422` | Ngôn ngữ không phải mã hai chữ cái hợp lệ. |

Lời gọi này có tính idempotent. Bản dịch ở trạng thái `processing` hoặc `completed` được trả về nguyên trạng, còn bản dịch `failed` sẽ được thử lại. Công cụ MCP `translate_transcription` nhận `id` và `language`.

## Đọc bản dịch

`GET /v1/transcriptions/:id` và các bản tải xuống dạng văn bản, SRT, VTT nhận tham số `translation`:

| `translation` | Kết quả |
|---|---|
| `both` (mặc định) | Các đoạn JSON có thêm trường `translation`. Văn bản đặt dòng đã dịch bên dưới dòng gốc. Khối SRT và VTT có hai dòng: bản gốc, rồi bản dịch. |
| `only` | Văn bản đã dịch thay cho `text`. Mốc thời gian và người nói giữ nguyên. |
| `none` | Chỉ transcript gốc. |

Phản hồi có đối tượng `translation`, hoặc `null` nếu không yêu cầu dịch:

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

`status` là `processing`, `completed` hoặc `failed`. Bản dịch thất bại còn có thông báo `error`. `wait` cũng chờ bản dịch đã yêu cầu; nếu hết thời gian chờ, trạng thái là `processing`. Công cụ MCP `get_transcription` có tham số `translation` với cùng các giá trị.

## Webhook

Hai sự kiện báo kết quả bản dịch, ngoài `transcription.completed` và `transcription.failed` vốn không đổi:

| `type` | Được gửi khi |
|---|---|
| `transcription.translation.completed` | Bản dịch đã yêu cầu đạt trạng thái `completed`. |
| `transcription.translation.failed` | Bản dịch đã yêu cầu đạt trạng thái `failed`. |

`data` là đối tượng bản chuyển văn bản cộng thêm `translation: { language, status, error }`. Xem [Webhooks](https://transcript1.com/vi/docs/webhooks) để biết chữ ký và quy tắc gửi.
