Loading...
正在加载...
请稍候

Go 开源 AI 相关项目对比分析

✨步子哥 (steper) 2025年09月24日 07:19
下面给出一份「2024-09 至今」仍活跃、**纯 Go 语音(speech)**方向的深度学习/AI 开源库清单,并做横向对比。 重点考察 3 个维度: 1. 是否「Go 源码级」可用(而非仅 Go 调用 Python/C++) 2. 是否内置预训练权重或端到端 demo 3. 是否支持GPU/CUDA或边缘侧交叉编译 项目 场景 核心算法/模型 预训练权重 Go 原生程度 硬件加速 活跃情况* sherpa-onnx [^76^] ASR/TTS/声纹/语种 Transformer/CTC/Transducer 全家桶 ✅ 官方 200+ 模型 纯 Go 绑定 ONNX Runtime ✅ ONNX-GPU 周 commit vosk-api-go [^86^] 离线 ASR Kaldi TDNN/FST ✅ 中文/英文 多语种 Go 封装 C++,需 libvosk.so ❌ CPU only 月 commit go-astideepspeech [^79^] 英文 ASR Mozilla DeepSpeech RNN ✅ en-US 0.9.3 模型 Go 绑定 deepspeech.so ❌ CPU only 2024 后基本停更 whisper.cpp+go-bind 多语种 ASR OpenAI Whisper encoder/decoder 自行下载 ggml 权重 Go 绑定 whisper.cpp ✅ OpenCL/Metal/CUDA 社区维护 Eino [^77^][^87^] 大模型语音助手 LLM + 语音链任意组合 无语音专用权,需接外部 纯 Go 编排框架 ✅ 取决于下游模型 字节跳动持续迭代 *活跃情况以 2024-09 以后 GitHub commit 频率为参考。 ---- 深入比较 1. sherpa-onnx • 2024-09 新增 Go 1.22+ plugin 模式,可 go run 直接拉模型;同一代码在 Windows/Linux/macOS/Android/iOS 交叉编译通过。 • 支持 流式 ASR(subtitle 级延迟)(Transducer)、非流式(Paraformer-Large)、TTS(VITS)、声纹(ECAPA-TDNN)。 • 官方提供「sherpa-onnx-go」子仓库,示例一行代码加载模型: recognizer, err := sherpa.NewOfflineRecognizer("paraformer-zh-14k.onnx", config) • GPU 路径:ONNX Runtime 官方 CUDA ExecutionProvider,sherpa-onnx 0.10 之后自动检测,无需写 CUDA 代码。 • 社区:每周合并 PR,2025-08 刚发 v1.10,新增 SenseVoice 多语种+情绪识别模型 。 2. vosk-api-go • 底层仍是 Kaldi,权重体积 50 MB-300 MB,适合嵌入式。 • Go 层仅做 cgo 封装,交叉编译需携带 libvosk.so,边缘侧容器镜像体积 > 80 MB。 • 不支持流式 Transformer,长音频识别延迟高;优势是 中文小模型准确率优于 Whisper-tiny。 3. go-astideepspeech • 仅英文,模型 2019 年后不再更新,WER 落后 Whisper 约 30 %。 • 依赖 libdeepspeech.so,2024-09 以后仓库无提交,已处于 archived 状态 。 4. whisper.cpp + go-bind • 非官方,但社区 star 数高;通过 cgo 调用 whisper.cpp 的 ggml 后端。 • 支持 OpenCL/Metal/CUDA 后端,Apple M 系列可用 GPU。 • 缺陷:Go 层只提供「整段推理」,流式需要额外分段逻辑;无官方预训练权重托管,需手动下载。 5. Eino • 不是语音专用框架,而是「LLM 应用编排引擎」;语音能力来自接入的外部模型(Whisper API、Sherpa-RPC)。 • 优势:纯 Go 写 pipeline,ChatModel/Tool/Retriever 等组件可插拔,适合快速搭「语音输入 → LLM → 语音输出」助手。 • 缺点:本身不带权重,语音质量取决于下游服务;GPU 加速也取决于下游模型实现 。 ---- 结论(2025-09 现况) • 若你要「纯 Go 源码级 + 预训练权重 + GPU」三样全占,目前唯一优选是 sherpa-onnx; • 边缘侧超小镜像(<30 MB)可接受英文-only,选 vosk-api-go; • 需要 Whisper 系列多语种且愿意自己管理 ggml 权重,用 whisper.cpp+go-bind; • 只想快速搭大模型语音助手,语音部分直接调 API,则用 Eino 做编排即可。

讨论回复

1 条回复
✨步子哥 (steper) #1
09-24 07:24
目前用 Go 语言原生开发 且 可直接本地运行 的 TTS(文本转语音)开源方案不多,但已有两个可以“开箱即用”的项目,均支持 离线合成 和 跨平台编译,无需 Python 环境,也无需调用云端 API: 名称 协议 是否离线 内置模型/权重 音质 活跃情况* HTGO-TTS MIT ✅ 离线 调用系统 TTS(Windows)或嵌入 espeak-ng 一般(机器声) 2024-10 仍在发版 edge-tts-go MIT ❌ 需联网 调用 Microsoft Edge 在线服务 接近真人 2024-04 持续维护 *以 GitHub 2024-09 以后 commit 为参考。 ---- 1. HTGO-TTS(完全离线) ---- • 原理: • Windows 下直接调用 SAPI 接口,由系统自带语音包发声; • Linux/macOS 下通过 espeak-ng 合成,无需网络。 • 安装 & 运行(Go 1.22+): go get github.com/hegedustibor/htgo-tts package main import "github.com/hegedustibor/htgo-tts" func main() { speech := htgotts.New("en") // 也可 "zh" 等 speech.Speak("Hello, this is a pure Go TTS demo.") } • 特点: • 单文件即可编译;体积 < 10 MB;适合嵌入式或离线提示场景。 • 缺点:音色固定、机器感明显,不支持神经网络级高质量语音。 ---- 2. edge-tts-go(云端,但免费) ---- • 原理:封装 Microsoft Edge 浏览器「大声朗读」接口,在线合成,音质接近真人,支持 40+ 语种、多种风格。 • 安装 & 运行: go install github.com/wujunwei928/edge-tts-go/cmd/edge-tts-go@latest edge-tts-go -t "你好,世界" -v zh-CN-XiaoxiaoNeural -o hello.mp3 • 特点: • 无需登录、零成本;可下载 MP3 或直接播放。 • 缺点:必须联网;大规模商用需留意微软服务条款。 ---- 结论 • 若你要 纯 Go 源码 + 离线 + 零依赖,目前唯一可用的是 HTGO-TTS; • 若能接受 联网,想要 高保真、多音色,用 edge-tts-go 即可 10 行代码搞定。 • 目前 Go 圈尚无「原生实现 Tacotron2/FastSpeech2 + 预训练权重」的端到端离线神经 TTS 框架;需要神经级音质只能先走 Python 端(Coqui-TTS、TensorFlowTTS 等)再通过 RPC/ONNX 给 Go 调用。