语音输入,语音输出,通过一个插槽。回复中可中断,语音活动检测决定何时回复。
会话通过套接字的 session.update 事件配置,而非请求参数。
也称为 StepFun StepAudio 3 Realtime
stepaudio-3-realtime/v1/realtimestepaudio-3-realtime-previewstepfun/stepaudio-3-realtime来自 EmpirioLabs 目录的实时按量计费价格。只为实际用量付费,没有月度最低消费。
StepAudio 3 Realtime 通过 wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-3-realtime 的 WebSocket 进行实时对话,而不是通过 HTTP 端点。使用模型 id stepaudio-3-realtime 连接,并在握手时将 EmpirioLabs API 密钥作为 Authorization: Bearer 请求头发送。音频以 base64 编码的 16 位 PCM 双向传输。 浏览器无法为 WebSocket 设置请求头,请从你的服务器发起该连接,再通过你自己的 socket 把音频转发给浏览器。 在EmpirioLabs 控制台获取 API 密钥。
import asyncio, json, os, websockets
async def main():
async with websockets.connect(
"wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-3-realtime",
additional_headers=[
("Authorization", f"Bearer {os.environ['EMPIRIOLABS_API_KEY']}"),
],
max_size=None,
) as ws:
print(json.loads(await ws.recv())["type"]) # session.created
await ws.send(json.dumps({
"type": "conversation.item.create",
"item": {
"type": "message",
"role": "user",
"content": [{"type": "input_text", "text": "Say hello."}],
},
}))
await ws.send(json.dumps({"type": "response.create"}))
async for raw in ws:
event = json.loads(raw)
if event["type"] == "response.audio.delta":
... # base64 audio chunk, append to your playback buffer
elif event["type"] == "response.done":
break
asyncio.run(main())EmpirioLabs 上 StepAudio 3 Realtime API 支持的请求参数。省略字段时使用默认值。
| 参数 | 类型 | 默认值 | 范围 / 值 | 描述 |
|---|---|---|---|---|
| voice | enum | soft-spoken-gentleman | soft-spoken-gentleman, magnetic-voiced-male, vibrant-youth, l... | 会话语音,在模型产生音频之前通过 session.update 设置。模型说完后不能更改,且拒绝其他值。 |
| instructions | string | - | - | 会话的系统说明:人物设定、说话风格和界限。 |
| modalities | string | ["text","audio"] | - | 本场的应对方式。 |
| volume_ratio | number | 1 | 0.1 到 2 | 语音回复的响度相对于默认值。接受范围为0.1到2.0。 |
| input_audio_format | enum | pcm16 | pcm16 | 你发送的音频编码。16位PCM。 |
| output_audio_format | enum | pcm16 | pcm16 | 模型返回的音频编码。16位PCM。 |
| turn_detection | string | {"type":"server_vad"} | - | 服务器端语音活动检测。它会判断你什么时候停止说话,模型应该会回复。没有它,模型会听但不会回应,所以除非你用input_audio_buffer.commit和response.create开车转身,否则保持开启。 |
通过 wss@api.empiriolabs.ai/v1/realtime?model=stepaudio-3-realtime 的 WebSocket 进行全双工语音,并用普通授权承载者头进行认证。音频输入输出为 pcm16。模型在说话时会监听,因此可以在回复中途被打断,服务器端的语音活动检测决定何时应答。在第一个音频之前设置语音 session.update;模型说完后无法更改语音,且仅接受列出的七个语音。对话仅支持中文和英语。每完成一回合就根据模型报告的使用情况单独计费。该模型处于预览阶段,其功能可能会有所变化。
在 EmpirioLabs,StepAudio 3 Realtime 按量计费:输入 $1.50 每100万个提示词标记; 产出 $10.00 每100万个生成代币; 隐式缓存读取 $0.30 每 1M 缓存输入标记。本页的实时价格表始终与 API 的实际计费一致。
StepAudio 3 Realtime 支持 256K token 的上下文窗口,每次响应最多 131,072 个输出 token。
StepAudio 3 Realtime 通过 api.empiriolabs.ai 上的 WEBSOCKET /v1/realtime 提供,使用标准的 Bearer 令牌认证。
打开EmpirioLabs Playground并点击 Start session,即可在浏览器中试用。StepAudio 3 Realtime 运行在 WebSocket 上,而不是一次请求一次响应,因此接入时请从实时语音快速入门开始。用 EmpirioLabs API 密钥和模型 id stepaudio-3-realtime 从你的服务器连接,然后双向流式传输音频。
创建 EmpirioLabs 账户,然后在控制台的 API Keys生成密钥。计费使用按量付费的额度,只为实际发出的请求付费。