UNPKG

ai

Version:

AI SDK by Vercel - build apps like ChatGPT, Claude, Gemini, and more with a single interface for any model using the Vercel AI Gateway or go direct to OpenAI, Anthropic, Google, or any other model provider.

150 lines (134 loc) 4.37 kB
--- title: experimental_streamTranscribe description: API Reference for experimental_streamTranscribe. --- # `experimental_streamTranscribe()` <Note type="warning"> `experimental_streamTranscribe` is an experimental feature. </Note> Streams a transcript from live raw audio using a transcription model with streaming support. ```ts import { experimental_streamTranscribe as streamTranscribe } from 'ai'; import { openai } from '@ai-sdk/openai'; const result = streamTranscribe({ model: openai.transcription('gpt-realtime-whisper'), audio: audioStream, // ReadableStream<Uint8Array | string> inputAudioFormat: { type: 'audio/pcm', rate: 24000 }, }); for await (const part of result.fullStream) { if (part.type === 'transcript-delta') { process.stdout.write(part.delta); } } console.log(await result.text); ``` ## Import <Snippet text={`import { experimental_streamTranscribe as streamTranscribe } from "ai"`} prompt={false} /> ## API Signature ### Parameters <PropertiesTable content={[ { name: 'model', type: 'TranscriptionModelV4', description: 'The transcription model to use. The model must support streaming (`doStream`). String model IDs resolve through the global provider (AI Gateway by default), which does not support streaming transcription yet.', }, { name: 'audio', type: 'ReadableStream<Uint8Array | string>', description: 'Raw audio chunks to transcribe. `Uint8Array` chunks contain raw audio bytes; `string` chunks contain base64-encoded raw audio bytes.', }, { name: 'inputAudioFormat', type: '{ type: string; rate?: number }', description: 'The input audio format for the raw audio chunks, e.g. `{ type: "audio/pcm", rate: 24000 }`. Supported types are provider-specific (e.g. `audio/pcm`, `audio/pcmu`, `audio/pcma`).', }, { name: 'providerOptions', type: 'Record<string, JSONObject>', isOptional: true, description: 'Additional provider-specific options.', }, { name: 'abortSignal', type: 'AbortSignal', isOptional: true, description: 'An optional abort signal to cancel the call.', }, { name: 'headers', type: 'Record<string, string>', isOptional: true, description: 'Additional HTTP/WebSocket headers, if supported by the provider.', }, { name: 'includeRawChunks', type: 'boolean', isOptional: true, description: 'When true, the provider includes raw provider chunks in the stream as `raw` parts.', }, ]} /> ### Returns <PropertiesTable content={[ { name: 'fullStream', type: 'AsyncIterableStream<TranscriptionStreamPart>', description: 'A stream of transcription parts: `transcript-delta`, `transcript-partial`, `transcript-final`, `raw`, and `error`.', }, { name: 'text', type: 'Promise<string>', description: 'The complete transcribed text from the audio input.', }, { name: 'segments', type: 'Promise<Array<{ text: string; startSecond: number; endSecond: number }>>', description: 'Final transcript segments with timing information, if available.', }, { name: 'language', type: 'Promise<string | undefined>', description: 'The language of the transcript in ISO-639-1 format, if available.', }, { name: 'durationInSeconds', type: 'Promise<number | undefined>', description: 'The duration of the transcript in seconds, if available.', }, { name: 'warnings', type: 'Promise<Warning[]>', description: 'Warnings for the call, e.g. unsupported settings. Resolves when the provider emits the stream start.', }, { name: 'responses', type: 'Promise<Array<TranscriptionModelResponseMetadata>>', description: 'Response metadata (timestamp, model ID, headers).', }, { name: 'providerMetadata', type: 'Promise<Record<string, JSONObject>>', description: 'Additional provider-specific metadata.', }, ]} /> <Note> The result promises settle as the stream is consumed. If you stop consuming `fullStream` early (e.g. `break` out of the loop), the underlying provider connection is closed and pending result promises reject. </Note>