> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Vercel AI SDK

> **Note**
>
> **操作指南** · 假设你已完成 [Speech to Text 快速入门](/docs/zh/eleven-api/guides/cookbooks/speech-to-text)，并已设置 Vercel 项目。

# ElevenLabs Provider

[ElevenLabs provider](https://ai-sdk.dev/providers/ai-sdk-providers/elevenlabs) 支持 [ElevenLabs 转录 API](https://elevenlabs.io/speech-to-text)。

## 设置

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

```npm
npm install @ai-sdk/elevenlabs
```

## Provider 实例

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

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

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

```ts
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](https://developer.mozilla.org/en-US/docs/Web/API/fetch) 实现。
  默认为全局 `fetch` 函数。
  可将其用作中间件来拦截请求，
  也可用于提供自定义 fetch 实现，例如进行测试。

## 转录模型

你可以使用 `.transcription()` 工厂方法创建调用 [ElevenLabs 转录 API](https://elevenlabs.io/speech-to-text)
的模型。

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

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

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

```ts {7}
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。
  延迟将低于传入编码波形。

## 后续步骤

#### [服务端流式传输](/docs/zh/eleven-api/guides/how-to/speech-to-text/realtime/server-side-streaming)

使用基于 WebSocket 的流式 API 实时转录音频。

#### [API 参考文档](/docs/zh/api-reference/speech-to-text)

完整的 Speech to Text API 参考文档和参数说明。