
音声入力、音声出力、1つのソケットで。返信途中で割り込み可能で、音声活動検出が応答のタイミングを判断します。
音声入力、音声出力、1つのソケットで。返信途中で割り込み可能で、音声活動検出が応答のタイミングを判断します。
セッションはリクエストパラメータではなく、ソケット上でsession.updateイベントで設定されます。
別名 StepFun StepAudio 3 Realtime
stepaudio-3-realtime/v1/realtimestepaudio-3-realtime-previewstepfun/stepaudio-3-realtimeEmpirioLabs カタログのライブ従量課金料金です。使った分だけの支払いで、月額最低料金はありません。
StepAudio 3 Realtime は HTTP エンドポイントではなく、wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-3-realtime の WebSocket 上でライブ会話を行います。モデル ID stepaudio-3-realtime で接続し、ハンドシェイク時に EmpirioLabs の API キーを Authorization: Bearer ヘッダーとして送信してください。音声は base64 の 16 ビット PCM として双方向に流れます。 ブラウザは WebSocket にヘッダーを設定できないため、この接続はサーバーから開き、音声は自前のソケットでブラウザへ中継してください。 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でフルデュプレックス音声が行われ、通常のAuthorization Bearerヘッダーで認証されています。音声はpcm16の入出力です。モデルは話しながら聞くため、返信の途中で中断されることがあり、サーバー側の音声活動検出が応答のタイミングを判断します。voiceを設定してsession.updateを最初の音声の前に設定します。モデルが話した後は変更できず、7つの表示された音声のみが受け入れられます。会話は中国語と英語のみです。完了した各ターンはモデルが報告する使用量から個別に請求されます。このモデルはプレビュー段階であり、機能は変更される可能性があります。
EmpirioLabs では StepAudio 3 Realtime は従量課金です: 入力 $1.50 1Mプロンプトトークンあたり; ソリューション $10.00 生成された1Mトークンあたり; 暗黙のキャッシュ読み取り $0.30 1Mのキャッシュ入力トークンごとに。このページのライブ料金表は常に API の請求額と一致します。
StepAudio 3 Realtime は 256K トークンのコンテキストウィンドウに対応しています(1回の応答あたり最大 131,072 出力トークン)。
StepAudio 3 Realtime は api.empiriolabs.ai 上の WEBSOCKET /v1/realtime で提供され、標準的な Bearer トークン認証を使用します。
EmpirioLabs プレイグラウンド を開き、Start session を押すとブラウザーで試せます。StepAudio 3 Realtime はリクエストとレスポンスではなく WebSocket 上で動作するため、組み込むときは リアルタイム音声クイックスタート から始めてください。EmpirioLabs の API キーとモデル ID stepaudio-3-realtime を使ってサーバーから接続し、音声を双方向にストリーミングします。
EmpirioLabs アカウントを作成し、ダッシュボードの API Keysでキーを生成してください。課金は従量制クレジットなので、実行したリクエストの分だけ支払います。