S2S与GPT-4o:开源语音AI流水线选型拆解
2026/9/12 9:28:17 网站建设 项目流程

S2S与GPT-4o:开源语音AI流水线选型拆解

【免费下载链接】speech-to-speechBuild voice agents with open-source models项目地址: https://gitcode.com/GitHub_Trending/sp/speech-to-speech

语音对话走云端 Realtime API,每次请求都计费,录音留在厂商服务器。Hugging Face 开源项目 speech-to-speech(后文简称 S2S)把语音 agent 拆成 VAD、STT、LLM、TTS 四个独立进程。每站可换模型,整套能全本地跑,接口兼容 OpenAI Realtime 事件集。

开源语音AI项目定位:S2S 是什么,不是什么

speech-to-speech 是级联管道,不是单一模型。语音活动检测、识别、语言模型、合成是四个独立进程,各自一个线程,数据靠队列流动。它也不是端到端:LLM 槽位只收文本,音频的进出由另外三站完成。默认组合是本地 Parakeet TDT 识别、云端 OpenAI 语言模型、本地 Qwen3-TTS 出声。与 GPT-4o Realtime API 的差异在机制层:后者把整条链路封在一个闭源模型里,对外只暴露参数;这条管道把每一站做成可单独替换的进程,协议层说的还是同一套 Realtime 事件。对客户端来说,S2S 就是一个换了地址的 Realtime 端点,OpenAI Agents SDK 的原生 WebSocket 与 WebRTC 传输都经过测试,连接代码不用改。

VAD-STT-LLM-TWS 四段管道:数据流经的工位

数据路径很直:客户端以 base64 送 PCM,服务端重采样到 16 kHz、按 512 采样分块,然后过四个工位。整条链路跑在 FastAPI 服务里,每个会话独占一个队列化的管线单元。

工位一:语音活动检测。PCM 块进入 Silero VAD v5,判定说话起止与轮次。Smart Turn v3.2 按内容与韵律复核断句,减少句中停顿被当成说完。src/speech_to_speech/VAD/

工位二:语音转文本。完整语音段送识别后端,转写写入对话上下文。开启增量转写后,说话过程中即有部分内容流出。src/speech_to_speech/STT/

工位三:语言模型。LLM 流式产出回复与工具调用,经统一后处理器按序入队给 TTS,音频不抢文本。src/speech_to_speech/LLM/

工位四:文本转语音。TTS 合成 16 kHz PCM,以 delta 事件流回客户端。用户开口即打断:生成计数器使旧响应失效,立刻回到监听。src/speech_to_speech/TTS/

模型替换自由度:每站能换哪些人

重点不在清单长度,而在每站都能单独换人:

环节可选模型适用场景
VADSilero VAD v5 + Smart Turn(内置)轮次判定、打断复核
STTParakeet TDT(默认)25 种欧洲语言,低延迟默认项
STTWhisper / Faster Whisper / MLX 系列多语言,Apple Silicon 专用
STTParaformer(FunASR)中文场景
STTOpenAI 兼容端点识别指向自建 vLLM 或云端转录
LLMresponses-api / chat-completionsOpenAI、HF Inference、OpenRouter、vLLM、llama.cpp
LLMtransformers / mlx-lm 进程内全本地,不碰外网
TTSQwen3-TTS(默认)多语言默认项
TTSKokoro / Pocket / ChatTTS / OmniVoice / MMS声音克隆、CPU 低成本、中英等

选择靠三个旗标:--stt--llm_backend--tts--language auto时 STT 逐句检测语言并转交 LLM。语言覆盖取决于 STT 与 TTS 的组合,而非管道本身。STT 指向独立转录服务(vLLM 挂 Qwen3-ASR、OpenAI 转录)的用法见 OpenAI 兼容 STT 文档。

部署路径:容器化、服务器-客户端、纯本地

容器化。docker compose up起两个容器:llama.cpp 在 8080 端口提供 Gemma 4,Realtime 服务占 8765,都预留 GPU,模型缓存挂到本地目录,重启不重新下载。配置见 docker-compose.yml。

服务器-客户端。服务端跑serve,客户端用talk/v1/realtime的 WebSocket 或 WebRTC;WebRTC 走 Opus 媒体轨,JSON 事件走数据通道。默认只绑 127.0.0.1,--host 0.0.0.0才对外。

纯本地。local一条命令把服务端与麦克风客户端合成一个进程。LLM 指向 llama.cpp,权重缓存后设HF_HUB_OFFLINE=1即可离线运行。

成本·隐私·可控性:与 GPT-4o 的对比表

维度S2S(开源语音AI)GPT-4o Realtime(商业)
API 费用本地免费;LLM 指云端仍按次计费按请求计量
数据归属全本地时录音不出机器音频进厂商云端
定制深度任一站可换,工具与提示词可改只调 API 暴露的参数

S2S 的 LLM 槽位支持三种接法:本地推理、自建 vLLM/llama.cpp、商业 API,费用曲线可调。全本地时按次计费归零;STT/TTS 留本地、LLM 走云端,音频部分不出内网。另开--enable_llm_proxy后,服务端把配置的 LLM 原样转发成 OpenAI 兼容端点,摘要、标题等旁路任务与语音会话并行,互不占用。

谁该选 S2S,谁该绕道

适合:

  • 音频不出内网是硬需求:金融、医疗、现场机器人
  • 做语音 agent 产品:这条管道已是数千台 Reachy Mini 机器人的生产对话后端
  • 多硬件混布:CUDA、Apple Silicon、CPU 各有后端
  • 存量 OpenAI Realtime 客户端要迁自托管:只换端点

不适合:

  • 没 GPU 也没预算,想五分钟看到效果:商业 API 即插即用
  • 需要完整的 OpenAI Realtime 功能面:S2S 只实现核心 GA 事件集,README 写明不承诺完全等价
  • 团队没有依赖治理精力:每个后端是独立 extra,存在已知版本冲突,如 DeepFilterNet 与 Pocket TTS 的 numpy 冲突

尾声:级联架构的下一步

端到端语音模型在快速演进,级联管线没有因此失去位置。两者不互斥,区别在链路从哪一刀切。S2S 的 LLM 槽位能直接接端到端音频模型:--stt none跳过识别站,VAD 完成的音频段直接送模型。今天跑开源链路,明天换端到端新模型,客户端的 Realtime 代码不用动。商业端点兼容层会持续压低迁移成本,自托管的竞争力将更多来自硬件与数据边界,而不是功能差距。对做语音产品的团队,可替换性比单模型更实在。

【免费下载链接】speech-to-speechBuild voice agents with open-source models项目地址: https://gitcode.com/GitHub_Trending/sp/speech-to-speech

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询