版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
北京理工大學(xué)珠海學(xué)院2020屆本科生畢業(yè)論文緒論人與機(jī)器使用語音進(jìn)行交流,并讓機(jī)器學(xué)習(xí),分析和理解人類語音的內(nèi)容。這一直是人類的夢想。語音識別(SpeechRecognition,SR)技術(shù),也稱為自動語音識別(AutomaticSpeechRecognition,ASR)。梁靜.基于深度學(xué)習(xí)的語音識別研究[D].北京郵電大學(xué),2014.是使機(jī)器分析人們的語音并將其翻譯成準(zhǔn)確的文本,包括多語言的技術(shù)。隨著科學(xué)技術(shù)的發(fā)展,語音識別技術(shù)越來越普及。語音識別技術(shù)具有多種功能,其應(yīng)用也多種多樣,包括電子設(shè)備保護(hù)鎖定,人工智能助手,家用電器控制梁靜.基于深度學(xué)習(xí)的語音識別研究[D].北京郵電大學(xué),2014.1.1本設(shè)計的目的、意義及應(yīng)達(dá)到的技術(shù)要求目的:該設(shè)計的主要目的是利用基于神經(jīng)網(wǎng)絡(luò)模型的語音識別技術(shù)來識別和處理人類語音并實(shí)現(xiàn)智能家居的控制功能。意義:通過本次設(shè)計的研究學(xué)習(xí)神經(jīng)元網(wǎng)絡(luò)的訓(xùn)練、識別、處理語音以及發(fā)送語音信號控制家居的工作原理等知識。技術(shù)要求:掌握Python的基本用法,建立穩(wěn)定的神經(jīng)元網(wǎng)絡(luò)模型,在語音測試集中進(jìn)行語音識別最終得到識別結(jié)果和語音識別,或者在運(yùn)行過程中呈現(xiàn)結(jié)果。根據(jù)打印出的數(shù)據(jù),錯誤處理,發(fā)送的語音信號等。1.2本設(shè)計在國內(nèi)外的發(fā)展概況及存在的問題早期,研究者最先需要解決的問題是語音信號長度如何匹配,語音信號特征如何提取。20世紀(jì)中期,動態(tài)程序規(guī)劃(DynamicProgramming,DP),動態(tài)時間調(diào)整(DynamicTimeWarping,DTW)算法被研究者關(guān)注,有效地將其解決。但此階段,基于模板匹配方式的語音識別技術(shù)有很大的局限性。只能對特定人的單個詞語識別。隨后,隱馬爾可夫模型(HiddenMarkovModel,HMM)引入后,基于概率模型方法逐漸替代模板匹配方法。20世紀(jì)80年代,由于隱馬爾科夫模型具有雙重隨機(jī)性,模型的表達(dá)能力得到了很好的提升。從而使其能對連續(xù)的序列建模,并且給說話人無關(guān)的大規(guī)模連續(xù)語音識別(LargeVocabularyContinuousSpeechRecognition,LVCSR)提供了可能,在隱馬爾科夫之后得很長時間內(nèi),混合高斯模型(Gaussianmixturemodel,GMM)和隱馬爾科夫兩種模型聯(lián)合對聲學(xué)模型建模一直被認(rèn)為是完美的語音識別模型。于曉明.語音識別技術(shù)的發(fā)展及應(yīng)用[J].計算機(jī)時代,2019,(11):28-31但很快,反向傳播算法(BackPropagation)的出現(xiàn),將語音識別技術(shù)又向前推動了一大步,非特定人,于曉明.語音識別技術(shù)的發(fā)展及應(yīng)用[J].計算機(jī)時代,2019,(11):28-3190年代至今,計算機(jī)技術(shù)、電信應(yīng)用等領(lǐng)域有了更加飛速的發(fā)展,繼2012年LiDeng和Hinton等人將深度學(xué)習(xí)引入到語音識別領(lǐng)域。越來越多的語音識別系統(tǒng)從實(shí)驗(yàn)室走向?qū)嵱?。各大公司紛紛看好這一領(lǐng)域,張震南.人工神經(jīng)網(wǎng)絡(luò)技術(shù)在語音識別中的應(yīng)用[J].甘肅科技縱橫,2008,(4):21-76.投入大量資源。多倫多大學(xué)研究團(tuán)隊建立了一個具有DBN張震南.人工神經(jīng)網(wǎng)絡(luò)技術(shù)在語音識別中的應(yīng)用[J].甘肅科技縱橫,2008,(4):21-76.1.3本設(shè)計主要研究內(nèi)容本文主要的研究內(nèi)容由幾個部分組成:(1)提取音頻文件的特征向量(2)采用兩種方案構(gòu)建ANN,并使用訓(xùn)練集對其進(jìn)行訓(xùn)練(3)完善ANN模型各參數(shù),得出一個較高的識別率(4)對比選擇其中一種方案作為語音識別模塊(5)通過網(wǎng)絡(luò)通信發(fā)送信號到另一設(shè)備語音識別系統(tǒng)2.1語音信號的預(yù)處理將輸入的語音信號轉(zhuǎn)為文本信息是語音識別的基本功能需求,多數(shù)情況下不同的語音識別系統(tǒng)具有不同的呈現(xiàn)方式,但基本工作原理相同。原理圖如下:圖2.1從上圖可以看出,當(dāng)原始信號輸入系統(tǒng)后,首先進(jìn)行的是預(yù)處理過程,進(jìn)行提取語音參數(shù),即根據(jù)具體的算法策略,獲取可反映語音信號的特征參數(shù),處理提取的特征參數(shù),并將其存儲在模型庫中,獲取新的語音信號特征并與模型庫中匯總的特征進(jìn)行匹配,得到最佳匹配作為最終識別結(jié)果輸出。2.2語音信號的預(yù)處理在信息處理的過程當(dāng)中,為了讓模型得到的對象相對容易處理,就需要對一開始輸入的語音信號預(yù)處理。語音信號的預(yù)處理包括語音信號高頻部分的預(yù)加重、信號的分幀及加窗、對信號端點(diǎn)匹配檢測等。下圖為對語音信號進(jìn)行預(yù)處理的過程:圖語音信號的預(yù)加重根據(jù)語音的特性,語音信號的平均功率會受到限制,高頻部分能量比低頻部分能量小。因此語音的高頻部分相對低頻部分更難求出。怎樣消除信號中的低頻干擾(50HZ-60HZ)就是對高頻部分進(jìn)行加重處理。2.2.2語音信號的分幀加窗逐幀分幀:語音信號每一幀分成小段進(jìn)行處理。由于語音信號的瞬時穩(wěn)定性,也就是說在極短的時間內(nèi),語音信號的特性相對穩(wěn)定。分幀方法通常使用重疊成幀方法。與連續(xù)分割方法相比,重疊成幀方法可以使從幀到幀的過渡更加平滑。加窗處理:在預(yù)加重之后,執(zhí)行加窗和分幀過程。視情況而定,幀頻通常為30。幀劃分可以是連續(xù)劃分或重疊劃分。為了平滑幀之間的過渡,通常使用重疊分割。具體情況如圖所示。兩個連續(xù)幀的重疊部分是幀偏移,其值通常在幀長度的0到0.5倍的范圍內(nèi)選擇。設(shè)分幀前的語音信號為,分幀過程等效為乘以幅度為1的移動窗。進(jìn)行變換,設(shè)該變換為,可得語音信號序列:當(dāng)移動窗不為1的時候,而想對某頻率段語音信號進(jìn)行加強(qiáng)或削弱時,則需要加權(quán)處理頻譜函數(shù),周春榮.周春榮.基于神經(jīng)網(wǎng)絡(luò)的語音識別技術(shù)應(yīng)用研究[J].中國科技縱橫,2018,(6):18-語音信號的端點(diǎn)檢測多數(shù)情況下,語音信號在收集過程中很難排除外界噪音的干擾,這時就要區(qū)分那些信號需要被識別,那些信號需要被剔除,端點(diǎn)檢測就可以很好的解決這個問題,判斷語音的開始與結(jié)束,對節(jié)省系統(tǒng)資源,提高語音識別率有著重要意義。2.2.4語音信號特征提取語音特征提取是提取一些可以代表語音信號特征的特征參數(shù)。簡而言之,特征提取是找到不同語音的不同獨(dú)特特征以識別語音,因此特征提取對于所有語音識別系統(tǒng)都是必不可少的。語音特征參數(shù)的選擇在語音識別中起關(guān)鍵作用。選擇原則是:良好的獨(dú)立性,語音信號的有效表征和簡化的計算?;贛FCC系數(shù)的特征值將進(jìn)一步提高系統(tǒng)的識別性能,本設(shè)計還使用此方法提取音頻功能。梅爾頻率公式如下:MFCC特征提取過程是讓每個短窗口經(jīng)由FFT獲得對應(yīng)的頻譜,然后讓其通過Mel濾波器組獲得Mel譜。執(zhí)行倒頻譜分析以獲得倒頻譜MFCC,這是語音功能的框架。因此,語音由一系列倒譜向量來描述,每個向量都是每個幀的MFCC特征向量。于樹本.基于MFCC的說話人語音識別系統(tǒng)的研究[J].黑龍江科技信息,2015,(27):69-70.2.3語音識別模型的設(shè)計通過對比語音識別模型,最終選擇人工神經(jīng)元網(wǎng)絡(luò)作為設(shè)計模型,因其有非常優(yōu)秀的容錯能力,隨之具有大規(guī)模的并行處理能力。人工神經(jīng)元網(wǎng)絡(luò)是一種并行結(jié)構(gòu),各個過程在各自的網(wǎng)格單元上同時進(jìn)行處理,在很大程度上可以提高計算速度。最重要的一點(diǎn)是它具有自我學(xué)習(xí),自我組織和自我適應(yīng)的能力。因此此次設(shè)計選擇人工神經(jīng)元網(wǎng)絡(luò)構(gòu)建語音識別系統(tǒng)模型。2.3.1人工神經(jīng)元網(wǎng)絡(luò)常見的算法模型有BP模型等,該種模型是一種網(wǎng)網(wǎng)絡(luò)模型,具有高效地學(xué)習(xí)性,模式映射關(guān)系充足,方便快捷,可以解決大量復(fù)雜的問題。
單個神經(jīng)元的一般模型如圖所示:圖2.3.1輸入為m個輸入量,在MATLAB實(shí)現(xiàn)時,常用維的列向量p來表達(dá),如圖網(wǎng)絡(luò)權(quán)值和閾值是所對應(yīng)的權(quán)值,為偏置也稱閾值,可認(rèn)為這時的網(wǎng)絡(luò)權(quán)值輸入量為常量1。在實(shí)現(xiàn)時,其經(jīng)常用的行矢量W來表達(dá),如式。求和單元求和單元是神經(jīng)元對輸入信號進(jìn)行處理的第一步:激活函數(shù)是神經(jīng)元激活函數(shù),也稱為傳遞函數(shù),一般根據(jù)人工神經(jīng)網(wǎng)絡(luò)的應(yīng)用選擇需要的激活函數(shù)。通常有線性函數(shù),閾值函數(shù),對數(shù)函數(shù)和切線函數(shù)。輸出輸出神經(jīng)元是人工神經(jīng)網(wǎng)絡(luò)的組成信息處理功能的基本單元:基于人工神經(jīng)網(wǎng)絡(luò)的語音識別模型設(shè)計本次課題在研究過程中,通過查閱語音識別相關(guān)相關(guān)資料,學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)模型的相關(guān)知識。起初選擇基于TensorFlow的人工神經(jīng)元網(wǎng)絡(luò)模型。在初步完善了代碼之后,首次嘗試語音識別準(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è)計與調(diào)整,最終語音識別準(zhǔn)確率達(dá)到95%以上,有了明顯的改善。因此本設(shè)計有兩套方案:(1)方案一:通過了解神經(jīng)網(wǎng)絡(luò)的基本原理,可以通過簡單的仿真來構(gòu)建三層神經(jīng)網(wǎng)絡(luò)模型,并且每層的激活函數(shù)都使用S形函數(shù)。初始化時,隨機(jī)選擇各層的權(quán)重,通過前向傳播獲得預(yù)測值,并根據(jù)期望值計算誤差,并根據(jù)該誤差值通過后向傳播更新各網(wǎng)絡(luò)層的權(quán)重。識別結(jié)果。實(shí)驗(yàn)表明,該模型在確定訓(xùn)練集時的學(xué)習(xí)率為0.2,在迭代次數(shù)為3000時的識別成功率最高。 (2)方案二:調(diào)用Keras庫構(gòu)建一個sequential順序模型,由四層網(wǎng)絡(luò)組成。輸入層是一個具有512個隱藏神經(jīng)元的全連接層,輸入數(shù)據(jù)尺寸為(16000),使用的激活函數(shù)是ReLu函數(shù)。有兩層隱含層分別含有256、128個隱藏神經(jīng)元,均使用ReLu函數(shù)作為激活函數(shù)。輸出層則使用softmax函數(shù),含有6個隱藏神經(jīng)元。再對模型進(jìn)行編譯,訓(xùn)練得出最終的識別準(zhǔn)確率。3.1語音訓(xùn)練集的選取本研究所使用的語音數(shù)據(jù)用于在Internet上下載經(jīng)過預(yù)處理的音頻文件。采樣頻率為16kHz,16位編碼,每個音頻的長度為1s。音頻是從許多不同年齡和性別的人的發(fā)音中收集的。本設(shè)計選擇以下六種類型的隔離詞音頻。每種類型共有大約2000個樣本,其中1800個為訓(xùn)練樣本,200個為測試樣本。3.2音頻特征提取由于語音訓(xùn)練集的采樣頻率為16kHz,因此可以將語音分為16000幀以提取每個幀的特征向量。每一幀都可以轉(zhuǎn)換成一個數(shù)值,提取的MFCC是正數(shù)和負(fù)數(shù)的數(shù)組。所有MFCC值均被平方并作為正值進(jìn)行處理。每個音頻的最終MFCC值被視為相應(yīng)的特征向量。接著將處理完的數(shù)據(jù)再傳入模型的輸入層,不斷訓(xùn)練完善模型。圖3.23.3神經(jīng)元網(wǎng)絡(luò)的訓(xùn)練與識別選取合適的語音訓(xùn)練集,本設(shè)計共選取了6個語音類別來對模型進(jìn)行訓(xùn)練和識別,每個類別有2000個語音素材。并從其中選取200個語音素材作為測試集使用。方案一:首先定義了神經(jīng)網(wǎng)絡(luò)的對象類,可以編輯輸入層,中間層和輸出層。在人工神經(jīng)網(wǎng)絡(luò)模型中定義并激活輸入層和輸出層的激活函數(shù)S形,然后繼續(xù)進(jìn)行正向和反向傳播訓(xùn)練以更新權(quán)重以減少誤差值。經(jīng)過一定次數(shù)的訓(xùn)練后,最小誤差值用于獲得最大識別概率。定義算法和相應(yīng)的重要參數(shù),例如迭代次數(shù),學(xué)習(xí)率等。然后定義預(yù)測函數(shù)以加載訓(xùn)練后的模型,識別新音頻并返回識別結(jié)果。調(diào)用神經(jīng)網(wǎng)絡(luò)類的實(shí)例以及創(chuàng)建數(shù)據(jù)集函數(shù),定義創(chuàng)建模型函數(shù)。模型經(jīng)過一系列工作,先訓(xùn)練數(shù)據(jù)集中的音頻文件,然后將測試集中的音頻文件放入模型識別得出結(jié)果,即識別率和數(shù)據(jù)丟失率。在該模型中創(chuàng)建實(shí)例并調(diào)用,點(diǎn)擊運(yùn)行程序。將學(xué)習(xí)率設(shè)為0.2,進(jìn)行3000次迭代訓(xùn)練,不斷更新每一級網(wǎng)絡(luò)層的權(quán)重后得到最優(yōu)模型,運(yùn)行程序,但最后識別結(jié)果不是很理想。圖3.3.1方案2:直接使用keras中比較完善的模型來完成語音識別任務(wù)。Keras提供了大量封裝好的,可以直接使用的神經(jīng)網(wǎng)絡(luò),為構(gòu)建模型提供了便利。邢艷芳,段紅秀,何光威.TensorFlow在圖像識別系統(tǒng)中的應(yīng)用[J].計算機(jī)技術(shù)與發(fā)展,2019,第29卷(5):192-196.加載訓(xùn)練集與特征提取與方案一相同。主要識別“bed”、“go”、“house”、“off”、“stop”、“yes”六類的語音。同時定義mfcc語音特征調(diào)整函數(shù)并調(diào)用在創(chuàng)建數(shù)據(jù)集函數(shù)中,對音頻數(shù)據(jù)進(jìn)行長度大小的切割,保證語音長度相同。這里調(diào)用keras.models.Sequential()來構(gòu)建sequential順序模型,由多個網(wǎng)絡(luò)層線性堆疊的棧。圖3.3.2運(yùn)行程序:可見準(zhǔn)確率大幅度提升圖3.3.3控制系統(tǒng)設(shè)計控制家庭部分是將識別的結(jié)果作為控制信號發(fā)送到目的地終端,通過服務(wù)端Socket網(wǎng)絡(luò)編程接收識別結(jié)果也就是客戶端發(fā)送的控制信息,達(dá)到控制和命令的目的。音頻采集與識別模塊這一模塊實(shí)現(xiàn)的功能是先進(jìn)行錄音,將錄制的音頻保存在文件夾中,加載已經(jīng)訓(xùn)練好的模型,對此文件夾中的音頻進(jìn)行識別,得到一個文字信息為最終的識別結(jié)果。錄制新音頻:利用pyaudio庫調(diào)用設(shè)備的麥克風(fēng)進(jìn)行錄音,錄制音頻的各個參數(shù)與訓(xùn)練集的語音保持一致,聲道數(shù)為單聲道,采樣頻率為16kHz,時長為1s等。圖4.1(2)識別音頻:加載所保存的模型后對所有新錄制的音頻進(jìn)行預(yù)測,由于輸出層采用了Softmax作為激活函數(shù)基于神經(jīng)網(wǎng)絡(luò)的語音識別技術(shù)應(yīng)用研究[J].中國科技縱橫基于神經(jīng)網(wǎng)絡(luò)的語音識別技術(shù)應(yīng)用研究[J].中國科技縱橫,2018,(6):18-19.網(wǎng)絡(luò)通信模塊得到語音識別的結(jié)果之后,需要將控制信息發(fā)送給接收設(shè)備,讓設(shè)備得到控制后做出相應(yīng)的反饋。為此,本文設(shè)計了一個利用網(wǎng)絡(luò)通信的信號發(fā)送模塊,模擬對家居設(shè)備的控制。該模塊的功能是將識別結(jié)果的文字信息,通過網(wǎng)絡(luò)通信發(fā)送給想要控制的設(shè)備,該設(shè)備接收到信息后反饋給發(fā)送端。該模塊使用socket套接字進(jìn)行網(wǎng)絡(luò)通信。主要有一下幾部分:(1)服務(wù)端的建立:首先所需要控制的設(shè)備調(diào)用socket()函數(shù)建立一個服務(wù)端,使用listen(),開始監(jiān)聽客戶端的請求,也就是處于等待連接的狀態(tài)。圖4.2(2)客戶端的建立:語音識別程序作為此次通信的客戶端。當(dāng)模型識別出新音頻且返回一個結(jié)果時,調(diào)用connect()函數(shù)提出連接請求。圖4.3連接確認(rèn):當(dāng)服務(wù)器接收到客戶端連接請求時,它將立即響應(yīng)客戶端請求以創(chuàng)建新線程,并且服務(wù)器將信息發(fā)送到客戶端。客戶端確認(rèn)后,建立連接。服務(wù)器繼續(xù)處于偵聽狀態(tài),并繼續(xù)從另一個客戶端接收連接請求??蛻舳四P退R別的結(jié)果就會一一發(fā)送給服務(wù)端的設(shè)備,服務(wù)端的設(shè)備接收到一個信息就會回饋給客戶端一個接收成功的信息。設(shè)計演示語音訓(xùn)練,得到識別結(jié)果:開始錄音,保存錄音文件并放入模型識別得到結(jié)果:向服務(wù)端發(fā)送信號,控制成功,實(shí)現(xiàn)本設(shè)計所有目的:6結(jié)論本論文以人工智能行業(yè)在智能家居中的應(yīng)用為背景,結(jié)合基于構(gòu)建人工神經(jīng)網(wǎng)絡(luò)的語音識別技術(shù)模擬實(shí)現(xiàn)了語音控制智能家居,設(shè)計基本功能的需求,對語音識別及人工神經(jīng)元網(wǎng)絡(luò)的原理進(jìn)行學(xué)習(xí),選取穩(wěn)定可靠的模型,確定程序設(shè)計具體框架與詳細(xì)功能需求。設(shè)計詳細(xì)功能需求,依照需求對編寫程序,得到程序代碼,包括語音輸入,語音預(yù)處理,訓(xùn)練模型,最后得出完整的語音控制系統(tǒng);對所設(shè)計系統(tǒng)進(jìn)行測試,包括多種環(huán)境下的測試,結(jié)果表明此次設(shè)計的語音識別系統(tǒng)較為可靠,大部分使用場景下有很高的識別率,達(dá)到90%以上。本次設(shè)計也存在著許多可以改善的地方,例如語音的識別并不是實(shí)時的,在程序中的體現(xiàn)只是先將音頻文件錄制后保存,再進(jìn)行模型的預(yù)測,這與實(shí)際應(yīng)用中的語音識別還不太一致,程序的設(shè)計還有進(jìn)步的空間。再者就是控制方面的問題,由于各方面的因素限制,導(dǎo)致了最終并沒有完整地實(shí)現(xiàn)控制功能,只是簡單地做了模擬,在后續(xù)的研究中仍是需要改善的點(diǎn)。參考文獻(xiàn)[1]周春榮.基于神經(jīng)網(wǎng)絡(luò)的語音識別技術(shù)應(yīng)用研究[J].中國科技縱橫,2018,(6):18-19.[2]于曉明.語音識別技術(shù)的發(fā)展及應(yīng)用[J].計算機(jī)時代,2019,(11):28-31.[3]范靖宇.基于神經(jīng)網(wǎng)絡(luò)的語音識別技術(shù)研究[J].電腦迷,2018,(第30期).[4]張震南.人工神經(jīng)網(wǎng)絡(luò)技術(shù)在語音識別中的應(yīng)用[J].甘肅科技縱橫,2008,(4):21-76.[5]于樹本.基于MFCC的說話人語音識別系統(tǒng)的研究[J].黑龍江科技信息,2015,(27):69-70.[6]邢艷芳,段紅秀,何光威.TensorFlow在圖像識別系統(tǒng)中的應(yīng)用[J].計算機(jī)技術(shù)與發(fā)展,2019,第29卷(5):192-196.[7]郭子琰,舒心,劉常燕等.基于ReLU函數(shù)的卷積神經(jīng)網(wǎng)絡(luò)的花卉識別算法[J].計算機(jī)技術(shù)與發(fā)展,2018,第28卷(5):154-157,163.[8]范靖宇.基于神經(jīng)網(wǎng)絡(luò)的語音識別技術(shù)研究[J].電腦迷,2018,(第30期).[9]周春榮.基于神經(jīng)網(wǎng)絡(luò)的語音識別技術(shù)應(yīng)用研究[J].中國科技縱橫,2018,(6):18-19.[10]沈澤君,楊文元.粒計算思維下的BP神經(jīng)網(wǎng)絡(luò)在金融趨勢預(yù)測中的應(yīng)用[J].小型微型計算機(jī)系統(tǒng),2019,第40卷(3):527-532.謝辭為時一個學(xué)期的畢業(yè)設(shè)計即將結(jié)束了,這也意味著我在北京理工大學(xué)珠海學(xué)院的大學(xué)生涯也即將結(jié)束。四年的大學(xué)生活,所有努力和付出,隨著本次畢業(yè)設(shè)計的完成也將畫上完美的句號,在畢業(yè)設(shè)計這段時間里,我得到了很大的自身提高,其中包含了人工智能,語音識別,物聯(lián)網(wǎng)等相關(guān)技術(shù)的理解,還有對相關(guān)書籍的認(rèn)識等等,這些都得益于老師和同學(xué)的大力幫助。首先要感謝的是我的父母,是你們默默地在背后給我鼓勵,做我最堅強(qiáng)的后盾,讓我可以無憂的參與學(xué)習(xí)生活,可以說沒有你們,也就沒有現(xiàn)在的我,微言寸語豈能訴盡感激之情,只好銘記心中。養(yǎng)育之恩,無以回報,你們的快樂和健康是我最大的財富。感謝龔雪沅老師,在畢業(yè)設(shè)計期間,是龔雪沅老師一直給予我支持和鼓勵,老師治學(xué)嚴(yán)謹(jǐn),平易近人,不僅在相關(guān)課程中營造了良好的學(xué)習(xí)氛圍,同時在畢業(yè)設(shè)計上提出了非常多的建設(shè)性意見,老師對于每周開會的堅持,做到對每位同學(xué)的畢業(yè)設(shè)計上的指導(dǎo),可以說整雙有了您的知道才能使我們的畢業(yè)設(shè)計順利進(jìn)行,不僅為我們打開了廣闊的思路,也潛移默化地改變了我的人生觀和世界觀,為我將來的學(xué)習(xí)生活打下了堅實(shí)的基礎(chǔ)。其次,要感謝在北京理工大學(xué)珠海學(xué)院教導(dǎo)過我的每一位老師,是你們悉心教導(dǎo)使我有了良好的專業(yè)課知識,這些是我得以完成論文的基礎(chǔ)。同時每位老師的認(rèn)真負(fù)責(zé)的態(tài)度,嚴(yán)謹(jǐn)求實(shí)的教學(xué)風(fēng)格,給我樹立了非常好的榜樣,讓我在面對人生舞臺時充滿信心。還要感謝我的同學(xué)們,在這段時間里,你們給我了很多啟發(fā)和幫助,讓我知道團(tuán)隊的力量有多么強(qiáng)大,有了你們的幫助使得設(shè)計不斷地完善,充實(shí),讓困難得以解決,你們即我的益友也是我的良師。四年時光悠悠走過,在這里,我度過了人生中最為美麗的時光,在這里,我由懵懂少年轉(zhuǎn)變?yōu)橐鈿馇嗄?。這段時光必將是我終生難忘的經(jīng)歷。再次向我的師長,家人,朋友,同學(xué),表示誠摯的感謝。最后也向在百忙之中評審本文的各位老師表示衷心的謝意!附錄附錄1程序源代碼1:方案一import
wave
import
numpy
as
np
import
os
import
pickle
from
tqdm
import
trange
#
替換range()可實(shí)現(xiàn)動態(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一個神經(jīng)網(wǎng)絡(luò)類
def
__init__(self,
layers,
activation='tanh'):#下劃線構(gòu)造函數(shù)self
相當(dāng)于本身這個類的指針
layer就是一個list
數(shù)字代表神經(jīng)元個數(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
=
[]#初始化一個list作為權(quán)重
#初始化權(quán)重兩個值之間隨機(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])#初始化一個全為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]
#計算真實(shí)值與計算值的差(向量)
#通過求導(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)
###
對音頻數(shù)據(jù)進(jìn)行長度大小的切割,保證每一個的長度都是一樣的【因?yàn)橛?xùn)練文件全部是1秒鐘長度,16000幀的,所以這里需要把每個語音文件的長度處理成一樣的】
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
這里面存的值都是對應(yīng)標(biāo)簽的下標(biāo),下標(biāo)對應(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順序模型,由多個網(wǎng)絡(luò)層線性堆疊的棧。使用其API可以構(gòu)建任意的神經(jīng)網(wǎng)絡(luò)圖。
model
=
Sequential)
#可以簡單地使用
.add)
來堆疊模型,Dense(768)
是一個具有
768
個隱藏神經(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,將識別準(zhǔn)確率作為模型評估
#Keras的核心原則是使事情變得相當(dāng)簡單,同時又允許用戶在需要的時候能夠進(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
個樣本為一個
batch
進(jìn)行迭代
model.fit(wavs,
labels,
batch_size=128,
epochs=15,
verbose=1,
validation_data=(testwavs,
testlabels)
#
開始評估模型效果
#
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)練好的模型,識別新的音頻,返回識別結(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)建列表存放識別結(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ā)送信號
#
1、創(chuàng)建socket通信對象
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對象
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,
"開始錄音:請在2秒內(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("無效輸入,請重新選擇")
get_audio(in_path)
def
sending):
#延時進(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退出)
")
#使用模型識別語音
path
=
"Audio\\"
result
=
predic((pat))
prin(("模型識別出的指令為:",
result,
'\n))
time.slee(())
#發(fā)送信號
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對象
sk
=
socket.socket)
#
2、綁定一個ip和端口
sk.bind("",8888)
#
3、服務(wù)器端一直監(jiān)聽是否有客戶端進(jìn)行連接
sk.listen(5)
while
1:
#
4、如果有客戶端進(jìn)行連接、則接受客戶端的連接
conn,addr
=
sk.accept)
#
返回客戶端socket通信對象和客戶端的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對象
conn.close)
電腦無法識別U盤該怎么辦HYPERLINK電腦無法識別U盤怎么辦?打開我的電腦上單擊右鍵,在快捷菜單里,選擇“管理”,打開“計算機(jī)管理”窗口。在計算機(jī)管理窗口里,選擇“存儲”下面的“磁盤管理”,如果看得到?jīng)]有盤符的U盤,那么在這個U盤上按鼠標(biāo)右鍵,選擇“更改驅(qū)動器名稱和路徑”選項,就打開了“更改……的驅(qū)動器號和路徑”對話框。再點(diǎn)擊“更改”按鈕,打開“更改驅(qū)動器號和路徑”的對話框,在“指定以下驅(qū)動器號”的右邊下拉列表里,選擇你希望分配給U盤的驅(qū)動器號,盡可能靠后選擇,比如X、Y、Z,選擇好后,單擊確定按鈕,回到上一次“更改……的驅(qū)動器號和路徑”對話框窗口,再一次單擊確定,就回到“計算機(jī)管理”窗口。至此,如果一切正常,就給U盤單獨(dú)設(shè)置了一個長久使用的驅(qū)動器號,并卻,不受虛擬驅(qū)動器的影響了。建議將U盤插到電腦上,看任務(wù)欄中是否顯示圖標(biāo),如果顯示,在我的電腦點(diǎn)右鍵查看屬性——高級——硬件——設(shè)備管理器——查看里面是否有問號的設(shè)備,在問號設(shè)備上點(diǎn)右鍵——更新驅(qū)動程序然后下一步——否暫時不連接到網(wǎng)絡(luò)——下一步自動安裝軟件(推薦)就可以了另外:系統(tǒng)不認(rèn)U盤的幾種處理方法1.禁用主板usb設(shè)備。管理員在CMOS設(shè)置里將USB設(shè)備禁用,并且設(shè)置BIOS密碼,這樣U盤插到電腦上以后,電腦也不會識別。這種方法有它的局限性,就是不僅禁用了U盤,同時也禁用了其他的usb設(shè)備,比如usb鼠標(biāo),usb光驅(qū)等。所以這種方法管理員一般不會用,除非這臺電腦非常重要,值得他舍棄掉整個usb總線的功能。但是這種屏蔽也可以破解,即便設(shè)置了密碼。整個BIOS設(shè)置都存放在CMOS芯片里,而COMS的記憶作用是靠主板上的一個電容供電的。電容的電來源于主板電池,所以,只要把主板電池卸下來,用一根導(dǎo)線將原來裝電池的地方正負(fù)極短接,瞬間就能清空整個CMOS設(shè)置,包括BIOS的密碼。隨后只需安回電池,自己重新設(shè)置一下CMOS,就可以使用usb設(shè)備了。(當(dāng)然,這需要打開機(jī)箱,一般眾目睽睽之下不大適用~~)2.修改注冊表項,禁用usb移動存儲設(shè)備。打開注冊表文件,依次展開"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbehci”雙擊右面的“Start”鍵,把編輯窗口中的“數(shù)值數(shù)據(jù)”改為“4”,把基數(shù)選擇為“十六進(jìn)制”就可以了。改好后注銷一下就可以看見效果了。為了防止別人用相同的方法來破解,我們可以刪除或者改名注冊表編輯器程序。提示:“Start”這個鍵是USB設(shè)備的工作開關(guān),默認(rèn)設(shè)置為“3”表示手動,“2”是表示自動,“4”是表示停用。3.在computermanagement里將removablestorage的使用權(quán)限禁止。computermanagement是一個windows管理組件,可以在控制面板——管理工具——計算機(jī)管理打開。在該工具窗口中storage——removablestorage——property中,general項,可以控制系統(tǒng)托盤是否顯示security則可以管理移動存儲設(shè)備的使用權(quán)限。在security中將普通用戶的使用權(quán)限降低,就可以達(dá)到禁用u盤的目的。破解的方法也很簡單,管理員降低普通用戶移動存儲設(shè)備的使用權(quán)限,但未必禁用computermanagement的使用權(quán)限。普通用戶可以通過這個工具解除usb移動存儲設(shè)備的使用權(quán)限限制。另外,值得一提的是,如果u盤插到電腦上后可以驅(qū)動,但是我的電腦里卻沒有盤符,很有可能是管理員改動了u盤的默認(rèn)盤符,使得我的電腦不能識別。這種情況,可以在movablestorage中看到u盤驅(qū)動器??梢栽趗盤驅(qū)動器屬性設(shè)置里為u盤重新分配一個盤符,再重新插拔一次u盤,就可以在我的電腦里看到u盤的盤符了。一、首先可以將該U盤換到別的機(jī)器上,看使用是否正常。如果排除了硬件損壞的可能,一般就是軟件方面有問題。在WindowsXP+SP1操作系統(tǒng)下,有些USB2.0設(shè)備的確常常出現(xiàn)工作不穩(wěn)定的問題,可以試試安裝設(shè)備自帶的USB2.0驅(qū)動程序。另外最好不要使用USB延長線,防止因?yàn)楣╇姴蛔愣斐刹环€(wěn)定現(xiàn)象。如果仍無效,可以在主板BIOS設(shè)定中,將USB接口強(qiáng)行設(shè)置為USB1.1傳輸速率。二、(適用于WIN98)啟動計算機(jī),進(jìn)入主板BIOS設(shè)置,檢查BIOS中USB的相關(guān)選項是否已經(jīng)打開:OnChipUSB設(shè)定為Enabled;USBController設(shè)定為Enabled;PNPOSInstalled設(shè)定為Yes;AssignIRQForUSB設(shè)成Enabled。要正常使用USB設(shè)備首先要開啟USB接口,在主板BIOS里可以進(jìn)行此項工作,一般來說只需在BIOS中進(jìn)入ChipsetFeatures設(shè)置,并將USBKeyborad/MouseLegacy選項設(shè)定為Enable,就能夠保證在操作系統(tǒng)下使用USB鍵盤了。這些選項的作用是打開主板芯片組對USB設(shè)備的完全支持,為系統(tǒng)識別USB設(shè)備做準(zhǔn)備工作。三、USB口接觸不好處理辦法:拔下,等十秒鐘再插上USB口,使接觸完好;五、閃存盤驅(qū)動程序沒有安裝完成(WIN98系統(tǒng)下)處理辦法:鼠標(biāo)點(diǎn)“我的電腦”,選擇屬性找到“通用串行總線”,刪除其中的USBMASSSTORAGE項,再點(diǎn)擊“刷新”,然后按照提示重新安裝一次驅(qū)動程序。六、接其它USB設(shè)備(如掃描儀、打印機(jī)、數(shù)碼相機(jī))時可以正常使用,接優(yōu)盤時閃指示燈不亮,不能夠使用。1、檢查優(yōu)盤與電腦的聯(lián)接是否正常,并換用其它USB接口測試。2、檢查設(shè)備管理器,看是否出現(xiàn)”通用總線設(shè)備控制器”條目,如果沒有,請將電腦主板BIOS中USB接口條目*激活(ENABLE)。3、如果電腦安裝過其它類型USB設(shè)備,卸載該設(shè)備驅(qū)動程序,并首先安裝優(yōu)盤驅(qū)動程序。4、到其它電腦試用此優(yōu)盤,確認(rèn)是否優(yōu)盤不良。七、啟動型優(yōu)盤在的電腦上無法實(shí)現(xiàn)啟動,可能是主板型號不支持。如何判斷一塊主板是否支持閃存盤啟動系統(tǒng)啟動型優(yōu)盤是采用模擬USB軟驅(qū)和USB硬盤的方式啟動電腦的。只要電腦主板支持USB設(shè)備啟動,即BIOS的啟動選項中有USB-FDD、USB-HDD或是其它類似的選項,就可以使用啟動型優(yōu)盤啟動電腦。八、第一次在電腦上使用優(yōu)盤,未出現(xiàn)提示發(fā)現(xiàn)新硬件的窗口,驅(qū)動程序無法安裝的原因可能是:1、主板usbcontroller未啟用解決辦法:在電腦主板BIOS中啟用此功能。2、usbcontroller已經(jīng)啟用但運(yùn)行不正常解決辦法:在設(shè)備管理器中刪除”通用串行控制器”下的相關(guān)設(shè)備并刷新。3、優(yōu)盤被電腦識別異常,在設(shè)備管理器中表現(xiàn)為帶有黃色?或!的”其它設(shè)備”或“未知設(shè)備”。解決辦法:刪除此設(shè)備并刷新。九、大容量的U盤(例如兼具M(jìn)P3播放器或錄音功能的U盤)或移動硬盤在電腦上無法正常使用,雖然系統(tǒng)提示找到了未知的USB設(shè)備,但無法正確識別U盤或移動硬盤。原因可能是:1.USB接口供電不足:系統(tǒng)為每個USB接口分配了500mA的最大輸出電流,一般的U盤只需要100mA的工作電流,因此在使用過程中不會出現(xiàn)什么問題。大多數(shù)移動硬盤所使用的是普通的2.5英寸硬盤,其工作電流介于500mA~1000mA之間,此時假如僅僅通過USB接口供電,當(dāng)系統(tǒng)中并無其他USB設(shè)備時,那么還是可以勉強(qiáng)使用的,但如果電壓不穩(wěn)的話,就隨時可能出現(xiàn)供電不足的問題。特別是使用支持USB2.0的移動硬盤時,情況最為嚴(yán)重。另外,如果你的筆記本電腦使用電池供電,那么USB接口所分配的電量就更小了。2.使用了外接的USB擴(kuò)展卡:在筆記本電腦中使用USB2.0的U盤或移動硬盤時,如果筆記本電腦不支持USB2.0技術(shù),一般必須通過PCMCIA卡轉(zhuǎn)USB2.0的擴(kuò)展卡來間接實(shí)現(xiàn)支持,這些擴(kuò)展卡基本上都采用NEC公司的D720100AGMUSB控制芯片,少則提供兩個USB2.0接口,多則提供五個USB2.0接口,對一般用戶而言足夠使用了。由于PCMICA接口提供的電源功率比板載USB接口要小,這樣就會由于供電不足而導(dǎo)致移動硬盤工作的出現(xiàn)問題。解決方案:1.它從USB連接線上接移動硬盤的一端引出一根轉(zhuǎn)接線,可以插入電腦背后的PS/2接口取電,這里可以比USB接口提供更大的電流輸出。2.利用電源補(bǔ)償線(也稱“鍵盤取電線”),如果U盤或移動硬盤的包裝盒中提供了選配的電源適配器,你就可以直接使用外接電源,這樣就可以從根本上避免供電不足的情況發(fā)生了前置USB線接錯。當(dāng)主板上的USB線和機(jī)箱上的前置USB接口對應(yīng)相接時把正負(fù)接反就會發(fā)生這類故障,這也是相當(dāng)危險的,因?yàn)檎?fù)接反很可能會使得USB設(shè)備燒毀。所以盡量采用機(jī)箱后置的USB接口,也少用延長線.也可能是斷口有問題,換個USB端口看下.USB接口電壓不足。當(dāng)把<ahref="mobileharddisk">移動硬盤</a>接在前置USB口上時就有可能發(fā)生系統(tǒng)無法識別出設(shè)備的故障。原因是<ahref="">移動硬盤</a>功率比較大要求電壓相對比較嚴(yán)格,前置接口可能無法提供足夠的電壓,當(dāng)然劣質(zhì)的電源也可能會造成這個問題。解決方法是<ahref="">移動硬盤</a>不要接在前置USB接口上,更換劣質(zhì)低功率的電源或盡量使用外接電源的硬盤盒,假如有條件的話。主板和系統(tǒng)的兼容性問題。呵呵這類故障中最著名的就是NF2主板與USB的兼容性問題。假如你是在NF2的主板上碰到這個問題的話,則可以先安裝最新的nForce2專用USB2.0驅(qū)動和補(bǔ)丁、最新的主板補(bǔ)丁和操作系統(tǒng)補(bǔ)丁,還是不行的話嘗試著刷新一下主板的BIOS一般都能解決。系統(tǒng)或BIOS問題。當(dāng)你在BIOS或操作系統(tǒng)中禁用了USB時就會發(fā)生USB設(shè)備無法在系統(tǒng)中識別。解決方法是開啟與USB設(shè)備相關(guān)的選項。就是開機(jī)按F2或DEL鍵,進(jìn)入BIOS,把enableusbdevice選擇enable。拔插要小心,讀寫時千萬不可拔出,不然有可能燒毀芯片。XP中任務(wù)欄中多出USB設(shè)備的圖標(biāo),打開該圖標(biāo)就會在列表中顯示U盤設(shè)備,選擇將該設(shè)備停用,然后你再拔出設(shè)備,這樣會比較安全。
其實(shí)判斷軟件硬件問題很簡單,在別的機(jī)器或換個系統(tǒng)試試就
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州城市職業(yè)學(xué)院《信息系統(tǒng)審計》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州財經(jīng)大學(xué)《工業(yè)機(jī)器人本體設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年上海市安全員C證考試題庫
- 2025云南省建筑安全員-B證(項目經(jīng)理)考試題庫
- 2025年上海市安全員知識題庫及答案
- 廣州珠江職業(yè)技術(shù)學(xué)院《汽車電子控制技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年河北建筑安全員《C證》考試題庫
- 2025廣東省安全員C證考試(專職安全員)題庫附答案
- 廣州應(yīng)用科技學(xué)院《中國文化史》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州新華學(xué)院《光電成像原理與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 農(nóng)業(yè)信息化實(shí)現(xiàn)農(nóng)業(yè)現(xiàn)代化的數(shù)字化轉(zhuǎn)型
- 《義務(wù)教育道德與法治課程標(biāo)準(zhǔn)(2022年版)》
- 20以內(nèi)退位減法口算練習(xí)題100題30套(共3000題)
- 調(diào)味品年終總結(jié)匯報
- 無人機(jī)遙感技術(shù)與應(yīng)用
- 云南省昆明市呈貢區(qū)2023-2024學(xué)年九年級上學(xué)期期末數(shù)學(xué)試卷+
- 有趣的英語小知識講座
- 2023年物探工程師年度總結(jié)及下一年計劃
- 2024年擬攻讀博士學(xué)位期間研究計劃
- 4馬克思主義宗教觀
- 飛機(jī)裝配設(shè)計課程設(shè)計說明書
評論
0/150
提交評論