十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Zoom AI Services Scribe API 完整参考:transcribe 与批量转写任务实战指南

Zoom AI Services Scribe API 完整参考:transcribe 与批量转写任务实战指南 Zoom AI Services Scribe API 完整参考transcribe 与批量转写任务实战指南【免费下载链接】knowledge-work-pluginsOpen source repository of plugins primarily intended for knowledge workers to use in Claude Cowork项目地址: https://gitcode.com/GitHub_Trending/kn/knowledge-work-plugins本指南基于 knowledge-work-plugins 仓库中partner-built/zoom-plugin/skills/scribe技能包的 API 参考文档整理而成系统梳理 Zoom AI Services Scribe 的六个 REST 端点、请求/响应结构与已知限制。读者将掌握同步 Fast Mode 转写、异步批量任务Batch Jobs、S3 存储对接、Webhook 通知校验以及常见故障排查的完整落地方法。概述与端点清单Scribe 是 Zoom AI Services 提供的文件与存储型语音转写ASR服务面向已上传或已存储的媒体文件而非实时音视频流。它提供两条主路径Fast Mode同步对单个文件发起POST /aiservices/scribe/transcribe请求同步返回转写 JSON适合交互式、单文件场景。Batch Mode异步对存储在 S3 上的归档/大量媒体发起POST /aiservices/scribe/jobs通过轮询或 Webhook 跟踪状态适合长媒体、批量归档场景。在仓库技能包中Scribe 的技能路由入口定义于 SKILL.md只要用户需求是将上传或存储的媒体转写为文本就应优先路由到本技能实时会议媒体则路由到 RTMSREST API 清单可串联 rest-api 技能。根据 api-reference.md 中的端点清单完整接口面如下Base URL 为https://api.zoom.us/v2MethodEndpoint功能Operation IDPOST/aiservices/scribe/transcribeScribe 同步转写Fast ModecreateFastAsrPOST/aiservices/scribe/jobs提交批量转写任务submitBatchAsrGET/aiservices/scribe/jobs列出批量任务listBatchJobsGET/aiservices/scribe/jobs/{jobId}查询批量任务状态getBatchJobStatusDELETE/aiservices/scribe/jobs/{jobId}取消批量任务cancelBatchJobGET/aiservices/scribe/jobs/{jobId}/files列出任务内各文件结果listBatchJobFiles说明上述接口信息整理自本仓库技能文档所记录的 Zoom AI Services OpenAPI 清单api-hub/ai-services/methods/endpoints.json及官方文档当前仓库不包含 Zoom 服务端实现代码调用行为以上游 API 实际返回为准。认证模型Build-platform JWT所有 Scribe 请求都需要携带 Bearer Token其生成方式为Build-platform 凭证 HS256 JWT核心要点记录于 auth-and-processing-modes.md算法HS256iss声明Build-platform 凭证标识符即 API Key过期时间保持在 1 小时以内示例中exp iat 60 * 60Node 参考实现import { KJUR } from jsrsasign; export function generateJWT(apiKey, apiSecret) { const iat Math.round(Date.now() / 1000) - 30; const exp iat 60 * 60; return KJUR.jws.JWS.sign( HS256, JSON.stringify({ alg: HS256, typ: JWT }), JSON.stringify({ iss: apiKey, iat, exp }), apiSecret, ); }对应的环境变量约定记录于 environment-variables.md变量是否必需说明ZOOM_API_KEY是JWTiss声明中使用的 Build-platform issuer keyZOOM_API_SECRET是用于生成 HS256 JWT 的签名密钥PORT否本地服务端口LANGUAGE否默认语言代码如en-USS3_INPUT_URI批量时通常需要输入前缀或文件 URIS3_OUTPUT_URI批量时通常需要转写结果输出位置AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY未使用预签名时AWS 凭证AWS_SESSION_TOKEN经常需要临时凭证令牌WEBHOOK_URL可选批量通知回调公网 HTTPSWEBHOOK_SECRET可选但推荐用于校验 Zoom 回调签名的 HMAC 密钥需要特别警惕的是占位符陷阱如果环境中存放的是${ZOOM_API_KEY}、${ZOOM_API_SECRET}这类未解析的 shell 占位符健康检查可能误判为凭证已配置而真实调用会全部失败。应在调用 Zoom 之前做失败快速fail-fast校验。另外Zoom 官方文档在 AI Services 各页面中使用的凭证命名并不一致API key/API secret、SDK key/SDK secret、Build platform credentials三种叫法并存详见 versioning-and-drift.md。实现时统一视为Build-platform JWT issuer/secret 对并以上线前门户实际标签为准。Fast Mode同步转写端点POST /aiservices/scribe/transcribe请求结构顶层必填字段为file与configfile媒体文件multipart 上传或可访问的文件 URLJSON 形式config转写配置对象常用config字段language语言代码如en-USword_time_offsets是否输出词级时间偏移channel_separation多声道分离timestamps时间戳output_format输出格式profanity_filter脏话过滤diarization说话人分离谁在何时说话响应结构顶层响应键request_id请求 IDduration_sec音频时长秒model使用的模型标识result转写结果主体含文本、分段、词级时间信息等具体结构以下游消费需求为准两种提交形态官方文档展示的是 JSON URL 形式但官方 quickstart 示例同时支持 multipart 文件上传代理。仓库中的完整 Node/Express 代理示例见 fast-mode-node.md核心逻辑如下app.post(/transcribe, upload.single(file), async (req, res) { const token generateJWT(); const config { language: req.body.language || en-US, word_time_offsets: true, channel_separation: false, }; let response; if (req.file) { // 文件上传路径以 multipart/form-data 转发给 Zoom const form new FormData(); form.append(file, new Blob([new Uint8Array(req.file.buffer)]), req.file.originalname); form.append(config, JSON.stringify(config)); response await fetch(https://api.zoom.us/v2/aiservices/scribe/transcribe, { method: POST, headers: { Authorization: Bearer ${token} }, body: form, }); } else { // URL 路径以 JSON 提交 file URL response await fetch(https://api.zoom.us/v2/aiservices/scribe/transcribe, { method: POST, headers: { Authorization: Bearer ${token}, Content-Type: application/json, }, body: JSON.stringify({ file: req.body.file, config }), }); } const text await response.text(); res.status(response.status).type(application/json).send(text); });关键实践建议来自 common-drift-and-breaks.md客户端上传与 URL 提交应作为两条独立请求路径分别实现而不是强行统一到一个 JSON 形态服务端做上传代理时应使用multipart/form-data转发不要用 JSONdata:URI 包装。Fast Mode 的边界条件官方限制单文件最大 100 MB最长 2 小时。托管浏览器 UI 场景下即使文件在官方限制内同步请求仍可能因边缘/代理超时先于上游返回而失败。仓库记录的部署观测数据为约 17.2 MB MP4 用时约 26s约 38.6 MB MP4 用时约 26-37s约 59.2 MB MP4 后端用时约 32-34s但部分浏览器请求仍先返回前端504后端日志随后显示200。应对策略托管 UI 下优先使用异步请求 轮询包装 Fast Mode对较大或时长不可控的媒体即便仍在 100 MB/2 小时限制内也优先使用 Batch Mode详见 RUNBOOK.md。Batch Mode批量转写任务端点族提交任务POST /aiservices/scribe/jobs必填顶层字段input、output、config。可选字段reference_id、notifications.webhook_url、notifications.secret。Input 子字段modeSINGLE单个文件、PREFIX前缀匹配整批、MANIFEST清单文件source当前规范中为S3uri输入位置manifest清单内容MANIFEST 模式filters.include_globs/filters.exclude_globs按 glob 包含/排除文件auth.aws.access_key_id/auth.aws.secret_access_key/auth.aws.session_tokenS3 访问凭证Output 子字段destination目标存储当前为S3uri转写结果输出位置layoutSINGLE、PREFIX、ADJACENT三种输出布局auth.aws.*与输入相同的 AWS 凭证结构Config 子字段language、word_time_offsets、channel_separation、diarization、profanity_filter、output_format、segmentation_mode响应键job_id、state、submitted_at。批量提交成功时返回201与job_id。完整的 curl 提交示例见 batch-webhook-pipeline.mdcurl -X POST https://api.zoom.us/v2/aiservices/scribe/jobs \ -H Authorization: Bearer $TOKEN \ -H Content-Type: application/json \ -d { input: { mode: PREFIX, source: S3, uri: s3://example-bucket/audio/, auth: { aws: { access_key_id: ..., secret_access_key: ..., session_token: ... } } }, output: { destination: S3, uri: s3://example-bucket/transcripts/, layout: PREFIX, auth: { aws: { access_key_id: ..., secret_access_key: ..., session_token: ... } } }, config: { language: en-US, word_time_offsets: true, channel_separation: true }, notifications: { webhook_url: https://example.com/webhooks/scribe, secret: replace-me } }查询与取消端点GET /aiservices/scribe/jobs列出批量任务查询参数state按状态过滤、page_size、next_page_token响应键jobs、next_page_token用于分页翻取GET /aiservices/scribe/jobs/{jobId}查询任务状态路径参数jobId响应键job_id、state、submitted_at、summaryDELETE /aiservices/scribe/jobs/{jobId}取消任务用于取消排队中queued或处理中processing的任务。GET /aiservices/scribe/jobs/{jobId}/files列出各文件结果路径参数jobId查询参数page_size、next_page_token响应键files、next_page_token使用场景批内部分文件缺失/失败时先检查该端点定位具体文件再决定是否重提整个批次不要盲目整体重提。批量任务的完整流程submit batch job - receive job_id - poll /jobs 或等待 webhook - inspect /jobs/{jobId}/files - ingest transcript outputsWebhook 通知与签名校验提交任务时可配置notifications.webhook_url与notifications.secret。回调校验采用x-zm-signaturex-zm-request-timestamp头HMAC-SHA256 并以sha256前缀比对参考实现import crypto from crypto; function verifyZoomWebhook(rawBody, timestamp, signature, secret) { const message v0:${timestamp}:${rawBody}; const expected sha256${crypto.createHmac(sha256, secret).update(message).digest(hex)}; return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected)); }校验失败的排查顺序确认签名使用的是未解析的原始请求体raw body先于 JSON 解析捕获、确认时间戳头已包含在签名串内、确认共享密钥与任务通知配置一致。已知限制与约束根据 api-reference.md 记录的源码观测结果批量 MANIFEST 最大支持1000 个文件 URI。include_globs最多10 项。exclude_globs最多10 项。官方文档点名的音频/媒体格式WAV、MP3、M4A、MP4。OpenAPI 描述中批量任务速率限制标签为LIGHT。Fast Mode 的附加约束来自 RUNBOOK.md 与 common-drift-and-breaks.md单文件100 MB、时长2 小时。实战场景与路由选择high-level-scenarios.md 给出了六类典型场景其模式选择原则可归纳为选择 Fast Mode用户上传单个文件、延迟敏感、文件大小与时长可控、构建基于短麦克风分块的伪流式 UI。选择 Batch Mode文件数量多、转写结果可后置、存储中心化的工作流如 S3 通话归档、合规/QA 离线处理。浏览器麦克风伪流式Scribe 无文档化的实时流式接口面可用MediaRecorder采集 5 秒分块可接受范围 5-10 秒、同时 2-3 个在途请求通过异步 Fast Mode 包装逐个上传并轮询按序拼接转写片段。注意这是轻量 demo/降级方案不是实时转写产品的首选架构——真实低延迟流式需求应路由到 RTMS。合规/QA 处理评审需要精确摘录时开启word_time_offsetstrue立体声通话录音开启channel_separationtrue大批量优先 Webhook 队列摄取而非同步轮询。客服语音洞察流水线Scribe 只负责转写情感分析、关键词、升级判断、QA 评分等必须由下游自有流水线完成不要因博客文案而推断存在未文档化的实时或分析端点。产品边界守卫详见 SKILL.md 与 versioning-and-drift.mdscribe 文件/存储型转写服务rtms 实时媒体流摄取Meeting SDK Linux 会议机器人参与式采集/原始录制常见故障快速判定来自 common-drift-and-breaks.md 与 RUNBOOK.md 的判定树401/认证失败 → 凭证对错误或 JWT 过期若返回{code:124,message:Invalid Access token}是真实的上游认证失败而非传输问题。Fast Mode 返回 schema 错误 → 请求体或 config 字段错误。Fast Mode 返回413 Request Entity Too Large且应用日志无记录 → 反向代理限制如 nginx 需调高client_max_body_size不是 Scribe 的问题。前端504但后端日志随后显示200或 nginx 访问日志出现499而应用日志出现zoom_request_finished status: 200→ 浏览器/边缘超时竞态转写实际成功应按 request ID 轮询而非直接判失败。批量任务排队但永不完成 → 存储认证 / URI / Webhook 问题检查/jobs/{jobId}与/jobs/{jobId}/files。部分文件缺转写 → 先查/jobs/{jobId}/files定位单个文件再决定是否重提。浏览器麦克风第 1 块正常、后续块为空 →MediaRecorder.start(timeslice)后期分块可能是不含容器头的残缺 WebM/Opus 簇应按块轮换重建 recorderstart → 录制一个块 → stop → 上传 → 重新 start将其视为文件容器问题而非语言模型问题。版本漂移监控要点由于上游 API 处于演进中仓库技能文档versioning-and-drift.md建议在以下信号出现时复审集成代码api-hub/ai-services/methods/endpoints.json发生变化AI Services 文档再次更名 Build/API 凭证quickstart 示例改变 Webhook 或上传模式需要重点关注的漂移点S3 之外的存储供应商、config字段名、Webhook 签名头约定、响应 summary/files 结构、语言与输出格式支持范围。仓库中 samples-validation.md 还记录了官方 quickstart 验证结论Node/Express 代理是有效实现模型Fast Mode 可在服务端以 multipart 上传代理尽管文档展示 JSON 示例批量模式通常将 AWS 凭证注入请求体quickstart 假设 Node24比多数部署环境更严格复制前需核对运行时生产流水线更推荐预签名 URL 或短时效 STS 凭证而非常驻环境注入的 AWS 凭证。【免费下载链接】knowledge-work-pluginsOpen source repository of plugins primarily intended for knowledge workers to use in Claude Cowork项目地址: https://gitcode.com/GitHub_Trending/kn/knowledge-work-plugins创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表