Transcript Asset Service

transcript-service

输入公开视频或音频 URL,异步产出原文全文、原文段级时间戳、原文词级时间戳、译文全文、译文段级时间戳,以及全部产物在火山 TOS 上的对象路径。

TranscriptCore 转写 Volcengine Ark 翻译 TOS 产物落盘 异步任务接口

能力边界

这个服务只负责“字幕资产生产”。它不做 TTS、不做配音时长控制、不做视频混流。
  • 接收公开视频或音频 URL。
  • 如果是视频,先下载视频并提取单声道转写音频。
  • 把转写音频上传到火山 TOS,并生成带时效的预签名读取 URL。
  • 通过当前服务的公网短地址中转私有 TOS 音频,再调用 TranscriptCore 生成原文全文、段级时间戳、词级时间戳。
  • 逐段调用火山 Ark 生成译文,再复用原文时间轴拼出译文段级时间戳。
  • 把文本和 JSON 产物都上传到 TOS,返回对象路径给调用方。

接口列表

GET /

首页 HTML 文档。公开可访问。

GET /api/transcripts

JSON 文档入口。需要鉴权。

GET /api/transcripts/health

健康检查。需要鉴权。

POST /api/transcripts/jobs

提交转录与翻译任务,立即返回 jobId。

GET /api/transcripts/jobs/{jobId}

查询任务状态和结果。

请求示例

{
  "url": "https://example.com/demo.mp3",
  "sourceLanguage": "auto",
  "targetLanguage": "zh",
  "metadata": {
    "project": "launch-video",
    "sourceType": "podcast"
  }
}

响应结构示例

{
  "ok": true,
  "job": {
    "jobId": "job_xxxxxxxxxxxx",
    "status": "succeeded",
    "sourceUrl": "https://example.com/demo.mp3",
    "sourceLanguage": "auto",
    "targetLanguage": "zh",
    "sourceTranscriptText": "...",
    "sourceSegments": [],
    "sourceWords": [],
    "translatedTranscriptText": "...",
    "translatedSegments": [],
    "artifacts": [
      {
        "kind": "source_audio",
        "filename": "source.mp3",
        "path": "tos://transcript-service/job_xxx/source_audio/source.mp3",
        "contentType": "audio/mpeg"
      }
    ],
    "metadata": {
      "project": "launch-video"
    }
  }
}

结果说明

  • sourceWords 是原文词级时间戳。
  • translatedSegments 是复用原文时间轴后的译文段级时间戳。
  • artifacts[].path 返回的是 TOS 对象路径,由调用方自己决定后续下载、分发或缓存策略。