speech-gateway 语音网关
speech-gateway 目录收拢平台的语音网关服务,分两类:
- 本地 Go 全双工音频网关
speech-gateway/audio-fork-server(默认端口10091):桥接 FreeSWITCHmod_audio_fork与本地sherpa-asr-server/sherpa-tts-server,提供上下行并发的全双工语音与 开嗓打断,属于根bun run dev默认启动组。详见 audio-fork-server 说明。 - 可选的第三方云端语音网关(阿里云 / Azure):把云端 ASR / TTS 封装成平台现有调用面可接入的 接口,使
callflow-esl、FreeSWITCHmod_audio_fork和管理台可以通过配置切换后端。这里的“兼容” 仅指必要调用契约与响应外形;开嗓事件、断句、语言检测和供应商原生能力并不完全相同。云端网关不在 默认启动组,按需启动。
子模块清单(云端网关)
| 模块目录 | 供应商 | ASR 协议与默认端口 | TTS 协议与默认端口 | 独立构建支持 |
|---|---|---|---|---|
speech-gateway/aliyun-speech-gateway | 阿里云 NLS | WebSocket ws://127.0.0.1:10097/audio | HTTP POST /tts + GET /wav/:filePOST /tts-stream + GET /tts-stream/:file.{pcm,mp3}默认 9081 | Windows / Linux 独立二进制 |
speech-gateway/azure-speech-gateway | Azure Cognitive Services | WebSocket ws://127.0.0.1:10098/audio | HTTP POST /tts + GET /wav/:filePOST /tts-stream + GET /tts-stream/:file.mp3默认 9082 | Windows / Linux 独立二进制 |
能力差异
| 能力 | 阿里云 NLS 网关 | Azure Speech 网关 |
|---|---|---|
| ASR 输入 / 接入 | 16kHz mono PCM,WS /audio,audio.drachtio.org | 16kHz 16-bit mono PCM,WS /audio,audio.drachtio.org |
| 开嗓事件 | 有;SentenceBegin 下发空文本 speechStarted 帧 | 无独立开嗓回调;首个 recognizing 才能感知 |
| partial / final | TranscriptionResultChanged / SentenceEnd | recognizing / recognized |
| 服务端断句 | 有;支持静音阈值、语义断句与多阈值配置 | 有;由 Azure 连续识别会话负责整句回调 |
| 零长二进制 flush | 支持;结束阿里云识别会话并收尾 | 支持;结束 Azure 识别会话并收尾 |
| 语言 | 由当前阿里云应用与识别配置决定;本网关无自动语言候选列表 | autoDetectLanguages 候选自动检测,默认 zh-CN、en-US |
| TTS 普通输出 | WAV 文件与 /wav/:file | WAV 文件与 /wav/:file |
| TTS 流式输出 | PCM / MP3 流与 /tts-stream/:file.{pcm,mp3}(生产推荐 PCM) | MP3 流与 /tts-stream/:file.mp3 |
能力描述以各供应商 README 和当前实现为准。两者共享的是平台调用面,不应据此推断开嗓时机、 断句策略、语言范围、音色或供应商全部能力一致。
快速启动
各网关使用 Bun 运行,并已纳入根目录的 Bun workspaces(speech-gateway/*)统一管理。
根目录启动
bash
# 启动阿里云语音网关(ASR 10097 / TTS 9081)
bun run dev:aliyun-speech
# 启动 Azure 语音网关(ASR 10098 / TTS 9082)
bun run dev:azure-speech单模块目录运行
bash
# 阿里云语音网关
cd speech-gateway/aliyun-speech-gateway
bun run dev
# Azure 语音网关
cd speech-gateway/azure-speech-gateway
bun run dev