基于語(yǔ)音識(shí)別實(shí)現(xiàn)智能家居的控制-系統(tǒng)整體整合與調(diào)參_第1頁(yè)
基于語(yǔ)音識(shí)別實(shí)現(xiàn)智能家居的控制-系統(tǒng)整體整合與調(diào)參_第2頁(yè)
基于語(yǔ)音識(shí)別實(shí)現(xiàn)智能家居的控制-系統(tǒng)整體整合與調(diào)參_第3頁(yè)
基于語(yǔ)音識(shí)別實(shí)現(xiàn)智能家居的控制-系統(tǒng)整體整合與調(diào)參_第4頁(yè)
基于語(yǔ)音識(shí)別實(shí)現(xiàn)智能家居的控制-系統(tǒng)整體整合與調(diào)參_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGE1基于語(yǔ)音識(shí)別實(shí)現(xiàn)智能家居控制——系統(tǒng)整體整合與調(diào)參摘要為配合各種終端設(shè)備較高的智能程度和集成程度,舍棄以往使用按鍵及菜單操作對(duì)設(shè)備進(jìn)行控制的方式,讓檢索信息和操作命令的方式變得更加便捷,語(yǔ)音識(shí)別技術(shù)逐漸進(jìn)入人們的視線。智能家居不僅能夠?yàn)槿祟惿钐峁┓奖憧旖莸姆?wù),而且能夠在需要的時(shí)候提供更為人性化的服務(wù),從而使得智能家居在現(xiàn)代化發(fā)展領(lǐng)域占據(jù)非常重要的地位,因此,將智能家居與語(yǔ)音識(shí)別技術(shù)結(jié)合變成了人們的迫切需求。本文著重從語(yǔ)音識(shí)別的模型設(shè)計(jì)及信號(hào)的傳輸與控制等方面介紹了本次基于語(yǔ)音識(shí)別實(shí)現(xiàn)智能家居控制的研究。語(yǔ)音識(shí)別的過(guò)程可分為模式識(shí)別和匹配兩個(gè)模塊,本設(shè)計(jì)語(yǔ)音識(shí)別部分運(yùn)用人工神經(jīng)元網(wǎng)絡(luò)模型,對(duì)捕獲的語(yǔ)音信號(hào)進(jìn)行初步的判斷處理,將音頻和文字?jǐn)?shù)據(jù)進(jìn)行格式轉(zhuǎn)化,并且將語(yǔ)音信號(hào)特征點(diǎn)進(jìn)行提取,在進(jìn)行初步判斷基礎(chǔ)上建立和訓(xùn)練模型,得到相應(yīng)語(yǔ)音識(shí)別的模板,等待下一次捕獲語(yǔ)音時(shí),將獲取到的語(yǔ)音信號(hào)與之前的語(yǔ)音信號(hào)比對(duì)判斷之后,結(jié)合建立的相關(guān)函數(shù)及相關(guān)算法模型,獲取到匹配率最高的模板,并得到一個(gè)較高的識(shí)別率。除語(yǔ)音識(shí)別模塊外,此次設(shè)計(jì)還有語(yǔ)音錄入模塊及信號(hào)輸出控制模塊,用以完整實(shí)現(xiàn)通過(guò)語(yǔ)音識(shí)別實(shí)現(xiàn)控制智能家居的最終目的。語(yǔ)音輸入模塊通過(guò)調(diào)用麥克風(fēng)錄音進(jìn)行語(yǔ)音錄入,信號(hào)輸出控制模塊則是通過(guò)網(wǎng)絡(luò)通信發(fā)送信號(hào)到另一設(shè)備來(lái)實(shí)現(xiàn)語(yǔ)音控制。關(guān)鍵詞:語(yǔ)言識(shí)別,神經(jīng)網(wǎng)絡(luò),信息傳輸,訓(xùn)練模型,智能控制ControlofSmartHomeBasedonSpeechRecognitionAbstractInordertocooperatewiththehigherintelligenceandintegrationofvariousterminalequipment,thewayofusingbuttonsandmenustocontroltheequipmentisabandoned,andthewayofretrievinginformationandoperatingcommandsbecomesmoreconvenient.Speechrecognitiontechnologygraduallyenterspeople'sattention.Smarthomecannotonlyprovideconvenientandfastservicesforhumanlife,butalsoprovidemorehumanizedserviceswhenneeded,whichmakessmarthomeoccupyaveryimportantpositioninthefieldofmoderndevelopment.Therefore,thecombinationofsmarthomeandspeechrecognitiontechnologyhasbecomeanurgentneedofpeople.Thispapermainlyintroducestheresearchofsmarthomecontrolbasedonspeechrecognitionfromtheaspectsofthemodeldesignofspeechrecognition,signaltransmissionandcontrol.Theprocessofspeechrecognitioncanbedividedintotwomodules:patternrecognitionandmatching.Inthespeechrecognitionpartofthisdesign,theartificialneuralnetworkmodelisusedtopreliminarilyjudgeandprocessthecapturedspeechsignal,transformtheformatoftheaudioandtextdata,extractthefeaturepointsofthespeechsignal,establishandtrainthemodelbasedonthepreliminaryjudgment,andgetthecorrespondingspeechrecognitionForothertemplates,whenwaitingforthenextcaptureofspeech,theobtainedspeechsignalwillbecomparedwiththepreviousspeechsignalforjudgment,combinedwiththeestablishedcorrelationfunctionandrelatedalgorithmmodel,thetemplatewiththehighestmatchingratewillbeobtained,andahigherrecognitionratewillbeobtained.Inadditiontothespeechrecognitionmodule,thisdesignalsohasthespeechinputmoduleandthesignaloutputcontrolmodule,inordertoachievetheultimategoalofcontrollingthesmarthomethroughspeechrecognition.Thevoiceinputmoduleusesmicrophonerecordingforvoiceinput,andthesignaloutputcontrolmodulesendssignalstoanotherdevicethroughnetworkcommunicationtorealizevoicecontrol.Keywords:Languagerecognition,neuralnetwork,informationtransmission,trainingmodel,intelligentcontrol目錄TOC\o"1-4"\h\z\u1.前言 51.1本設(shè)計(jì)的目的、意義及應(yīng)達(dá)到的技術(shù)要求 51.1.1目的 51.1.2意義 51.1.3技術(shù)要求 51.2本設(shè)計(jì)主要研究?jī)?nèi)容 62.總體設(shè)計(jì)框架 62.1.語(yǔ)音識(shí)別框架 62.2.網(wǎng)絡(luò)通信框架 73.模型的選擇 73.1.人工神經(jīng)網(wǎng)絡(luò)模型 73.2.其他語(yǔ)音識(shí)別模型 84.音頻的預(yù)處理與特征提取 85.構(gòu)建模型的方案選擇 106.重要函數(shù)的運(yùn)用 107.實(shí)踐過(guò)程及結(jié)果 118.結(jié)論 15參考文獻(xiàn) 16謝辭 17附錄 18前言語(yǔ)音識(shí)別技術(shù)在現(xiàn)代化告訴發(fā)展中占據(jù)非常重要的地位,將其更加融入的人類生活和工作中,不僅是為人類提供高效便捷的服務(wù),而且將語(yǔ)音識(shí)別技術(shù)運(yùn)用到智能家居控制中,可以減少人力操作和節(jié)約時(shí)間,通過(guò)語(yǔ)音對(duì)家居設(shè)備進(jìn)行控制,在當(dāng)今時(shí)代具有十分有意義的研究REF_Ref31132\w\h[3]。語(yǔ)音識(shí)別的方式主要有三種:一是神經(jīng)網(wǎng)絡(luò),二是基于語(yǔ)音學(xué)和聲學(xué)的方式,三是模板匹配。其中,神經(jīng)網(wǎng)絡(luò)而是現(xiàn)代的語(yǔ)音識(shí)別技術(shù)中的主要發(fā)展趨勢(shì)。神經(jīng)網(wǎng)絡(luò)技術(shù)通過(guò)將人活神經(jīng)元活動(dòng)放入到一個(gè)具有人類獨(dú)特的自主學(xué)習(xí)和想象力結(jié)合的語(yǔ)音識(shí)別系統(tǒng)中,通過(guò)不斷學(xué)習(xí)優(yōu)化,提高語(yǔ)音識(shí)別系統(tǒng)的穩(wěn)定性,這為語(yǔ)音識(shí)別的發(fā)展開辟了一條新的途徑REF_Ref31495\w\h[1]。本次設(shè)計(jì)則是在語(yǔ)言識(shí)別技術(shù)的特點(diǎn)和工作原理的基礎(chǔ)上,選擇并利用人工神經(jīng)網(wǎng)絡(luò)模型,通過(guò)利用相應(yīng)訓(xùn)練集進(jìn)行不斷訓(xùn)練與測(cè)試,根據(jù)丟失數(shù)據(jù)率與識(shí)別準(zhǔn)確率不斷實(shí)驗(yàn)與改進(jìn),最終使模型達(dá)到穩(wěn)定狀態(tài),同時(shí)識(shí)別準(zhǔn)確率達(dá)到理想值,并調(diào)用麥克風(fēng)實(shí)現(xiàn)語(yǔ)音的錄入,將語(yǔ)音導(dǎo)入訓(xùn)練好的模型進(jìn)行語(yǔ)言識(shí)別,通過(guò)模型識(shí)別出相應(yīng)語(yǔ)句轉(zhuǎn)換成文字作為客戶端的發(fā)送數(shù)據(jù),再利用網(wǎng)絡(luò)通信原理及相關(guān)函數(shù)傳輸給服務(wù)端,實(shí)現(xiàn)語(yǔ)音控制的目的。本設(shè)計(jì)完整地實(shí)現(xiàn)了語(yǔ)音錄入、語(yǔ)音識(shí)別以及最后的語(yǔ)音控制一整個(gè)過(guò)程。本設(shè)計(jì)的目的、意義及應(yīng)達(dá)到的技術(shù)要求目的本設(shè)計(jì)旨在利用人工神經(jīng)網(wǎng)絡(luò)模型,通過(guò)訓(xùn)練集訓(xùn)練,識(shí)別錄入的語(yǔ)音,將識(shí)別的語(yǔ)音轉(zhuǎn)化成機(jī)器能夠聽懂的語(yǔ)言發(fā)送到服務(wù)器終端,實(shí)現(xiàn)語(yǔ)音控制,從而達(dá)到人機(jī)交互的目的。意義語(yǔ)音識(shí)別的研究,實(shí)現(xiàn)了人機(jī)的語(yǔ)言交流,研究和學(xué)習(xí)這一具有競(jìng)爭(zhēng)性的新興高技術(shù)產(chǎn)業(yè)知識(shí),不僅能讓我們學(xué)習(xí)到一些語(yǔ)音識(shí)別與控制的基礎(chǔ)知識(shí),也是新一代學(xué)子跟上科技步伐的一個(gè)時(shí)代象征,對(duì)新時(shí)代科技創(chuàng)新有著重要的象征性意義。技術(shù)要求熟悉python開發(fā)環(huán)境,能夠熟練使用相關(guān)代碼設(shè)計(jì)并實(shí)現(xiàn)以下基礎(chǔ)功能:(1)能夠根據(jù)設(shè)計(jì)要求尋找匹配的模型并建立模型;(2)能夠收集并整合適合的訓(xùn)練集,通過(guò)模型訓(xùn)練語(yǔ)音訓(xùn)練集,經(jīng)過(guò)反復(fù)訓(xùn)練得到一定的語(yǔ)音特征聲紋;(3)能夠利用代碼調(diào)用麥克風(fēng)進(jìn)行錄音,并將語(yǔ)音放入語(yǔ)音測(cè)試集進(jìn)行語(yǔ)音識(shí)別;(4)能夠正確識(shí)別錄入的語(yǔ)音,得到語(yǔ)音的識(shí)別率,運(yùn)行過(guò)程中能夠打印出數(shù)據(jù)丟失率,進(jìn)行誤差處理等;(5)最后能夠發(fā)送語(yǔ)音信號(hào)實(shí)現(xiàn)控制功能。本設(shè)計(jì)主要研究?jī)?nèi)容模型的選擇:模型是實(shí)現(xiàn)語(yǔ)音識(shí)別的工具,要實(shí)現(xiàn)語(yǔ)音識(shí)別,首先要應(yīng)用和建立相應(yīng)的模型,在不斷訓(xùn)練后,利用訓(xùn)練好的模型對(duì)錄入的語(yǔ)音進(jìn)行處理和解碼,轉(zhuǎn)化成數(shù)字語(yǔ)言給機(jī)器識(shí)別,得到語(yǔ)句,所以選擇適用、易用的模型顯得十分重要;函數(shù)的運(yùn)用:本設(shè)計(jì)主要需要運(yùn)用激活函數(shù)、損失函數(shù)及信號(hào)發(fā)送函數(shù),每種函數(shù)中有不一樣的函數(shù)可選,不同的函數(shù)其作用、優(yōu)缺點(diǎn)及應(yīng)用場(chǎng)景皆有不同,選擇合適的激活函數(shù),損失函數(shù)及信號(hào)發(fā)送函數(shù)并靈活應(yīng)用其中,能夠有效提高識(shí)別率;音頻預(yù)處理與特征提?。河捎谝婚_始輸入的語(yǔ)音信號(hào)為模擬信號(hào),為了將語(yǔ)音信號(hào)轉(zhuǎn)化為計(jì)算機(jī)聽得懂的語(yǔ)音,我們需要將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),這時(shí)候就需要對(duì)輸入的語(yǔ)音進(jìn)行預(yù)處理。語(yǔ)音信號(hào)預(yù)處理之后,為了讓識(shí)別效率提高,剔除無(wú)關(guān)信息,提取有效數(shù)據(jù),我們需要對(duì)語(yǔ)音信息進(jìn)行特征提取,我們采用加權(quán)線性倒數(shù)頻譜系數(shù)來(lái)指導(dǎo)進(jìn)行語(yǔ)音信號(hào)的特征提??;構(gòu)建模型的方案選擇:采用不同的方案構(gòu)建模型會(huì)產(chǎn)生不一樣的效果,針對(duì)每種方案進(jìn)行訓(xùn)練和調(diào)參,最終選擇識(shí)別率最高的方案應(yīng)用;信號(hào)的發(fā)送與控制:完成語(yǔ)言識(shí)別后,需要找到相應(yīng)的傳輸手段將相應(yīng)信號(hào)命令發(fā)送到服務(wù)器,并達(dá)到達(dá)到控制效果??傮w設(shè)計(jì)框架2.1.語(yǔ)音識(shí)別框架語(yǔ)音識(shí)別技術(shù)過(guò)程主要分為三個(gè)步驟,首先,需要對(duì)捕獲的語(yǔ)音信號(hào)預(yù)判斷處理,其次,對(duì)整段語(yǔ)音信號(hào)進(jìn)行特征點(diǎn)提取,最后根據(jù)系統(tǒng)模式進(jìn)行匹配和判決REF_Ref31661\w\h[2]。通過(guò)麥克風(fēng)捕獲的語(yǔ)音進(jìn)行轉(zhuǎn)化,形成一個(gè)基準(zhǔn)原始語(yǔ)音,語(yǔ)音識(shí)別系統(tǒng)對(duì)指令信號(hào)進(jìn)行預(yù)加重、分幀、加窗等預(yù)處理REF_Ref31789\w\h[5],使語(yǔ)音信號(hào)趨于平穩(wěn)。接著進(jìn)行特征提取,本設(shè)計(jì)以MFCC作為數(shù)據(jù)處理的特征參數(shù),對(duì)獲取的語(yǔ)音數(shù)據(jù)進(jìn)行有效區(qū)分,將數(shù)據(jù)處理成機(jī)器讀懂的格式,并提取相應(yīng)特征參數(shù),以此存儲(chǔ)為人工神經(jīng)網(wǎng)絡(luò)樣本,建立和訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)模型。當(dāng)語(yǔ)音識(shí)別時(shí),使用已訓(xùn)練好的人工神經(jīng)網(wǎng)絡(luò),根據(jù)語(yǔ)音信號(hào)特征識(shí)別相應(yīng)語(yǔ)句,最終得到結(jié)果。如圖2-1為具體的語(yǔ)音識(shí)別框架:預(yù)處理樣本語(yǔ)言加窗分幀端點(diǎn)檢測(cè)預(yù)處理樣本語(yǔ)言加窗分幀端點(diǎn)檢測(cè)建立人工神經(jīng)網(wǎng)絡(luò)輸入樣特征提取建立人工神經(jīng)網(wǎng)絡(luò)輸入樣特征提取訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)使用神經(jīng)網(wǎng)絡(luò)識(shí)別結(jié)果訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)使用神經(jīng)網(wǎng)絡(luò)識(shí)別結(jié)果待測(cè)語(yǔ)音預(yù)處理特征提取待測(cè)語(yǔ)音預(yù)處理特征提取語(yǔ)音識(shí)別框架圖2-12.2.網(wǎng)絡(luò)通信框架本設(shè)計(jì)通信方式選擇Socket,Socket是運(yùn)用在進(jìn)程之間進(jìn)行相互通信的主流手段之一,它能夠在相同主機(jī)進(jìn)程之間或者不同主機(jī)進(jìn)程之間進(jìn)行通信,通過(guò)搭建一個(gè)Socket連接相同或者不同的主機(jī),建立通信機(jī)制,進(jìn)行實(shí)現(xiàn)交互REF_Ref31916\w\h[7]。如圖2-2為Socket網(wǎng)絡(luò)通信框架:SYN客戶端服務(wù)器端SYNQ0NewSocketQ0NewSocketSYN+ACKSYN+ACKSYNQ1NewSocketSYNQ1NewSocketSocket網(wǎng)絡(luò)通信框架圖2-2模型的選擇3.1.人工神經(jīng)網(wǎng)絡(luò)模型人工神經(jīng)網(wǎng)絡(luò)(ANN)是機(jī)器學(xué)習(xí)與人工智能領(lǐng)域的一種模型REF_Ref32073\w\h[4],分為輸入層、隱層和輸出層三個(gè)模塊,神經(jīng)元為網(wǎng)絡(luò)基本單元,輸入層的神經(jīng)元為所提取的語(yǔ)音信號(hào)特征,構(gòu)建隱層的神經(jīng)元方式為樣本訓(xùn)練,輸出層的神經(jīng)元為語(yǔ)音識(shí)別詞匯。對(duì)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行分析,可得出神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的非線性映射能力、泛化能力和容錯(cuò)能力REF_Ref32184\w\h[6]。人工神經(jīng)網(wǎng)絡(luò)進(jìn)行語(yǔ)音識(shí)別之前,需要不斷地訓(xùn)練優(yōu)化模型。一開始需要準(zhǔn)備擁有大量詞匯的語(yǔ)音訓(xùn)練集,按照一定的規(guī)則將詞匯分段編號(hào),接著把之前已經(jīng)做過(guò)特征提取的語(yǔ)音數(shù)據(jù)輸入模型,參考數(shù)據(jù)為特征對(duì)應(yīng)的詞匯編號(hào),最終把參考數(shù)據(jù)和模型訓(xùn)練的輸出數(shù)據(jù)相比較,得出相應(yīng)誤差,在此誤差數(shù)據(jù)降低到閾值時(shí)則停止訓(xùn)練,保存相應(yīng)訓(xùn)練數(shù)據(jù),以此建立神經(jīng)網(wǎng)絡(luò)模型。如圖3-1為人工神經(jīng)網(wǎng)絡(luò)訓(xùn)練框架。開始開始給定輸入量和目標(biāo)輸出給定輸入量和目標(biāo)輸出求隱層和輸出層單元輸出求隱層和輸出層單元輸出求期望輸出和實(shí)際輸出的誤差求期望輸出和實(shí)際輸出的誤差權(quán)值學(xué)習(xí)修正誤差是否滿足權(quán)值學(xué)習(xí)修正誤差是否滿足YN結(jié)束YN結(jié)束人工神經(jīng)網(wǎng)絡(luò)訓(xùn)練框架圖3-13.2.其他語(yǔ)音識(shí)別模型目前常用的語(yǔ)音識(shí)別模型還有動(dòng)態(tài)時(shí)間規(guī)整技術(shù)(DTW)、矢量量化(VQ)等。動(dòng)態(tài)時(shí)間規(guī)整算法主要在非特定人語(yǔ)音識(shí)別上應(yīng)用,其原理是在動(dòng)態(tài)規(guī)劃的思想的基礎(chǔ)上,用一定的算法策略比較語(yǔ)音參考模板與語(yǔ)音測(cè)試信號(hào),從而得到其中的相像程度,在通過(guò)測(cè)度和比對(duì)得到最好的路徑。而矢量量化在比較小的詞匯量上的語(yǔ)音識(shí)別比較適用,其原理是對(duì)語(yǔ)音信號(hào)數(shù)據(jù)進(jìn)行整體量化,將實(shí)際效果與量化數(shù)據(jù)相對(duì)比找出最好的失真測(cè)度的公式,從而實(shí)現(xiàn)最好效果的矢量量化系統(tǒng)的建立。而3.1.所介紹的人工神經(jīng)網(wǎng)絡(luò),相當(dāng)于是人類神經(jīng)活動(dòng)的一個(gè)自適應(yīng)非線性動(dòng)力學(xué)系統(tǒng),其原理是模擬一個(gè)具有人類獨(dú)特的自主學(xué)習(xí)和想象力的工程模型,具有一系列的適合本設(shè)計(jì)的相關(guān)性能,特別是其強(qiáng)大自適應(yīng)性及學(xué)習(xí)特性,它所獨(dú)特具有的分類決策能力和對(duì)不確定信息的描述能力得到舉世公認(rèn)。所以綜合各模型功能特點(diǎn),結(jié)合實(shí)際需求,我們最終選擇了具有強(qiáng)大學(xué)習(xí)能力和分類能力的人工神經(jīng)網(wǎng)絡(luò)模型。音頻的預(yù)處理與特征提取4.1.預(yù)處理:語(yǔ)音信號(hào)十分不穩(wěn)定,為了得到一個(gè)平穩(wěn)的處理對(duì)象,使得特征參數(shù)提取更加容易操作,讓語(yǔ)言數(shù)據(jù)更加有辨識(shí)度,我們需要將它進(jìn)行預(yù)處理。首先對(duì)語(yǔ)音數(shù)字信號(hào)進(jìn)行預(yù)加重操作,使頻譜相對(duì)平坦,也可以使得頻帶里的信號(hào)擁有一樣的信噪比。緊接著對(duì)語(yǔ)音信號(hào)進(jìn)行分幀以及加窗的操作,短時(shí)語(yǔ)音信號(hào)的頻率特性在加窗后能得到較好的反應(yīng)。語(yǔ)音信號(hào)加窗后需要進(jìn)行端點(diǎn)檢測(cè),也就是設(shè)定合適的閾值,將輸入的語(yǔ)音序列的起點(diǎn)和終點(diǎn)檢測(cè)出來(lái)。如圖4-1為預(yù)處理的過(guò)程框架。開始開始預(yù)加重預(yù)加重分幀分幀端點(diǎn)檢測(cè),確定起止點(diǎn)端點(diǎn)檢測(cè),確定起止點(diǎn)特征參數(shù)提?。∕FCC特征參數(shù)提?。∕FCC)結(jié)束結(jié)束預(yù)處理的過(guò)程框架圖4-14.2.MFCC特征提?。赫Z(yǔ)音識(shí)別過(guò)程中,MFCC(Mel頻標(biāo)倒譜系數(shù))參數(shù)充分地模擬了人類耳朵的聽覺(jué)感知的特性以及語(yǔ)音信號(hào)所產(chǎn)生的機(jī)制和原理,普遍應(yīng)用在了在語(yǔ)言識(shí)別研究中。研究者根據(jù)心理實(shí)驗(yàn)得到了類似于耳蝸?zhàn)饔玫囊唤M濾波器組,這就是Mel濾波器組REF_Ref32497\w\h[9],想要得到MFCC的值,首先要把求得的頻率特性通過(guò)式4.1計(jì)算出Mel頻率特性,然后將其變換到倒譜空間中REF_Ref32589\w\h[10]。fmel=2595lg?(1+f如圖5-2為MFCC計(jì)算框圖:預(yù)處理FFT預(yù)處理FFT濾波器組濾波器組DCT取對(duì)數(shù)DCT取對(duì)數(shù)MFCC計(jì)算框圖圖4-2構(gòu)建模型的方案選擇方案一:未加入Keras模型此方案為最初方案,在該方案中采用激活函數(shù)sigmoid對(duì)數(shù)據(jù)進(jìn)行優(yōu)化,通過(guò)正反向傳播不斷訓(xùn)練來(lái)更新權(quán)重減小誤差值,用訓(xùn)練集訓(xùn)練一定次數(shù)后,取最小誤差值最大識(shí)別概率。緊接著定義算法以及對(duì)應(yīng)的重要的參數(shù),用來(lái)訓(xùn)練成熟的人工神經(jīng)網(wǎng)絡(luò)模型識(shí)別新的音頻,最終返回識(shí)別結(jié)果。該方案比較簡(jiǎn)單,工作效率和準(zhǔn)確率較低。方案二:加入Keras模型同樣用的是人工神經(jīng)網(wǎng)絡(luò)模型,但將輸入層的激活函數(shù)由sigmoid換為效果更好的relu函數(shù),隱藏層也從一層改為了兩層,并將softmax函數(shù)應(yīng)用在了輸出層,使得向量歸一化,并且加入了損失函數(shù)交叉熵,使整個(gè)模型更加完善,簡(jiǎn)化了計(jì)算過(guò)程,訓(xùn)練速度更快,有效減少了誤差,識(shí)別準(zhǔn)確率得到了顯著提升。所以經(jīng)過(guò)綜和考慮和改進(jìn),最終選用方案二。重要函數(shù)的運(yùn)用Relu函數(shù):本設(shè)計(jì)使用的激活函數(shù)Relu函數(shù)即線性整流,其表達(dá)式為:fx=max?(0,x)(式6.1)作為神經(jīng)元的激活函數(shù),定義了該神經(jīng)元在線性變換wTx+b之后的非線性輸出結(jié)果。也就是若進(jìn)入神經(jīng)元的輸入向量為x,使用線性整流激活函數(shù)的神經(jīng)元會(huì)輸出max?(0,wTx+b)至到下一層神經(jīng)元,又或是會(huì)直接輸出(取決現(xiàn)神經(jīng)元在網(wǎng)絡(luò)結(jié)構(gòu)中所處位置)。當(dāng)x≥0時(shí),其導(dǎo)數(shù)為1,因此,Resoftmax函數(shù):softmax用在多分類過(guò)程中,多個(gè)神經(jīng)元的輸出通過(guò)它映射到(0,1)的區(qū)間,相當(dāng)于是概率,如此一來(lái)就可以進(jìn)行多分類,若一個(gè)數(shù)組為V,Vi表示V中的第i個(gè)元素,那么這個(gè)元素的softmax值就是:Si=eij通過(guò)softmax函數(shù)作用,輸出都被映射成(0,1)之間的值,所有值的和為1,與概率的性質(zhì)相似,最后在輸出結(jié)點(diǎn)選取值對(duì)應(yīng)最大的結(jié)點(diǎn)作為我們的預(yù)測(cè)目標(biāo)。損失函數(shù):本設(shè)計(jì)我們使用交叉熵作為損失函數(shù),交叉熵?fù)p失函數(shù)是一個(gè)平滑函數(shù),交叉熵訓(xùn)練集的先驗(yàn)信息為語(yǔ)音語(yǔ)句的真實(shí)語(yǔ)義,測(cè)試集后驗(yàn)信息以機(jī)器翻譯的語(yǔ)義為準(zhǔn),用兩者之間的計(jì)算出來(lái)的交叉熵并對(duì)語(yǔ)音進(jìn)行歧義的辨識(shí),以達(dá)到減少誤差的效果,交叉熵函數(shù)形式為:Loss=-iyiln其中y代表我們的真實(shí)值,a代表我們softmax求出的值。i代表的是輸出結(jié)點(diǎn)的標(biāo)號(hào)。Socket函數(shù):Socket用于相同或不同主機(jī)進(jìn)程之間的通信通信,在兩臺(tái)計(jì)算機(jī)各自的系統(tǒng)中創(chuàng)建一個(gè)Socket,可以進(jìn)行兩者之間的網(wǎng)絡(luò)通信。Socket連接建立之前主要進(jìn)行兩項(xiàng)工作,第一項(xiàng)是連接建立前的兩個(gè)Socket的初始化工作,第二個(gè)是兩臺(tái)計(jì)算機(jī)通信時(shí)的“三路握手”,完成兩項(xiàng)工作之后,服務(wù)器端通過(guò)系統(tǒng)調(diào)用recv()獲取數(shù)據(jù),客戶端通過(guò)調(diào)用send()完成數(shù)據(jù)的發(fā)送REF_Ref31916\w\h[7],進(jìn)而實(shí)現(xiàn)使用Socket進(jìn)行通信。實(shí)踐過(guò)程及結(jié)果(1)模型的確定經(jīng)過(guò)搜集各種信息,深入了解了有關(guān)語(yǔ)音識(shí)別的相關(guān)知識(shí),我和組員將多種語(yǔ)音識(shí)別模型結(jié)合我們所需進(jìn)行了多方衡量,對(duì)比其優(yōu)缺點(diǎn)后,我們決定采用具有強(qiáng)大自學(xué)習(xí)功能的人工神經(jīng)網(wǎng)絡(luò)模型。(2)訓(xùn)練集的收集與匹配在訓(xùn)練模型之前需要尋找到大量合適的訓(xùn)練集和測(cè)試集,作為訓(xùn)練樣本和測(cè)試樣本的素材應(yīng)用在識(shí)別過(guò)程中。剛開始進(jìn)行搜集的時(shí)候遇到極大困難,經(jīng)過(guò)百度,博客,GitHub及各種論壇和網(wǎng)站的地毯式搜尋,終于找到能夠匹配我們模型的足夠的量的訓(xùn)練集數(shù)據(jù)。我們找到了一共32個(gè)訓(xùn)練集,每個(gè)訓(xùn)練集里面有1000多個(gè)語(yǔ)音文件。在試驗(yàn)的過(guò)程中,經(jīng)過(guò)多次選擇及綜合考慮,不斷選擇更有代表性的類,通過(guò)對(duì)比不同的量所產(chǎn)生的效果增減類別,最終主要應(yīng)用識(shí)別了“bed”、“go”、“house”、“off”、“stop”、“yes”六類的語(yǔ)音。(3)模型優(yōu)化分析模型中激活函數(shù)的使用優(yōu)化:為了增加神經(jīng)網(wǎng)絡(luò)模型的非線性,需要在模型中使用激活函數(shù),一開始我們用的是函數(shù),但是其兩端飽和,趨向無(wú)窮的地方,函數(shù)值變化很小,容易缺失梯度,在傳播過(guò)程中容易丟棄信息,不利于深層神經(jīng)網(wǎng)絡(luò)的反饋傳輸,后來(lái)經(jīng)過(guò)探討,決定改為采用函數(shù),因?yàn)槠渚哂蟹侄尉€性性質(zhì),學(xué)習(xí)優(yōu)化會(huì)更加容易,這便有效解決梯度缺失等的問(wèn)題,使得誤差減小,準(zhǔn)確率提高。模型中損失函數(shù)的使用優(yōu)化:損失函數(shù)的主要作用是比較衡量神經(jīng)網(wǎng)絡(luò)的輸出值與實(shí)際值之間的差距。若神經(jīng)網(wǎng)絡(luò)工作中損失函數(shù)有誤,就會(huì)導(dǎo)致實(shí)際值與預(yù)測(cè)結(jié)果相差過(guò)大,誤差不能有效地得到降低,識(shí)別率普遍不高。于是在后來(lái)的方案設(shè)計(jì)中使用了損失函數(shù)交叉熵,有效提高了準(zhǔn)確率。模型中隱藏層數(shù)的使用優(yōu)化:一開始的方案只使用了一層的隱藏層,所以整個(gè)模型工作效率越低,其計(jì)算精確度也較低,后來(lái)經(jīng)過(guò)優(yōu)化,在此基礎(chǔ)上多加了一層,減少了誤差,識(shí)別率也相應(yīng)提升。(4)完善參數(shù)過(guò)程一開始設(shè)計(jì)了一個(gè)比較簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),其隱藏層層數(shù)、訓(xùn)練集類別、激活函數(shù)的選擇和應(yīng)用等方面都存在一些問(wèn)題,且未使用損失函數(shù),激活函數(shù)采用了傳統(tǒng)的sigmoid函數(shù),模型尚不成熟,不能有效減少誤差,得出的準(zhǔn)確率很低。經(jīng)過(guò)多次訓(xùn)練和改進(jìn),識(shí)別率有所提高,但仍不理想。最后經(jīng)過(guò)多方調(diào)研與調(diào)參,針對(duì)問(wèn)題各個(gè)擊破,引入Keras模型,通過(guò)增加隱藏層和損失函數(shù),改用效果較好的relu函數(shù)等一系列措施,對(duì)模型進(jìn)行完善,大大降低了誤差,準(zhǔn)確率顯著提高:(5)語(yǔ)音的錄入通過(guò)調(diào)用麥克風(fēng)錄音,定義錄入音頻的函數(shù),記錄人說(shuō)話的聲音。(6)發(fā)送信號(hào)與控制調(diào)用send給服務(wù)器發(fā)送信號(hào),語(yǔ)音識(shí)別出的結(jié)果轉(zhuǎn)換成文字作為客戶端的發(fā)送數(shù)據(jù),建立服務(wù)端,通過(guò)socket網(wǎng)絡(luò)編程接收客戶端所發(fā)送的文字控制信息,需要在另一個(gè)python代碼編譯器或命令行中編輯代碼運(yùn)行建立虛擬服務(wù)端,以達(dá)到接受信號(hào)并控制家居的目的。本次實(shí)驗(yàn)用Anaconda的Spyder作為語(yǔ)音識(shí)別端,Pycharm作為socket服務(wù)端,服務(wù)器端通過(guò)系統(tǒng)調(diào)用recv()進(jìn)行數(shù)據(jù)的獲取,達(dá)到“控制家居”的目的。結(jié)論至此為止,此次畢業(yè)設(shè)計(jì)《基于語(yǔ)音識(shí)別實(shí)現(xiàn)智能家居控制》已經(jīng)圓滿完成,本次設(shè)計(jì)所涉及到的Python基礎(chǔ)知識(shí)、語(yǔ)音識(shí)別以及信號(hào)控制等基本原理是我們?cè)诖髮W(xué)學(xué)習(xí)中接觸較少的,神經(jīng)元網(wǎng)絡(luò)也只是粗略學(xué)習(xí)了一些基礎(chǔ)知識(shí),所以本次課題對(duì)于我們來(lái)說(shuō)有一定的難度?;貞浧饎偠ê妙}目時(shí),和組員以及導(dǎo)師分析討論相關(guān)問(wèn)題時(shí)候一頭霧水的情景,突然覺(jué)得現(xiàn)在能夠如此順利地完成此次畢業(yè)設(shè)計(jì)有點(diǎn)不可思議,感到十分的欣慰和釋然。我們從分析題目,分配任務(wù),設(shè)計(jì)框架,選擇方案,設(shè)計(jì)模型,測(cè)試改善,到最終完成本次設(shè)計(jì),經(jīng)歷了幾個(gè)月的艱難前行,一步一個(gè)腳印,突破了重重困難,不斷從網(wǎng)上檢索信息,查找相關(guān)資料,并自主學(xué)習(xí)相關(guān)原理和知識(shí),一起討論方案設(shè)想,搜尋訓(xùn)練集和相關(guān)模型,確定和設(shè)計(jì)模型,不斷嘗試和改造,在失敗中越挫越勇,在這個(gè)過(guò)程中學(xué)到了許多寶貴的知識(shí)與經(jīng)驗(yàn),進(jìn)一步了解了Python基本運(yùn)用,更加熟悉神經(jīng)元網(wǎng)絡(luò)以及語(yǔ)音識(shí)別原理,并能夠加以結(jié)合應(yīng)用,收益頗多。越努力,越幸運(yùn),在我們的艱苦鉆研下,最終完整地實(shí)現(xiàn)了從語(yǔ)音錄入、語(yǔ)音識(shí)別到信號(hào)的發(fā)送與控制這一陣個(gè)環(huán)節(jié),實(shí)現(xiàn)了本設(shè)計(jì)的所有目的,且準(zhǔn)確率高達(dá)98.8%,這讓我更加堅(jiān)定了只要努力就一定會(huì)有收獲的信念。通過(guò)本次課題的研究設(shè)計(jì),我對(duì)語(yǔ)音識(shí)別領(lǐng)域產(chǎn)生了濃厚的興趣,這讓我更加明確了我今后的發(fā)展定位和方向,人工智能領(lǐng)域是當(dāng)今科技時(shí)代主流的產(chǎn)業(yè),研究此項(xiàng)新興技術(shù)在當(dāng)今科技時(shí)代有著非常重要且遠(yuǎn)大的意義。今后我會(huì)更加努力提升自己,不斷鉆研相關(guān)知識(shí),成為更好的自己!參考文獻(xiàn)劉豫軍,夏聰.深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)在語(yǔ)音識(shí)別中的應(yīng)用[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,NetworkSecurityTechnology&Application,編輯部郵箱,2014年12期.于曉明.語(yǔ)音識(shí)別技術(shù)的發(fā)展及應(yīng)用[J].計(jì)算機(jī)時(shí)代,2019,(11):28-31.廖锎.淺析語(yǔ)音識(shí)別技術(shù)的發(fā)展及趨勢(shì)[J].科技傳播,2010,(17).戴禮榮,張仕良,黃智穎.基于深度學(xué)習(xí)的語(yǔ)音識(shí)別技術(shù)現(xiàn)狀與展望[J].數(shù)據(jù)采集與處理,2017,第32卷(2):221-231.楊磊,劉美枝.語(yǔ)音識(shí)別技術(shù)在智能家庭照明系統(tǒng)中的應(yīng)用[J].電子技術(shù)與軟件工程,2018,(15):64.冀瑞國(guó).神經(jīng)網(wǎng)絡(luò)在語(yǔ)音識(shí)別中的應(yīng)用[J].電子技術(shù)與軟件工程,2019,(3):249.王進(jìn)文.Socket通信過(guò)程原理及相關(guān)系統(tǒng)調(diào)用[J].中國(guó)新技術(shù)新產(chǎn)品,2015,(7):25.蔣昂波,王維維.ReLU激活函數(shù)優(yōu)化研究*[J].傳感器與微系統(tǒng),2018,第37卷(2):50-52.何朝霞,潘平.說(shuō)話人識(shí)別中改進(jìn)的MFCC參數(shù)提取方法[J].科學(xué)技術(shù)與工程,2011,(18):4215-4218,4227.楊海燕,吳雷,周萍.基于壓縮感知和MFCC的語(yǔ)音端點(diǎn)檢測(cè)算法[J].測(cè)控技術(shù),2019,第38卷(5):88-93.謝辭畢業(yè)設(shè)計(jì)的結(jié)束也就意味著大學(xué)四年的學(xué)習(xí)生涯即將結(jié)束,美好的大學(xué)生活即將過(guò)去,青蔥的我們都將脫下學(xué)生的身份衣服過(guò)渡成一個(gè)真正的社會(huì)人,心中感慨萬(wàn)千,在這一路的成長(zhǎng)以來(lái),我需要感謝的人太多太多。首先,感謝指導(dǎo)我完成此次畢業(yè)設(shè)計(jì)的龔導(dǎo)師,每周一次的會(huì)議和指導(dǎo)讓我受益匪淺,他既細(xì)心又耐心的教導(dǎo)讓我倍感溫暖,遇到困難時(shí)為我們提供了很多學(xué)習(xí)資料和相關(guān)資源,貼心地引導(dǎo)我們往正確的方向研討,針對(duì)出現(xiàn)的問(wèn)題協(xié)助我們耐心地解決和攻破。同時(shí)也感謝整個(gè)大學(xué)期間所有教予我知識(shí)的老師,他們傳授我寶貴的專業(yè)知識(shí),用知識(shí)澆灌我,開拓了我的眼界,提升了我的專業(yè)能力,感謝他們的辛勤付出和諄諄教導(dǎo)。老師們,你們辛苦了!其次,感謝跟我一起做此次畢業(yè)設(shè)計(jì)的組員們,他們幫助了我很多,在遇到一些困難時(shí),他們不嫌麻煩地一步步教我,協(xié)助我解決相關(guān)問(wèn)題,我們一起學(xué)習(xí),一起探討,相互鼓勵(lì)和進(jìn)步,相互協(xié)同配合,團(tuán)結(jié)一致,最終完整地完成了本次畢業(yè)設(shè)計(jì)。同時(shí)也感謝整個(gè)大學(xué)期間陪我一起度過(guò)四年大學(xué)生活的同學(xué)們,不管是在學(xué)習(xí)還是生活中,你們都帶給我許多幫助和歡樂(lè),自從任職班長(zhǎng)以來(lái),我們一起協(xié)同配合班級(jí)管理相關(guān)工作,使我們班級(jí)氛圍越來(lái)越好,感謝你們!最后,感謝整個(gè)大學(xué)生活里幫助過(guò)我的所有人,以及一直陪在我身邊的家人朋友,我們一起成長(zhǎng)進(jìn)步,一起哭過(guò)笑過(guò)。世事變遷,回頭還是你們。感恩。附錄附錄1最終的完整程序源代碼import

