Verbi
模块化语音助手框架,STT+LLM+TTS三环节均可自由切换云端/本地模型,Python3.10+快
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
模块化语音助手框架,STT+LLM+TTS三环节均可自由切换云端/本地模型,Python3.10+快
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有想过,喊一声"帮我查下天气",远端的大模型就能听写、推理、生成语音,一条龙回复回来?这不是什么科幻电影的桥段——今天介绍的这个开源项目,正在把这件事变得触手可及。## 项目背景:模块化语音助手的新范式Verbi(全称 Voice Assistant,发音近似"Verb-i")由 AI 开发者 Prompt Engineer 创建,是一个完全开源的模块化语音助手应用。区别于 Siri、Alexa 等封闭商业产品,Verbi 的设计哲学是**"每个环节都可以自由替换"——你可以在转录、对话生成、语音合成三个环节中,任选不同服务商的不同模型来组合使用。项目基于 Python 3.10+ 开发,通过 pip 一键安装,核心代码约 3000 行,拆分为 8 个独立模块,结构清晰易读。2024 年初开源后即获得语音技术社区关注,GitHub 获 1121 星,对一个垂直领域的小众工具来说增长势头可观。## 核心功能:三大模块的自由组合### 1. 语音转文本(STT)Verbi 支持多种转录引擎的即插即用:OpenAI Whisper(通用稳健)、Groq Whisper-large-v3(速度快、成本低)、Deepgram(支持方言优化)。如果用户有隐私需求,还可以部署本地转录 API——项目内置了对 FastWhisperAPI 的支持,只需在 config.py 中切换 TRANSCRIPTION_MODEL 字段即可。代码层面,transcription.py 封装了统一的 transcribe_audio() 接口,内部通过 if-elif 分发到各服务商的 SDK。这个设计虽然简单,但对于实验场景足够实用——新增一个转录引擎只需加一个 elif 分支。### 2. 大语言模型对话生成(LLM)对话生成同样支持热切换:默认使用 GPT-4o(OpenAI)或 LLaMA-3-8B(Groq),也可切换到本地 Ollama 部署的任意模型。response_generation.py 维护了一个 chat_history 列表,每次对话都会将历史消息传入 LLM 上下文窗口,实现多轮对话能力。对于想要本地化部署的用户,Ollama 方案值得特别关注:Ollama 支持 llama3、mistral、qwen 等数十种开源模型,在配备 8GB+ 显存的 GPU 机器上运行流畅,完全免费、无 API 调用限制,是隐私敏感场景的理想选择。### 3. 文本转语音(TTS)TTS 环节是 Verbi 做得最为丰富的部分,官方支持六种方案:OpenAI TTS(nova 声音)、Deepgram(aura 系列声音)、ElevenLabs(高度拟真的 Paul J. 声音,支持克隆)、Cartesia AI、MeloTTS(本地开源)、Piper(轻量本地)。其中 MeloTTS 和 Piper 都提供本地离线运行选项,响应速度快,适合有实时性要求的场景。### 语音交互流程三个模块通过 run_voice_assistant.py 中的主循环串联:录音 → 转录 → LLM 对话 → TTS 合成 → 播放。audio.py 中使用了 SpeechRecognition 库进行麦克风录音,配合 pygame 播放生成的 WAV 文件。整个流程控制在用户可感知的一轮对话 3-5 秒内完成。## 技术架构:朴实但实用的 Python 风格Verbi 的代码架构称得上"工程化"但并不"过度设计":| 模块 | 文件 | 功能 ||------|------|------|| audio | audio.py | 麦克风录音 + 音频播放 + 能量阈值校准 || transcription | transcription.py | 多引擎转录分发 || response_generation | response_generation.py | LLM 对话生成 || text_to_speech | text_to_speech.py | 多引擎 TTS 分发 || api_key_manager | api_key_manager.py | API 密钥统一管理 || local_tts_api | local_tts_api.py | MeloTTS 本地 API 服务 |依赖管理使用 requirements.txt(约 25 个包),主要依赖 openai、groq、deepgram-sdk、elevenlabs、pygame、SpeechRecognition 等,无需 CUDA 或特殊扩展。setup.py 配置了 pip install 入口,可通过 jarvis 命令直接启动。值得注意的是,项目对错误处理较为简略——各模块主要依赖 try-except 捕获异常并打印日志,没有完善的降级策略。若某个 API 超时或返回异常,用户只能看到控制台错误信息。不过考虑到这是一个实验性项目,这也在情理之中。## 部署体验:门槛有多低?Verbi 的部署分为两种路径:纯云端和本地模型**。纯云端部署(默认推荐):1. 安装 Python 3.10+ 虚拟环境2. pip install -r requirements.txt3. 填写 .env 文件,配置 OpenAI/Groq/Deepgram 三选一 API Key4. python run_voice_assistant.py 启动全程约 10 分钟,无需 GPU,适合有 API 预算的开发者快速验证想法。本地模型部署(进阶):如需离线运行 Ollama(LLM)+ FastWhisperAPI(转录)+ Piper/MeloTTS(TTS),则需要额外步骤:安装 Ollama、拉取模型、启动 FastWhisperAPI Docker 容器或本地服务。整个过程约 30-60 分钟,对 Linux/macOS 用户较为友好,Windows 端可能需要额外调试 PyAudio 驱动问题。## 局限与挑战:不完美之处API 成本不可忽视:若每天使用 2 小时,三大环节全走云端 API,按 OpenAI/Groq/Deepgram 的公开定价,日均成本约 0.5-2 美元,月累计下来并非可以忽略的开销。实时性受限:当前架构是"录完 → 发请求 → 等回复 → 播放"的同步阻塞模式,不支持流式输出。如果想实现边听边回复的真正实时对话,需要对代码进行较大改动。麦克风兼容问题:PyAudio 在不同操作系统上存在兼容性差异,部分 Linux 发行版需要手动安装 portaudio 库才能正常工作。macOS 用户可能遇到权限问题,需要在系统偏好设置中授权麦克风访问。非生产级稳定性:作为一个实验性项目,Verbi 没有单元测试、没有 CI/CD、没有版本化管理,不建议在生产环境中直接使用。## 行业意义:模块化语音 AI 的轻量范本Verbi 的核心价值不在于"做得好不好",而在于它展示了语音 AI 流水线的最小完整形态。过去,开发者想做一个完整的语音对话系统,需要分别调研 STT、LLM、TTS 的 API 文档,理解各自的认证方式、请求格式、错误处理,工作量不小。Verbi 把这些事情打包好了——你只需要改几个配置项,就能快速比较不同模型组合的实际效果。这种"乐高积木"式的设计思路,与 LangChain/LlamaIndex 在文本 AI 领域的模块化实践一脉相承。只不过 Verbi 专注的是语音这一垂直场景,更聚焦、也更易于上手。从更宏观的视角看,随着 Whisper、TTS、LLM 三大能力的开源化,像 Verbi 这样的项目会越来越多。本地运行、性能可接受的语音 AI 助手,正在从"极客玩具"变成"人人可部署"的现实。