语音能力

语音会话协议

protocol/voice 传输无关的语音会话层,支持 WebRTC、WebSocket 等传输。

MCP API

protocol/voice 提供传输无关的语音会话能力。它不依赖 WebSocket、WebRTC 或 SIP,而是由传输层向会话送入 PCM 音频、通过回调接收合成音频。

分层架构

100%

子包说明

子包说明
dialog会话编排,Event/Command 契约
gateway对话面 WebSocket 客户端
webrtc浏览器 WebRTC(HTTP SDP + SRTP/Opus)
xiaozhixiaozhi-esp32 / 浏览器 WebSocket 管线
transport每通电话的 SessionFactory 接线
asr上行管道组件
tts下行合成与缓存

创建会话

import "github.com/LingByte/lingllm/protocol/voice/dialog"

sess, err := dialog.NewSession(ctx, dialog.Config{
    CallID:     "call-1",
    Engine:     recognizerEngine,          // ASR
    TTSService: tts.FromSynthesisEngine(synth), // TTS
    OnAudioOut: transport.SendDownlink,     // 下行音频回调
    OnEvent:    dialogApp.HandleEvent,      // 事件回调
})
sess.Start(ctx)

// 传输层收到上行音频时
transport.OnUplink(func(pcm []byte) {
    sess.ProcessAudio(ctx, pcm)
})

// 应用层通过 Command 控制会话
dialogApp.OnCommand(sess.HandleCommand)

上行处理顺序

顺序很重要,影响打断检测和回声抑制:

  1. 传输层解码 → PCM
  2. 可选降噪(RNNoise / WebRTC AEC3)
  3. VAD(在回声抑制前,确保 barge-in 可用)
  4. ASR 识别
  5. 事件通知应用层

LLM → TTS 流式路径

Dialog 应用以 CmdTTSStream 命令流式推送 LLM token:

  • TextSegmenter:首段可在逗号处断开(≥6 字符)以降低延迟;后续仅在句末标点断开
  • Speaker:合成与播放并行(prefetch=3),重叠 TTS 与播放
  • WebRTC 模式启用 PaceRealtime,避免 RTP 突发写入

与灵语的关系

灵语平台的语音通话能力构建在 protocol/voice 之上。SIP 信令与媒体部署详见 灵语相关知识

相关地址

此页面对您有帮助吗?

本页内容