JavaScript SDK 参考文档
JavaScript SDK 参考文档
Speech Engine JavaScript SDK 的类、方法和事件。
本页介绍 Speech Engine JavaScript SDK(@elevenlabs/elevenlabs-js)的公共 API。
获取 Speech Engine 资源
通过引擎 ID 获取 SpeechEngineResource。返回的对象提供了挂载到现有 HTTP 服务器、启动独立服务器或创建单个会话的方法。
SpeechEngineResource
属性
attach
挂载到现有 Node.js HTTP 服务器,并开始在指定路径接受 Speech Engine 连接。如果你已有 HTTP 服务器(例如 Express、Fastify 或普通的 http.createServer()),并想在现有路由之外添加 Speech Engine,请使用此方法。
自动处理 WebSocket 升级、路径路由和请求验证。返回 SpeechEngineAttachment,其 close() 方法会停止接受连接,不会影响 HTTP 服务器。
客户端也提供快捷方法,可将 get() 和 attach() 合并为一次调用:
verifyRequest
验证传入请求是否来自 ElevenLabs Speech Engine API。检查 X-Elevenlabs-Speech-Engine-Authorization 标头中是否包含使用 API 密钥 SHA-256 哈希签名的有效 JWT。
仅在自行管理 WebSocket 升级时需要使用。使用 attach() 或 SpeechEngineServer 时,会自动完成验证。
返回值: Promise<boolean> — 请求有效时为 true。
createSession
将已接受的 WebSocket 包装为 SpeechEngineSession。适用于自定义服务器集成或手动处理 WebSocket。
返回值: SpeechEngineSession
SpeechEngineServer
独立的 WebSocket 服务器,无需现有 HTTP 服务器即可接受 Speech Engine 连接。如果服务器仅用于处理 Speech Engine 连接,请使用此服务器。
如需与现有 HTTP 服务器(例如 Express、Fastify)集成,请改用 engine.attach()。
构造函数选项
start
在配置的端口启动独立 WebSocket 服务器。除非设置了 disableAuth: true,否则会使用配置的 API 密钥通过 ElevenLabs API 验证每个传入连接。
stop
停止 WebSocket 服务器并关闭所有活跃连接。
handleConnection
使用服务器已连接的回调,将现有 WebSocket 包装为 SpeechEngineSession。如果你自行管理 WebSocket 服务器并希望包装单个连接,请使用此方法。
返回值: SpeechEngineSession
SpeechEngineSession
包装单个 WebSocket 连接。每个连接代表一段对话。会话会针对转录和生命周期变更触发事件,并提供将 LLM 响应发回的方法。
收到新的转录时,之前转录处理程序的中止信号会触发,从而中断正在进行的 LLM 调用。
属性
on
为事件注册处理程序。返回会话以便链式调用。
off
移除之前注册的处理程序。
once
注册仅触发一次后自动移除的处理程序。
sendResponse
将 LLM 响应发回 Speech Engine API 进行文本转语音合成。必须在 onTranscript 处理程序内调用。在处理程序外调用会发出警告并直接返回,不会发送响应。
SDK 会自动检测并从以下 LLM 流格式中提取文本:
close
关闭会话及底层 WebSocket 连接。
SpeechEngineAttachment
由 engine.attach() 返回。用于控制 WebSocket 服务器的生命周期,不会影响其挂载的 HTTP 服务器。
close
停止接受新连接,从 HTTP 服务器移除升级监听器,并关闭底层 WebSocket 服务器。
回调
传递给 attach() 或 SpeechEngineServer 的回调对象。所有回调均为可选。
当用户在响应过程中中断时,onTranscript 处理程序接收的 AbortSignal 会触发。
禁用身份验证
默认情况下,attach() 和 SpeechEngineServer 都会验证每个传入连接的 X-Elevenlabs-Speech-Engine-Authorization 标头。如果服务器位于基础设施层之后,且该层已将传入流量限制为仅来自 ElevenLabs(通常是限定为 ElevenLabs 出站 IP 范围 的 IP 允许列表),可通过传入 disableAuth: true 跳过 JWT 验证:
禁用身份验证后,服务器会接受所有能够访问它的客户端,并在启动时输出 console.warn。
仅当服务器前方配置了 IP 允许列表、自定义标头值或等效的
网络级限制时,才可使用 disableAuth: true。否则,互联网上的任何人都可以打开
会话并消耗计算资源及下游 LLM 配额。
事件
如果直接使用 session.on() 而非回调,以下是事件名称及其处理程序签名。
提供事件名称常量以支持类型安全的使用方式:
TranscriptMessage
对话历史中的一条消息。每轮对话都会将完整转录传递给 onTranscript。
线协议
以下是通过 WebSocket 连接交换的 JSON 消息,供参考。SDK 会自动处理序列化和反序列化。