# 转录

> Whisper large-v3 视频转文字，支持说话人分离

来源: https://platform.snapany.com/zh/docs/transcription

基于 **Whisper large-v3** 的异步音视频转录（音视频转文字），支持说话人分离。

**计费**：每分钟 4 积分（不足 1 分钟按 1 分钟），提交时预扣，任务失败自动退回。

接口：[`POST /transcriptions`](https://platform.snapany.com/zh/docs/api#POST/transcriptions) [`GET /transcriptions/{id}`](https://platform.snapany.com/zh/docs/api#GET/transcriptions/%7Bid%7D)

## 提交任务

传公网可访问的 URL（推荐——比如单个帖子提取拿到的媒体直链）：

```bash
curl -X POST https://api.snapany.com/openapi/v1/transcriptions \
  -H "Authorization: Bearer sk_snapany_xxx" \
  -H "Accept-Language: zh" \
  -H "Content-Type: application/json" \
  -d '{"fileUrl": "https://example.com/audio.mp3", "speakerLabels": true, "maxSpeakers": 2}'
```

或上传本地文件（最大 512MB、6 小时）：

```bash
curl -X POST https://api.snapany.com/openapi/v1/transcriptions \
  -H "Authorization: Bearer sk_snapany_xxx" \
  -H "Accept-Language: zh" \
  -F "file=@meeting.mp3" -F "speakerLabels=true"
```

响应：`{ "id": "...", "status": "processing", "duration": 605.3 }`

## 轮询结果

```bash
curl https://api.snapany.com/openapi/v1/transcriptions/{id} \
  -H "Authorization: Bearer sk_snapany_xxx" \
  -H "Accept-Language: zh"
```

每 **3–5 秒**轮询一次（轮询免费）。轮询循环示例：

```python
import time
import requests

headers = {"Authorization": f"Bearer {API_KEY}"}
url = f"https://api.snapany.com/openapi/v1/transcriptions/{job_id}"

while True:
    job = requests.get(url, headers=headers).json()
    if job["status"] == "completed":
        print(job["result"]["text"])
        break
    if job["status"] == "failed":
        # 预扣的积分会自动退回
        print("失败：", job["error"])
        break
    time.sleep(5)
```

`status` 为 `completed` 时，`result` 是 Whisper verbose_json 结果：完整 `text`、检测到的 `language`、带起止时间戳的 `segments`——开启说话人分离时每段带 `speaker` 标签。
