Vercel AI SDK

Usa el proveedor de ElevenLabs en Vercel AI SDK para transcribir voz de archivos de audio y vídeo.

Guía práctica · Da por hecho que has completado la guía de inicio rápido de Voz a Texto y que tienes un proyecto de Vercel configurado.

Proveedor de ElevenLabs

El proveedor de ElevenLabs ofrece compatibilidad con la API de transcripción de ElevenLabs.

Configuración

El proveedor de ElevenLabs está disponible en el módulo @ai-sdk/elevenlabs. Puedes instalarlo con npm:

npm install @ai-sdk/elevenlabs

Instancia del proveedor

Puedes importar la instancia predeterminada del proveedor, elevenlabs, desde @ai-sdk/elevenlabs:

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

Si necesitas una configuración personalizada, puedes importar createElevenLabs desde @ai-sdk/elevenlabs y crear una instancia del proveedor con tus ajustes:

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

Puedes usar los siguientes ajustes opcionales para personalizar la instancia del proveedor de ElevenLabs:

  • apiKey string

    Clave de API que se envía mediante la cabecera Authorization. De forma predeterminada, usa la variable de entorno ELEVENLABS_API_KEY.

  • headers Record<string,string>

    Cabeceras personalizadas que se incluirán en las solicitudes.

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

    Implementación personalizada de fetch. De forma predeterminada, usa la función global fetch. Puedes usarla como middleware para interceptar solicitudes o para proporcionar una implementación personalizada de fetch, por ejemplo, para pruebas.

Modelos de transcripción

Puedes crear modelos que llamen a la API de transcripción de ElevenLabs mediante el método de fábrica .transcription().

El primer argumento es el ID del modelo, por ejemplo, scribe_v2.

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

También puedes pasar opciones adicionales específicas del proveedor mediante el argumento providerOptions. Por ejemplo, indicar el idioma de entrada en formato ISO-639-1 (por ejemplo, en) puede mejorar a veces el rendimiento de la transcripción si se conoce de antemano.

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" } },
});

Están disponibles las siguientes opciones del proveedor:

  • languageCode string

    Un código de idioma ISO-639-1 o ISO-639-3 correspondiente al idioma del archivo de audio. Puede mejorar a veces el rendimiento de la transcripción si se conoce de antemano. De forma predeterminada, es null, en cuyo caso el idioma se predice automáticamente.

  • tagAudioEvents boolean

    Indica si se deben etiquetar eventos de audio como (risas), (pasos), etc. en la transcripción. De forma predeterminada, es true.

  • numSpeakers integer

    El número máximo de hablantes que intervienen en el archivo subido. Puede ayudar a predecir quién habla en cada momento. El número máximo de hablantes que se puede predecir es 32. De forma predeterminada, es null, en cuyo caso el número de hablantes se establece en el valor máximo compatible con el modelo.

  • timestampsGranularity enum

    La granularidad de las marcas de tiempo en la transcripción. De forma predeterminada, es 'word'. Valores permitidos: 'none', 'word', 'character'.

  • diarize boolean

    Indica si se debe anotar qué hablante está hablando en ese momento en el archivo subido. De forma predeterminada, es true.

  • fileFormat enum

    El formato del audio de entrada. De forma predeterminada, es 'other'. Valores permitidos: 'pcm_s16le_16', 'other'. Para 'pcm_s16le_16', el audio de entrada debe ser PCM de 16 bits con una frecuencia de muestreo de 16 kHz, un solo canal (mono) y orden de bytes little-endian. La latencia será menor que al pasar una forma de onda codificada.

Próximos pasos