wave

import

numpy

as

np

import

os

import

socket

import

time

import

pyaudio

import

keras

from

keras.models

import

Sequential

from

keras.models

import

load_model

from

keras.layers

import

Dense

def

get_wav_mfcc(wav_path):

f

=

wave.open(wav_path,'rb')

params

=

f.getparams()

#

print("params:",params)

nchannels,

sampwidth,

framerate,

nframes

=

params[:4]

strData

=

f.readframes(nframes)#讀取音頻,字符串格式

waveData

=

np.fromstring(strData,dtype=16)#將字符串轉(zhuǎn)化為int

waveData

=

waveData*1.0/(max(abs(waveData)))#wave幅值歸一化

waveData

=

np.reshape(waveData,[nframes,nchannels]).T

f.close()

###

對(duì)音頻數(shù)據(jù)進(jìn)行長(zhǎng)度大小的切割,保證每一個(gè)的長(zhǎng)度都是一樣的【因?yàn)橛?xùn)練文件全部是1秒鐘長(zhǎng)度,16000幀的,所以這里需要把每個(gè)語(yǔ)音文件的長(zhǎng)度處理成一樣的】

data

=

list(np.array(waveData[0]))

#

print(len(data))

while

len(data)>16000:

del

data[len(waveData[0])-1]

