tkinter+火山引擎+python實現語音識別聊天機器人

想要做一款能通過語音識別來聊天的智能機器人,首先需要能通過麥克風錄制語音進行識別轉換成文字,將文字發送給機器人得到聊天結果,并能將返回的文字轉換成語音進行合成,之后再通過本地播放語音實現語音交互。

架構:

 實現步驟

 一、本地錄音

本地錄音可以通過pyAudio庫實現語音錄制。

音頻采樣率

音頻采樣率是指在一秒鐘內對聲音進行采樣的次數。采樣率越高,音頻質量就越好。常見的音頻采樣率是44.1kHz和48kHz。

音頻位深度

音頻位深度是指存儲每個采樣的精度。位深度越高,音頻質量就越好。常見的位深度是16位和24位。

音頻通道數

音頻通道數是指記錄音頻信號的通道數。單通道(單聲道)音頻只有一個通道,雙通道(立體聲)音頻有兩個通道,多通道音頻有超過兩個通道。

PyAudio API

PyAudio的API定義了一組函數和常量,可用于錄制、播放和處理音頻數據。以下是一些重要的函數和常量:

pyaudio.PyAudio()

這是一個構造函數,用于創建一個PyAudio實例。可以使用這個實例來訪問其他PyAudio函數。

pyaudio.paInt16

這是一個常量,代表16位音頻數據類型。您可以使用其他常量來指定不同的音頻數據類型。

pyaudio.paFloat32

這是一個常量,代表32位浮點數音頻數據類型。這種數據類型通常用于音頻信號處理。

PyAudio.open()

這個函數用于打開音頻流。它返回一個PyAudio的流對象。

stream.read()

這個函數用于從音頻流中讀取數據。

stream.write()

這個函數用于將數據寫入音頻流。

import requests
import pyaudio
import wavedef record_human_voice():chunk = 1024FORMAT = pyaudio.paInt16CHANNELS = 2RATE = 44100RECORD_SECONDS = 5WAVE_OUTPUT_FILENAME = "output.wav"p = pyaudio.PyAudio()stream = p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=chunk)print("開始錄音:")frames = []for i in range(0, int(RATE / chunk * RECORD_SECONDS)):data = stream.read(chunk)frames.append(data)print("錄音結束。")stream.stop_stream()stream.close()p.terminate()wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')wf.setnchannels(CHANNELS)wf.setsampwidth(p.get_sample_size(FORMAT))wf.setframerate(RATE)wf.writeframes(b''.join(frames))wf.close()if __name__ == '__main__':record_human_voice()

本地錄音結束后,可以在本地項目目錄下生成一個output.wav語音文件,可以通過本地播放器嘗試打開播放,是否為本人錄制視頻。另外,需要注意,需要打開windows聲音模塊的麥克風錄制開關,否則不能成功執行。

二、語音播放

可以使用wav

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23173.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23173.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23173.shtml

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

相關文章

2024-06-05-記一次cnvd滲透

前言:挖src挖郁悶了,閑來無事選擇挖一個cnvd來練練手,本次的漏洞都沒啥難度,企查查資產過了5000萬 說一下cnvd證書的下放標準 對于中危及中危以上通用型漏洞(CVSS2.0基準評分超過4.0分),以及涉…

Scaling vision Transformer 論文理解

Scaling vision Transformer 論文理解 1. 摘要2. 一些主要結論小結2.1 few shot transfer learning2.2 Pareto-front3. 討論3.1 Limitations3.2 社會作用4. 文章結論參考資料1. 摘要 Attention-based neural networks such as the Vision Transformer (ViT) have recently att…

valgrind-內存泄漏定位工具

1、前言 valgirnd 是一套開放源代碼的動態調試工具集合。能夠檢測內存管理錯誤,線程BUG等。valgirnd是由內核以及基于內核的其他調試工具組成。內核類似于一個框架,它模擬了一個cpu的環境,并提供服務給其他工具使用。而其他工具則類似于插件…

紅酒:紅酒保存中的光照與避免陽光直射

在紅酒保存中,光照是一個常常被忽視的因素。光照對紅酒的影響是不可小覷的,因為陽光中的紫外線會加速紅酒的氧化,導致其口感和品質的下降。因此,在保存云倉酒莊雷盛紅酒時,應特別注意避免陽光直射。 陽光直射對紅酒的影…

企業代碼簽名證書1300元

隨著手機和電腦等設備的普及,越來越多的開發者進入軟件行業,為了軟件的安全性、完整性和可信度,開發者往往會使用由正規CA認證機構頒發的代碼簽名證書對軟件代碼進行數字簽名,來標識軟件的來源和軟件開發者的真實身份。今天就隨SS…

AGI時代下,計算機專業出身的程序員該何去何從?

Easy:單獨開個貼說一下吧。 如果你計算機、軟件工程、通信、電子、網絡等相關專業本科畢業,也考慮前后端/測試崗,戳 技術大廠,6險1金,待遇不錯。 提前說明,一切以古代思維對AGI時代的推演,都是可…

博物館文物庫房管理軟件

博物館作為文化遺產的守護者和傳承者,承載著人類智慧與文明的結晶。在博物館的背后,一個龐大而嚴密的管理系統支撐著文物的保護與展示。而其中,文物庫房管理軟件的使用,無疑是一項重要的管理工具。 文物庫房管理軟件的功能具有多樣…

【CentOS 7】挑戰探索:在CentOS 7上實現Python 3.9的完美部署指南

【CentOS 7】挑戰探索:在CentOS 7上實現Python 3.9的完美部署指南 大家好 我是寸鐵👊 總結了一篇【CentOS 7】挑戰探索:在CentOS 7上實現Python 3.9的完美部署指南詳細步驟? 喜歡的小伙伴可以點點關注 💝 前言 此篇教程只適用于p…

【java前端課堂】05_類的多態

類的多態是面向對象編程的三大特性之一,與封裝和繼承并列。多態性允許我們將父對象設置為與其子對象相等的技術,讓我們可以把一個子對象當作父對象對待。在Java中,多態主要體現在以下三個方面: 方法的重載(Overloadin…

【Mybatis】源碼分析-高級應用

1、Mybatis配置文件深入理解 1.2、動態SQL語句 Mybatis 的映射?件中,前?我們的 SQL 都是?較簡單的,有些時候業務邏輯復雜時,我們的 SQL是動態變化的,此時在前?的學習中我們的 SQL 就不能滿?要求了。 1.2.1、條件判斷 我們根…

技巧:合并ZIP分卷壓縮包

如果ZIP壓縮文件文件體積過大,大家可能會選擇“分卷壓縮”來壓縮ZIP文件,那么,如何合并zip分卷壓縮包呢?今天我們分享兩個ZIP分卷壓縮包合并的方法給大家。 方法一: 我們可以將分卷壓縮包,通過解壓的方式…

E10:系統彈窗提示

效果– window.WeFormSDK.showMessage("這是一個E10的提示", 3, 2); const onClickCreate () > console.log("create"); const onClickSave () > console.log("save"); const onClickCancel () > dialogComponent?.destroy(); co…

Java四舍五入保留小數

這里介紹兩種方法: package Book.jj.hh;import java.text.DecimalFormat; //使用DecimalFormat類 public class Demo1 {public static void main(String[] args) {double num 123.52631;DecimalFormat a new DecimalFormat("#.00"); //小數點后有幾個0…

SpringCloud Gateway基礎入門與使用實踐總結

官網文檔:點擊查看官網文檔 Cloud全家桶中有個很重要的組件就是網關,在1.x版本中都是采用的Zuul網關。但在2.x版本中,zuul的升級一直跳票,SpringCloud最后自己研發了一個網關替代Zuul,那就是SpringCloud Gateway一句話…

抖音賬號永久封號后強制注銷釋放實名!一分鐘教程方法公開

目前方法是可行的,不知道能保持多久! 下載舊版本抖音:下載抖音6.8版本或5.8版本的老版本應用。 使用封禁手機號登錄:使用已被永久封禁的手機號登錄舊版本的抖音應用。 賬號注銷操作: 在設置中找到賬號與安全的選項。…

從零開始發布你的第一個npm插件包并在多項目中使用

引言 在開源的世界里,每個人都有機會成為貢獻者,甚至是創新的引領者。您是否有過這樣的想法:開發一個解決特定問題的小工具,讓她成為其他開發者手中的利器?今天,我們就來一場實戰訓練,學習如何將…

【ubuntu】增加samba服務和文件夾

發現ai -server的ubuntu機器無法git clone 下來github的文件所以 使用samba 連接到linux的文件夾proj然后在我的windows上git clone 即可。安裝samba Creating config file /etc/samba/smb.conf with new version Setting up libcephfs2 (17.2.7-0ubuntu0.22.04.1) ... Setting…

漏洞挖掘 | 驗證碼繞過

還是老規矩,開局一個登錄框,中途漏洞全靠舔,先來研究一下這個登錄窗口 很好,發現有驗證碼登錄,先測試測試能不能并發 看來沒有,只成功發送了兩條,再看看驗證碼是不是4位 很好,是4位。…

UE5-AI

AI角色 角色控制器 AI角色必須要一個角色控制器 角色控制器最基本只需要執行行為樹,在EventOnPossess后runBehaviorTree 如果要的是一個角色,可以創建一個Character,在類默認設置中可以找到 Pawn->AIControllerClass,在這里…

Android 架構組件面試問答

1. 什么是 Android Architecture Components? 答: 組件是一組庫,可幫助您設計健壯、可測試且可維護的應用程序。它們提供了一種清晰且慣用的方式來使用 REST API。這些組件包括 Room、ViewModel、LiveData 等。 2. 什么是LiveData&#xff…