Skip to content

Gemini Live 同声传译 ​

gemini-3.5-live-translate-preview 是语音到语音的同声传译模型。输入为 16 kHz、单声道、16-bit 小端 PCM;输出为 24 kHz PCM。目标语言使用 BCP-47,默认 en。模型 ID 以 获取模型 modality=audio 为准。

两条入口:

  • Gemini Live 兼容:客户端发送官方 Live JSON,服务端原样回传 Live 帧。
  • 平台 Realtime:客户端发送平台事件,服务端回传平台事件。

Endpoint ​

MethodURL说明
WebSocket{TRINITY_API_ORIGIN}/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContentGemini Live 兼容
WebSocket{TRINITY_WS_BASE_URL}/realtime?model=gemini-3.5-live-translate-preview平台 Realtime

Base URL ​

项值
API Originhttps://api.trinitydesk.ai
Base URLhttps://api.trinitydesk.ai/v1
WebSocketwss://api.trinitydesk.ai/v1
协议WSS
bash
export TRINITY_API_ORIGIN="https://api.trinitydesk.ai"
export TRINITY_WS_BASE_URL="wss://api.trinitydesk.ai/v1"
export TRINITY_API_KEY="xh-..."

Headers ​

Header必填说明
Authorization是Bearer <TRINITY_API_KEY>

查询参数 api_key 或 key 可代替该 Header。


请求示例 ​

Gemini Live 兼容 ​

text
wss://api.trinitydesk.ai/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent

连接后的第一条文本消息是 setup:

json
{
  "setup": {
    "model": "models/gemini-3.5-live-translate-preview",
    "generationConfig": {
      "responseModalities": ["AUDIO"],
      "translationConfig": {
        "targetLanguageCode": "zh-Hans",
        "echoTargetLanguage": false
      }
    },
    "inputAudioTranscription": {},
    "outputAudioTranscription": {}
  }
}

随后发送 16 kHz PCM:

json
{
  "realtimeInput": {
    "audio": {
      "mimeType": "audio/pcm;rate=16000",
      "data": "<base64>"
    }
  }
}

音频流结束:

json
{ "realtimeInput": { "audioStreamEnd": true } }

平台 Realtime ​

text
wss://api.trinitydesk.ai/v1/realtime?model=gemini-3.5-live-translate-preview
json
{
  "session_type": "translation",
  "output_modalities": ["audio"],
  "translation": {
    "target_language_code": "zh-Hans",
    "echo_target_language": false
  }
}
json
{ "type": "input_audio_buffer.append", "audio": "<base64>" }
json
{ "type": "input_audio_buffer.commit" }

请求体字段 ​

Gemini Live 兼容 ​

字段类型必填说明
setup.modelstring是models/gemini-3.5-live-translate-preview。第一条消息必须是 setup
setup.generationConfig.responseModalitiesstring[]是["AUDIO"]
setup.generationConfig.translationConfig.targetLanguageCodestring否BCP-47。默认 en。例:zh-Hans、zh-Hant、ja
setup.generationConfig.translationConfig.echoTargetLanguageboolean否默认 false。为 true 时输出包含目标语言的回声
setup.inputAudioTranscriptionobject否打开输入转写。对象可为空
setup.outputAudioTranscriptionobject否打开输出转写。对象可为空
setup.sessionResumptionobject否续接上一通会话。不传则每次连接都是新会话
setup.contextWindowCompressionobject否上下文压缩。不传则不启用
realtimeInput.audio.mimeTypestring是audio/pcm;rate=16000
realtimeInput.audio.datastring是PCM 的 base64
realtimeInput.audioStreamEndboolean否true 表示本段音频结束

tools、instructions、文本、图像、视频输入不在本模型的请求里。出现这些字段时连接返回错误并关闭。

转写对象放在 setup 下,与 generationConfig 同级。

平台 Realtime ​

字段类型必填说明
session_typestring否有该字段时必须为 translation
output_modalitiesstring[]否有该字段时必须为 ["audio"]
translation.target_language_codestring否同 targetLanguageCode。默认 en
translation.echo_target_languageboolean否默认 false
input_audio_transcriptionobject否输入转写
output_audio_transcriptionobject否输出转写
session_config.session_resumptionobject否续接
session_config.context_window_compressionobject否上下文压缩
session_config.realtime_inputobject否实时输入配置
typestring条件input_audio_buffer.append 或 input_audio_buffer.commit。session.update、session.create 按会话配置处理
audiostring条件append 时的 16 kHz PCM base64

