转录
基于 Whisper large-v3 的异步音视频转录(音视频转文字),支持说话人分离。
计费:每分钟 4 积分(不足 1 分钟按 1 分钟),提交时预扣,任务失败自动退回。
接口:POST/transcriptions GET/transcriptions/{id}
提交任务
传公网可访问的 URL(推荐——比如单个帖子提取拿到的媒体直链):
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 小时):
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 }
轮询结果
curl https://api.snapany.com/openapi/v1/transcriptions/{id} \
-H "Authorization: Bearer sk_snapany_xxx" \
-H "Accept-Language: zh"
每 3–5 秒轮询一次(轮询免费)。轮询循环示例:
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 标签。