Vercel AI SDK

使用 Vercel AI SDK 中的 ElevenLabs Provider,从音频和视频文件转录语音。

操作指南 · 假设你已完成 Speech to Text 快速入门,并已设置 Vercel 项目。

ElevenLabs Provider

ElevenLabs provider 支持 ElevenLabs 转录 API。

设置

ElevenLabs provider 可通过 @ai-sdk/elevenlabs 模块使用。你可以通过 npm 安装:

npm install @ai-sdk/elevenlabs

Provider 实例

你可以从 @ai-sdk/elevenlabs 导入默认 provider 实例 elevenlabs:

import { elevenlabs } from "@ai-sdk/elevenlabs";

如果需要自定义设置,可以从 @ai-sdk/elevenlabs 导入 createElevenLabs,并使用自己的设置创建 provider 实例:

import { createElevenLabs } from "@ai-sdk/elevenlabs";
const elevenlabs = createElevenLabs({
// custom settings, e.g.
fetch: customFetch,
});

你可以使用以下可选设置自定义 ElevenLabs provider 实例:

  • apiKey string

    通过 Authorization 标头发送的 API 密钥。 默认为 ELEVENLABS_API_KEY 环境变量。

  • headers Record<string,string>

    要包含在请求中的自定义标头。

  • fetch (input: RequestInfo, init?: RequestInit) => Promise<Response>

    自定义 fetch 实现。 默认为全局 fetch 函数。 可将其用作中间件来拦截请求, 也可用于提供自定义 fetch 实现,例如进行测试。

转录模型

你可以使用 .transcription() 工厂方法创建调用 ElevenLabs 转录 API 的模型。

第一个参数是模型 ID,例如 scribe_v2。

const model = elevenlabs.transcription("scribe_v2");

你还可以通过 providerOptions 参数传递额外的 provider 专用选项。例如,如果预先知道输入语言,提供 ISO-639-1 格式(如 en)的语言代码有时可以提升转录性能。

import { elevenlabs } from "@ai-sdk/elevenlabs";
import { experimental_transcribe as transcribe } from "ai";
const result = await transcribe({
model: elevenlabs.transcription("scribe_v2"),
audio: new Uint8Array([1, 2, 3, 4]),
providerOptions: { elevenlabs: { languageCode: "en" } },
});

可用的 provider 选项如下:

  • languageCode string

    与音频文件语言对应的 ISO-639-1 或 ISO-639-3 语言代码。 如果预先知道,有时可以提升转录性能。 默认为 null,此时会自动预测语言。

  • tagAudioEvents boolean

    是否在转录文本中标记(笑声)、(脚步声)等音频事件。 默认为 true。

  • numSpeakers integer

    上传文件中说话人的最大数量。 有助于预测每个人的发言时间。 最多可预测 32 位说话人。 默认为 null,此时说话人数量会设为模型支持的最大值。

  • timestampsGranularity enum

    转录文本中时间戳的粒度。 默认为 'word'。 允许的值:'none'、'word'、'character'。

  • diarize boolean

    是否标注上传文件中当前正在说话的人。 默认为 true。

  • fileFormat enum

    输入音频格式。 默认为 'other'。 允许的值:'pcm_s16le_16'、'other'。 使用 'pcm_s16le_16' 时,输入音频必须为 16 kHz 采样率、单声道、小端字节序的 16 位 PCM。 延迟将低于传入编码波形。

后续步骤