未带 type 的 JSON 对象按会话配置处理。第一条音频到达前若还没有会话配置,平台使用目标语言 en、输出模态 audio。

instructions、tools、tool_choice、reasoning 以及文本、图像、视频输入会返回 {"type":"error","error":{"message":"..."}} 并关闭连接。


返回字段 ​

Gemini Live 兼容 ​

服务端帧为 Gemini Live JSON。

字段说明
setupComplete会话已建立。也可为 setup_complete
serverContent.modelTurn.parts[].inlineData24 kHz PCM,mimeType 为 audio/pcm;rate=24000,data 为 base64
serverContent.inputTranscription.text输入转写增量
serverContent.outputTranscription.text输出转写增量
serverContent.turnComplete当前轮结束
serverContent.interrupted当前轮被打断
serverContent.generationComplete本段生成结束
goAway.timeLeft连接剩余时间。之后需要新的 WebSocket
sessionResumptionUpdate续接句柄。原样返回

平台 Realtime ​

type字段说明
session.readysession_id会话已建立
response.audio.deltadelta、mime_type24 kHz PCM base64。mime_type 缺省为 audio/pcm;rate=24000
input_audio_transcription.deltatext输入转写
output_audio_transcription.deltatext输出转写
response.donestatus=completed当前轮结束
response.interruptedstatus=interrupted当前轮被打断
response.generation.complete本段生成结束
session.go_awaytime_left连接剩余时间
errorerror.message请求被拒绝

音频 token 按 获取价目 modality=audio 结算。转写文本 token 不计入费用。


返回示例 ​

Gemini Live 兼容:

json
{ "setupComplete": {} }
json
{
  "serverContent": {
    "modelTurn": {
      "parts": [
        {
          "inlineData": {
            "mimeType": "audio/pcm;rate=24000",
            "data": "<base64>"
          }
        }
      ]
    },
    "outputTranscription": { "text": "你好" }
  }
}
json
{ "goAway": { "timeLeft": "60s" } }

平台 Realtime:

json
{ "type": "session.ready", "session_id": "sess_xxx" }
json
{
  "type": "response.audio.delta",
  "delta": "<base64>",
  "mime_type": "audio/pcm;rate=24000"
}
json
{ "type": "output_audio_transcription.delta", "text": "你好" }
json
{ "type": "session.go_away", "time_left": "60s" }

余额不足时,兼容口返回:

json
{
  "error": {
    "code": 429,
    "message": "Resource exhausted.",
    "status": "RESOURCE_EXHAUSTED"
  }
}

平台口返回:

json
{ "type": "error", "error": { "message": "insufficient balance" } }

Python 示例 ​

Gemini Live 兼容:

python
import json
import os
import websocket

origin = os.environ["TRINITY_API_ORIGIN"].replace("https://", "wss://")
ws = websocket.create_connection(
    origin + "/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent",
    header=["Authorization: Bearer " + os.environ["TRINITY_API_KEY"]],
)
ws.send(json.dumps({
    "setup": {
        "model": "models/gemini-3.5-live-translate-preview",
        "generationConfig": {
            "responseModalities": ["AUDIO"],
            "translationConfig": {
                "targetLanguageCode": "zh-Hans",
                "echoTargetLanguage": False,
            },
        },
        "inputAudioTranscription": {},
        "outputAudioTranscription": {},
    }
}))
print(ws.recv())
ws.close()

平台 Realtime:

python
import json
import os
import websocket

ws = websocket.create_connection(
    os.environ["TRINITY_WS_BASE_URL"] + "/realtime?model=gemini-3.5-live-translate-preview",
    header=["Authorization: Bearer " + os.environ["TRINITY_API_KEY"]],
)
ws.send(json.dumps({
    "session_type": "translation",
    "output_modalities": ["audio"],
    "translation": {"target_language_code": "zh-Hans"},
}))
ws.send(json.dumps({"type": "input_audio_buffer.append", "audio": "<base64>"}))
print(ws.recv())
ws.close()

相关 ​

© Trinity AI