del

data[0]

#

print(len(data))

while

len(data)<16000:

data.append(0)

#

print(len(data))

data=np.array(data)

data

=

np.abs(data)

return

data

#

加載數(shù)據(jù)集

標(biāo)簽[并返回標(biāo)簽集的處理結(jié)果]

def

create_datasets():

cls=["bed",

"go",

"house",

"off",

"stop",

"yes"]

wavs=[]

labels=[]

#

labels

testlabels

這里面存的值都是對(duì)應(yīng)標(biāo)簽的下標(biāo),下標(biāo)對(duì)應(yīng)的名字在labsInd中

testwavs=[]

testlabels=[]

for

i

in

range(6):

path

=

"data_ray\\"+cls[i]+"\\"

files

=

os.listdir(path)

for

j

in

files:

waveData

=

get_wav_mfcc(path+j)

wavs.append(waveData)

labels.append(i)

for

i

in

range(6):

path

=

"test_ray\\"+cls[i]+"\\"

files

=

os.listdir(path)

for

j

in

files:

waveData

=

get_wav_mfcc(path+j)

testwavs.append(waveData)

testlabels.append(i)

wavs=np.array(wavs)

labels=np.array(labels)

testwavs=np.array(testwavs)

testlabels=np.array(testlabels)

return

(wavs,labels),(testwavs,testlabels)

