Gemini 2.5 Flash Native Audio 是 Google 的原生音频 Live API 模型,模型页称它让与 Gemini 2.5 Flash 的低延迟实时语音和视频交互成为可能:它处理连续的音频、视频或文本流,并以即时、拟人的语音作答,而不是把转写器和合成器串接起来。
- 输入
- 文本 音频 视频 $0.5/M
- 输出
- 文本 音频 $2/M
- 音频输入
- $3/M
- 音频输出
- $12/M
- 知识截止
- 2025-01
Benchmark 成绩
gemini-2.5-flash-native-audio:公布了 8 项,但没有一项是足够多的其他模型也测过的,无法比较。
价格在同类中的位置
价格在 6 个同类模型中的位置
这条线显示该模型的价格,在 Synthorai 上同类模型里处于什么位置。两端标出了最便宜和最贵的那个。这里是基础价,批量、区域和缓存写入的折扣见价格页。
规格与限制
Token
| 上下文窗口(厂商规格) | 131,072 |
|---|---|
| 最大输出(厂商规格) | 8,192 |
| 知识截止 | 2025-01 |
思考
| 厂商参数 | thinkingBudget |
|---|---|
| 默认值 | 动态思考 请求未指定时生效 |
| 可关闭 | 支持 |
| 思考行为 | Live API 指南记载,这个 2.5 Live 模型使用 token 预算而非等级:默认开启动态思考,thinkingBudget 0 可关闭。 |
| 参数 | reasoning_effort |
| 取值 | minimal · low · medium · high 具体接受哪些由厂商决定 |
音频
| 音频限制 |
|
|---|---|
| 流式转写 | 支持 |
实时语音
| 语音 | 可使用 Gemini 文本转语音音色集合中的任意音色;原生音频输出模型能在一次对话中自然切换语言。 |
|---|---|
| 会话能力 |
|
模型
| 模态 | 文本 + 音频 + 视频 → 文本 + 音频 |
|---|
- 原生音频的 Live API 模型,端到端处理原始音频,而非串接 STT 与 TTS。
- Google 的模型页列出 2025 年 1 月的知识截止,以及在 131,072 token 输入窗口之外异常小的 8,192 token 输出上限。
30 秒用上 gemini-2.5-flash-native-audio
兼容 OpenAI Realtime:通过 WebSocket 连接,音频进、音频出。WS /v1/realtime
import asyncio, base64, json, websockets
URL = "wss://synthorai.io/v1/realtime?model=gemini-2.5-flash-native-audio"
# 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) configure the speech-to-speech session
await ws.send(json.dumps({
"type": "session.update",
"session": {
"type": "realtime",
"output_modalities": ["audio"],
"audio": {"output": {"voice": "alloy"}},
},
}))
# 2) send input audio (base64 PCM16), then request a spoken reply
await ws.send(json.dumps({"type": "input_audio_buffer.append", "audio": pcm16_b64}))
await ws.send(json.dumps({"type": "input_audio_buffer.commit"}))
await ws.send(json.dumps({"type": "response.create"}))
# 3) stream the model's audio (and text) back
async for raw in ws:
ev = json.loads(raw)
if ev["type"] == "response.audio.delta":
play(base64.b64decode(ev["delta"])) # audio out
elif ev["type"] == "response.done":
break
asyncio.run(main())import WebSocket from "ws";
const ws = new WebSocket("wss://synthorai.io/v1/realtime?model=gemini-2.5-flash-native-audio", {
// Send ONLY the Authorization header — the beta protocol is retired.
headers: { Authorization: "Bearer sk-syn-..." },
});
ws.on("open", () => {
// configure the speech-to-speech session
ws.send(JSON.stringify({ type: "session.update", session: {
type: "realtime", output_modalities: ["audio"], audio: { output: { voice: "alloy" } },
} }));
// send input audio (base64 PCM16), then request a spoken reply
ws.send(JSON.stringify({ type: "input_audio_buffer.append", audio: pcm16Base64 }));
ws.send(JSON.stringify({ type: "input_audio_buffer.commit" }));
ws.send(JSON.stringify({ type: "response.create" }));
});
ws.on("message", (raw) => {
const ev = JSON.parse(raw.toString());
if (ev.type === "response.audio.delta") playAudio(Buffer.from(ev.delta, "base64")); // audio out
else if (ev.type === "response.done") 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=gemini-2.5-flash-native-audio' <<'EOF'
{"type":"session.update","session":{"type":"realtime","output_modalities":["audio"],"audio":{"output":{"voice":"alloy"}}}}
{"type":"input_audio_buffer.append","audio":"<base64-pcm16>"}
{"type":"input_audio_buffer.commit"}
{"type":"response.create"}
EOF
# Responses stream back as response.audio.delta (base64 audio out) … response.donepackage main
import (
"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=gemini-2.5-flash-native-audio", h)
if err != nil {
panic(err)
}
defer c.Close()
// configure the speech-to-speech session, send audio, request a spoken reply
c.WriteJSON(map[string]any{"type": "session.update", "session": map[string]any{
"type": "realtime", "output_modalities": []string{"audio"},
"audio": map[string]any{"output": map[string]any{"voice": "alloy"}}}})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.append", "audio": pcm16B64})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.commit"})
c.WriteJSON(map[string]any{"type": "response.create"})
for {
var ev struct {
Type string `json:"type"`
Delta string `json:"delta"`
}
if err := c.ReadJSON(&ev); err != nil {
return
}
if ev.Type == "response.audio.delta" {
playAudio(ev.Delta) // base64 audio out
} else if ev.Type == "response.done" {
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=gemini-2.5-flash-native-audio"), new WebSocket.Listener() {
public CompletionStage<?> onText(WebSocket w, CharSequence data, boolean last) {
// handle response.audio.delta (base64 audio out) / response.done here
w.request(1);
return null;
}
}).join();
// configure the session, send input audio, then request a spoken reply
ws.sendText("{\"type\":\"session.update\",\"session\":{\"type\":\"realtime\",\"output_modalities\":[\"audio\"],\"audio\":{\"output\":{\"voice\":\"alloy\"}}}}", true);
ws.sendText("{\"type\":\"input_audio_buffer.append\",\"audio\":\"<base64-pcm16>\"}", true);
ws.sendText("{\"type\":\"input_audio_buffer.commit\"}", true);
ws.sendText("{\"type\":\"response.create\"}", true);关于 gemini-2.5-flash-native-audio
- 会话运行在有状态的 WebSocket 上,输入为 16 kHz 的 16 位原始 PCM,输出为 24 kHz;模型接受音频、视频和文本,返回音频和文本。
- token 上限为输入 131,072、输出只有 8,192,原生音频模型的会话上下文窗口为 128k token,纯音频会话时长 15 分钟,带视频时为 2 分钟,除非通过会话管理延长。
- 函数调用、搜索事实依据和思考受支持;缓存、结构化输出、代码执行和 Batch API 不受支持。
- 有两项能力把这一代与更新的 Live 模型区分开,也是继续留在它上面的理由:主动音频,让模型在输入不相关时可以选择不作答;以及情感对话,根据说话者的表情和语气调整回应风格。
- 这里还支持异步函数调用,被声明为非阻塞的工具在运行期间模型可以继续说话。
- 音色取自 Google 的文本转语音音色集,原生音频输出会在对话中自然切换语言,并且不接受显式的语言代码,知识截止为 2025 年 1 月。
- Synthorai 通过其语音目录其余部分共用的 OpenAI 兼容 /v1/realtime WebSocket 端点开放它。
常见问题
gemini-2.5-flash-native-audio API 可以免费试用吗?
gemini-2.5-flash-native-audio 目前处于邀请测试阶段:需申请开通,而非开放注册。在 Synthorai 控制台提交申请,通过后即按标准量付费计费,无需订阅。
gemini-2.5-flash-native-audio 最擅长什么?
通过 Live API 实现低延迟实时语音与视频、主动音频与情感对话,更新的 Live 模型已无、纯音频会话 15 分钟,带视频 2 分钟。完整能力请见「关于」部分,内容取自厂商官方发布说明。
gemini-2.5-flash-native-audio 的价格是多少?
在 Synthorai 上,gemini-2.5-flash-native-audio 输入 $0.5/百万 token、输出 $2/百万 token,即厂商牌价,无平台加价。
如何调用 gemini-2.5-flash-native-audio API?
gemini-2.5-flash-native-audio 是语音对话(speech-to-speech)模型:通过 WebSocket 连接 wss://synthorai.io/v1/realtime?model=gemini-2.5-flash-native-audio,用 OpenAI Realtime SDK(或原生 WebSocket)即可,音频输入、音频输出。它不是 POST /v1/audio/transcriptions 文件上传接口。用你的 sk-syn key 鉴权,只发 Authorization 头(beta 协议已下线)。
如何开通 gemini-2.5-flash-native-audio?
gemini-2.5-flash-native-audio 处于邀请测试阶段:在 Synthorai 控制台申请开通。审批通过后与其他模型用法一致:把 OpenAI SDK 的 base_url 指向 "https://synthorai.io/v1",model 设为 "gemini-2.5-flash-native-audio" 即可。
相关模型
对比
本页每个值都转录自厂商自己的文档(链接见上),并带有核对日期。价格在全目录范围内比较;各厂商定义不同的规格值,只说明差异而不作图表对比。此处没有任何由我们测量的数据,也不做评分。