# MAI-Transcribe-2-Streaming

MAI-Transcribe-2-Streaming is a low-latency, "speech in, text out" realtime transcription API. Audio can be sent to the model as a continuous stream over a WebSocket connection and transcripts are returned incrementally as the speaker talks, with no need to wait for the utterance to finish. Intermediate results (aka Partials) update the current transcription; final results confirm a segment.

- **Model ID:** `microsoft/mai-transcribe-2-streaming`
- **Type:** transcription
- **Providers:** azure
- **Context window:** Not applicable
- **Maximum output tokens:** 0
- **Pricing:** See the provider details below
- **Canonical page:** https://vercel.com/ai-gateway/models/mai-transcribe-2-streaming

## Supported parameters

Detailed capability metadata has not been reported for this model.

## Example

```ts
import { experimental_streamTranscribe as streamTranscribe } from 'ai';
import { createGateway, gateway } from '@ai-sdk/gateway';
import { readFile } from 'node:fs/promises';

const modelId = 'microsoft/mai-transcribe-2-streaming';

// Mint this on your server, then send only the short-lived token to the client.
const { token } = await gateway.experimental_transcription.getToken({
  model: modelId,
});
const clientGateway = createGateway({ apiKey: token });

// Raw 24 kHz, 16-bit signed little-endian mono PCM audio.
const bytes = await readFile('audio.pcm');
const audio = new ReadableStream<Uint8Array>({
  start(controller) {
    controller.enqueue(new Uint8Array(bytes));
    controller.close();
  },
});

const result = streamTranscribe({
  model: clientGateway.transcription(modelId),
  audio,
  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('\nFinal:', await result.text);
```

## Links

- [Model page](https://vercel.com/ai-gateway/models/mai-transcribe-2-streaming)
- [AI Gateway documentation](https://vercel.com/docs/ai-gateway)
