yolo8+ASR+NLP+TTS(视觉语音助手)

发布于:2025-07-18 ⋅ 阅读:(16) ⋅ 点赞:(0)

🧩 模块总览:

步骤 模块 作用
麦克风录音(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 webrtcvad

SAMPLE_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:
            continue
        if vad.is_speech(frame.tobytes(), SAMPLE_RATE):
            return True
    return False

if __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 write

model = 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_audio
    audio = record_audio()
    save_audio(audio)
    print("识别结果:", transcribe("temp.wav"))

✅ 模块③:调用 DeepSeek 接口进行对话

🔧 安装:

pip install requests

 ✅ 示例代码

import requests

API_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 ModelManager

model_name = "tts_models/zh-CN/baker/tacotron2-DDC-GST"
manager = ModelManager()
paths = manager.download_model(model_name)
print("模型下载完成,路径为:", paths)

 

先搁置,后面在写


网站公告

今日签到

点亮在社区的每一天
去签到