跳到正文

speech-gateway 语音网关 ​

speech-gateway 目录收拢平台的语音网关服务,分两类:

  • 本地 Go 全双工音频网关 speech-gateway/audio-fork-server(默认端口 10091):桥接 FreeSWITCH mod_audio_fork 与本地 sherpa-asr-server / sherpa-tts-server,提供上下行并发的全双工语音与 开嗓打断,属于根 bun run dev 默认启动组。详见 audio-fork-server 说明。
  • 可选的第三方云端语音网关(阿里云 / Azure):把云端 ASR / TTS 封装成平台现有调用面可接入的 接口,使 callflow-esl、FreeSWITCH mod_audio_fork 和管理台可以通过配置切换后端。这里的“兼容” 仅指必要调用契约与响应外形;开嗓事件、断句、语言检测和供应商原生能力并不完全相同。云端网关不在 默认启动组,按需启动。

子模块清单(云端网关) ​

模块目录供应商ASR 协议与默认端口TTS 协议与默认端口独立构建支持
speech-gateway/aliyun-speech-gateway阿里云 NLSWebSocket ws://127.0.0.1:10097/audioHTTP POST /tts + GET /wav/:file
POST /tts-stream + GET /tts-stream/:file.{pcm,mp3}
默认 9081
Windows / Linux 独立二进制
speech-gateway/azure-speech-gatewayAzure Cognitive ServicesWebSocket ws://127.0.0.1:10098/audioHTTP POST /tts + GET /wav/:file
POST /tts-stream + GET /tts-stream/:file.mp3
默认 9082
Windows / Linux 独立二进制

能力差异 ​

能力阿里云 NLS 网关Azure Speech 网关
ASR 输入 / 接入16kHz mono PCM,WS /audio,audio.drachtio.org16kHz 16-bit mono PCM,WS /audio,audio.drachtio.org
开嗓事件有;SentenceBegin 下发空文本 speechStarted 帧无独立开嗓回调;首个 recognizing 才能感知
partial / finalTranscriptionResultChanged / SentenceEndrecognizing / recognized
服务端断句有;支持静音阈值、语义断句与多阈值配置有;由 Azure 连续识别会话负责整句回调
零长二进制 flush支持;结束阿里云识别会话并收尾支持;结束 Azure 识别会话并收尾
语言由当前阿里云应用与识别配置决定;本网关无自动语言候选列表autoDetectLanguages 候选自动检测,默认 zh-CN、en-US
TTS 普通输出WAV 文件与 /wav/:fileWAV 文件与 /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

详细文档 ​

文档与代码在同一仓库维护,现有 Markdown 是唯一内容源。