语音能力
音频媒体管道
编解码、重采样、RNNoise 降噪、路由与事件总线。
media 包提供音频处理的底层能力,用于在 ASR/TTS 和传输层之间做格式转换和质量增强。
处理能力
| 模块 | 说明 |
|---|---|
codec | G.711 (PCMU/PCMA)、G.722、Opus、PCM 编解码 |
resampler | 采样率转换(如 8kHz ↔ 16kHz) |
rnnoise | RNNoise AI 降噪(CGO,可选编译) |
lowpass | 低通滤波 |
router | 多路音频路由 |
eventbus | 音频事件总线 |
encoder | 流式编码器池(Opus、G.711 等) |
管道组装
import "github.com/LingByte/lingllm/media"
pipeline := media.NewPipeline(
media.CodecNode(), // 编解码
media.ResampleNode(), // 重采样 8k→16k
media.DenoiseNode(), // RNNoise 降噪
media.LowPassNode(), // 低通滤波
media.RouteNode(), // 路由分发
)
pipeline.Process(ctx, audioFrame)编解码器
media/encoder 提供多种编码格式的注册表和对象池:
| 编码 | 说明 |
|---|---|
pcm | 原始 PCM |
pcmu / pcma | G.711 μ-law / A-law |
g722 | G.722 宽带语音 |
opus | Opus(WebRTC 常用) |
enc := encoder.Get("opus")
encoded, _ := enc.Encode(pcmFrame)在语音会话中的角色
100%
- 上行:传输层音频 → 解码 → 重采样到 16kHz → 降噪 → VAD → ASR
- 下行:TTS PCM → 编码为目标格式 → 传输层发送
RNNoise 降噪
RNNoise 通过 CGO 编译,构建时需启用 CGO:
CGO_ENABLED=1 go build ./...未启用 CGO 时自动降级为 stub 实现(透传音频)。
相关地址
| 类型 | 地址 |
|---|---|
| 源码 | github.com/LingByte/lingllm/tree/main/media |
| Go 文档 | pkg.go.dev/github.com/LingByte/lingllm/media |
| 编解码器 | media/encoder |
| RNNoise | media/rnnoise |
| 站内文档 | 语音会话协议 · 灵语 WebRTC |
此页面对您有帮助吗?