def

build_model():

(wavs,labels),(testwavs,testlabels)

=

create_datasets()

print(wavs.shape,"

",labels.shape)

print(testwavs.shape,"

",testlabels.shape)

#

標(biāo)簽轉(zhuǎn)換為獨(dú)熱碼

labels

=

keras.utils.to_categorical(labels,

6)

testlabels

=

keras.utils.to_categorical(testlabels,

6)

print(labels[0])

##

類似

[1.

0.

0]

print(testlabels[0])

##

類似

[0.

0.

0]

print(wavs.shape,"

",labels.shape)

print(testwavs.shape,"

",testlabels.shape)

#

構(gòu)建sequential順序模型,由多個(gè)網(wǎng)絡(luò)層線性堆疊的棧。使用其API可以構(gòu)建任意的神經(jīng)網(wǎng)絡(luò)圖。

model

=

Sequential()

#可以簡(jiǎn)單地使用

.add()

來(lái)堆疊模型,Dense(768)

是一個(gè)具有

768

個(gè)隱藏神經(jīng)元的全連接層。

model.add(Dense(512,

activation='relu',input_shape=(16000,)))

model.add(Dense(256,

activation='relu'))

model.add(Dense(128,

activation='relu'))

model.add(Dense(6,

activation='softmax'))

model.summary()

#

[編譯模型]

配置模型,損失函數(shù)采用交叉熵,優(yōu)化采用Adadelta,將識(shí)別準(zhǔn)確率作為模型評(píng)估

#如果需要,你還可以進(jìn)一步地配置你的優(yōu)化器。Keras的核心原則是使事情變得相當(dāng)簡(jiǎn)單,同時(shí)又允許用戶在需要的時(shí)候能夠進(jìn)行完全的控制(終極的控制是源代碼的易擴(kuò)展性)

pile(loss=keras.losses.categorical_crossentropy,

optimizer=keras.optimizers.Adam(),

metrics=['accuracy'])

#

validation_data為驗(yàn)證集

#

批量地在訓(xùn)練數(shù)據(jù)上進(jìn)行迭代,以

124

個(gè)樣本為一個(gè)

batch

進(jìn)行迭代

model.fit(wavs,

labels,

batch_size=128,

epochs=15,

verbose=1,

validation_data=(testwavs,

testlabels))

#

開始評(píng)估模型效果

#

verbose=0為不輸出日志信息

score

=

model.evaluate(testwavs,

testlabels,

verbose=0)

print('Test

loss:',

score[0])

print('Test

accuracy:',

score[1])

#

準(zhǔn)確度

model.save('asr_model_weights_ray.h5')

#

保存訓(xùn)練模型

def

predict(path):

#加載訓(xùn)練好的模型,識(shí)別新的音頻,返回識(shí)別結(jié)果

pred_labels

=

["bed",

"go",

"house",

"off",

"stop",

"yes"]

wavs

=

[]

load_labels

=

[]

files

=

os.listdir(path)

for

j

in

files:

waveData

=

get_wav_mfcc(path+j)

wavs.append(waveData)

load_labels.append(j[:-4])

print("所加載的語(yǔ)音指令為:",load_labels)

wavs=np.array(wavs)

model

=

load_model('asr_model_weights_ray.h5')

#加載訓(xùn)練好的模型

preds

=

model.predict(wavs)

preds

=

preds.tolist()

result

=

[]

#創(chuàng)建列表存放識(shí)別結(jié)果

for

pred

in

preds:

#result.append(labels[pred.index(max(pred))])

result.append(pred_labels[pred.index(max(pred))])

return

result

def

send_sig(sig):

#發(fā)送信號(hào)

#

1、創(chuàng)建socket通信對(duì)象

clientSocket

=

socket.socket()

#

2、使用正確的ip和端口去鏈接服務(wù)器

clientSocket.connect(("",8888))

#

3、客戶端與服務(wù)器端進(jìn)行通信

#

給socket服務(wù)器發(fā)送信息

send_data

=

str(sig)

clientSocket.send(send_data.encode('GB2312'))

#

接收服務(wù)器的響應(yīng)(服務(wù)器回復(fù)的消息)

recvData

=

clientSocket.recv(1024).decode('GB2312')

print('%s

指令控制結(jié)果為:

%s'

%

(send_data,

recvData))

#

4、關(guān)閉socket對(duì)象

clientSocket.close()

def

get_audio(filepath):

#錄入新的音頻

aa

=

str(input("是否開始錄音?

(是/否)"))

if

aa

==

str("是")

:

CHUNK

=

256

FORMAT

=

pyaudio.paInt16

CHANNELS

=

2

#

聲道數(shù)

RATE

=

16000

#

采樣率

RECORD_SECONDS

=

1

WAVE_OUTPUT_FILENAME

=

filepath

p

=

pyaudio.PyAudio()

stream

=

p.open(format=FORMAT,

channels=CHANNELS,

rate=RATE,

input=True,

frames_per_buffer=CHUNK)

print("*"*10,

"開始錄音:請(qǐng)?jiān)?秒內(nèi)輸入語(yǔ)音")

frames

=

[]

for

i

in

range(0,

int(RATE

/

CHUNK

*

RECORD_SECONDS)):

data

=

stream.read(CHUNK)

frames.append(data)

print("*"*10,

"錄音結(jié)束\n")

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()

elif

aa

==

str("否"):

exit()

else:

print("無(wú)效輸入,請(qǐng)重新選擇")

get_audio(in_path)

def

sending():

#延時(shí)進(jìn)度條

scale

=

20

print("開始發(fā)送指令...")

start

=

time.perf_counter()

for

i

in

range(scale

+

1):

a

=

"="

*

i

b

=

"."

*

(scale

-

i)

c

=

(i/scale)*100

dur

=

time.perf_counter()

-

start

print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end

="")

time.sleep(0.1)

#print("\n"+"指令發(fā)送成功!")

if

__name__

==

'__main__':

#訓(xùn)練模型

build_model()

#錄入語(yǔ)音

is_contin

=

input("是否開始錄入音頻:

(任意鍵繼續(xù),q鍵退出)

")

count

=

1

while

is_contin

!=

'q':

input_filename

=

"yes123{}.wav".format(count)

#

麥克風(fēng)采集的語(yǔ)音輸入

input_filepath

=

".\\test_ray\\yes\\"

#

輸入文件的path

in_path

=

input_filepath

+

input_filename

get_audio(in_path)

count

+=

1

is_contin

=

input("是否繼續(xù)錄入音頻:

(任意鍵繼續(xù),q鍵退出)

")

#使用模型識(shí)別語(yǔ)音

path

=

"test_ray\\house\\"

result

=

predict(path)

print("模型識(shí)別出的指令為:",

result,

'\n')

time.sleep(2)

#發(fā)送信號(hào)

for

re

in

result:

print("向機(jī)器發(fā)送

{}

指令".format(re))

sending()

send_sig(re)

time.sleep(0.5)

print("\n"+"指令發(fā)送成功!")

print("指令發(fā)送完畢!")

電腦無(wú)法識(shí)別U盤該怎么辦HYPERLINK電腦無(wú)法識(shí)別U盤怎么辦?打開我的電腦上單擊右鍵,在快捷菜單里,選擇“管理”,打開“計(jì)算機(jī)管理”窗口。在計(jì)算機(jī)管理窗口里,選擇“存儲(chǔ)”下面的“磁盤管理”,如果看得到?jīng)]有盤符的U盤,那么在這個(gè)U盤上按鼠標(biāo)右鍵,選擇“更改驅(qū)動(dòng)器名稱和路徑”選項(xiàng),就打開了“更改……的驅(qū)動(dòng)器號(hào)和路徑”對(duì)話框。再點(diǎn)擊“更改”按鈕,打開“更改驅(qū)動(dòng)器號(hào)和路徑”的對(duì)話框,在“指定以下驅(qū)動(dòng)器號(hào)”的右邊下拉列表里,選擇你希望分配給U盤的驅(qū)動(dòng)器號(hào),盡可能靠后選擇,比如X、Y、Z,選擇好后,單擊確定按鈕,回到上一次“更改……的驅(qū)動(dòng)器號(hào)和路徑”對(duì)話框窗口,再一次單擊確定,就回到“計(jì)算機(jī)管理”窗口。至此,如果一切正常,就給U盤單獨(dú)設(shè)置了一個(gè)長(zhǎng)久使用的驅(qū)動(dòng)器號(hào),并卻,不受虛擬驅(qū)動(dòng)器的影響了。建議將U盤插到電腦上,看任務(wù)欄中是否顯示圖標(biāo),如果顯示,在我的電腦點(diǎn)右鍵查看屬性——高級(jí)——硬件——設(shè)備管理器——查看里面是否有問(wèn)號(hào)的設(shè)備,在問(wèn)號(hào)設(shè)備上點(diǎn)右鍵——更新驅(qū)動(dòng)程序然后下一步——否暫時(shí)不連接到網(wǎng)絡(luò)——下一步自動(dòng)安裝軟件(推薦)就可以了另外:系統(tǒng)不認(rèn)U盤的幾種處理方法1.禁用主板usb設(shè)備。管理員在CMOS設(shè)置里將USB設(shè)備禁用,并且設(shè)置BIOS密碼,這樣U盤插到電腦上以后,電腦也不會(huì)識(shí)別。這種方法有它的局限性,就是不僅禁用了U盤,同時(shí)也禁用了其他的usb設(shè)備,比如usb鼠標(biāo),usb光驅(qū)等。所以這種方法管理員一般不會(huì)用,除非這臺(tái)電腦非常重要,值得他舍棄掉整個(gè)usb總線的功能。但是這種屏蔽也可以破解,即便設(shè)置了密碼。整個(gè)BIOS設(shè)置都存放在CMOS芯片里,而COMS的記憶作用是靠主板上的一個(gè)電容供電的。電容的電來(lái)源于主板電池,所以,只要把主板電池卸下來(lái),用一根導(dǎo)線將原來(lái)裝電池的地方正負(fù)極短接,瞬間就能清空整個(gè)CMOS設(shè)置,包括BIOS的密碼。隨后只需安回電池,自己重新設(shè)置一下CMOS,就可以使用usb設(shè)備了。(當(dāng)然,這需要打開機(jī)箱,一般眾目睽睽之下不大適用~~)2.修改注冊(cè)表項(xiàng),禁用usb移動(dòng)存儲(chǔ)設(shè)備。打開注冊(cè)表文件,依次展開"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbehci”雙擊右面的“Start”鍵,把編輯窗口中的“數(shù)值數(shù)據(jù)”改為“4”,把基數(shù)選擇為“十六進(jìn)制”就可以了。改好后注銷一下就可以看見效果了。為了防止別人用相同的方法來(lái)破解,我們可以刪除或者改名注冊(cè)表編輯器程序。提示:“Start”這個(gè)鍵是USB設(shè)備的工作開關(guān),默認(rèn)設(shè)置為“3”表示手動(dòng),“2”是表示自動(dòng),“4”是表示停用。3.在computermanagement里將removablestorage的使用權(quán)限禁止。computermanagement是一個(gè)windows管理組件,可以在控制面板——管理工具——計(jì)算機(jī)管理打開。在該工具窗口中storage——removablestorage——property中,general項(xiàng),可以控制系統(tǒng)托盤是否顯示security則可以管理移動(dòng)存儲(chǔ)設(shè)備的使用權(quán)限。在security中將普通用戶的使用權(quán)限降低,就可以達(dá)到禁用u盤的目的。破解的方法也很簡(jiǎn)單,管理員降低普通用戶移動(dòng)存儲(chǔ)設(shè)備的使用權(quán)限,但未必禁用computermanagement的使用權(quán)限。普通用戶可以通過(guò)這個(gè)工具解除usb移動(dòng)存儲(chǔ)設(shè)備的使用權(quán)限限制。另外,值得一提的是,如果u盤插到電腦上后可以驅(qū)動(dòng),但是我的電腦里卻沒(méi)有盤符,很有可能是管理員改動(dòng)了u盤的默認(rèn)盤符,使得我的電腦不能識(shí)別。這種情況,可以在movablestorage中看到u盤驅(qū)動(dòng)器??梢栽趗盤驅(qū)動(dòng)器屬性設(shè)置里為u盤重新分配一個(gè)盤符,再重新插拔一次u盤,就可以在我的電腦里看到u盤的盤符了。一、首先可以將該U盤換到別的機(jī)器上,看使用是否正常。如果排除了硬件損壞的可能,一般就是軟件方面有問(wèn)題。在WindowsXP+SP1操作系統(tǒng)下,有些USB2.0設(shè)備的確常常出現(xiàn)工作不穩(wěn)定的問(wèn)題,可以試試安裝設(shè)備自帶的USB2.0驅(qū)動(dòng)程序。另外最好不要使用USB延長(zhǎng)線,防止因?yàn)楣╇姴蛔愣斐刹环€(wěn)定現(xiàn)象。如果仍無(wú)效,可以在主板BIOS設(shè)定中,將USB接口強(qiáng)行設(shè)置為USB1.1傳輸速率。二、(適用于WIN98)啟動(dòng)計(jì)算機(jī),進(jìn)入主板BIOS設(shè)置,檢查BIOS中USB的相關(guān)選項(xiàng)是否已經(jīng)打開:OnChipUSB設(shè)定為Enabled;USBController設(shè)定為Enabled;PNPOSInstalled設(shè)定為Yes;AssignIRQForUSB設(shè)成Enabled。要正常使用USB設(shè)備首先要開啟USB接口,在主板BIOS里可以進(jìn)行此項(xiàng)工作,一般來(lái)說(shuō)只需在BIOS中進(jìn)入ChipsetFeatures設(shè)置,并將USBKeyborad/MouseLegacy選項(xiàng)設(shè)定為Enable,就能夠保證在操作系統(tǒng)下使用USB鍵盤了。這些選項(xiàng)的作用是打開主板芯片組對(duì)USB設(shè)備的完全支持,為系統(tǒng)識(shí)別USB設(shè)備做準(zhǔn)備工作。三、USB口接觸不好處理辦法:拔下,等十秒鐘再插上USB口,使接觸完好;五、閃存盤驅(qū)動(dòng)程序沒(méi)有安裝完成(WIN98系統(tǒng)下)處理辦法:鼠標(biāo)點(diǎn)“我的電腦”,選擇屬性找到“通用串行總線”,刪除其中的USBMASSSTORAGE項(xiàng),再點(diǎn)擊“刷新”,然后按照提示重新安裝一次驅(qū)動(dòng)程序。六、接其它USB設(shè)備(如掃描儀、打印機(jī)、數(shù)碼相機(jī))時(shí)可以正常使用,接優(yōu)盤時(shí)閃指示燈不亮,不能夠使用。1、檢查優(yōu)盤與電腦的聯(lián)接是否正常,并換用其它USB接口測(cè)試。2、檢查設(shè)備管理器,看是否出現(xiàn)”通用總線設(shè)備控制器”條目,如果沒(méi)有,請(qǐng)將電腦主板BIOS中USB接口條目*激活(ENABLE)。3、如果電腦安裝過(guò)其它類型USB設(shè)備,卸載該設(shè)備驅(qū)動(dòng)程序,并首先安裝優(yōu)盤驅(qū)動(dòng)程序。4、到其它電腦試用此優(yōu)盤,確認(rèn)是否優(yōu)盤不良。七、啟動(dòng)型優(yōu)盤在的電腦上無(wú)法實(shí)現(xiàn)啟動(dòng),可能是主板型號(hào)不支持。如何判斷一塊主板是否支持閃存盤啟動(dòng)系統(tǒng)啟動(dòng)型優(yōu)盤是采用模擬USB軟驅(qū)和USB硬盤的方式啟動(dòng)電腦的。只要電腦主板支持USB設(shè)備啟動(dòng),即BIOS的啟動(dòng)選項(xiàng)中有USB-FDD、USB-HDD或是其它類似的選項(xiàng),就可以使用啟動(dòng)型優(yōu)盤啟動(dòng)電腦。八、第一次在電腦上使用優(yōu)盤,未出現(xiàn)提示發(fā)現(xiàn)新硬件的窗口,驅(qū)動(dòng)程序無(wú)法安裝的原因可能是:1、主板usbcontroller未啟用解決辦法:在電腦主板BIOS中啟用此功能。2、usbcontroller已經(jīng)啟用但運(yùn)行不正常解決辦法:在設(shè)備管理器中刪除”通用串行控制器”下的相關(guān)設(shè)備并刷新。3、優(yōu)盤被電腦識(shí)別異常,在設(shè)備管理器中表現(xiàn)為帶有黃色?或!的”其它設(shè)備”或“未知設(shè)備”。解決辦法:刪除此設(shè)備并刷新。九、大容量的U盤(例如兼具M(jìn)P3播放器或錄音功能的U盤)或移動(dòng)硬盤在電腦上無(wú)法正常使用,雖然系統(tǒng)提示找到了未知的USB設(shè)備,但無(wú)法正確識(shí)別U盤或移動(dòng)硬盤。原因可能是:1.USB接口供電不足:系統(tǒng)為每個(gè)USB接口分配了500mA的最大輸出電流,一般的U盤只需要100mA的工作電流,因此在使用過(guò)程中不會(huì)出現(xiàn)什么問(wèn)題。大多數(shù)移動(dòng)硬盤所使用的是普通的2.5英寸硬盤,其工作電流介于500mA~1000mA之間,此時(shí)假如僅僅通過(guò)USB接口供電,當(dāng)系統(tǒng)中并無(wú)其他USB設(shè)備時(shí),那么還是可以勉強(qiáng)使用的,但如果電壓不穩(wěn)的話,就隨時(shí)可能出現(xiàn)供電不足的問(wèn)題。特別是使用支持USB2.0的移動(dòng)硬盤時(shí),情況最為嚴(yán)重。另外,如果你的筆記本電腦使用電池供電,那么USB接口所分配的電量就更小了。2.使用了外接的USB擴(kuò)展卡:在筆記本電腦中使用USB2.0的U盤或移動(dòng)硬盤時(shí),如果筆記本電腦不支持USB2.0技術(shù),一般必須通過(guò)PCMCIA卡轉(zhuǎn)USB2.0的擴(kuò)展卡來(lái)間接實(shí)現(xiàn)支持,這些擴(kuò)展卡基本上都采用NEC公司的D720100AGMUSB控制芯片,少則提供兩個(gè)USB2.0接口,多則提供五個(gè)USB2.0接口,對(duì)一般用戶而言足夠使用了。由于PCMICA接口提供的電源功率比板載USB接口要小,這樣就會(huì)由于供電不足而導(dǎo)致移動(dòng)硬盤工作的出現(xiàn)問(wèn)題。解決方案:1.它從USB連接線上接移動(dòng)硬盤的一端引出一根轉(zhuǎn)接線,可以插入電腦背后的PS/2接口取電,這里可以比USB接口提供更大的電流輸出。2.利用電源補(bǔ)償線(也稱“鍵盤取電線”),如果U盤或移動(dòng)硬盤的包裝盒中提供了選配的電源適配器,你就可以直接使用外接電源,這樣就可以從根本上避免供電不足的情況發(fā)生了前置USB線接錯(cuò)。當(dāng)主板上的USB線和機(jī)箱上的前置USB接口對(duì)應(yīng)相接時(shí)把正負(fù)接反就會(huì)發(fā)生這類故障,這也是相當(dāng)危險(xiǎn)的,因?yàn)檎?fù)接反很可能會(huì)使得USB設(shè)備燒毀。所以盡量采用機(jī)箱后置的USB接口,也少用延長(zhǎng)線.也可能是斷口有問(wèn)題,換個(gè)USB端口看下.USB接口電壓不足。當(dāng)把<ahref="mobileharddisk">移動(dòng)硬盤</a>接在前置USB口上時(shí)就有可能發(fā)生系統(tǒng)無(wú)法識(shí)別出設(shè)備的故障。原因是<ahref="">移動(dòng)硬盤</a>功率比較大要求電壓相對(duì)比較嚴(yán)格,前置接口可能無(wú)法提供足夠的電壓,當(dāng)然劣質(zhì)的電源也可能會(huì)造成這個(gè)問(wèn)題。解決方法是<ahref="">移動(dòng)硬盤</a>不要接在前置USB接口上,更換劣質(zhì)低功率的電源或盡量使用外接電源的硬盤盒,假如有條件的話。主板和系統(tǒng)的兼容性問(wèn)題。呵呵這類故障中最著名的就是NF2主板與USB的兼容性問(wèn)題。假如你是在NF2的主板上碰到這個(gè)問(wèn)題的話,則可以先安裝最新的nForce2專用USB2.0驅(qū)動(dòng)和補(bǔ)丁、最新的主板補(bǔ)丁和操作系統(tǒng)補(bǔ)丁,還是不行的話嘗試著刷新一下主板的BIOS一般都能解決。系統(tǒng)或BIOS問(wèn)題。當(dāng)你在BIOS或操作系統(tǒng)中禁用了USB時(shí)就會(huì)發(fā)生USB設(shè)備無(wú)法在系統(tǒng)中識(shí)別。解決方法是開啟與USB設(shè)備相關(guān)的選項(xiàng)。就是開機(jī)按F2或DEL鍵,進(jìn)入BIOS,把enableusbdevice選擇enable。拔插要小心,讀寫時(shí)千萬(wàn)不可拔出,不然有可能燒毀芯片。XP中任務(wù)欄中多出USB設(shè)備的圖標(biāo),打開該圖標(biāo)就會(huì)在列表中顯示U盤設(shè)備,選擇將該設(shè)備停用,然后你再拔出設(shè)備,這樣會(huì)比較安全。

其實(shí)判斷軟件硬件問(wèn)題很簡(jiǎn)單,在別的機(jī)器或換個(gè)系統(tǒng)試試就可以了.有些小的問(wèn)題不妨先用專門軟件格式化下.還有提醒大家WINDOWS下格式化時(shí)要選擇FAT,不要選FAT32。

提示無(wú)法識(shí)別的USB設(shè)備維修

故障提示如圖:

無(wú)法識(shí)別的USB設(shè)備:UnknownUSBDevice.很多人都遇到過(guò)的一個(gè)問(wèn)題,所謂“無(wú)法識(shí)別”對(duì)于操作系統(tǒng)來(lái)說(shuō),或者是驅(qū)動(dòng)程度有問(wèn)題,或者是USB設(shè)備出現(xiàn)了問(wèn)題,或者是計(jì)算機(jī)與USB設(shè)備連接出現(xiàn)了故障,解決問(wèn)題的方法也是從這幾處著手。

對(duì)于不同的設(shè)備會(huì)有不同的處理方法,了解USB設(shè)備正常工作需要的條件以及一些可

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論