ling-baseling-base

Realtime WebSocket

OpenAI Realtime API WebSocket 桥接

在线 Playground

在浏览器中直接体验本页相关 API,无需本地安装 Go 环境。

Realtime WebSocket

relay/realtime 提供框架无关的 WebSocket 抽象,在客户端与上游 OpenAI Realtime API 之间双向转发事件,并累计用量。

端到端语音助手也可使用 voice/realtime,封装了 ASR+LLM+TTS 全链路。

核心类型

type Conn interface {
    ReadMessage() (messageType int, p []byte, err error)
    WriteMessage(messageType int, data []byte) error
    Close() error
}

type Connector interface {
    Dial(ctx context.Context, cfg SessionConfig) (Conn, error)
}

type Session struct { ... } // 桥接 client ↔ upstream

基本用法

import "github.com/LingByte/ling-base/relay/realtime"

session := realtime.NewSession(clientWSConn, realtime.SessionConfig{
    Model:             "gpt-4o-realtime-preview",
    Modalities:        []string{"text", "audio"},
    InputAudioFormat:  "pcm16",
    OutputAudioFormat: "pcm16",
    APIKey:            apiKey,
    Instructions:      "You are a helpful assistant.",
})
session.SetMeter(meter.NewMemoryMeter(), "openai")

connector := realtime.NewOpenAIConnector(apiKey, "gpt-4o-realtime-preview")
if err := session.Connect(ctx, connector); err != nil {
    log.Printf("session ended: %v", err)
}
fmt.Printf("Usage: %+v\n", session.Usage())

SessionConfig

字段说明
ModelRealtime 模型
Voice音色
Instructions系统指令
Modalitiestext / audio
InputAudioFormat通常 pcm16
OutputAudioFormat通常 pcm16
ToolsFunction calling 定义
APIKey / BaseURL鉴权与端点

与 voice/realtime 对比

relay/realtimevoice/realtime
层级WebSocket 透传桥高级 Agent 事件模型
适用已有 WS 客户端、代理网关应用内集成语音助手
事件原始 OpenAI 事件 JSON统一 EventType 枚举

示例

完整示例见 relay/example/realtime/

On this page