40 lines
2.2 KiB
Markdown
40 lines
2.2 KiB
Markdown
# magic-sonar
|
||
|
||
智语声呐
|
||
|
||
- [AI 外呼 SaaS 调研与架构指南](docs/research/ai-outbound-saas.md)
|
||
- [公网模型外呼目标架构](docs/architecture/public-model-outbound.md)
|
||
|
||
## 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 排除。仓库只保留[脱敏日志样本](docs/examples/sip-signaling.redacted.log)。
|
||
|
||
### 离线验证
|
||
|
||
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/线路能力验证。
|