LoopToken
音频生成

音频转写

使用 OpenAI 兼容接口将音频转写为文本或字幕

音频转写接口接收本地音频文件,同步返回识别文本、详细时间戳或字幕。接口使用通用的 multipart 协议,适合会议记录、采访整理、字幕生成和语音输入等场景。

接口地址

POST /v1/audio/transcriptions

请求需要 API Key:

Authorization: Bearer sk-lt-...
Content-Type: multipart/form-data

使用 cURL 或 SDK 时请让工具自动生成 multipart boundary,不要手工固定 Content-Type 的 boundary。

请求字段

字段类型必填说明
filefile音频文件,只能上传一个,最大 25 MB
modelstring当前为 whisper-1
languagestringISO-639-1 两字母语言代码,如中文 zh、英文 en、日文 ja、韩文 ko
promptstring用于补充专有名词、上下文或转写风格,处理上限为 224 tokens
response_formatstringjsontextsrtverbose_jsonvtt,默认 json
temperaturenumber采样温度,范围 01,默认 0

支持的文件扩展名为 mp3mp4mpegmpgam4awavwebm。建议显式传入 language,可以减少语言检测歧义并提高处理速度。

不支持的字段、重复字段、重复文件、空文件、无效语言代码或超出范围的温度会直接返回参数错误。

cURL 示例

curl https://api.vibelab.me/v1/audio/transcriptions \
  -H "Authorization: Bearer $LOOPTOKEN_API_KEY" \
  -F "file=@meeting.mp3" \
  -F "model=whisper-1" \
  -F "language=zh" \
  -F "response_format=json"

生成 SRT 字幕:

curl https://api.vibelab.me/v1/audio/transcriptions \
  -H "Authorization: Bearer $LOOPTOKEN_API_KEY" \
  -F "file=@interview.m4a" \
  -F "model=whisper-1" \
  -F "language=zh" \
  -F "response_format=srt" \
  --output interview.srt

Python 示例

import os
import requests

with open("meeting.mp3", "rb") as audio:
    response = requests.post(
        "https://api.vibelab.me/v1/audio/transcriptions",
        headers={"Authorization": f"Bearer {os.environ['LOOPTOKEN_API_KEY']}"},
        files={"file": ("meeting.mp3", audio, "audio/mpeg")},
        data={
            "model": "whisper-1",
            "language": "zh",
            "response_format": "json",
        },
        timeout=300,
    )

response.raise_for_status()
print(response.json()["text"])

响应格式

JSON

response_format=json 返回 HTTP 200 和精简 JSON:

{
  "text": "这是一段测试音频的转写文本。"
}

纯文本与字幕

格式Content-Type内容
texttext/plain; charset=utf-8只包含完整转写文本
srtapplication/x-subrip; charset=utf-8带时间范围的 SRT 字幕
vtttext/vtt; charset=utf-8WEBVTT 头的 WebVTT 字幕

详细 JSON

response_format=verbose_json 返回转写语言、音频时长和分段时间戳:

{
  "task": "transcribe",
  "language": "zh",
  "duration": 2.4,
  "text": "欢迎使用 LoopToken。",
  "segments": [
    {
      "id": 0,
      "start": 0,
      "end": 2.4,
      "text": "欢迎使用 LoopToken。"
    }
  ]
}

响应只包含公开协议字段,不会返回内部路由、原始服务错误或底层实现信息。

计费

whisper-1 按音频时长计费,不足一秒按一秒计算。请求开始时预扣一分钟额度;识别完成后根据返回的实际音频时长补足或退回差额。若余额不足以完成最终结算,接口返回 402 且不会返回转写内容。实际费率以定价页为准。

错误

错误响应统一为 JSON,不会混入音频或字幕内容:

{
  "error": {
    "message": "file must not exceed 25 MB",
    "type": "invalid_request_error",
    "code": "invalid_request_error",
    "request_id": "019c2a00-1111-7777-8888-999999999999"
  }
}
HTTP 状态code说明
400 / 422invalid_request_errormultipart、字段、文件、格式或音频内容不合法
402insufficient_credits余额不足以预扣或结算
404model_not_found模型不存在或当前不可用
413invalid_request_error请求或文件超过大小限制
502upstream_error音频服务暂时不可用或返回无效结果
503no_available_channel当前没有可用的音频转写通道

所有失败请求都会释放未结算的预扣额度。建议客户端对 502503 使用指数退避重试,不要自动重试参数错误。

本页内容