Pulse STT: European streaming Beta, redaction English/Hindi-only
European streaming languages tagged Beta. The 7 European codes on the streaming endpoint (de, es, ru, it, fr, nl, pt) now carry a Beta badge on the Pulse model card.
Pre-recorded language list trimmed. Removed da, lv, et, mt from the batch language table (not offered on batch). New counts: 22 pre-recorded, 31 total, 21 streaming unchanged. multi-eu aggregator now covers 17 European codes and is pre-recorded only.
Pulse STT keyword boosting: max 10k, softer intensifiers, cased matching
Documentation refresh for the streaming keywords query parameter.
Session limit raised to 10,000 keywords (from 100).
Intensifier guidance rewritten. Default is 1.0. Recommended tuning range is 1 to 3. Values above 5 push the model into hallucination and repetition; keep keywords at 1 and only raise a specific one if it is still being missed.
Pulse STT documentation cleanup, multi-indic restored, redact language scope
Small STT docs corrections surfaced by customer reports and post-#251 audit.
multi-indic restored on pre-recorded. Documented as a pre-recorded aggregator (India region only) covering en, hi, gu, mr, bn, or. Streaming still uses north_indic for the same coverage; multi-indic is not supported on the streaming endpoint. Aligns the docs with what the platform actually accepts on POST /waves/v1/stt/.
Pulse STT endpointing now on by default
Pulse STT streaming finalizes each turn on trailing silence by default. When the speaker stops, the server emits is_final: true promptly instead of waiting for the model’s internal finalization cadence. Transcript accuracy is unchanged.
To restore the previous finalization behavior, set endpointing=false on the WebSocket URL:
Pulse STT Beta tag on South Indian streaming languages
Tamil, Telugu, Kannada, and Malayalam (plus the multi-south-indic aggregator) are now marked Beta on the Pulse model card and the STT overview. Accuracy improvements are ongoing. These codes remain India-region only (wss://api.smallest.ai/waves/v1/stt/live); the US endpoint continues to reject them with LANGUAGE_NOT_ENABLED_IN_REGION.
Also cleaned up stale multi (bare) language references in the pulse-stt-ws-overrides.yml enum, the pulse-stt API reference, and the voice-cloning-openapi.yaml language example. multi was replaced by the current multi-eu / multi-asian / north_indic / multi-south-indic aggregators when the streaming enum was revised. Pre-recorded aggregators (multi-eu, multi-asian) are unchanged.
Pulse STT — per-word `confidence` documented in transcription output
The per-word confidence score is now documented across the Speech-to-Text API reference. These fields were already returned by the API — this makes them explicit in the reference.
- Sync REST (
POST /waves/v1/stt): thewords[]entries (returned whenword_timestamps=true) carryword,start,end, and aconfidencescore from 0.0 to 1.0. Theconfidencefield is now described in theWordschema, and theword_timestampsparameter documents the full per-word shape it surfaces. - Streaming (
WSS /waves/v1/stt/live): thewords[]schema now listsconfidence, plusspeaker_confidence(returned alongsidespeakerwhendiarize=true).
Pulse STT — streaming now supports ta / te / kn / ml + `multi-south-indic` aggregator (India region)
The Pulse streaming Speech-to-Text API now supports four South Indian languages: Tamil (ta), Telugu (te), Kannada (kn), and Malayalam (ml). The multi-south-indic aggregator is also available for unknown South Indian audio — it auto-detects across the same four-language set plus English code-switching.
These five language values are served from the India region only — connect to wss://api.smallest.ai/waves/v1/stt/live?model=pulse (or the legacy wss://api.smallest.ai/waves/v1/pulse/get_text). Requesting any of them on the US host (wss://api.us.smallest.ai/...) returns an error:
Pulse STT — streaming now supports ja / yue / zh / ko + `multi-asian` aggregator (US region)
The Pulse streaming Speech-to-Text API now supports four Asian languages: Japanese (ja), Cantonese (yue), Mandarin (zh), and Korean (ko). The multi-asian aggregator is also available for unknown East Asian audio — it auto-detects across the same four-language set.
These five language values are served from the US region only — connect to wss://api.us.smallest.ai/waves/v1/stt/live?model=pulse (or the legacy wss://api.us.smallest.ai/waves/v1/pulse/get_text) instead of the default wss://api.smallest.ai/... host. Requesting any of them on the default (ap-south-1) host closes the connection without a transcription frame.
Streaming vs Pre-Recorded language framing across Pulse docs
The Pulse STT supported-languages story is now consistent end-to-end. Each surface labels its mode and points readers at the right neighbour:
- Overview page (
/models/documentation/speech-to-text-pulse/overview): split the single Supported Languages table into two — Streaming (Real-Time, WebSocket) and Non-Streaming (Pre-Recorded, HTTP). Same 39-language set in both, matching the Pulse model card. - API Reference — Pre-Recorded (HTTP):
languagequery param now declares an explicitenumof 39 single-language codes (en,hi,es, …) plusmulti-eu/multi-indicaggregators. Description labels the endpoint as Pre-Recorded and points at the streaming WebSocket endpoint for the live mode. - API Reference — Streaming (WebSocket): same enum and labelling, applied via the AsyncAPI override so it renders correctly. The page-top Note labels it as Streaming and points at the HTTP endpoint for pre-recorded.
Pulse STT WebSocket — `finalize` operation restored on the API reference
The Pulse STT WebSocket API reference now correctly renders both control-message operations on docs.smallest.ai:
sendFinalize— payload{"type":"finalize"}— flushes the current audio buffer and emits anis_final: truetranscript while keeping the session open. Useful for per-turn finalization in agentic pipelines.sendCloseStream— payload{"type":"close_stream"}— flushes any buffered audio, emits the terminalis_final: true+is_last: truetranscript, then closes the session.
STT WebSocket — `sendFinalize` added to unified `/stt/live` API reference + doc fixes
The unified Speech-to-Text WebSocket API reference page now documents both control messages with their correct semantics:
sendFinalize— turn-boundary signal. Flushes the current audio buffer, runs ITN, and emits oneis_final: truetranscript for that turn. The WebSocket stays open for the next user turn. Use this once per turn in any multi-turn flow.sendClose— session-end signal. Flushes remaining audio, emits the terminalis_final: true+is_last: truetranscript, then closes the WebSocket. Use this once at the end of the session.
Unified Speech-to-Text endpoint, Pulse Pro model
The Speech-to-Text API now lives at the unified path /waves/v1/stt/, mirroring the unified TTS shape. The model is selected via the ?model= query parameter. Two models are live today:
?model=pulse: multilingual (17 streaming + 26 pre-recorded languages), HTTP + WebSocket streaming.?model=pulse-pro: leaderboard-ranked English STT (5.42% ESB avg WER, tied #2 on the public Open ASR Leaderboard). HTTP only.
Pulse STT — full feature parity over HTTP and WebSocket
The full Pulse STT feature set is now available on both HTTP (pre-recorded) and WebSocket (realtime) modes with consistent flag names and response shapes.
What this means in practice:
- Same query parameters and request body fields work the same way on
POST /waves/v1/pulse/get_text(pre-recorded) andwss://api.smallest.ai/waves/v1/pulse/get_text(realtime). - Speaker diarization, word timestamps, sentence-level utterances, emotion detection, gender detection, keyword boosting, redaction, punctuation, and inverse text normalisation all behave identically across modes.
- The full per-feature documentation is on the Features pages.
Pulse STT — `numerals` query parameter removed from the WS API reference
The legacy numerals query parameter on the Pulse STT WebSocket has been removed from the API reference, navigation, and feature pages. The 2026-05-06 deprecation note on this changelog feed flagged this for two weeks; today’s clean-up drops it from the documented surface area.
What changed in the docs
numeralsremoved from the Pulse WS AsyncAPI spec + v4 override.- The “Numeric formatting” feature page and its nav entry are gone.
- The “Convert numerals” cards on
realtime/features.mdxandpre-recorded/features.mdxare gone. - The ITN feature page no longer lists
numeralsin its precedence table.
Pulse STT — `encoding` query param now documented on the pre-recorded REST endpoint
The pre-recorded REST endpoint (POST /waves/v1/pulse/get_text) now lists the encoding query parameter alongside the streaming WebSocket. Same 6-value enum: linear16, linear32, alaw, mulaw, opus, ogg_opus. Default is linear16.
When omitted, the server falls back to detecting the format from the file’s container header (works for .wav, .mp3, .flac, .ogg, .m4a, .webm).
Pulse STT — `age_detection` removed from the pre-recorded HTTP API
The age_detection query parameter and the corresponding top-level age field in the response have been removed from the Pulse STT pre-recorded HTTP API (POST /waves/v1/pulse/get_text). Gender detection (gender_detection / gender) and emotion detection (emotion_detection / emotions) are unaffected.
Specs and reference docs updated:
Pulse STT — recommend `itn_normalize` over `numerals` for new integrations
The numerals query parameter on the Pulse STT WebSocket API still works and continues to behave as documented. For new integrations we now recommend itn_normalize=true instead — it covers digits as well as dates, currencies, phone numbers, and other spoken-form entities, and gives more consistent results across languages.
Existing code that uses numerals does not need to change.
Pre-rename Pulse STT WebSocket spec removed from SDK generation
The pre-rename AsyncAPI spec for wss://api.smallest.ai/waves/v1/asr has been removed. This is the final piece of the legacy STT WebSocket cleanup. Pulse STT (wss://api.smallest.ai/waves/v1/pulse/get_text) has been the supported real-time STT surface throughout; the older channel was already unlinked from the v4 API reference navigation and was kept only for historical SDK generation.
STT Performance page rebuilt against the FLEURS, ESB, and WildASR sources; speaker-cap language scrubbed from the Pulse model card
The Pulse STT Performance page (/models/documentation/speech-to-text-pulse/benchmarks/performance) now reflects the canonical benchmark comparison across four datasets:
- FLEURS — pre-recorded (29 languages)
- FLEURS — streaming (8 languages)
- ESB — streaming (9 English domains)
- WildASR — streaming (8 robustness conditions)
- Internal English perturbation suite (12 categories)
Legacy Pulse STT WebSocket reference removed from docs
The legacy WebSocket reference at wss://api.smallest.ai/waves/v1/lightning/get_text has been removed from the docs. Pulse STT (wss://api.smallest.ai/waves/v1/pulse/get_text) is the supported real-time STT surface; the legacy endpoint was already unlinked from the v4 API reference navigation and was only kept for historical reference.
Files removed:

