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.pswp.cn/pingmian/89246.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89246.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89246.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zabbix 分布式監控系統架構設計與優化

一、概念 1.核心概念 Zabbix是一個CS(服務端/客戶端)架構的服務Zabbix-Agent獲取數據-->發送給-->Zabbix-Server服務端--- >數據會被存放在數據庫 <--- Zabbix Web 頁面展示數據 2.部署流程 部署ngxphp環境并測試部署數據庫 mariadb 10.5及以上 然后進行配置編…

QT——文件選擇對話框 QFileDialog

QFileDialog概述QFileDialog是Qt框架中提供的文件對話框類&#xff0c;用于讓用戶選擇文件或目錄。它提供了標準的文件選擇界面&#xff0c;支持文件打開、保存、多選等常見操作。基本使用方式QFileDialog提供了兩種使用方式&#xff1a;靜態方法&#xff1a;直接調用類方法快速…

Flask+LayUI開發手記(十一):選項集合的數據庫擴展類

條目較少的選項集合&#xff0c;確實可以在程序中直接定義&#xff08;其實最合適的還是存儲在一個分類別的數據庫表里&#xff09;&#xff0c;但條目較多的選項集合&#xff0c;或者是復雜的樹型結構選項集合&#xff0c;一般都是存儲在數據庫中的&#xff0c;這樣維護起來比…

AI學習筆記三十二:YOLOv8-CPP-Inference測試(Linux版本)

若該文為原創文章&#xff0c;轉載請注明原文出處。主要介紹如何在Linux系統上安裝和部署基于YOLOv8的C推理項目一、服務器準備使用AutoDL平臺租用服務器AutoDL有git加速&#xff0c;可以自行啟用二、環境配件1、檢查Opencv版本pkg-config --modversion opencv4如果版本為4.5&a…

113:路徑總和 II

題目&#xff1a;給你二叉樹的根節點 root 和一個整數目標和 targetSum &#xff0c;找出所有 從根節點到葉子節點 路徑總和等于給定目標和的路徑。葉子節點 是指沒有子節點的節點。解答&#xff1a;用 go主要坑有兩個&#xff0c;一個是二維結果切片傳遞用指針&#xff0c;一個…

Perl 數組

Perl 數組 在Perl編程語言中&#xff0c;數組是處理數據的一種強大工具。數組允許我們將多個值存儲在單個變量中&#xff0c;從而簡化了代碼并提高了效率。本文將詳細介紹Perl數組的創建、操作、遍歷以及一些高級用法。 數組的創建 在Perl中&#xff0c;創建一個數組非常簡單。…

優先隊列的實現

目錄 引言 堆的基本概念與特性 堆的插入與向上調整 堆的刪除與向下調整 優先隊列的設計思路 模板參數設計 比較器的作用 核心接口實現 push pop top 附錄(完整代碼) 引言 優先隊列&#xff08;Priority Queue&#xff09;是一種特殊的隊列數據結構&#xff0c;其中每…

現代CSS實戰:用變量與嵌套重構可維護的前端樣式

現代CSS實戰&#xff1a;用變量與嵌套重構可維護的前端樣式 引言 在傳統CSS開發中&#xff0c;我們常常陷入「樣式冗余」與「維護噩夢」的循環&#xff1a; 想調整主題色&#xff1f;得全局搜索所有 #3498db 手動替換&#xff0c;稍有不慎就漏改某個角落&#xff1b; 寫嵌套…

DHTMLX Suite 9.2 重磅發布:支持歷史記錄、類Excel交互、剪貼板、拖放增強等多項升級

全球知名的 JavaScript UI 組件庫 DHTMLX Suite 迎來 9.2 新版本&#xff01;此次更新雖為次版本號&#xff0c;卻實質性提升了 Grid 網格組件的交互能力與用戶體驗&#xff0c;引入了包括歷史記錄管理、剪貼板操作、數據選擇范圍管理、Block 區塊選擇等多項高級模塊&#xff0…

深入理解Java中的Map.Entry接口

文章目錄深入理解Java中的Map.Entry接口1. 接口定義2. 核心方法解析2.1 基本方法2.2 Java 8新增的靜態方法3. 基本使用示例3.1 遍歷Map的條目3.2 修改Map中的值3.3 使用比較器排序4. Java 8/9增強特性4.1 與Stream API結合4.2 Java 9的equals和hashCode默認方法5. 實際應用場景…

AI培訓學習2

不要打擾用戶的習慣&#xff0c;比如APP右下角的我的&#xff0c;放到第一個就不合適 先抄再超 lifeTime value NPS: 評價 Product market 平衡 ARPU&#xff1a; LT活躍時長 游戲中好友的重要性 不花錢存活率很少 如何花錢&#xff0c;1分錢買東西 聯影醫療 figma uizard…

npm 安裝時候怎么指定某一個子包的版本 overrides

有時候用 npm install 安裝的時候會報錯&#xff0c;比如 express 包依賴 "escape-html": "^1.0.2" 版本的包&#xff0c;但是因為 escape-html" 升級到 1.0.3 版本了&#xff0c;但是這個版本有問題&#xff0c;導致express 下載不下來。怎么固定下載…

python學智能算法(十九)|SVM基礎概念-超平面

引言 前序學習進程中&#xff0c;對向量相關的基本知識進行了學習&#xff0c;鏈接為&#xff1a; 向量的值和方向 向量點積 在實際的支持向量機算法使用中&#xff0c;最核心的目標是找出可以實現分類的超平面&#xff0c;超平面就是分割的點、線或者面&#xff0c;不要在這個…

python 基于 httpx 的流式請求

文章目錄1. 環境介紹2. 同步客戶端2.1. 面向過程2.1.1. 流式輸出2.1.2. 非流式輸出2.2. 面向對象3. 異步客戶端3.1. 面向過程3.2. 面向對象3.3. Attempted to call a sync iterator on an async stream.參考&#xff1a;https://www.jb51.net/article/262636.htm次要參考&#…

Python 數據建模與分析項目實戰預備 Day 4 - EDA(探索性數據分析)與可視化

? 今日目標 使用 Pandas Matplotlib/Seaborn 對簡歷數據進行探索性分析分析不同字段與目標變量的相關性通過可視化呈現簡歷篩選的潛在規律&#x1f9fe; 一、建議分析內容 &#x1f539; 分類字段分析字段圖表建議說明degree柱狀圖&#xff08;分組通過率&#xff09;分析學歷…

力扣每日一題--2025.7.17

&#x1f4da; 力扣每日一題–2025.7.17 &#x1f4da; 3202. 找出有效子序列的最大長度 II&#xff08;中等&#xff09; 今天我們要解決的是力扣上的第 3202 題——找出有效子序列的最大長度 II。這道題是昨天 3201 題的擴展&#xff0c;需要我們處理更一般化的情況。 ??…

github不能訪問怎么辦

訪問&#xff1a;“github.com”國內多個地點網站測速結果_網站測速 - 站長工具訪問“github.global.ssl.fastly.net”國內多個地點網站測速結果_網站測速 - 站長工具復制紅框中的ip 打開“C:\Windows\System32\drivers\etc\hosts”文件輸入&#xff1a; 20.205.243.166 githu…

【深度學習新浪潮】AI在finTech領域有哪些值得關注的進展?

近年來,AI在金融科技(FinTech)領域的應用呈現爆發式增長,尤其在大模型技術突破和政策支持的雙重驅動下,多個關鍵領域取得了顯著進展。以下是值得關注的核心方向及具體案例: 一、大模型技術重塑金融服務范式 以DeepSeek為代表的國產大模型通過開源和低成本部署(本地化成…

【中等】題解力扣22:括號生成

題目詳情 數字 n 代表生成括號的對數&#xff0c;設計一個函數生成所有可能的并且有效的括號組合。 示例 1&#xff1a; 輸入&#xff1a;n 3 輸出&#xff1a;[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 示例 2&#xff1a; 輸入&#xff1a;n 1 輸出&#…

【JEECG 組件擴展】JSwitch開關組件擴展單個多選框樣式

功能說明&#xff1a;基于JeecgBoot開源框架&#xff0c;JSwitch開關組件擴展&#xff0c;支持單個多選樣式。效果展示&#xff1a;使用示例&#xff1a;{field: JSwitch,component: JSwitch,label: JSwitch,},{field: JSwitchCheckBox,component: JSwitch,label: JSwitchCheck…