异步语音转文本
本指南介绍如何使用 Webhook,在转写任务完成时接收异步通知。
操作指南 · 假设你已完成 语音转文本 快速入门。
概述
Webhook 可在语音转文本任务完成时自动发送通知,无需持续轮询 API 获取状态更新。这对于耗时较长的转写任务或处理大量音频文件尤其有用。
转写完成后,ElevenLabs 会向指定的 Webhook URL 发送 POST 请求,其中包含转写结果、转录文本、语言检测结果及其他元数据。
使用 Webhook
本指南假设你已设置 API 密钥和 SDK。如尚未完成,请先完成 快速入门。
创建或编辑 Webhook
在 ElevenLabs 控制台中,前往 开发者 > Webhook。 点击 创建 Webhook,或编辑现有 Webhook。

按以下方式配置 Webhook:
- 名称:Webhook 的描述性名称
- 回调 URL:可公开访问的 HTTPS 端点
- Webhook 身份验证方式:可选择
HMAC或OAuth。客户端负责实现验证机制。ElevenLabs 会发送可用于验证的请求头,但不会强制要求验证。 - 事件:选择 转写完成。
Webhook 载荷
转写完成后,Webhook 端点会收到包含转写和 Webhook 数据的 POST 请求:
有关响应结构的详细信息,请参阅语音转文本 API 参考文档。
如果请求包含 transcript_edit 指令,transcription 对象还会包含含有编辑后文本的 edited_transcript 字段。
如果转写失败,端点会改为收到 webhook_error 事件。该事件不含 data 对象:其中包含顶层 request_id(与请求被接受时返回的 ID 相同)、error_message 以及请求的 webhook_metadata。
实现 Webhook 端点
以下示例展示如何实现 Webhook 端点来处理传入通知:
安全注意事项
签名验证
务必验证 Webhook 签名,确保请求来自 ElevenLabs。
HTTPS 要求
Webhook URL 必须使用 HTTPS,以确保转写数据安全传输。
速率限制
在 Webhook 端点实施速率限制,防止滥用:
失败响应
返回 2xx 状态码以确认收到 Webhook。
默认情况下,语音转文本 Webhook 只投递一次。每个非 2xx 响应都会视为投递失败,反复失败会自动禁用 Webhook。
如果为 Webhook 启用重试,失败的投递(5xx、408、429 或连接错误)最多会额外重试 5 次,分别在上次尝试后的约 30 秒、2 分钟、8 分钟、30 分钟和 30 分钟进行。其他 4xx 响应不会重试。同一事件的每次尝试都会携带相同的 ElevenLabs-Webhook-Delivery-Id 请求头,因此处理程序可以忽略重复项。
启用重试后,enable_logging 设为 false(零保留模式)的请求最多会快速重试 2 次,分别在上次尝试后 5 秒和 30 秒进行。转录文本绝不会被存储。
如果投递仍然失败,请使用请求被接受时返回的 transcription_id,通过获取转录文本获取结果。对于 enable_logging 设为 false 的请求,不会存储转录文本。
测试 Webhook
本地开发
进行本地测试时,可使用 ngrok 等工具公开本地服务器:
在开发期间,将提供的 HTTPS URL 用作 Webhook 端点。
Webhook 测试
你可以通过发起转写请求并监控端点来测试 Webhook 实现: