About the model
Nemotron 3.5 ASR is NVIDIA’s 600M-parameter model for streaming speech recognition. It turns incoming speech into punctuated text while the speaker is still talking, using one multilingual checkpoint.
Its cache-aware FastConformer encoder reuses earlier context instead of repeatedly processing overlapping audio, and an RNN-T decoder writes the transcript. On .wave, text arrives while the speaker is still talking.
Name one, or let the model detect it.
PCM16 at 24 or 16 kHz, or 8 kHz telephony audio.
One multilingual checkpoint.
Key capabilities
Native streaming
Transcribe new audio as it arrives, retaining the context from earlier audio.
Multilingual recognition
Name the language of the audio, or let the model detect it automatically.
Formatted transcripts
Produce punctuation and capitalization as part of the model’s output.
Timed segments
Each completed segment carries its start and end time in the audio.
API usage
Set DOTWAVE_API_KEY on your server. With the OpenAI SDK, set its base URL to https://api.dotwave.ai/v1 and open a transcription session. With the Deepgram plugin for LiveKit Agents or Pipecat, point its base URL at .wave, as in the third example. The Realtime API and Deepgram-compatible API docs cover audio formats, languages and errors.
- Model ID
nemotron-asr-streaming- Endpoint
wss://api.dotwave.ai/v1/realtime- Deepgram plugins
wss://api.dotwave.ai/v1/listen
import asyncio, os
from openai import AsyncOpenAI
client = AsyncOpenAI(
api_key=os.environ["DOTWAVE_API_KEY"],
base_url="https://api.dotwave.ai/v1",
)
async def main():
async with client.realtime.connect(model="nemotron-asr-streaming") as conn:
await conn.session.update(session={
"type": "transcription",
"audio": {"input": {
"format": {"type": "audio/pcm", "rate": 24000},
"transcription": {
"model": "nemotron-asr-streaming",
"language": "pt-BR", # leave it out to detect the language
},
}},
})
# Stream 24 kHz mono PCM16 as it is captured, with
# conn.input_audio_buffer.append(audio=base64_chunk).
async for event in conn:
if event.type == "conversation.item.input_audio_transcription.delta":
print(event.delta, end="", flush=True)
elif event.type == "conversation.item.input_audio_transcription.completed":
print()
asyncio.run(main())import OpenAI from 'openai';
import { OpenAIRealtimeWS } from 'openai/realtime/ws';
const client = new OpenAI({
apiKey: process.env.DOTWAVE_API_KEY,
baseURL: 'https://api.dotwave.ai/v1',
});
const rt = new OpenAIRealtimeWS({ model: 'nemotron-asr-streaming' }, client);
rt.socket.on('open', () => {
rt.send({
type: 'session.update',
session: {
type: 'transcription',
audio: {
input: {
format: { type: 'audio/pcm', rate: 24000 },
transcription: {
model: 'nemotron-asr-streaming',
language: 'pt-BR', // leave it out to detect the language
},
},
},
},
});
// Stream 24 kHz mono PCM16 as it is captured, with
// rt.send({ type: 'input_audio_buffer.append', audio: base64Chunk }).
});
rt.on('conversation.item.input_audio_transcription.delta', event => {
process.stdout.write(event.delta);
});
rt.on('conversation.item.input_audio_transcription.completed', () => {
process.stdout.write('\n');
});
rt.on('error', error => console.error(error.message));import os
# LiveKit Agents
from livekit.plugins import deepgram
stt = deepgram.STT(
api_key=os.environ["DOTWAVE_API_KEY"],
base_url="https://api.dotwave.ai/v1/listen",
model="nemotron-asr-streaming",
language="pt-BR",
)
# Pipecat
from pipecat.services.deepgram.stt import DeepgramSTTService
from pipecat.transcriptions.language import Language
stt = DeepgramSTTService(
api_key=os.environ["DOTWAVE_API_KEY"],
base_url="api.dotwave.ai",
settings=DeepgramSTTService.Settings(
model="nemotron-asr-streaming",
language=Language.PT_BR,
),
)Pricing and limits
Billed from the first audio until the session closes.
Included at sign-up. No card required.
Stream audio at the speed of speech. A session closes after 30 seconds without audio and runs for up to 24 hours.
Public beta: we publish no accuracy figures per language yet, so test with audio like yours before you rely on it.
Data handling: audio and transcripts are not retained.
Applications & use cases
Multilingual voice agents
Provide live transcripts for customer support, in-car assistants and retail kiosks serving speakers of different languages.
Healthcare & clinical documentation
Turn medical dictation into text for clinical notes and documentation. Private deployment can support workflows that need to keep audio within a controlled environment.
Live captioning & transcription
Add captions to meetings, events and broadcasts as people speak. Make live conversations more accessible and easier to follow.
Languages
Set language to one of these tags, for example pt-BR for Portuguese as spoken in Brazil. Leave it out and the model detects the language automatically; when you know the language, naming it is more accurate.
- Arabic
ar-AR Bulgarian
bg-BGChinese, Mandarin Simplified
zh-CN
Croatian hr-HRCzech
cs-CZDanish
da-DKDutch
nl-NLEnglish, United Kingdom
en-GBEnglish, United States
en-USEstonian
et-EEFinnish
fi-FIFrench, Canada
fr-CAFrench, France
fr-FRGerman
de-DEHindi
hi-INHungarian
hu-HUItalian
it-ITJapanese
ja-JPKorean
ko-KRNorwegian Bokmål
nb-NOPolish
pl-PLPortuguese, Brazil
pt-BRPortuguese, Portugal
pt-PTRomanian
ro-RORussian
ru-RUSlovak
sk-SK
Spanish, Spain es-ESSpanish, United States
es-USSwedish
sv-SETurkish
tr-TRUkrainian
uk-UAVietnamese
vi-VN
Related models
How .wave keeps thousands of streams on time: read the case study