GPT Realtime Whisper 是 OpenAI 的实时语音转文字模型,持续输出低延迟转写增量,并按音频时长计费。
- 输入
- 音频 文本
- 输出
- 文本
- 价格
- $0.017/min
- 上下文
- 16K
- 知识截止
- 2024-09
按输入长度分档的价格
整次请求按输入长度所在档位计费。价格单位为美元/百万 token。
| 输入 token 数 | 输入 | 输出 | 思考模式输入 |
|---|
价格在同类中的位置
价格在 9 个同类模型中的位置
这条线标出该模型的价格在 Synthorai 同类模型中的位置,两端分别是最便宜和最贵的模型。这里是基础价,批量、区域和缓存写入的折扣见价格页。
规格与限制
Token
| 上下文窗口(供应商规格) | 16,000 |
|---|---|
| 最大输出(供应商规格) | 2,000 |
| 知识截止 | 2024-09 |
音频
| 语言 | OpenAI 未在此型号的模型卡中公布专属语言清单;请用目标语言的真实音频验证。 |
|---|---|
| 音频限制 | 实时音频转写,低延迟持续输出文字增量;按音频分钟计费,而非按文字 token。 |
| 流式转写 | 支持 |
模型
| 模态 | 音频 + 文本 → 文本 |
|---|
依据 模型规格来源 ↗
30 秒用上 GPT Realtime Whisper
只在 OpenAI Realtime 会话里用作输入转写模型:先用 Realtime 模型建立会话,再把 session.audio.input.transcription.model 设为 gpt-realtime-whisper。WS /v1/realtime
import asyncio, json, websockets
URL = "wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1"
# Send ONLY the Authorization header - the beta protocol is retired.
HEADERS = {"Authorization": "Bearer sk-syn-..."}
async def main():
async with websockets.connect(URL, additional_headers=HEADERS) as ws:
# 1) name gpt-realtime-whisper as the session's input transcription model
await ws.send(json.dumps({
"type": "session.update",
"session": {
"type": "realtime",
"audio": {"input": {"transcription": {"model": "gpt-realtime-whisper"}}},
},
}))
# 2) send input audio (base64 PCM16) and commit it
await ws.send(json.dumps({"type": "input_audio_buffer.append", "audio": pcm16_b64}))
await ws.send(json.dumps({"type": "input_audio_buffer.commit"}))
# 3) the transcript of what was said arrives as its own event
async for raw in ws:
ev = json.loads(raw)
if ev["type"] == "conversation.item.input_audio_transcription.completed":
print(ev["transcript"])
break
asyncio.run(main())import WebSocket from "ws";
const ws = new WebSocket("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1", {
// Send ONLY the Authorization header, the beta protocol is retired.
headers: { Authorization: "Bearer sk-syn-..." },
});
ws.on("open", () => {
// name gpt-realtime-whisper as the session's input transcription model
ws.send(JSON.stringify({ type: "session.update", session: {
type: "realtime", audio: { input: { transcription: { model: "gpt-realtime-whisper" } } },
} }));
// send input audio (base64 PCM16) and commit it
ws.send(JSON.stringify({ type: "input_audio_buffer.append", audio: pcm16Base64 }));
ws.send(JSON.stringify({ type: "input_audio_buffer.commit" }));
});
ws.on("message", (raw) => {
const ev = JSON.parse(raw.toString());
if (ev.type === "conversation.item.input_audio_transcription.completed") {
console.log(ev.transcript); // the transcript of what was said
ws.close();
}
});# Realtime is a WebSocket protocol - use a WS client such as websocat.
# Each line below is one OpenAI Realtime event (JSON) sent to the session.
websocat -H 'Authorization: Bearer sk-syn-...' \
'wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1' <<'EOF'
{"type":"session.update","session":{"type":"realtime","audio":{"input":{"transcription":{"model":"gpt-realtime-whisper"}}}}}
{"type":"input_audio_buffer.append","audio":"<base64-pcm16>"}
{"type":"input_audio_buffer.commit"}
EOF
# The transcript arrives as conversation.item.input_audio_transcription.completedpackage main
import (
"fmt"
"net/http"
"github.com/gorilla/websocket"
)
func main() {
h := http.Header{}
h.Set("Authorization", "Bearer sk-syn-...")
// Send ONLY the Authorization header, the beta protocol is retired.
c, _, err := websocket.DefaultDialer.Dial("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1", h)
if err != nil {
panic(err)
}
defer c.Close()
// name gpt-realtime-whisper as the session's input transcription model, then send audio
c.WriteJSON(map[string]any{"type": "session.update", "session": map[string]any{
"type": "realtime",
"audio": map[string]any{"input": map[string]any{
"transcription": map[string]any{"model": "gpt-realtime-whisper"}}}}})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.append", "audio": pcm16B64})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.commit"})
for {
var ev struct {
Type string `json:"type"`
Transcript string `json:"transcript"`
}
if err := c.ReadJSON(&ev); err != nil {
return
}
if ev.Type == "conversation.item.input_audio_transcription.completed" {
fmt.Println(ev.Transcript) // the transcript of what was said
return
}
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.WebSocket;
import java.util.concurrent.CompletionStage;
// JDK built-in WebSocket, no extra dependency needed.
WebSocket ws = HttpClient.newHttpClient().newWebSocketBuilder()
.header("Authorization", "Bearer sk-syn-...")
// Send ONLY the Authorization header, the beta protocol is retired.
.buildAsync(URI.create("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1"), new WebSocket.Listener() {
public CompletionStage<?> onText(WebSocket w, CharSequence data, boolean last) {
// conversation.item.input_audio_transcription.completed carries the transcript
w.request(1);
return null;
}
}).join();
// name gpt-realtime-whisper as the session's input transcription model, then send audio
ws.sendText("{\"type\":\"session.update\",\"session\":{\"type\":\"realtime\",\"audio\":{\"input\":{\"transcription\":{\"model\":\"gpt-realtime-whisper\"}}}}}", true);
ws.sendText("{\"type\":\"input_audio_buffer.append\",\"audio\":\"<base64-pcm16>\"}", true);
ws.sendText("{\"type\":\"input_audio_buffer.commit\"}", true);关于 GPT Realtime Whisper
- 官方现在建议新接入优先评估更新的转写模型;此型号仍适用于受支持的现有集成。
- 目标语言和嘈杂环境仍需用真实音频验证。
常见问题
GPT Realtime Whisper API 可以免费试用吗?
可以。新账号有 10 次试用调用,免费额度最高 $1,无需绑卡。在绑定付款方式之前,足够拿真实负载把 GPT Realtime Whisper 试一遍。
GPT Realtime Whisper 最擅长什么?
实时流式转写增量、按音频分钟计费、新项目应比较更新型号。完整介绍见「关于」部分,内容取自供应商的官方发布说明。
GPT Realtime Whisper 的价格是多少?
在 Synthorai 上,GPT Realtime Whisper 每转写一分钟音频收费 $0.017:按量付费,无平台加价,无需订阅。
GPT Realtime Whisper 怎么用?
GPT Realtime Whisper 不单独调用,它在 Realtime 会话里负责转写用户说的话:用 Realtime 模型连接 wss://synthorai.io/v1/realtime,把 session.audio.input.transcription.model 设为 "gpt-realtime-whisper",再从 conversation.item.input_audio_transcription.completed 事件里读取每段转写结果。输入音频每分钟收费 $0.017,会话本身的费用另计。
如何开通 GPT Realtime Whisper?
用你的 Synthorai API key 建立 Realtime 会话,并把 "gpt-realtime-whisper" 设为输入转写模型即可。GPT Realtime Whisper 是为 Realtime 会话设计的,不能用在 /v1/audio/transcriptions 文件转写接口上;要转写音频文件,请选用语音转文字模型。一个 API key 就能调用网关上的全部模型。
相关模型
对比
规格与厂商 benchmark 均附来源链接。网关支持情况说明的是 Synthorai 的实际实现。归档示例是单次网关请求,不代表模型的一般性能保证。价格来自公开价格接口或构建时使用的快照。