From 8019157d29aec6bdb2fb3dc2acfa99bad1f68a40 Mon Sep 17 00:00:00 2001 From: liujiahua123123 Date: Tue, 20 Oct 2026 08:15:01 +0000 Subject: [PATCH 1/4] docs(asr): label transcribe-stream-1 as Preview Mark the realtime speech-to-text model with a "Preview" label wherever it is presented, following the Drama 3 preview pattern (tag: "Preview" page frontmatter plus a short Note) and the existing "(recommended)" suffix in model tables: - sidebar tag on the realtime guide, the WebSocket reference and the two realtime cookbooks, each with a preview Note near the top - "(Preview)" next to the model in the models overview, the ASR pricing table, the capabilities page and the AsyncAPI model header description - "Preview" in the five realtime llms.txt entries No renames, price or behavior changes. Co-Authored-By: Claude Opus 5.5 --- api-reference/asyncapi-asr-realtime.yml | 2 +- api-reference/endpoint/websocket/asr-realtime.mdx | 6 ++++++ developer-guide/models-pricing/models-overview.mdx | 2 +- .../models-pricing/pricing-and-rate-limits.mdx | 10 +++++----- .../sdk-guide/cookbook/realtime-transcription.mdx | 6 ++++++ .../sdk-guide/cookbook/realtime-voice-agent.mdx | 6 ++++++ features/speech-to-text/realtime.mdx | 6 ++++++ llms.txt | 10 +++++----- overview/capabilities.mdx | 2 +- 9 files changed, 37 insertions(+), 13 deletions(-) diff --git a/api-reference/asyncapi-asr-realtime.yml b/api-reference/asyncapi-asr-realtime.yml index e7f708c..8e0cddc 100644 --- a/api-reference/asyncapi-asr-realtime.yml +++ b/api-reference/asyncapi-asr-realtime.yml @@ -93,7 +93,7 @@ channels: enum: - transcribe-stream-1 default: transcribe-stream-1 - description: Realtime speech-to-text model. Optional; `transcribe-stream-1` is the default and the only realtime model. The legacy name `transcribe-1-pro-realtime` reaches the same model. + description: Realtime speech-to-text model. Optional; `transcribe-stream-1` (Preview) is the default and the only realtime model. The legacy name `transcribe-1-pro-realtime` reaches the same model. description: | Realtime speech-to-text channel. Clients stream audio and receive transcripts turn by turn, with turn detection, optional live drafts and diff --git a/api-reference/endpoint/websocket/asr-realtime.mdx b/api-reference/endpoint/websocket/asr-realtime.mdx index 4f049ee..becd17f 100644 --- a/api-reference/endpoint/websocket/asr-realtime.mdx +++ b/api-reference/endpoint/websocket/asr-realtime.mdx @@ -4,6 +4,7 @@ title: "WebSocket Realtime Speech to Text" description: "Stream audio over a WebSocket and receive transcripts turn by turn, with turn detection, live drafts and conversation context" icon: "webhook" iconType: "solid" +tag: "Preview" --- @@ -13,6 +14,11 @@ iconType: "solid" [Realtime Speech to Text](/features/speech-to-text/realtime). + + `transcribe-stream-1` is in preview. Its behavior and limits can still change + before general availability. + + ## Before you start You need a [Fish Audio API key](/developer-guide/getting-started/api-key) and a WebSocket client that can set request headers. The API key travels in a request header, so connect from your server, not from a browser; to capture audio in a browser, relay it through your server as in [Transcribe a live audio stream](/developer-guide/sdk-guide/cookbook/realtime-transcription#capture-from-a-browser-microphone). The examples on these pages use Python with `websockets` and `msgpack`, and Node.js with `ws` and `@msgpack/msgpack`. diff --git a/developer-guide/models-pricing/models-overview.mdx b/developer-guide/models-pricing/models-overview.mdx index 746a748..1ece829 100644 --- a/developer-guide/models-pricing/models-overview.mdx +++ b/developer-guide/models-pricing/models-overview.mdx @@ -77,7 +77,7 @@ We recommend `transcribe-1-pro` for transcribing recordings. Both file models us | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `transcribe-1-pro` (recommended) | Anything from short clips to long recordings (up to 60 minutes), including multi-speaker conversations. Speaker markers in `text`, structured `speaker_turns` with start and end times, speaker-count hints, and inline emotion and vocal-event cues such as `[高兴]` (happy) and `[laughter]` (optional via `tag_audio_events`). Supports optional timestamps. | | `transcribe-1` | General transcription of short recordings, with optional timestamps. Serves requests whose `model` header is missing or not an exact match. | -| `transcribe-stream-1` | Live audio streamed over the [realtime WebSocket](/features/speech-to-text/realtime), transcribed turn by turn while people speak. Turn detection for voice agents (eager end of turn, backchannel detection and background awareness), live drafts, conversation context, speaker tags and sound tags. Sessions up to 60 minutes. | +| `transcribe-stream-1` (Preview) | Live audio streamed over the [realtime WebSocket](/features/speech-to-text/realtime), transcribed turn by turn while people speak. Turn detection for voice agents (eager end of turn, backchannel detection and background awareness), live drafts, conversation context, speaker tags and sound tags. Sessions up to 60 minutes. | Pro labels speakers with inline `<|speaker:N|>` markers in `text`, alongside emotion cues. A label identifies the same speaker within one response only. When you request timestamps (`ignore_timestamps=false`), Pro also returns `speaker_turns`, a structured list of turns with each turn's speaker, text, and start and end times, unless you send `diarize=false`. Timestamped `segments` are word-level, contain spoken words without these markers, and do not expose per-segment speaker IDs. See the [multi-speaker response example](/features/speech-to-text#multi-speaker-conversations) and [Speaker turns](/features/speech-to-text#speaker-turns). diff --git a/developer-guide/models-pricing/pricing-and-rate-limits.mdx b/developer-guide/models-pricing/pricing-and-rate-limits.mdx index f12802b..3700069 100644 --- a/developer-guide/models-pricing/pricing-and-rate-limits.mdx +++ b/developer-guide/models-pricing/pricing-and-rate-limits.mdx @@ -39,11 +39,11 @@ the same price. See [Migrate from S1](/developer-guide/models-pricing/migrate-fr ### Automatic Speech Recognition (ASR) Models -| Model Name | Price (USD) | -| ------------------------------------ | -------------------- | -| `transcribe-1-pro` (recommended) | $0.36 / audio hour | -| `transcribe-1` | $0.36 / audio hour | -| `transcribe-stream-1` (Realtime ASR) | $0.36 / session hour | +| Model Name | Price (USD) | +| --------------------------------------------- | -------------------- | +| `transcribe-1-pro` (recommended) | $0.36 / audio hour | +| `transcribe-1` | $0.36 / audio hour | +| `transcribe-stream-1` (Realtime ASR, Preview) | $0.36 / session hour | For recordings, we recommend `transcribe-1-pro`, which handles multi-speaker conversations (speaker markers and speaker turns), long recordings, and inline emotion cues. Both file models cost the same and use the [Speech to Text API](/api-reference/endpoint/openapi-v1/speech-to-text). Send the `model: transcribe-1-pro` HTTP header to select Pro; a request whose `model` header is missing or not an exact match is served and billed as `transcribe-1`. See the [model comparison](/features/speech-to-text#choose-an-asr-model). diff --git a/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx b/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx index 6d4dbca..25f1350 100644 --- a/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx +++ b/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx @@ -2,10 +2,16 @@ title: "Transcribe a live audio stream in realtime" description: "Stream audio to transcribe-stream-1 over a WebSocket and print drafts, turn events and final transcripts as they arrive" icon: "tower-broadcast" +tag: "Preview" --- import Prerequisites from "/snippets/prerequisites.mdx"; + + `transcribe-stream-1` is in preview. Its behavior and limits can still change + before general availability. + + ## Prerequisites diff --git a/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx b/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx index 06a8aec..d929016 100644 --- a/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx +++ b/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx @@ -2,6 +2,7 @@ title: "Build a realtime voice agent: streaming speech in, reply, speech out" description: "Use realtime speech to text to know when the user has finished, start replies early, keep talking through backchannels and stop on interruptions" icon: "headset" +tag: "Preview" --- import Prerequisites from "/snippets/prerequisites.mdx"; @@ -12,6 +13,11 @@ import Prerequisites from "/snippets/prerequisites.mdx"; [Agents](/agents/overview). + + `transcribe-stream-1` is in preview. Its behavior and limits can still change + before general availability. + + ## Prerequisites diff --git a/features/speech-to-text/realtime.mdx b/features/speech-to-text/realtime.mdx index b9e0c73..a6b1f2f 100644 --- a/features/speech-to-text/realtime.mdx +++ b/features/speech-to-text/realtime.mdx @@ -3,10 +3,16 @@ title: "Realtime Speech to Text" sidebarTitle: "Realtime" description: "Transcribe live audio turn by turn with transcribe-stream-1: turn detection that knows when the user has finished, backchannel and background awareness, and conversation context" icon: "microphone-lines" +tag: "Preview" --- Stream live audio over a WebSocket and get the transcript turn by turn while people speak. `transcribe-stream-1` does more than transcribe: it decides when the user has finished their turn, usually tells the user talking to your app apart from background sound, and notices when a "mm-hm" is only an acknowledgement. This helps your voice agent decide when to answer, when to keep talking and when to stop. Connect to `wss://api.fish.audio/v1/asr/realtime`, send audio as you capture it, and read the events the server sends back. + + `transcribe-stream-1` is in preview. Its behavior and limits can still change + before general availability. + + Date: Tue, 20 Oct 2026 08:32:15 +0000 Subject: [PATCH 2/4] docs(asr): label the remaining transcribe-stream-1 model cells as Preview The first pass labeled the model header description in the AsyncAPI spec but left two other descriptions of the same header unlabeled, and left the model row of the realtime guide's comparison table bare while the models overview table carries the label. Label them the same way, as "`transcribe-stream-1` (Preview)": - AsyncAPI channel description, Connection Headers bullet - WebSocket reference page, model header table row - realtime guide, Realtime vs File table, Model row Column widths are unchanged, so no other rows move. Co-Authored-By: Claude Opus 5.5 --- api-reference/asyncapi-asr-realtime.yml | 2 +- api-reference/endpoint/websocket/asr-realtime.mdx | 2 +- features/speech-to-text/realtime.mdx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api-reference/asyncapi-asr-realtime.yml b/api-reference/asyncapi-asr-realtime.yml index 8e0cddc..f060165 100644 --- a/api-reference/asyncapi-asr-realtime.yml +++ b/api-reference/asyncapi-asr-realtime.yml @@ -101,7 +101,7 @@ channels: ## Connection Headers - `Authorization: Bearer ` - Required for authentication (see security section) - - `model: transcribe-stream-1` - Optional; the default + - `model: transcribe-stream-1` (Preview) - Optional; the default Every message in both directions is one MessagePack map in a binary frame, with a `type` field. Send `config` first, wait for diff --git a/api-reference/endpoint/websocket/asr-realtime.mdx b/api-reference/endpoint/websocket/asr-realtime.mdx index becd17f..e71e581 100644 --- a/api-reference/endpoint/websocket/asr-realtime.mdx +++ b/api-reference/endpoint/websocket/asr-realtime.mdx @@ -36,7 +36,7 @@ model: transcribe-stream-1 | Header | Required | Description | | --------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `Authorization` | Yes | `Bearer `. Write the scheme exactly as `Bearer`, followed by a space and the key. | -| `model` | No | `transcribe-stream-1`, the default and the only realtime model. The legacy name `transcribe-1-pro-realtime` reaches the same model. | +| `model` | No | `transcribe-stream-1` (Preview), the default and the only realtime model. The legacy name `transcribe-1-pro-realtime` reaches the same model. | Each open connection counts against the same concurrency limit as your other API requests, from the moment it opens until it closes, even while you send no audio. See [Concurrent request limits](/developer-guide/models-pricing/pricing-and-rate-limits#concurrent-request-limits). A session cannot be resumed: a new connection is a new session. diff --git a/features/speech-to-text/realtime.mdx b/features/speech-to-text/realtime.mdx index a6b1f2f..a033c0b 100644 --- a/features/speech-to-text/realtime.mdx +++ b/features/speech-to-text/realtime.mdx @@ -69,7 +69,7 @@ To transcribe a recording you already have, use [`POST /v1/asr`](/features/speec | | Realtime (`/v1/asr/realtime`) | File (`POST /v1/asr`) | | -------------- | -------------------------------------------------------------- | ---------------------------------------------------------- | -| Model | `transcribe-stream-1` | `transcribe-1-pro` | +| Model | `transcribe-stream-1` (Preview) | `transcribe-1-pro` | | Input | Live 16-bit PCM over a WebSocket | A complete audio file (WAV, MP3, Opus, and more) | | Output | Events per turn: drafts, turn signals and the final transcript | One transcript, with optional timestamps and speaker turns | | Turn detection | Yes | No | From eaac9074ae9e96fa00ed4f78ec0e2e15e2ea9113 Mon Sep 17 00:00:00 2001 From: liujiahua123123 Date: Tue, 20 Oct 2026 10:39:18 +0000 Subject: [PATCH 3/4] docs(asr): shorten the transcribe-stream-1 preview note Co-Authored-By: Claude Opus 5.5 --- api-reference/endpoint/websocket/asr-realtime.mdx | 3 +-- developer-guide/sdk-guide/cookbook/realtime-transcription.mdx | 3 +-- developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx | 3 +-- features/speech-to-text/realtime.mdx | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/api-reference/endpoint/websocket/asr-realtime.mdx b/api-reference/endpoint/websocket/asr-realtime.mdx index e71e581..0ca83cc 100644 --- a/api-reference/endpoint/websocket/asr-realtime.mdx +++ b/api-reference/endpoint/websocket/asr-realtime.mdx @@ -15,8 +15,7 @@ tag: "Preview" - `transcribe-stream-1` is in preview. Its behavior and limits can still change - before general availability. + `transcribe-stream-1` is in preview. ## Before you start diff --git a/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx b/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx index 25f1350..e9a0e4a 100644 --- a/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx +++ b/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx @@ -8,8 +8,7 @@ tag: "Preview" import Prerequisites from "/snippets/prerequisites.mdx"; - `transcribe-stream-1` is in preview. Its behavior and limits can still change - before general availability. + `transcribe-stream-1` is in preview. ## Prerequisites diff --git a/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx b/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx index d929016..f3c8ea4 100644 --- a/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx +++ b/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx @@ -14,8 +14,7 @@ import Prerequisites from "/snippets/prerequisites.mdx"; - `transcribe-stream-1` is in preview. Its behavior and limits can still change - before general availability. + `transcribe-stream-1` is in preview. ## Prerequisites diff --git a/features/speech-to-text/realtime.mdx b/features/speech-to-text/realtime.mdx index a033c0b..ad5f2b9 100644 --- a/features/speech-to-text/realtime.mdx +++ b/features/speech-to-text/realtime.mdx @@ -9,8 +9,7 @@ tag: "Preview" Stream live audio over a WebSocket and get the transcript turn by turn while people speak. `transcribe-stream-1` does more than transcribe: it decides when the user has finished their turn, usually tells the user talking to your app apart from background sound, and notices when a "mm-hm" is only an acknowledgement. This helps your voice agent decide when to answer, when to keep talking and when to stop. Connect to `wss://api.fish.audio/v1/asr/realtime`, send audio as you capture it, and read the events the server sends back. - `transcribe-stream-1` is in preview. Its behavior and limits can still change - before general availability. + `transcribe-stream-1` is in preview. From 4cf4edeb2974ebe3d7ce39a233a673209da971b8 Mon Sep 17 00:00:00 2001 From: liujiahua123123 Date: Tue, 20 Oct 2026 10:42:39 +0000 Subject: [PATCH 4/4] docs(asr): keep the one-line preview note on one line (prettier) Co-Authored-By: Claude Opus 5.5 --- api-reference/endpoint/websocket/asr-realtime.mdx | 4 +--- developer-guide/sdk-guide/cookbook/realtime-transcription.mdx | 4 +--- developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx | 4 +--- features/speech-to-text/realtime.mdx | 4 +--- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/api-reference/endpoint/websocket/asr-realtime.mdx b/api-reference/endpoint/websocket/asr-realtime.mdx index 0ca83cc..01e3c4b 100644 --- a/api-reference/endpoint/websocket/asr-realtime.mdx +++ b/api-reference/endpoint/websocket/asr-realtime.mdx @@ -14,9 +14,7 @@ tag: "Preview" [Realtime Speech to Text](/features/speech-to-text/realtime). - - `transcribe-stream-1` is in preview. - +`transcribe-stream-1` is in preview. ## Before you start diff --git a/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx b/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx index e9a0e4a..eb7c010 100644 --- a/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx +++ b/developer-guide/sdk-guide/cookbook/realtime-transcription.mdx @@ -7,9 +7,7 @@ tag: "Preview" import Prerequisites from "/snippets/prerequisites.mdx"; - - `transcribe-stream-1` is in preview. - +`transcribe-stream-1` is in preview. ## Prerequisites diff --git a/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx b/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx index f3c8ea4..7809082 100644 --- a/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx +++ b/developer-guide/sdk-guide/cookbook/realtime-voice-agent.mdx @@ -13,9 +13,7 @@ import Prerequisites from "/snippets/prerequisites.mdx"; [Agents](/agents/overview). - - `transcribe-stream-1` is in preview. - +`transcribe-stream-1` is in preview. ## Prerequisites diff --git a/features/speech-to-text/realtime.mdx b/features/speech-to-text/realtime.mdx index ad5f2b9..683058d 100644 --- a/features/speech-to-text/realtime.mdx +++ b/features/speech-to-text/realtime.mdx @@ -8,9 +8,7 @@ tag: "Preview" Stream live audio over a WebSocket and get the transcript turn by turn while people speak. `transcribe-stream-1` does more than transcribe: it decides when the user has finished their turn, usually tells the user talking to your app apart from background sound, and notices when a "mm-hm" is only an acknowledgement. This helps your voice agent decide when to answer, when to keep talking and when to stop. Connect to `wss://api.fish.audio/v1/asr/realtime`, send audio as you capture it, and read the events the server sends back. - - `transcribe-stream-1` is in preview. - +`transcribe-stream-1` is in preview.