yolo8+ASR+NLP+TTS(视觉语音助手)
🧩 模块总览:
步骤 | 模块 | 作用 |
---|---|---|
① | 麦克风录音(VAD支持) | 获取语音并判断是否有人说话 |
② | Whisper语音识别 | 把语音内容识别为文字 |
③ | DeepSeek 聊天接口 | 发送用户提问并获取 AI 回复 |
④ | edge-tts 朗读回答 | 把 DeepSeek 回答读出来 |
⑤ | 整合成语音助手主循环 | 全流程结合:说话 → 回答 → 播报 |
以下是构建语音助手所用的 每个依赖库的功能介绍
📦 所有依赖包及其作用
库名称 | pip 安装命令 | 功能描述 |
---|---|---|
sounddevice | pip install sounddevice | 🎤 通过麦克风录音,支持 NumPy 格式的音频流 |
scipy | pip install scipy | 🧪 用于将音频保存为 .wav 文件格式(scipy.io.wavfile.write ) |
numpy | pip install numpy | 🔢 音频处理的核心库,存储录音数据等数组操作 |
webrtcvad | pip install webrtcvad | 🛑 判断当前音频中是否“有人在说话”(VAD:语音活动检测) |
whisper | pip install openai-whisper | 🧠 OpenAI 的语音识别模型,支持中英文转文字 |
ffmpeg | brew install ffmpeg (Mac 必装) | 🎞 Whisper 使用 ffmpeg 处理音频格式,它是底层音视频工具 |
requests | pip install requests | 🌐 与 DeepSeek 的接口通信(发送问题,获取回复) |
edge-tts | pip install edge-tts | 🗣️ 使用微软 Edge 浏览器的 TTS 引擎,把文本朗读成语音(保存为 mp3) |
subprocess | Python 标准库 | 🧾 用于调用系统命令(如播放 mp3 文件) |
cv2(可选) | pip install opencv-python | 📷 摄像头图像捕捉(如启用视觉功能时使用) |
tempfile | Python 标准库 | 🧹 自动管理临时音频文件或图片文件 |
threading | Python 标准库 | 🔁 异步执行任务(如边录音边播放,防止阻塞) |
queue | Python 标准库 | 🧺 用于线程间音频数据的传递或控制 |
🧩 每个模块与依赖关系图示:
✅ 模块①:麦克风录音 + 说话检测(VAD)
🔧 安装依赖:
pip install sounddevice webrtcvad numpy scipy
✅ 示例代码
import sounddevice as sd
import numpy as np
from scipy.io.wavfile import write
import webrtcvadSAMPLE_RATE = 16000
DURATION = 1 # 秒
vad = webrtcvad.Vad(1)def record_audio():audio = sd.rec(int(SAMPLE_RATE * DURATION), samplerate=SAMPLE_RATE, channels=1, dtype='int16')sd.wait()return audio.squeeze()def is_speech(audio):frame_size = int(SAMPLE_RATE * 30 / 1000)for i in range(0, len(audio), frame_size):frame = audio[i:i+frame_size]if len(frame) < frame_size:continueif vad.is_speech(frame.tobytes(), SAMPLE_RATE):return Truereturn Falseif __name__ == "__main__":print("开始监听...")while True:audio = record_audio()if is_speech(audio):print("[检测] 有人说话")else:print("[检测] 安静")
✅ 模块②:使用 Whisper 识别中文语音
🔧 安装:
openai-whisper和ffmpeg已经在【
yolo8+声纹识别(实时字幕)】介绍如何安装
✅ 示例代码
import whisper
from scipy.io.wavfile import writemodel = whisper.load_model("base") # 支持中文def save_audio(audio, path="temp.wav"):write(path, 16000, audio)def transcribe(path):result = model.transcribe(path, language="zh")return result["text"]if __name__ == "__main__":from module1 import record_audioaudio = record_audio()save_audio(audio)print("识别结果:", transcribe("temp.wav"))
✅ 模块③:调用 DeepSeek 接口进行对话
🔧 安装:
pip install requests
✅ 示例代码
import requestsAPI_KEY = "你的DeepSeek_API_Key"def chat_with_deepseek(text):url = "https://api.deepseek.com/v1/chat/completions"headers = {"Authorization": f"Bearer {API_KEY}","Content-Type": "application/json"}payload = {"model": "deepseek-chat","messages": [{"role": "system", "content": "你是一个语音助手"},{"role": "user", "content": text}]}resp = requests.post(url, json=payload, headers=headers)return resp.json()["choices"][0]["message"]["content"]if __name__ == "__main__":print(chat_with_deepseek("你好"))
✅ 模块④:使用TTS 朗读语音回答
🗣️ 主流 Python 文本转语音(TTS)库/方案对比
方案名称 | 是否联网 | 中文支持 | 安装难度 | 声音自然度 | 可自定义声音 | 跨平台 | 朗读延迟 | 备注说明 |
---|---|---|---|---|---|---|---|---|
✅ edge-tts | ✅ 是 | ✅ 强 | 中等 | ⭐⭐⭐⭐ | 部分支持(系统语音) | ✅ 是 | ⭐⭐ | 接口调用微软 Edge 浏览器 TTS,效果好 |
✅ pyttsx3 | ❌ 否 | ❌ 弱(Windows 支持) | 简单 | ⭐⭐ | ✅ 支持本地语音合成器 | ✅ 是 | ⭐⭐⭐ | 离线,本地语音引擎(如 SAPI5, NSSpeech) |
✅ gTTS | ✅ 是 | ✅ 支持 | 简单 | ⭐⭐⭐⭐ | ❌ 不支持 | ✅ 是 | ⭐⭐⭐ | Google 接口,不稳定,有速率限制 |
✅ Bark | ❌ 否 | ❌ 无中文 | 非常复杂 | ⭐⭐⭐⭐⭐ | ✅ 可训练音色 | ✅ 是 | ⭐⭐ | 需 GPU,强大但重型 |
✅ TTS by Coqui | ❌ 否 | ✅ 支持 | 较复杂 | ⭐⭐⭐⭐ | ✅ 可微调 | ✅ 是 |
使用TTS by Coqui
是一个强大、开源且支持中文的 TTS 引擎,适合本地部署,音质优秀。
pip install TTS
如果安装太慢,建议使用清华镜像:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple TTS
✅ 下载语音模型:使用 Python 手动下载模型(推荐)
from TTS.utils.manage import ModelManagermodel_name = "tts_models/zh-CN/baker/tacotron2-DDC-GST"
manager = ModelManager()
paths = manager.download_model(model_name)
print("模型下载完成,路径为:", paths)
先搁置,后面在写