VERBI - 语音助手 🎙️
动机 ✨✨✨
欢迎来到语音助手项目!🎙️ 我们的目标是创建一个模块化的语音助手应用程序,让您可以试验各种组件的最先进(SOTA)模型。模块化结构提供了灵活性,使您能够在不同的转录、响应生成和文本转语音(TTS)的SOTA模型之间进行选择。这种方法有利于轻松测试和比较不同的模型,使其成为语音助手技术研究和开发的理想平台。无论您是开发者、研究人员还是爱好者,这个项目都适合您!
特性 🧰
- 模块化设计:轻松在不同的转录、响应生成和TTS模型之间切换。
- 支持多个API:集成了OpenAI、Groq和Deepgram API,同时为本地模型预留了位置。
- 音频录制和播放:从麦克风录制音频并播放生成的语音。
- 配置管理:集中在
config.py
中进行配置,便于设置和管理。
项目结构 📂
voice_assistant/
├── voice_assistant/
│ ├── __init__.py
│ ├── audio.py
│ ├── api_key_manager.py
│ ├── config.py
│ ├── transcription.py
│ ├── response_generation.py
│ ├── text_to_speech.py
│ ├── utils.py
│ ├── local_tts_api.py
│ ├── local_tts_generation.py
├── .env
├── run_voice_assistant.py
├── setup.py
├── requirements.txt
└── README.md
设置说明 📋
前提条件 ✅
- Python 3.10 或更高版本
- 虚拟环境(推荐)
逐步说明 🔢
- 📥 克隆仓库
git clone https://github.com/PromtEngineer/Verbi.git
cd Verbi
- 🐍 设置虚拟环境
使用venv
:
python -m venv venv
source venv/bin/activate # 在Windows上使用 `venv\Scripts\activate`
使用conda
:
conda create --name verbi python=3.10
conda activate verbi
- 📦 安装所需包
pip install -r requirements.txt
- 🛠️ 设置环境变量
在根目录创建一个.env
文件并添加您的API密钥:
OPENAI_API_KEY=your_openai_api_key
GROQ_API_KEY=your_groq_api_key
DEEPGRAM_API_KEY=your_deepgram_api_key
LOCAL_MODEL_PATH=path/to/local/model
- 🧩 配置模型
编辑config.py以选择您想使用的模型:
class Config:
# 模型选择
TRANSCRIPTION_MODEL = 'groq' # 选项: 'openai', 'groq', 'deepgram', 'fastwhisperapi' 'local'
RESPONSE_MODEL = 'groq' # 选项: 'openai', 'groq', 'ollama', 'local'
TTS_MODEL = 'deepgram' # 选项: 'openai', 'deepgram', 'elevenlabs', 'local', 'melotts'
# API密钥和路径
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
GROQ_API_KEY = os.getenv("GROQ_API_KEY")
DEEPGRAM_API_KEY = os.getenv("DEEPGRAM_API_KEY")
LOCAL_MODEL_PATH = os.getenv("LOCAL_MODEL_PATH")
如果您通过Ollama在本地运行LLM,请确保在启动verbi之前Ollama服务器正在运行。
- 🔊 配置ElevenLabs Jarvis的声音
- 语音样本在这里。
- 按照此链接将Jarvis的声音添加到您的ElevenLabs账户。
- 将声音命名为'Paul J.',或者如果您更喜欢不同的名称,请确保它与text_to_speech.py文件中的ELEVENLABS_VOICE_ID变量匹配。
- 🏃 运行语音助手
python run_voice_assistant.py
-
🎤 安装FastWhisperAPI
如果您需要本地转录模型,这是可选步骤
克隆仓库
cd.. git clone https://github.com/3choff/FastWhisperAPI.git cd FastWhisperAPI
安装所需包:
pip install -r requirements.txt
运行API
fastapi run main.py
替代设置和运行方法
API也可以直接在Docker容器或Google Colab中运行。
Docker: 构建 Docker 容器:
docker build -t fastwhisperapi .
运行容器
docker run -p 8000:8000 fastwhisperapi
关于 Google Colab 方法,请参阅仓库文档:https://github.com/3choff/FastWhisperAPI/blob/main/README.md
-
🎤 安装本地 TTS - MeloTTS
如果您需要本地文本转语音模型,这是可选步骤
从 Github 安装 MeloTTS
使用以下链接为您的操作系统安装 MeloTTS。
一旦软件包安装在您的本地虚拟环境中,您可以使用以下命令启动 API 服务器。
python voice_assistant/local_tts_api.py
local_tts_api.py
文件实现了一个 fastapi 服务器,它将监听传入的文本并使用 MeloTTS 模型生成音频。 为了使用本地 TTS 模型,您需要更新config.py
文件,设置:TTS_MODEL = 'melotts' # 选项:'openai'、'deepgram'、'elevenlabs'、'local'、'melotts'
您可以运行主文件开始使用带有本地模型的 verbi。
模型选项 ⚙️
转录模型 🎤
- OpenAI:使用 OpenAI 的 Whisper 模型。
- Groq:使用 Groq 的 Whisper-large-v3 模型。
- Deepgram:使用 Deepgram 的转录模型。
- FastWhisperAPI:使用 FastWhisperAPI,一个由 Faster Whisper 驱动的本地转录 API。
- Local:本地语音转文本(STT)模型的占位符。
响应生成模型 💬
- OpenAI:使用 OpenAI 的 GPT-4 模型。
- Groq:使用 Groq 的 LLaMA 模型。
- Ollama:使用通过 Ollama 提供的任何模型。
- Local:本地语言模型的占位符。
文本转语音(TTS)模型 🔊
- OpenAI:使用 OpenAI 的 TTS 模型,配合 'fable' 声音。
- Deepgram:使用 Deepgram 的 TTS 模型,配合 'aura-angus-en' 声音。
- ElevenLabs:使用 ElevenLabs 的 TTS 模型,配合 'Paul J.' 声音。
- Local:本地 TTS 模型的占位符。
详细模块描述 📘
run_verbi.py
:运行语音助手的主脚本。voice_assistant/config.py
:管理配置设置和 API 密钥。voice_assistant/api_key_manager.py
:根据配置的模型处理 API 密钥的检索。voice_assistant/audio.py
:用于录制和播放音频的功能。voice_assistant/transcription.py
:使用各种 API 管理音频转录。voice_assistant/response_generation.py
:使用各种语言模型处理响应生成。voice_assistant/text_to_speech.py
:管理将文本响应转换为语音。voice_assistant/utils.py
:包含实用功能,如删除文件。voice_assistant/local_tts_api.py
:包含运行 MeloTTS 模型的 API 实现。voice_assistant/local_tts_generation.py
:包含使用 MeloTTS API 生成音频的代码。voice_assistant/__init__.py
:初始化voice_assistant
包。
路线图 🛤️🛤️🛤️
以下是语音助手项目的下一步计划:
- 添加流式处理支持:实现音频输入和输出的实时流式处理。
- 添加 ElevenLabs 和增强 Deepgram 的 TTS 支持:整合额外的 TTS 选项,以提高质量和多样性。
- 添加填充音频:在等待模型响应时包含背景或填充音频,以增强用户体验。
- 全面添加本地模型支持:扩展对转录、响应生成和 TTS 的本地模型支持。
贡献 🤝
我们欢迎社区的贡献!如果您想帮助改进这个项目,请遵循以下步骤:
- Fork 这个仓库。
- 创建一个新分支(
git checkout -b feature-branch
)。 - 进行更改并提交(
git commit -m '添加新功能'
)。 - 推送到分支(
git push origin feature-branch
)。 - 开启一个详细说明您更改的拉取请求。