magic-sonar

智语声呐

SIP/RTP 单次呼出 MVP

cmd/sip-demo 通过 UDP 向 61.132.228.221:5060 发起一通 IP 白名单、无鉴权呼叫:

  • 主叫固定为企业 code BD93205882,被叫按 7089 + SIP_TEST_NUMBER 生成;
  • 协商 G.711 A-law/μ-law、20 ms RTP 帧,播放百练合成披露话术和 WAV/内置测试音;
  • 上行连续三帧达到 VAD 阈值时立即停止下行播放,用于验证最小打断链路;
  • 上下行分别录为 recordings/-rx.wav、recordings/-tx.wav
  • SIP 请求、响应和通话事件写入 logs/sip.log,号码在写入前脱敏。

真实号码、API Key、运行日志和录音均被 .gitignore 排除。仓库只保留脱敏日志样本

离线验证

go test ./...
go build ./cmd/sip-demo

测试使用本地 WebSocket/RTP 端点,不调用百练或 SIP 服务器。

经授权的内部联调

确认执行机出口 IP 已加入白名单、UDP SIP/RTP 可达,再仅通过环境提供号码和凭据:

export SIP_TEST_NUMBER='<已授权内部测试号码>'
export BAILIAN_BASE_URL='wss://<WorkspaceId>.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference'
export BAILIAN_API_KEY='<server-side-key>'
export BAILIAN_TTS_VOICE='<cosyvoice-v3.5-plus voice-design ID>'
go run ./cmd/sip-demo

BAILIAN_BASE_URL 必须是上述北京地域工作空间的 CosyVoice WebSocket 完整端点;BAILIAN_TTS_VOICE 必须是在同一工作空间中为 cosyvoice-v3.5-plus 创建的声音设计 voice ID,该模型不支持 longxiaochun 等系统音色。程序不拼接、回退或重试其他路径。除 loopback 测试外只接受 WSS。Key 只进入 WebSocket 握手的 Bearer 请求头,不写日志。可用 -audio music.wav 追加单声道 PCM16 WAV;未指定时追加两秒测试音。NAT 环境通过 SIP_ADVERTISE_IP 或 -advertise-ip 指定 SDP/Via 公网 IP。

本 MVP 不做注册、鉴权、重拨、ASR/LLM、AEC 或抖动缓冲。打断依赖线路提供独立上行;若远端回声触发误打断,用 -vad-threshold 校准,正式方案仍需 AEC/线路能力验证。

S
Description
智语声呐
Readme
82 KiB
Languages
Go 100%