Soniox Provider
Soniox provider integrates Soniox transcription models with the Vercel AI SDK. For more information, see the Soniox Documentation.
Installation
pnpm add @soniox/vercel-ai-sdk-provider
Authentication
Set SONIOX_API_KEY in your environment or pass apiKey when creating the provider.
Get your API key from the Soniox Console.
Example
import { soniox } from '@soniox/vercel-ai-sdk-provider';import { experimental_transcribe as transcribe } from 'ai';
const { text } = await transcribe({ model: soniox.transcription('stt-async-v3'), audio: new URL('https://soniox.com/media/examples/coffee_shop.mp3'),});Provider options
Use createSoniox to customize the provider instance:
import { createSoniox } from '@soniox/vercel-ai-sdk-provider';
const soniox = createSoniox({ apiKey: process.env.SONIOX_API_KEY, apiBaseUrl: 'https://api.soniox.com',});Options:
apiKey: overrideSONIOX_API_KEY.apiBaseUrl: custom API base URL. See list of regional API endpoints here.headers: additional request headers.fetch: custom fetch implementation.pollingIntervalMs: transcription polling interval in milliseconds. Default is 1000ms.
Transcription options
Per-request options are passed via providerOptions:
const { text } = await transcribe({ model: soniox.transcription('stt-async-v3'), audio, providerOptions: { soniox: { languageHints: ['en', 'es'], enableLanguageIdentification: true, enableSpeakerDiarization: true, context: { terms: ['Soniox', 'Vercel'], }, }, },});Available options:
languageHints- Array of ISO language codes to bias recognitionlanguageHintsStrict- When true, rely more heavily on language hints (note: not supported by all models)enableLanguageIdentification- Automatically detect spoken languageenableSpeakerDiarization- Identify and separate different speakerscontext- Additional context to improve accuracyclientReferenceId- Optional client-defined reference IDwebhookUrl- Webhook URL for transcription completion notificationswebhookAuthHeaderName- Webhook authentication header namewebhookAuthHeaderValue- Webhook authentication header valuetranslation- Translation configuration
Check the Soniox API reference for more details.
Language hints
Soniox automatically detects and transcribes speech in 60+ languages. When you know which languages are likely to appear in your audio, provide languageHints to improve accuracy by biasing recognition toward those languages.
Language hints do not restrict recognition — they only bias the model toward the specified languages, while still allowing other languages to be detected if present.
const { text } = await transcribe({ model: soniox.transcription('stt-async-v3'), audio, providerOptions: { soniox: { languageHints: ['en', 'es'], // ISO language codes }, },});For more details, see the Soniox language hints documentation.
Context
Provide custom context to improve transcription and translation accuracy. Context helps the model understand your domain, recognize important terms, and apply custom vocabulary.
The context object supports four optional sections:
const { text } = await transcribe({ model: soniox.transcription('stt-async-v3'), audio, providerOptions: { soniox: { context: { // Structured key-value information (domain, topic, intent, etc.) general: [ { key: 'domain', value: 'Healthcare' }, { key: 'topic', value: 'Diabetes management consultation' }, { key: 'doctor', value: 'Dr. Martha Smith' }, ], // Longer free-form background text or related documents text: 'The patient has a history of...', // Domain-specific or uncommon words terms: ['Celebrex', 'Zyrtec', 'Xanax'], // Custom translations for ambiguous terms translationTerms: [ { source: 'Mr. Smith', target: 'Sr. Smith' }, { source: 'MRI', target: 'RM' }, ], }, }, },});For more details, see the Soniox context documentation.