当前位置: 首页 > news >正文

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

🧩 模块总览:

步骤模块作用
麦克风录音(VAD支持)获取语音并判断是否有人说话
Whisper语音识别把语音内容识别为文字
DeepSeek 聊天接口发送用户提问并获取 AI 回复
edge-tts 朗读回答把 DeepSeek 回答读出来
整合成语音助手主循环全流程结合:说话 → 回答 → 播报

 以下是构建语音助手所用的 每个依赖库的功能介绍

📦 所有依赖包及其作用

库名称pip 安装命令功能描述
sounddevicepip install sounddevice🎤 通过麦克风录音,支持 NumPy 格式的音频流
scipypip install scipy🧪 用于将音频保存为 .wav 文件格式(scipy.io.wavfile.write
numpypip install numpy🔢 音频处理的核心库,存储录音数据等数组操作
webrtcvadpip install webrtcvad🛑 判断当前音频中是否“有人在说话”(VAD:语音活动检测)
whisperpip install openai-whisper🧠 OpenAI 的语音识别模型,支持中英文转文字
ffmpegbrew install ffmpeg(Mac 必装)🎞 Whisper 使用 ffmpeg 处理音频格式,它是底层音视频工具
requestspip install requests🌐 与 DeepSeek 的接口通信(发送问题,获取回复)
edge-ttspip install edge-tts🗣️ 使用微软 Edge 浏览器的 TTS 引擎,把文本朗读成语音(保存为 mp3)
subprocessPython 标准库🧾 用于调用系统命令(如播放 mp3 文件)
cv2(可选)pip install opencv-python📷 摄像头图像捕捉(如启用视觉功能时使用)
tempfilePython 标准库🧹 自动管理临时音频文件或图片文件
threadingPython 标准库🔁 异步执行任务(如边录音边播放,防止阻塞)
queuePython 标准库🧺 用于线程间音频数据的传递或控制

🧩 每个模块与依赖关系图示:


✅ 模块①:麦克风录音 + 说话检测(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)

 

先搁置,后面在写

http://www.xdnf.cn/news/1137385.html

相关文章:

  • 算法提升之字符串练习-02(字符串哈希)
  • 小红书获取关键词列表API接口详解
  • MongoDB 与MySQL 及es的区别
  • AllDup(重复文件查找)v4.5.70 便携版
  • 基于MATLAB和ZEMAX的光学传递函数与调制传递函数联合仿真
  • 初试Spring AI实现聊天功能
  • mysql——搭建MGR集群
  • 分布式分片策略中,分片数量的评估与选择
  • 基于单片机公交车报站系统/报站器
  • Jenkins Git Parameter 分支不显示前缀origin/或repo/
  • 2024年ASOC SCI2区TOP,基于干扰模型的灰狼优化算法IIE-GWO+复杂丘陵地形农业无人机轨迹规划,深度解析+性能实测
  • 医院各类不良事件上报,PHP+vscode+vue2+element+laravel8+mysql5.7不良事件管理系统源代码,成品源码,不良事件管理系统
  • 板凳-------Mysql cookbook学习 (十一--------12)
  • Python22 —— 标准库(random库)
  • Linux的Ext系列文件系统
  • 【JVM】深入理解 JVM 类加载器
  • 【推荐100个unity插件】使用C#或者unity实现爬虫爬取静态网页数据——Html Agility Pack (HAP)库和XPath 语法的使用
  • Java学习--JVM(2)
  • 学习C++、QT---27(QT中实现记事本项目实现行列显示、优化保存文件的功能的讲解)
  • 【Linux手册】缓冲区:深入浅出,从核心概念到实现逻辑
  • 数据结构:集合操作(Set Operations): 并集(Union)、交集(Intersection)、 差集(Difference)
  • 【37】MFC入门到精通——MFC中 CString 数字字符串 转 WORD ( CString, WORD/int 互转)
  • 编译原理第六到七章(知识点学习/期末复习/笔试/面试)
  • 【真·CPU训模型!】单颗i7家用本,4天0成本跑通中文小模型训练!Xiaothink-T6-mini-Preview 技术预览版开源发布!
  • 数据投毒技术之标签翻转
  • 题解:CF1829H Don‘t Blame Me
  • React Native 基础tabBar和自定义tabBar - bottom-tabs
  • 【开源软件推荐】 SmartSub,一个可以快速识别视频/音频字幕的工具
  • JavaScript进阶篇——第八章 原型链、深浅拷贝与原型继承全解析
  • 性能优化实践:Modbus 在高并发场景下的吞吐量提升(二)