




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
北京理工大學(xué)珠海學(xué)院2020屆本科生畢業(yè)論文緒論人與機(jī)器使用語音進(jìn)行交流,并讓機(jī)器學(xué)習(xí),分析和理解人類語音的內(nèi)容。這一直是人類的夢想。語音識(shí)別(SpeechRecognition,SR)技術(shù),也稱為自動(dòng)語音識(shí)別(AutomaticSpeechRecognition,ASR)。梁靜.基于深度學(xué)習(xí)的語音識(shí)別研究[D].北京郵電大學(xué),2014.是使機(jī)器分析人們的語音并將其翻譯成準(zhǔn)確的文本,包括多語言的技術(shù)。隨著科學(xué)技術(shù)的發(fā)展,語音識(shí)別技術(shù)越來越普及。語音識(shí)別技術(shù)具有多種功能,其應(yīng)用也多種多樣,包括電子設(shè)備保護(hù)鎖定,人工智能助手,家用電器控制梁靜.基于深度學(xué)習(xí)的語音識(shí)別研究[D].北京郵電大學(xué),2014.1.1本設(shè)計(jì)的目的、意義及應(yīng)達(dá)到的技術(shù)要求目的:該設(shè)計(jì)的主要目的是利用基于神經(jīng)網(wǎng)絡(luò)模型的語音識(shí)別技術(shù)來識(shí)別和處理人類語音并實(shí)現(xiàn)智能家居的控制功能。意義:通過本次設(shè)計(jì)的研究學(xué)習(xí)神經(jīng)元網(wǎng)絡(luò)的訓(xùn)練、識(shí)別、處理語音以及發(fā)送語音信號(hào)控制家居的工作原理等知識(shí)。技術(shù)要求:掌握Python的基本用法,建立穩(wěn)定的神經(jīng)元網(wǎng)絡(luò)模型,在語音測試集中進(jìn)行語音識(shí)別最終得到識(shí)別結(jié)果和語音識(shí)別,或者在運(yùn)行過程中呈現(xiàn)結(jié)果。根據(jù)打印出的數(shù)據(jù),錯(cuò)誤處理,發(fā)送的語音信號(hào)等。1.2本設(shè)計(jì)在國內(nèi)外的發(fā)展概況及存在的問題早期,研究者最先需要解決的問題是語音信號(hào)長度如何匹配,語音信號(hào)特征如何提取。20世紀(jì)中期,動(dòng)態(tài)程序規(guī)劃(DynamicProgramming,DP),動(dòng)態(tài)時(shí)間調(diào)整(DynamicTimeWarping,DTW)算法被研究者關(guān)注,有效地將其解決。但此階段,基于模板匹配方式的語音識(shí)別技術(shù)有很大的局限性。只能對(duì)特定人的單個(gè)詞語識(shí)別。隨后,隱馬爾可夫模型(HiddenMarkovModel,HMM)引入后,基于概率模型方法逐漸替代模板匹配方法。20世紀(jì)80年代,由于隱馬爾科夫模型具有雙重隨機(jī)性,模型的表達(dá)能力得到了很好的提升。從而使其能對(duì)連續(xù)的序列建模,并且給說話人無關(guān)的大規(guī)模連續(xù)語音識(shí)別(LargeVocabularyContinuousSpeechRecognition,LVCSR)提供了可能,在隱馬爾科夫之后得很長時(shí)間內(nèi),混合高斯模型(Gaussianmixturemodel,GMM)和隱馬爾科夫兩種模型聯(lián)合對(duì)聲學(xué)模型建模一直被認(rèn)為是完美的語音識(shí)別模型。于曉明.語音識(shí)別技術(shù)的發(fā)展及應(yīng)用[J].計(jì)算機(jī)時(shí)代,2019,(11):28-31但很快,反向傳播算法(BackPropagation)的出現(xiàn),將語音識(shí)別技術(shù)又向前推動(dòng)了一大步,非特定人,于曉明.語音識(shí)別技術(shù)的發(fā)展及應(yīng)用[J].計(jì)算機(jī)時(shí)代,2019,(11):28-3190年代至今,計(jì)算機(jī)技術(shù)、電信應(yīng)用等領(lǐng)域有了更加飛速的發(fā)展,繼2012年LiDeng和Hinton等人將深度學(xué)習(xí)引入到語音識(shí)別領(lǐng)域。越來越多的語音識(shí)別系統(tǒng)從實(shí)驗(yàn)室走向?qū)嵱谩8鞔蠊炯娂娍春眠@一領(lǐng)域,張震南.人工神經(jīng)網(wǎng)絡(luò)技術(shù)在語音識(shí)別中的應(yīng)用[J].甘肅科技縱橫,2008,(4):21-76.投入大量資源。多倫多大學(xué)研究團(tuán)隊(duì)建立了一個(gè)具有DBN張震南.人工神經(jīng)網(wǎng)絡(luò)技術(shù)在語音識(shí)別中的應(yīng)用[J].甘肅科技縱橫,2008,(4):21-76.1.3本設(shè)計(jì)主要研究內(nèi)容本文主要的研究內(nèi)容由幾個(gè)部分組成:(1)提取音頻文件的特征向量(2)采用兩種方案構(gòu)建ANN,并使用訓(xùn)練集對(duì)其進(jìn)行訓(xùn)練(3)完善ANN模型各參數(shù),得出一個(gè)較高的識(shí)別率(4)對(duì)比選擇其中一種方案作為語音識(shí)別模塊(5)通過網(wǎng)絡(luò)通信發(fā)送信號(hào)到另一設(shè)備語音識(shí)別系統(tǒng)2.1語音信號(hào)的預(yù)處理將輸入的語音信號(hào)轉(zhuǎn)為文本信息是語音識(shí)別的基本功能需求,多數(shù)情況下不同的語音識(shí)別系統(tǒng)具有不同的呈現(xiàn)方式,但基本工作原理相同。原理圖如下:圖2.1從上圖可以看出,當(dāng)原始信號(hào)輸入系統(tǒng)后,首先進(jìn)行的是預(yù)處理過程,進(jìn)行提取語音參數(shù),即根據(jù)具體的算法策略,獲取可反映語音信號(hào)的特征參數(shù),處理提取的特征參數(shù),并將其存儲(chǔ)在模型庫中,獲取新的語音信號(hào)特征并與模型庫中匯總的特征進(jìn)行匹配,得到最佳匹配作為最終識(shí)別結(jié)果輸出。2.2語音信號(hào)的預(yù)處理在信息處理的過程當(dāng)中,為了讓模型得到的對(duì)象相對(duì)容易處理,就需要對(duì)一開始輸入的語音信號(hào)預(yù)處理。語音信號(hào)的預(yù)處理包括語音信號(hào)高頻部分的預(yù)加重、信號(hào)的分幀及加窗、對(duì)信號(hào)端點(diǎn)匹配檢測等。下圖為對(duì)語音信號(hào)進(jìn)行預(yù)處理的過程:圖語音信號(hào)的預(yù)加重根據(jù)語音的特性,語音信號(hào)的平均功率會(huì)受到限制,高頻部分能量比低頻部分能量小。因此語音的高頻部分相對(duì)低頻部分更難求出。怎樣消除信號(hào)中的低頻干擾(50HZ-60HZ)就是對(duì)高頻部分進(jìn)行加重處理。2.2.2語音信號(hào)的分幀加窗逐幀分幀:語音信號(hào)每一幀分成小段進(jìn)行處理。由于語音信號(hào)的瞬時(shí)穩(wěn)定性,也就是說在極短的時(shí)間內(nèi),語音信號(hào)的特性相對(duì)穩(wěn)定。分幀方法通常使用重疊成幀方法。與連續(xù)分割方法相比,重疊成幀方法可以使從幀到幀的過渡更加平滑。加窗處理:在預(yù)加重之后,執(zhí)行加窗和分幀過程。視情況而定,幀頻通常為30。幀劃分可以是連續(xù)劃分或重疊劃分。為了平滑幀之間的過渡,通常使用重疊分割。具體情況如圖所示。兩個(gè)連續(xù)幀的重疊部分是幀偏移,其值通常在幀長度的0到0.5倍的范圍內(nèi)選擇。設(shè)分幀前的語音信號(hào)為,分幀過程等效為乘以幅度為1的移動(dòng)窗。進(jìn)行變換,設(shè)該變換為,可得語音信號(hào)序列:當(dāng)移動(dòng)窗不為1的時(shí)候,而想對(duì)某頻率段語音信號(hào)進(jìn)行加強(qiáng)或削弱時(shí),則需要加權(quán)處理頻譜函數(shù),周春榮.周春榮.基于神經(jīng)網(wǎng)絡(luò)的語音識(shí)別技術(shù)應(yīng)用研究[J].中國科技縱橫,2018,(6):18-語音信號(hào)的端點(diǎn)檢測多數(shù)情況下,語音信號(hào)在收集過程中很難排除外界噪音的干擾,這時(shí)就要區(qū)分那些信號(hào)需要被識(shí)別,那些信號(hào)需要被剔除,端點(diǎn)檢測就可以很好的解決這個(gè)問題,判斷語音的開始與結(jié)束,對(duì)節(jié)省系統(tǒng)資源,提高語音識(shí)別率有著重要意義。2.2.4語音信號(hào)特征提取語音特征提取是提取一些可以代表語音信號(hào)特征的特征參數(shù)。簡而言之,特征提取是找到不同語音的不同獨(dú)特特征以識(shí)別語音,因此特征提取對(duì)于所有語音識(shí)別系統(tǒng)都是必不可少的。語音特征參數(shù)的選擇在語音識(shí)別中起關(guān)鍵作用。選擇原則是:良好的獨(dú)立性,語音信號(hào)的有效表征和簡化的計(jì)算?;贛FCC系數(shù)的特征值將進(jìn)一步提高系統(tǒng)的識(shí)別性能,本設(shè)計(jì)還使用此方法提取音頻功能。梅爾頻率公式如下:MFCC特征提取過程是讓每個(gè)短窗口經(jīng)由FFT獲得對(duì)應(yīng)的頻譜,然后讓其通過Mel濾波器組獲得Mel譜。執(zhí)行倒頻譜分析以獲得倒頻譜MFCC,這是語音功能的框架。因此,語音由一系列倒譜向量來描述,每個(gè)向量都是每個(gè)幀的MFCC特征向量。于樹本.基于MFCC的說話人語音識(shí)別系統(tǒng)的研究[J].黑龍江科技信息,2015,(27):69-70.2.3語音識(shí)別模型的設(shè)計(jì)通過對(duì)比語音識(shí)別模型,最終選擇人工神經(jīng)元網(wǎng)絡(luò)作為設(shè)計(jì)模型,因其有非常優(yōu)秀的容錯(cuò)能力,隨之具有大規(guī)模的并行處理能力。人工神經(jīng)元網(wǎng)絡(luò)是一種并行結(jié)構(gòu),各個(gè)過程在各自的網(wǎng)格單元上同時(shí)進(jìn)行處理,在很大程度上可以提高計(jì)算速度。最重要的一點(diǎn)是它具有自我學(xué)習(xí),自我組織和自我適應(yīng)的能力。因此此次設(shè)計(jì)選擇人工神經(jīng)元網(wǎng)絡(luò)構(gòu)建語音識(shí)別系統(tǒng)模型。2.3.1人工神經(jīng)元網(wǎng)絡(luò)常見的算法模型有BP模型等,該種模型是一種網(wǎng)網(wǎng)絡(luò)模型,具有高效地學(xué)習(xí)性,模式映射關(guān)系充足,方便快捷,可以解決大量復(fù)雜的問題。
單個(gè)神經(jīng)元的一般模型如圖所示:圖2.3.1輸入為m個(gè)輸入量,在MATLAB實(shí)現(xiàn)時(shí),常用維的列向量p來表達(dá),如圖網(wǎng)絡(luò)權(quán)值和閾值是所對(duì)應(yīng)的權(quán)值,為偏置也稱閾值,可認(rèn)為這時(shí)的網(wǎng)絡(luò)權(quán)值輸入量為常量1。在實(shí)現(xiàn)時(shí),其經(jīng)常用的行矢量W來表達(dá),如式。求和單元求和單元是神經(jīng)元對(duì)輸入信號(hào)進(jìn)行處理的第一步:激活函數(shù)是神經(jīng)元激活函數(shù),也稱為傳遞函數(shù),一般根據(jù)人工神經(jīng)網(wǎng)絡(luò)的應(yīng)用選擇需要的激活函數(shù)。通常有線性函數(shù),閾值函數(shù),對(duì)數(shù)函數(shù)和切線函數(shù)。輸出輸出神經(jīng)元是人工神經(jīng)網(wǎng)絡(luò)的組成信息處理功能的基本單元:基于人工神經(jīng)網(wǎng)絡(luò)的語音識(shí)別模型設(shè)計(jì)本次課題在研究過程中,通過查閱語音識(shí)別相關(guān)相關(guān)資料,學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)模型的相關(guān)知識(shí)。起初選擇基于TensorFlow的人工神經(jīng)元網(wǎng)絡(luò)模型。在初步完善了代碼之后,首次嘗試語音識(shí)別準(zhǔn)確率只停留在了50%到55%的范圍內(nèi),經(jīng)過反復(fù)地實(shí)驗(yàn)、修改代碼以及部分參數(shù)(如:迭代次數(shù),學(xué)習(xí)率等),不斷完善模型,準(zhǔn)確率有了明顯提升,但不滿足于次的小組成員通過指導(dǎo)老師的建議及文獻(xiàn)檢索,決定采用基于Keras模型的人工神經(jīng)網(wǎng)絡(luò)模型,經(jīng)過反復(fù)設(shè)計(jì)與調(diào)整,最終語音識(shí)別準(zhǔn)確率達(dá)到95%以上,有了明顯的改善。因此本設(shè)計(jì)有兩套方案:(1)方案一:通過了解神經(jīng)網(wǎng)絡(luò)的基本原理,可以通過簡單的仿真來構(gòu)建三層神經(jīng)網(wǎng)絡(luò)模型,并且每層的激活函數(shù)都使用S形函數(shù)。初始化時(shí),隨機(jī)選擇各層的權(quán)重,通過前向傳播獲得預(yù)測值,并根據(jù)期望值計(jì)算誤差,并根據(jù)該誤差值通過后向傳播更新各網(wǎng)絡(luò)層的權(quán)重。識(shí)別結(jié)果。實(shí)驗(yàn)表明,該模型在確定訓(xùn)練集時(shí)的學(xué)習(xí)率為0.2,在迭代次數(shù)為3000時(shí)的識(shí)別成功率最高。 (2)方案二:調(diào)用Keras庫構(gòu)建一個(gè)sequential順序模型,由四層網(wǎng)絡(luò)組成。輸入層是一個(gè)具有512個(gè)隱藏神經(jīng)元的全連接層,輸入數(shù)據(jù)尺寸為(16000),使用的激活函數(shù)是ReLu函數(shù)。有兩層隱含層分別含有256、128個(gè)隱藏神經(jīng)元,均使用ReLu函數(shù)作為激活函數(shù)。輸出層則使用softmax函數(shù),含有6個(gè)隱藏神經(jīng)元。再對(duì)模型進(jìn)行編譯,訓(xùn)練得出最終的識(shí)別準(zhǔn)確率。3.1語音訓(xùn)練集的選取本研究所使用的語音數(shù)據(jù)用于在Internet上下載經(jīng)過預(yù)處理的音頻文件。采樣頻率為16kHz,16位編碼,每個(gè)音頻的長度為1s。音頻是從許多不同年齡和性別的人的發(fā)音中收集的。本設(shè)計(jì)選擇以下六種類型的隔離詞音頻。每種類型共有大約2000個(gè)樣本,其中1800個(gè)為訓(xùn)練樣本,200個(gè)為測試樣本。3.2音頻特征提取由于語音訓(xùn)練集的采樣頻率為16kHz,因此可以將語音分為16000幀以提取每個(gè)幀的特征向量。每一幀都可以轉(zhuǎn)換成一個(gè)數(shù)值,提取的MFCC是正數(shù)和負(fù)數(shù)的數(shù)組。所有MFCC值均被平方并作為正值進(jìn)行處理。每個(gè)音頻的最終MFCC值被視為相應(yīng)的特征向量。接著將處理完的數(shù)據(jù)再傳入模型的輸入層,不斷訓(xùn)練完善模型。圖3.23.3神經(jīng)元網(wǎng)絡(luò)的訓(xùn)練與識(shí)別選取合適的語音訓(xùn)練集,本設(shè)計(jì)共選取了6個(gè)語音類別來對(duì)模型進(jìn)行訓(xùn)練和識(shí)別,每個(gè)類別有2000個(gè)語音素材。并從其中選取200個(gè)語音素材作為測試集使用。方案一:首先定義了神經(jīng)網(wǎng)絡(luò)的對(duì)象類,可以編輯輸入層,中間層和輸出層。在人工神經(jīng)網(wǎng)絡(luò)模型中定義并激活輸入層和輸出層的激活函數(shù)S形,然后繼續(xù)進(jìn)行正向和反向傳播訓(xùn)練以更新權(quán)重以減少誤差值。經(jīng)過一定次數(shù)的訓(xùn)練后,最小誤差值用于獲得最大識(shí)別概率。定義算法和相應(yīng)的重要參數(shù),例如迭代次數(shù),學(xué)習(xí)率等。然后定義預(yù)測函數(shù)以加載訓(xùn)練后的模型,識(shí)別新音頻并返回識(shí)別結(jié)果。調(diào)用神經(jīng)網(wǎng)絡(luò)類的實(shí)例以及創(chuàng)建數(shù)據(jù)集函數(shù),定義創(chuàng)建模型函數(shù)。模型經(jīng)過一系列工作,先訓(xùn)練數(shù)據(jù)集中的音頻文件,然后將測試集中的音頻文件放入模型識(shí)別得出結(jié)果,即識(shí)別率和數(shù)據(jù)丟失率。在該模型中創(chuàng)建實(shí)例并調(diào)用,點(diǎn)擊運(yùn)行程序。將學(xué)習(xí)率設(shè)為0.2,進(jìn)行3000次迭代訓(xùn)練,不斷更新每一級(jí)網(wǎng)絡(luò)層的權(quán)重后得到最優(yōu)模型,運(yùn)行程序,但最后識(shí)別結(jié)果不是很理想。圖3.3.1方案2:直接使用keras中比較完善的模型來完成語音識(shí)別任務(wù)。Keras提供了大量封裝好的,可以直接使用的神經(jīng)網(wǎng)絡(luò),為構(gòu)建模型提供了便利。邢艷芳,段紅秀,何光威.TensorFlow在圖像識(shí)別系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2019,第29卷(5):192-196.加載訓(xùn)練集與特征提取與方案一相同。主要識(shí)別“bed”、“go”、“house”、“off”、“stop”、“yes”六類的語音。同時(shí)定義mfcc語音特征調(diào)整函數(shù)并調(diào)用在創(chuàng)建數(shù)據(jù)集函數(shù)中,對(duì)音頻數(shù)據(jù)進(jìn)行長度大小的切割,保證語音長度相同。這里調(diào)用keras.models.Sequential()來構(gòu)建sequential順序模型,由多個(gè)網(wǎng)絡(luò)層線性堆疊的棧。圖3.3.2運(yùn)行程序:可見準(zhǔn)確率大幅度提升圖3.3.3控制系統(tǒng)設(shè)計(jì)控制家庭部分是將識(shí)別的結(jié)果作為控制信號(hào)發(fā)送到目的地終端,通過服務(wù)端Socket網(wǎng)絡(luò)編程接收識(shí)別結(jié)果也就是客戶端發(fā)送的控制信息,達(dá)到控制和命令的目的。音頻采集與識(shí)別模塊這一模塊實(shí)現(xiàn)的功能是先進(jìn)行錄音,將錄制的音頻保存在文件夾中,加載已經(jīng)訓(xùn)練好的模型,對(duì)此文件夾中的音頻進(jìn)行識(shí)別,得到一個(gè)文字信息為最終的識(shí)別結(jié)果。錄制新音頻:利用pyaudio庫調(diào)用設(shè)備的麥克風(fēng)進(jìn)行錄音,錄制音頻的各個(gè)參數(shù)與訓(xùn)練集的語音保持一致,聲道數(shù)為單聲道,采樣頻率為16kHz,時(shí)長為1s等。圖4.1(2)識(shí)別音頻:加載所保存的模型后對(duì)所有新錄制的音頻進(jìn)行預(yù)測,由于輸出層采用了Softmax作為激活函數(shù)基于神經(jīng)網(wǎng)絡(luò)的語音識(shí)別技術(shù)應(yīng)用研究[J].中國科技縱橫基于神經(jīng)網(wǎng)絡(luò)的語音識(shí)別技術(shù)應(yīng)用研究[J].中國科技縱橫,2018,(6):18-19.網(wǎng)絡(luò)通信模塊得到語音識(shí)別的結(jié)果之后,需要將控制信息發(fā)送給接收設(shè)備,讓設(shè)備得到控制后做出相應(yīng)的反饋。為此,本文設(shè)計(jì)了一個(gè)利用網(wǎng)絡(luò)通信的信號(hào)發(fā)送模塊,模擬對(duì)家居設(shè)備的控制。該模塊的功能是將識(shí)別結(jié)果的文字信息,通過網(wǎng)絡(luò)通信發(fā)送給想要控制的設(shè)備,該設(shè)備接收到信息后反饋給發(fā)送端。該模塊使用socket套接字進(jìn)行網(wǎng)絡(luò)通信。主要有一下幾部分:(1)服務(wù)端的建立:首先所需要控制的設(shè)備調(diào)用socket()函數(shù)建立一個(gè)服務(wù)端,使用listen(),開始監(jiān)聽客戶端的請(qǐng)求,也就是處于等待連接的狀態(tài)。圖4.2(2)客戶端的建立:語音識(shí)別程序作為此次通信的客戶端。當(dāng)模型識(shí)別出新音頻且返回一個(gè)結(jié)果時(shí),調(diào)用connect()函數(shù)提出連接請(qǐng)求。圖4.3連接確認(rèn):當(dāng)服務(wù)器接收到客戶端連接請(qǐng)求時(shí),它將立即響應(yīng)客戶端請(qǐng)求以創(chuàng)建新線程,并且服務(wù)器將信息發(fā)送到客戶端??蛻舳舜_認(rèn)后,建立連接。服務(wù)器繼續(xù)處于偵聽狀態(tài),并繼續(xù)從另一個(gè)客戶端接收連接請(qǐng)求??蛻舳四P退R(shí)別的結(jié)果就會(huì)一一發(fā)送給服務(wù)端的設(shè)備,服務(wù)端的設(shè)備接收到一個(gè)信息就會(huì)回饋給客戶端一個(gè)接收成功的信息。設(shè)計(jì)演示語音訓(xùn)練,得到識(shí)別結(jié)果:開始錄音,保存錄音文件并放入模型識(shí)別得到結(jié)果:向服務(wù)端發(fā)送信號(hào),控制成功,實(shí)現(xiàn)本設(shè)計(jì)所有目的:6結(jié)論本論文以人工智能行業(yè)在智能家居中的應(yīng)用為背景,結(jié)合基于構(gòu)建人工神經(jīng)網(wǎng)絡(luò)的語音識(shí)別技術(shù)模擬實(shí)現(xiàn)了語音控制智能家居,設(shè)計(jì)基本功能的需求,對(duì)語音識(shí)別及人工神經(jīng)元網(wǎng)絡(luò)的原理進(jìn)行學(xué)習(xí),選取穩(wěn)定可靠的模型,確定程序設(shè)計(jì)具體框架與詳細(xì)功能需求。設(shè)計(jì)詳細(xì)功能需求,依照需求對(duì)編寫程序,得到程序代碼,包括語音輸入,語音預(yù)處理,訓(xùn)練模型,最后得出完整的語音控制系統(tǒng);對(duì)所設(shè)計(jì)系統(tǒng)進(jìn)行測試,包括多種環(huán)境下的測試,結(jié)果表明此次設(shè)計(jì)的語音識(shí)別系統(tǒng)較為可靠,大部分使用場景下有很高的識(shí)別率,達(dá)到90%以上。本次設(shè)計(jì)也存在著許多可以改善的地方,例如語音的識(shí)別并不是實(shí)時(shí)的,在程序中的體現(xiàn)只是先將音頻文件錄制后保存,再進(jìn)行模型的預(yù)測,這與實(shí)際應(yīng)用中的語音識(shí)別還不太一致,程序的設(shè)計(jì)還有進(jìn)步的空間。再者就是控制方面的問題,由于各方面的因素限制,導(dǎo)致了最終并沒有完整地實(shí)現(xiàn)控制功能,只是簡單地做了模擬,在后續(xù)的研究中仍是需要改善的點(diǎn)。參考文獻(xiàn)[1]周春榮.基于神經(jīng)網(wǎng)絡(luò)的語音識(shí)別技術(shù)應(yīng)用研究[J].中國科技縱橫,2018,(6):18-19.[2]于曉明.語音識(shí)別技術(shù)的發(fā)展及應(yīng)用[J].計(jì)算機(jī)時(shí)代,2019,(11):28-31.[3]范靖宇.基于神經(jīng)網(wǎng)絡(luò)的語音識(shí)別技術(shù)研究[J].電腦迷,2018,(第30期).[4]張震南.人工神經(jīng)網(wǎng)絡(luò)技術(shù)在語音識(shí)別中的應(yīng)用[J].甘肅科技縱橫,2008,(4):21-76.[5]于樹本.基于MFCC的說話人語音識(shí)別系統(tǒng)的研究[J].黑龍江科技信息,2015,(27):69-70.[6]邢艷芳,段紅秀,何光威.TensorFlow在圖像識(shí)別系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2019,第29卷(5):192-196.[7]郭子琰,舒心,劉常燕等.基于ReLU函數(shù)的卷積神經(jīng)網(wǎng)絡(luò)的花卉識(shí)別算法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2018,第28卷(5):154-157,163.[8]范靖宇.基于神經(jīng)網(wǎng)絡(luò)的語音識(shí)別技術(shù)研究[J].電腦迷,2018,(第30期).[9]周春榮.基于神經(jīng)網(wǎng)絡(luò)的語音識(shí)別技術(shù)應(yīng)用研究[J].中國科技縱橫,2018,(6):18-19.[10]沈澤君,楊文元.粒計(jì)算思維下的BP神經(jīng)網(wǎng)絡(luò)在金融趨勢預(yù)測中的應(yīng)用[J].小型微型計(jì)算機(jī)系統(tǒng),2019,第40卷(3):527-532.謝辭為時(shí)一個(gè)學(xué)期的畢業(yè)設(shè)計(jì)即將結(jié)束了,這也意味著我在北京理工大學(xué)珠海學(xué)院的大學(xué)生涯也即將結(jié)束。四年的大學(xué)生活,所有努力和付出,隨著本次畢業(yè)設(shè)計(jì)的完成也將畫上完美的句號(hào),在畢業(yè)設(shè)計(jì)這段時(shí)間里,我得到了很大的自身提高,其中包含了人工智能,語音識(shí)別,物聯(lián)網(wǎng)等相關(guān)技術(shù)的理解,還有對(duì)相關(guān)書籍的認(rèn)識(shí)等等,這些都得益于老師和同學(xué)的大力幫助。首先要感謝的是我的父母,是你們默默地在背后給我鼓勵(lì),做我最堅(jiān)強(qiáng)的后盾,讓我可以無憂的參與學(xué)習(xí)生活,可以說沒有你們,也就沒有現(xiàn)在的我,微言寸語豈能訴盡感激之情,只好銘記心中。養(yǎng)育之恩,無以回報(bào),你們的快樂和健康是我最大的財(cái)富。感謝龔雪沅老師,在畢業(yè)設(shè)計(jì)期間,是龔雪沅老師一直給予我支持和鼓勵(lì),老師治學(xué)嚴(yán)謹(jǐn),平易近人,不僅在相關(guān)課程中營造了良好的學(xué)習(xí)氛圍,同時(shí)在畢業(yè)設(shè)計(jì)上提出了非常多的建設(shè)性意見,老師對(duì)于每周開會(huì)的堅(jiān)持,做到對(duì)每位同學(xué)的畢業(yè)設(shè)計(jì)上的指導(dǎo),可以說整雙有了您的知道才能使我們的畢業(yè)設(shè)計(jì)順利進(jìn)行,不僅為我們打開了廣闊的思路,也潛移默化地改變了我的人生觀和世界觀,為我將來的學(xué)習(xí)生活打下了堅(jiān)實(shí)的基礎(chǔ)。其次,要感謝在北京理工大學(xué)珠海學(xué)院教導(dǎo)過我的每一位老師,是你們悉心教導(dǎo)使我有了良好的專業(yè)課知識(shí),這些是我得以完成論文的基礎(chǔ)。同時(shí)每位老師的認(rèn)真負(fù)責(zé)的態(tài)度,嚴(yán)謹(jǐn)求實(shí)的教學(xué)風(fēng)格,給我樹立了非常好的榜樣,讓我在面對(duì)人生舞臺(tái)時(shí)充滿信心。還要感謝我的同學(xué)們,在這段時(shí)間里,你們給我了很多啟發(fā)和幫助,讓我知道團(tuán)隊(duì)的力量有多么強(qiáng)大,有了你們的幫助使得設(shè)計(jì)不斷地完善,充實(shí),讓困難得以解決,你們即我的益友也是我的良師。四年時(shí)光悠悠走過,在這里,我度過了人生中最為美麗的時(shí)光,在這里,我由懵懂少年轉(zhuǎn)變?yōu)橐鈿馇嗄?。這段時(shí)光必將是我終生難忘的經(jīng)歷。再次向我的師長,家人,朋友,同學(xué),表示誠摯的感謝。最后也向在百忙之中評(píng)審本文的各位老師表示衷心的謝意!附錄附錄1程序源代碼1:方案一import
wave
import
numpy
as
np
import
os
import
pickle
from
tqdm
import
trange
#
替換range()可實(shí)現(xiàn)動(dòng)態(tài)進(jìn)度條,可忽略
import
keras
from
sklearn.metrics
import
confusion_matrix,
classification_report
lst_label_name=[]
#
得到數(shù)據(jù)集
def
create_datasets():
lst_wav=[]
lst_label=[]
path="./data250/"
for
i
in
os.listdir(path):
path_wave=path+i
num=0
lst_label_name.append(i)
for
j
in
os.listdir(path_wave):
try:
waveData
=
get_wav_mfcc(path_wave+"/"+j)
lst_wav.append(waveData)
lst_label.append(lst_label_name.index(i))
num=num+1
except:
pass
print(lst_label_name)
np_wav=np.array(lst_wav)
np_labels=np.array(lst_label)
return
np_wav,np_labels
#
激活函數(shù)
def
logistic(x):
return
1
/
(1
+
np.exp(-x))
#
Sigmoid的導(dǎo)數(shù)
def
logistic_derivative(x):
return
logistic(x)
*
(1
-
logistic(x))
def
tanh(x):
return
np.tanh(x)
def
tanh_deriv(x):
return
1.0
-
np.tanh(x)
*
np.tanh(x)
#
tanh函數(shù)的導(dǎo)數(shù)
class
NeuralNetwork:#面向?qū)ο蠖x一個(gè)神經(jīng)網(wǎng)絡(luò)類
def
__init__(self,
layers,
activation='tanh'):#下劃線構(gòu)造函數(shù)self
相當(dāng)于本身這個(gè)類的指針
layer就是一個(gè)list
數(shù)字代表神經(jīng)元個(gè)數(shù)
"""
:param
layers:
A
list
containing
the
number
of
units
in
each
layer.
Should
be
at
least
two
values
:param
activation:
The
activation
function
to
be
used.
Can
be
"logistic"
or
"tanh"
"""
if
activation
==
'logistic':
self.activation
=
logistic#之前定義的s函數(shù)
self.activation_deriv
=
logistic_derivative#求導(dǎo)函數(shù)
elif
activation
==
'tanh':
self.activation
=
tanh#雙曲線函數(shù)
self.activation_deriv
=
tanh_deriv#求導(dǎo)雙曲線函數(shù)
self.weights
=
[]#初始化一個(gè)list作為權(quán)重
#初始化權(quán)重兩個(gè)值之間隨機(jī)初始化
for
i
in
range(1,
len(layers)
-
1):#有幾層神經(jīng)網(wǎng)絡(luò)
除去輸出層
#i-1層
和i層之間的權(quán)重
隨機(jī)生成layers[i
-
1]
+
1
*
layers[i]
+
1
的矩陣
-0.25-0.25
self.weights.append((2*np.random.random((layers[i
-
1]
+
1,
layers[i]
+
1))-1)*0.25)
#i層和i+1層之間的權(quán)重
self.weights.append((2*np.random.random((layers[i]
+
1,
layers[i
+
1]))-1)*0.25)
def
fit(self,
X,
y,
learning_rate=0.2,
epochs=3000):#訓(xùn)練神經(jīng)網(wǎng)絡(luò)
X
=
np.atleast_2d(X)#x至少2維
temp
=
np.ones([X.shape[0],
X.shape[1]+1])#初始化一個(gè)全為1的矩陣
temp[:,
0:-1]
=
X
#
adding
the
bias
unit
to
the
input
layer
X
=
temp
y
=
np.array(y)
for
k
in
trange(epochs):
i
=
np.random.randint(X.shape[0])#隨機(jī)選行
a
=
[X[i]]
for
l
in
range(len(self.weights)):
#正向傳播
#選擇一條實(shí)例與權(quán)重點(diǎn)乘
并且將值傳給激活函數(shù),經(jīng)過a的append
使得所有神經(jīng)元都有了值(正向)
a.append(self.activation(np.dot(a[l],
self.weights[l])))
error
=
y[i]
-
a[-1]
#計(jì)算真實(shí)值與計(jì)算值的差(向量)
#通過求導(dǎo)
得到權(quán)重應(yīng)當(dāng)調(diào)整的誤差
deltas
=
[error
*
self.activation_deriv(a[-1])]
#反向傳播更新weight
for
l
in
range(len(a)
-
2,
0,
-1):
deltas.append(deltas[-1].dot(self.weights[l].T)*self.activation_deriv(a[l]))
deltas.reverse()
for
i
in
range(len(self.weights)):
layer
=
np.atleast_2d(a[i])
delta
=
np.atleast_2d(deltas[i])
self.weights[i]
+=
learning_rate
*
layer.T.dot(delta)
def
predict(self,
x):
x
=
np.array(x)
temp
=
np.ones(x.shape[0]+1)
temp[0:-1]
=
x
a
=
temp
for
l
in
range(0,
len(self.weights)):
a
=
self.activation(np.dot(a,
self.weights[l]))
return
a
def
get_wav_mfcc(wav_path):
f
=
wave.open(wav_path,'rb')
params
=
f.getparams()
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()
data
=
list(np.array(waveData[0]))
while
len(data)>16000:
del
data[len(waveData[0])-1]
del
data[0]
while
len(data)<16000:
data.append(0)
data=np.array(data)
data
=
data
**
2
data
=
data
**
0.5
return
data
def
build_model():
wavs,labels=
create_datasets()
num_class=6
labels
=
keras.utils.to_categorical(labels,
num_class)
print(labels)
print(wavs[0])
nn
=
NeuralNetwork([16000,
512,
6],
'logistic')
nn.fit(wavs,
labels)
lst_wav=[]
#加載測試集
lst_label=[]
lst_label_name=[]
path="./test20/"
for
i
in
os.listdir(path):
path_wave=path+i
num=0
lst_label_name.append(i)
for
j
in
os.listdir(path_wave):
try:
waveData
=
get_wav_mfcc(path_wave+"/"+j)
lst_wav.append(waveData)
lst_label.append(lst_label_name.index(i))
num=num+1
except:
pass
print(lst_label_name)
num=0
lst_pred=[]
for
i
in
range(len(lst_wav)):
predicts
=
nn.predict(lst_wav[i])
lst_pred.append(np.argmax(predicts))
for
i
in
range(len(lst_label)):
if
lst_pred[i]==lst_label[i]:
num=num+1
print('測試準(zhǔn)確率:'+str(num/(len(lst_label))))
if
__name__
==
'__main__':
#建立模型
build_model()
附錄2程序源代碼2:方案二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)行長度大小的切割,保證每一個(gè)的長度都是一樣的【因?yàn)橛?xùn)練文件全部是1秒鐘長度,16000幀的,所以這里需要把每個(gè)語音文件的長度處理成一樣的】
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
=
"data2\\"+cls[i]+"\\"
files
=
os.listd(r(pa)h)
for
j
in
files:
waveData
=
get_wav_mf(c(path)j)
wavs.append(waveData)
labels.append(i)
for
i
in
range(6):
path
=
"test\\"+cls[i]+"\\"
files
=
os.listd(r(pa)h)
for
j
in
files:
waveData
=
get_wav_mf(c(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)
#可以簡單地使用
.add)
來堆疊模型,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)估
#Keras的核心原則是使事情變得相當(dāng)簡單,同時(shí)又允許用戶在需要的時(shí)候能夠進(jìn)行完全的控制
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.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("所加載的語音指令為:",load_labels)
wavs=np.array(wavs)
model
=
load_model('asr_model_weights_2000.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
=
1
#
聲道數(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)輸入語音")
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("無效輸入,請(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".forma((c,a,b,du)),end
="))
time.slee((0.))
#print("\n"+"指令發(fā)送成功?。?
if
__name__
==
'__main__':
#訓(xùn)練模型
build_model)
#錄入語音
is_contin
=
input("是否開始錄入音頻:
(按任意鍵繼續(xù),按q退出)
")
count
=
1
while
is_contin
!=
'q':
input_filename
=
"input{}.wav".format(count)
#
麥克風(fēng)采集的語音輸入
input_filepath
=
".\\Audio\\"
#
輸入文件的path
in_path
=
input_filepath
+
input_filename
get_aud(o(in_pa)h)
count
+=
1
is_contin
=
input("是否繼續(xù)錄入音頻:
(按任意鍵繼續(xù),按q退出)
")
#使用模型識(shí)別語音
path
=
"Audio\\"
result
=
predic((pat))
prin(("模型識(shí)別出的指令為:",
result,
'\n))
time.slee(())
#發(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ā)送完畢!")
附錄3程序源代碼3:方案二控制家居部分import
socket
#
1、創(chuàng)建服務(wù)端的socket對(duì)象
sk
=
socket.socket)
#
2、綁定一個(gè)ip和端口
sk.bind("",8888)
#
3、服務(wù)器端一直監(jiān)聽是否有客戶端進(jìn)行連接
sk.listen(5)
while
1:
#
4、如果有客戶端進(jìn)行連接、則接受客戶端的連接
conn,addr
=
sk.accept)
#
返回客戶端socket通信對(duì)象和客戶端的ip
#
5、客戶端與服務(wù)端進(jìn)行通信
rev_data
=
conn.recv(1024)
print('接收到的控制信息為:
%s\n'
%
(rev_data.decode('GB2312')
#
6、服務(wù)端給客戶端回消息
conn.send(b"Successful!
\r\n\)\n")
#http協(xié)議
#
7、關(guān)閉socket對(duì)象
conn.close)
電腦無法識(shí)別U盤該怎么辦HYPERLINK電腦無法識(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è)長久使用的驅(qū)動(dòng)器號(hào),并卻,不受虛擬驅(qū)動(dòng)器的影響了。建議將U盤插到電腦上,看任務(wù)欄中是否顯示圖標(biāo),如果顯示,在我的電腦點(diǎn)右鍵查看屬性——高級(jí)——硬件——設(shè)備管理器——查看里面是否有問號(hào)的設(shè)備,在問號(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è)電容供電的。電容的電來源于主板電池,所以,只要把主板電池卸下來,用一根導(dǎo)線將原來裝電池的地方正負(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)制”就可以了。改好后注銷一下就可以看見效果了。為了防止別人用相同的方法來破解,我們可以刪除或者改名注冊(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盤的目的。破解的方法也很簡單,管理員降低普通用戶移動(dòng)存儲(chǔ)設(shè)備的使用權(quán)限,但未必禁用computermanagement的使用權(quán)限。普通用戶可以通過這個(gè)工具解除usb移動(dòng)存儲(chǔ)設(shè)備的使用權(quán)限限制。另外,值得一提的是,如果u盤插到電腦上后可以驅(qū)動(dòng),但是我的電腦里卻沒有盤符,很有可能是管理員改動(dòng)了u盤的默認(rèn)盤符,使得我的電腦不能識(shí)別。這種情況,可以在movablestorage中看到u盤驅(qū)動(dòng)器??梢栽趗盤驅(qū)動(dòng)器屬性設(shè)置里為u盤重新分配一個(gè)盤符,再重新插拔一次u盤,就可以在我的電腦里看到u盤的盤符了。一、首先可以將該U盤換到別的機(jī)器上,看使用是否正常。如果排除了硬件損壞的可能,一般就是軟件方面有問題。在WindowsXP+SP1操作系統(tǒng)下,有些USB2.0設(shè)備的確常常出現(xiàn)工作不穩(wěn)定的問題,可以試試安裝設(shè)備自帶的USB2.0驅(qū)動(dòng)程序。另外最好不要使用USB延長線,防止因?yàn)楣╇姴蛔愣斐刹环€(wěn)定現(xiàn)象。如果仍無效,可以在主板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)工作,一般來說只需在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)程序沒有安裝完成(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接口測試。2、檢查設(shè)備管理器,看是否出現(xiàn)”通用總線設(shè)備控制器”條目,如果沒有,請(qǐng)將電腦主板BIOS中USB接口條目*激活(ENABLE)。3、如果電腦安裝過其它類型USB設(shè)備,卸載該設(shè)備驅(qū)動(dòng)程序,并首先安裝優(yōu)盤驅(qū)動(dòng)程序。4、到其它電腦試用此優(yōu)盤,確認(rèn)是否優(yōu)盤不良。七、啟動(dòng)型優(yōu)盤在的電腦上無法實(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)程序無法安裝的原因可能是: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)硬盤在電腦上無法正常使用,雖然系統(tǒng)提示找到了未知的USB設(shè)備,但無法正確識(shí)別U盤或移動(dòng)硬盤。原因可能是:1.USB接口供電不足:系統(tǒng)為每個(gè)USB接口分配了500mA的最大輸出電流,一般的U盤只需要100mA的工作電流,因此在使用過程中不會(huì)出現(xiàn)什么問題。大多數(shù)移動(dòng)硬盤所使用的是普通的2.5英寸硬盤,其工作電流介于500mA~1000mA之間,此時(shí)假如僅僅通過USB接口供電,當(dāng)系統(tǒng)中并無其他USB設(shè)備時(shí),那么還是可以勉強(qiáng)使用的,但如果電壓不穩(wěn)的話,就隨時(shí)可能出現(xiàn)供電不足的問題。特別是使用支持USB2.0的移動(dòng)硬盤時(shí),情況最為嚴(yán)重。另外,如果你的筆記本電腦使用電池供電,那么USB接口所分配的電量就更小了。2.使用了外接的USB擴(kuò)展卡:在筆記本電腦中使用USB2.0的U盤或移動(dòng)硬盤時(shí),如果筆記本電腦不支持USB2.0技術(shù),一般必須通過PCMCIA卡轉(zhuǎn)USB2.0的擴(kuò)展卡來間接實(shí)現(xiàn)支持,這些擴(kuò)展卡基本上都采用NEC公司的D720100AGMUSB控制芯片,少則提供兩個(gè)USB2.0接口,多則提供五個(gè)USB2.0接口,對(duì)一般用戶而言足夠使用了。由于PCMICA接口提供的電源功率比板載USB接口要小,這樣就會(huì)由于供電不足而導(dǎo)致移動(dòng)硬盤工作的出現(xià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接口,也少用延長線.也可能是斷口有問題,換個(gè)USB端口看下.USB接口電壓不足。當(dāng)把<ahref="mobileharddisk">移動(dòng)硬盤</a>接在前置USB口上時(shí)就有可能發(fā)生系統(tǒng)無法識(shí)別出設(shè)備的故障。原因是<ahref="">移動(dòng)硬盤</a>功率比較大要求電壓相對(duì)比較嚴(yán)格,前置接口可能無法提供足夠的電壓,當(dāng)然劣質(zhì)的電源也可能會(huì)造成這個(gè)問題。解決方法是<ahref="">移動(dòng)硬盤</a>不要接在前置USB接口上,更換劣質(zhì)低功率的電源或盡量使用外接電源的硬盤盒,假如有條件的話。主板和系統(tǒng)的兼容性問題。呵呵這類故障中最著名的就是NF2主板與USB的兼容性問題。假如你是在NF2的主板上碰到這個(gè)問題的話,則可以先安裝最新的nForce2專用USB2.0驅(qū)動(dòng)和補(bǔ)丁、最新的主板補(bǔ)丁和操作系統(tǒng)補(bǔ)丁,還是不行的話嘗試著刷新一下主板的BIOS一般都能解決。系統(tǒng)或BIOS問題。當(dāng)你在BIOS或操作系統(tǒng)中禁用了USB時(shí)就會(huì)發(fā)生USB設(shè)備無法在系統(tǒng)中識(shí)別。解決方法是開啟與USB設(shè)備相關(guān)的選項(xiàng)。就是開機(jī)按F2或DEL鍵,進(jìn)入BIOS,把enableusbdevice選擇enable。拔插要小心,讀寫時(shí)千萬不可拔出,不然有可能燒毀芯片。XP中任務(wù)欄中多出USB設(shè)備的圖標(biāo),打開該圖標(biāo)就會(huì)在列表中顯示U盤設(shè)備,選擇將該設(shè)備停用,然后你再拔出設(shè)備,這樣會(huì)比較安全。
其實(shí)判斷軟件硬件問題很簡單,在別的機(jī)器或換個(gè)系統(tǒng)試試就
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年CO自動(dòng)監(jiān)測儀項(xiàng)目經(jīng)濟(jì)效益評(píng)估報(bào)告
- 木窗簾盒施工方案的施工流程與技術(shù)措施
- 建筑行業(yè)綠色施工方案范文
- 農(nóng)村建房施工合同標(biāo)準(zhǔn)范本與農(nóng)村建房施工合同范本7篇
- 4 繁星(教學(xué)設(shè)計(jì))-2024-2025學(xué)年四年級(jí)上冊(cè)語文統(tǒng)編版
- 軟木地板安裝合同模板7篇
- 紙莎草苗木零售合同5篇
- 2025年中學(xué)課本及其輔助材料印刷合同范本
- 2025年嬰幼兒配方奶粉生產(chǎn)許可合同
- 2025年公路建設(shè)項(xiàng)目施工監(jiān)理合同范本
- 電網(wǎng)工程設(shè)備材料信息參考價(jià)(2024年第四季度)
- 20以內(nèi)退位減法口算練習(xí)題100題30套(共3000題)
- 易制毒化學(xué)品安全教育培訓(xùn)《教育培訓(xùn)記錄表》
- 精神病學(xué)簡答題
- 2023年鄂爾多斯生態(tài)環(huán)境職業(yè)學(xué)院單招考試面試題庫及答案解析
- Q∕SY 01004-2016 氣田水回注技術(shù)規(guī)范
- 氣管支氣管結(jié)核診斷和治療指南
- 高中臨界生沖刺一本培養(yǎng)方案
- 供應(yīng)商社會(huì)準(zhǔn)則符合性自審問卷
- 城鎮(zhèn)燃?xì)饧映艏夹g(shù)規(guī)程CJJ T148
- 4925095728國內(nèi)外中小學(xué)作業(yè)研究綜述
評(píng)論
0/150
提交評(píng)論