2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  DSP課程設(shè)計</b></p><p>  實 驗 報 告</p><p><b>  語音噪聲濾波</b></p><p>  院(系):電子信息工程學院</p><p><b>  目 錄</b></p><p>

2、;  一、緒論……………………………………………………………1</p><p>  二、設(shè)計任務書………………………………………………………………3</p><p>  三、設(shè)計方案、算法原理說明……………………………………………4</p><p>  四、程序設(shè)計、調(diào)試與結(jié)果分析…………………………………………15</p><p>  五、

3、感想…………………………………………17</p><p>  六、附錄源程序…………………………………………………20</p><p>  七、參考文獻………………………………………………………………34</p><p>  七、……………………………………………………………16</p><p><b>  一、緒論</b&g

4、t;</p><p>  隨著語音技術(shù)研究的深入和實際應用的增多,各種語音處理系統(tǒng)都面臨著進一步提</p><p>  高性能的問題。語音增強是其中的關(guān)鍵技術(shù)之一。從20世紀60年代開始,對語音增強</p><p>  的研究就一直沒有停止。20世紀70年代由于數(shù)字信號處理理論的成熟,加速了語音增</p><p>  強技術(shù)的研究,使該技術(shù)走

5、向成熟。20世紀80年代以后,超大規(guī)模集成電路技術(shù)的發(fā)</p><p>  展為語音增強的實時實現(xiàn)提供了可能。</p><p>  語音增強即語音噪聲處理的目的是從帶有噪聲的語音信號中提取純凈的原始語音。但由于噪聲信號都是隨機產(chǎn)生的,完全消除噪聲幾乎不可能,因此實際語音增強的目的主要有:改進語</p><p>  音質(zhì)量,消除背景噪聲,使聽者樂于接受,不感到疲倦,同

6、時提高語音信號的可懂度, </p><p><b>  方便聽者理解。</b></p><p>  語音增強不但與語音處理理論有關(guān),而且涉及到人的聽覺和語音學。再者,噪聲的</p><p>  來源眾多,應用場合不同,它們的特性也各不相同。因此在不同的噪聲場合中應采用不</p><p><b>  同的語音增強

7、方法。</b></p><p>  語音噪聲處理的應用背景</p><p>  語音噪聲處理技術(shù)是指當語音信號被各種各樣的噪聲(包括語音)干擾、甚至淹沒后,從</p><p>  噪聲背景中提取、增強有用的語音信號,抑制、降低噪聲干擾的技術(shù)。語音增強技術(shù)無</p><p>  論在日常生活中,還是在其它的領(lǐng)域,或者對語音信號處理技

8、術(shù)本身來說都很有應用價</p><p><b>  值。</b></p><p>  在日常生活中,我們經(jīng)常會遇到在噪聲干擾下進行語音通信的問題。如:使用設(shè)置</p><p>  在嘈雜的馬路旁或市場內(nèi)的公用電話,或在奔馳的汽車、火車里使用移動電話時,旁人</p><p>  的喧鬧聲、汽車和火車的轟鳴聲等背景噪聲都會干

9、擾語音通訊的質(zhì)量。對受話人來說, </p><p>  收聽夾雜著各種干擾噪聲的語音,至少會引起聽覺疲勞,嚴重一點就會錯誤地識別或根</p><p>  本無法聽清對方的語音。</p><p>  對電話來說,干擾主要來自電話信道的回波干擾。還有一種叫無線信道干擾,它來</p><p>  自信道對外界干擾屏蔽能力的強弱。比如雷雨天收聽收音機

10、,會聽到陣陣噪聲。它是由</p><p>  于雷電引起信道附近強電流的驟變,導致強大的電磁波串入信道,并傳送到接受端而引</p><p>  起的噪聲干擾。這些隨機性的干擾也嚴重影響了語音的傳輸質(zhì)量。</p><p>  再有一類需要用到語音增強技術(shù)的方面就是處理舊的錄音磁帶。由于早年錄音技術(shù)</p><p>  不完善,磁帶質(zhì)量不高,加上

11、長久存放,使磁帶發(fā)生霉變、機械損傷、磁粉脫落、磁化</p><p>  等問題,使得重放語音產(chǎn)生噪聲。對于那些極具研究或收藏價值的寶貴錄音資料來說, </p><p>  語音增強技術(shù)是一個較好的恢復手段。</p><p>  在通信過程中,語音質(zhì)量的好壞顯得格外重要。如語音質(zhì)量很差,接收方難以聽清</p><p>  對方的語音信息,輕者可

12、能延誤時間、貽誤時機,重者可能錯誤地識別對方的語音,因</p><p>  而錯誤地下達或執(zhí)行命令,導致對工作造成不可估量的損失。在機械制造領(lǐng)域,聲音環(huán)</p><p>  境一般都比較惡劣,除了各種機械內(nèi)部產(chǎn)生的噪聲,工作中還不時地充滿了各種沖擊性</p><p>  噪聲,使得工作者的語音經(jīng)常被部分或全部淹沒在一片強噪聲中,即使花九牛二虎之力</p>

13、<p>  也常常難以收聽到對方準確可靠的語音信息。因此,機械制造領(lǐng)域也迫切需要語音增強</p><p><b>  技術(shù)。</b></p><p>  隨著現(xiàn)代科學的蓬勃發(fā)展,人類社會愈來愈顯示出信息社會的特點。通信或信息交</p><p>  換已成為人類社會存在的必要條件,正如衣食住行對人類是必要的一樣。語音作為語言<

14、/p><p>  的聲學表現(xiàn),是人類交流信息最自然、最有效、最方便的手段之一。</p><p>  然而,人們在語音通信過程中不可避免地會受到來自周圍環(huán)境和傳輸媒介引入的噪</p><p>  聲、通信設(shè)備內(nèi)部電噪聲、乃至其他講話者的干擾。這些干擾最終將使接收者接收到的</p><p>  語音不再是純凈的原始語音,而是被噪聲污染過的帶有噪聲的語

15、音信號。例如,汽車、</p><p>  街道、機場中的電話,常受到強背景噪聲的干擾,嚴重影響通話質(zhì)量。而環(huán)境噪聲的污</p><p>  染使得許多語音處理系統(tǒng)的性能急劇惡化。例如,語音識別已取得重大進展,正步入使</p><p>  用階段。但目語音識別系統(tǒng)大多都是在安靜環(huán)境中工作的,在噪聲環(huán)境中尤其是強噪</p><p>  聲環(huán)境,語

16、音識別系統(tǒng)的識別率將受到嚴重影響。</p><p>  在上述情況下,必須加入語音增強系統(tǒng),或者抑制背景噪聲,以提高語音通信質(zhì)量, </p><p>  或者作為預處理器,以提高語音處理系統(tǒng)的抗干擾能力,維持系統(tǒng)性能。因此,語音增</p><p>  強技術(shù)在實際中有重要價值。目前,語音增強已在語音處理系統(tǒng)、通信技術(shù)、多媒體技</p><p>

17、;  術(shù)、數(shù)字化家電等領(lǐng)域得到了越來越廣泛的應用。</p><p><b>  二、設(shè)計任務書:</b></p><p><b>  1、設(shè)計背景:</b></p><p>  語音通信的目的是傳遞聲音信息。位于甲地的通信者發(fā)出的聲音經(jīng)語音傳感器變換成為電信號,經(jīng)發(fā)送端設(shè)備變換為適合傳輸?shù)男问?,通過傳輸信道傳輸?shù)揭业亍T谝?/p>

18、地經(jīng)接收端設(shè)備恢復出原來的語音信號,經(jīng)耳機或者喇叭轉(zhuǎn)換為接收者可以聽到的聲音信號。這就是最基本的語音通信系統(tǒng),但是由于周圍環(huán)境的原因,我們采集到語音信號經(jīng)常含有不同程度的噪聲。</p><p>  典型語音通信系統(tǒng)中的噪聲來自三個方面:①信號處理設(shè)備產(chǎn)生的電噪聲及傳輸信道中的電噪聲;② 信號發(fā)送端空間環(huán)境中的音頻噪聲信號經(jīng)麥克風變換為電信號之后,與有用信號其同傳遞到接收端;③信號接收端空間環(huán)境中的音頻噪聲對信號接

19、收者的影響。噪聲是由于發(fā)生體作無規(guī)則振動產(chǎn)生的。</p><p>  在很多情況下,環(huán)境中的背景噪聲是通信系統(tǒng)中噪聲干擾的主要來源。當語音信號受到背景噪聲干擾時語音通信質(zhì)量變得不可接受,因此要對語音信號中的噪聲濾除。DSP利用直接存儲器訪問方式DMA(Direct Memory Access)采集數(shù)據(jù)時不打擾CPU,因此利用DMA方式工作時,CPU可以對語音信號進行實時地濾波。本設(shè)計要求利用DSP的DMA方式進行

20、信號采集和信號輸出,對語音信號進行數(shù)字編碼,濾波后進行解碼。</p><p>  2、設(shè)計要求及目標:</p><p><b>  基本部分:</b></p><p> ?。?)對DMA進行初始化;</p><p>  (2)對A/D、D/A進行初始化;</p><p>  (3)編寫DMA中斷服

21、務程序和濾波算法程序,實現(xiàn)語音信號的實時濾波;</p><p><b>  發(fā)揮部分:</b></p><p>  (1)使用DSP產(chǎn)生帶回波的語音信號;</p><p> ?。?)利用自適應濾波實現(xiàn)語音信號的回波對消。</p><p><b>  3、設(shè)計思路:</b></p>&l

22、t;p>  首先利用DSP的DMA方式對外部含噪聲的語音信號進行實時采集,語音信號先經(jīng)過A/D轉(zhuǎn)換為數(shù)字信號,利用MCBSP的接收寄存器接收數(shù)據(jù)。編寫濾波算法程序,或調(diào)用DSPLIB中的濾波函數(shù),對信號進行濾波。濾波后的數(shù)據(jù)利用DMA方式送到D/A轉(zhuǎn)換器轉(zhuǎn)換為模擬信號。</p><p>  4、要求完成的任務:</p><p>  編寫C語言程序,并在CCS集成開發(fā)環(huán)境下調(diào)試通過;&

23、lt;/p><p>  將包含噪聲的語音信號進行濾波,從揚聲器輸出端口輸出,比較濾波前后的信號的變化;</p><p>  按要求撰寫設(shè)計報告。</p><p>  三、設(shè)計方案、算法原理說明:</p><p>  語音噪聲濾波是個很寬泛的題目,雖然從老師給的要求來看,主要是想讓我們熟悉CODEC、DMA和簡單的數(shù)字濾波器設(shè)計,但我們認為語音噪聲

24、的處理遠遠不止于此。既然我們要進行語音濾波濾掉噪音,我們就要將我們的注意力聚焦在各種噪聲的處理上。我們將分門別類的處理各式各樣的噪聲。不同的噪聲有不同的處理方法。</p><p><b>  噪聲的種類</b></p><p>  根據(jù)與輸入語音的關(guān)系,噪聲可分為加性噪聲和非加性噪聲兩類。對某些非加性噪</p><p>  聲而言,可以通過一定

25、的變換轉(zhuǎn)換成加性噪聲。例如乘性噪聲可以通過同態(tài)變換轉(zhuǎn)換為</p><p>  加性噪聲。某些與信號相關(guān)的量化噪聲也可以通過隨機噪聲擾動的方法轉(zhuǎn)換成與信號獨</p><p>  立的加性噪聲。因此,為簡化討論,下面主要分析加性噪聲的干擾。語音處理中的加性</p><p>  噪聲大體上可以分為周期噪聲、脈沖噪聲、寬帶噪聲和同聲道其它語音干擾等。</p>

26、<p><b>  (1)周期性噪聲</b></p><p>  周期性噪聲主要來源于發(fā)動機等周期性運轉(zhuǎn)的機械,電氣干擾也會引起周期性噪</p><p>  聲。其特點是頻譜上有許多離散的線譜。實際信號受多種因素的影響,線譜分量通常轉(zhuǎn)</p><p>  變?yōu)檎瓗ёV結(jié)構(gòu),而且通常這些窄帶譜都是時變的,位置也不固定。必須采用自適應濾&l

27、t;/p><p>  波的方法才能有效地區(qū)分這些噪聲分量。</p><p><b>  (2)脈沖噪聲</b></p><p>  脈沖噪聲主要來源于爆炸、撞擊、放電及突發(fā)性干擾等。其特征是時間上的寬度很</p><p>  窄。消除脈沖噪聲通常可以在時域內(nèi)進行,其過程如下:根據(jù)帶噪語音信號幅度的平均</p>

28、<p>  值確定閾值。當信號幅度超出這一閾值時判別為脈沖噪聲。然后對信號進行適當?shù)乃p, </p><p>  就可以完全消除噪聲分量,也可以使用內(nèi)插方法將脈沖噪聲在時域上進行平滑。</p><p><b>  (3)寬帶噪聲</b></p><p>  寬帶噪聲來源很多,熱噪聲、氣流(如風、呼吸)噪聲及各種隨機噪聲源、量化噪聲&l

29、t;/p><p>  也可視為寬帶噪聲。寬帶噪聲與語音信號在時域和頻域上基本上重疊,只有在無話期間, </p><p>  噪聲分量才單獨存在。因此消除這種噪聲比較困難。對于平穩(wěn)的寬帶噪聲,通??梢哉J</p><p><b>  為是高斯白噪聲。</b></p><p>  (4)同聲道語音干擾</p><

30、;p>  在實際生活中經(jīng)常遇到很多人同時說話的情況,此時不需要的語音就形成了同聲道干擾。入耳可以根據(jù)需要分辨出其中某個人的聲音,這種能力來源于人的雙耳輸入效應和人類語音中包含的“聲紋’’特征,這是人體內(nèi)部語音理解機理的一種感知能力表現(xiàn)。通常情況下語音經(jīng)雙耳輸入,人們根據(jù)兩路輸入的不同時延特性進行分離。同時由于人的發(fā)聲器官生理結(jié)構(gòu)的差異,每個人都有自身獨特的“聲紋’’,因此即使雙耳效應不顯著(例如單聲道傳輸時)人耳也可以借助聲紋對信

31、號進行分離。</p><p><b>  (5)背景噪聲</b></p><p>  背景噪聲破壞了信號原有的聲學特征及模型參數(shù),因此減弱了不同語音間的差別, </p><p>  使語音質(zhì)量下降,可懂度降低。強噪聲會使人產(chǎn)生聽覺疲勞,從而影響人耳的聽覺特性。</p><p>  同時,較強的背景噪聲也會使講話人的發(fā)音方

32、式發(fā)生變化,即使發(fā)相同的語音,其語音</p><p>  的特征參數(shù)也會與安靜環(huán)境下的發(fā)音有所不同。這種效應稱為Lombard效應。</p><p><b>  (6)單頻噪聲</b></p><p>  它主要源于無線電干擾。因為電臺發(fā)射的頻譜集中在比較窄的頻率范圍內(nèi),因此可</p><p>  以近似地看作是單頻性質(zhì)

33、的。另外,像電源交流電,反饋系統(tǒng)自激振蕩等也都屬于單頻</p><p>  干擾。它的特點是~種連續(xù)干擾,并且其頻率是可以通過實測來確定的,因此在采取適</p><p>  當?shù)拇胧┖缶陀锌赡芊乐埂?lt;/p><p>  以上的噪聲有的離我們很遠,有的對我們來講太難。經(jīng)過我們的總結(jié),我們準備將重點放在語音通信中的三種噪聲上。</p><p>&

34、lt;b>  1、信道干擾</b></p><p>  它來自信道對外界干擾屏蔽能力的強弱。比如雷雨天收聽收音機,會聽到陣陣噪聲。它是由于雷電引起信道附近強電流的驟變,導致強大的電磁波串入信道,并傳送到接受端而引起的噪聲干擾。這些隨機性的干擾也嚴重影響了語音的傳輸質(zhì)量。</p><p><b>  2、回波噪聲</b></p><

35、p>  聲回波是指在語音通信中,遠端的語音信號通過近端揚聲器-房間-近端麥克風路徑,又隨著近端說話者的聲音一同通過通信線路傳播到了遠端。然而,遠端聽話者是不愿聽到自己聲音回波的。</p><p><b>  3、脈沖式噪聲</b></p><p>  這種噪聲主要是仿真當我們語音通話時突然外界傳來巨大聲響的情況,比如在施工現(xiàn)場。這種情況下,聽者的聽覺和心情會被突

36、入的巨大聲響嚴重損害。</p><p><b>  應對方式:</b></p><p>  對于信道干擾,往往會上尖峰或者工頻脈沖。這種噪聲的特點就是與語音信號的頻率差異很大。所以,我們應用濾波器將4000HZ頻率以上的聲音濾除,即可一定程度上消除電噪聲或其他信道干擾。</p><p>  對于回波噪聲就不能應用這種方法,因為噪聲本體就是聲音信

37、號,頻率于我們的語音信號一樣,對于這種噪音,我們應用自適應濾波方式進行濾除。</p><p>  對于脈沖式,我們將應用閾值濾波的方法。</p><p><b>  信道干擾濾波部分:</b></p><p>  首先利用DSP的DMA方式對外部含噪聲的語音信號進行實時采集,語音信號先經(jīng)過A/D轉(zhuǎn)換為數(shù)字信號,利用MCBSP的接收寄存器接收數(shù)據(jù)

38、。編寫濾波算法程序,或調(diào)用DSPLIB中的濾波函數(shù),對信號進行濾波。濾波后的數(shù)據(jù)利用DMA方式送到D/A轉(zhuǎn)換器轉(zhuǎn)換為模擬信號。這就是我們的設(shè)計思路。</p><p>  具體的設(shè)計方案原理圖如下。模擬輸入信號通過DSK的MIC端口輸入,經(jīng)A/D轉(zhuǎn)換,然后到達DSP的DMA通道2,DSP接收到信號后,調(diào)用中斷服務程序進行濾波,濾波后的信號可以在CCS上顯示,也可以通過DMA通道3將信號輸出到D/A轉(zhuǎn)換器,經(jīng)D/A轉(zhuǎn)

39、換后從SPEAKER端口輸出。</p><p> ?。?)直接存儲器訪問DMA</p><p>  直接存儲器訪問(Direct Memory Access)是C54x DSP非常重要的片上外設(shè),DMA控制器可以在不影響CPU的情況下完成數(shù)據(jù)的傳輸,因此數(shù)據(jù)傳輸速度快,在要求信號實時采集和處理的系統(tǒng)中常采用DMA方式進行信號采集和傳輸。C5402有6個可獨立編程的DMA通道,每個DMA通道

40、受各自的5個16位寄存器控制:源地址寄存器DMSRC、目的地址寄存器DMDST、單元計數(shù)寄存器DMCTR、同步事件和計數(shù)寄存器DMSFC、發(fā)送模式控制寄存器DMMCR。目的地址寄存器DMDST規(guī)定DMA要傳送數(shù)據(jù)目的地址和首地址。單元計數(shù)寄存器DMCTR規(guī)定DMA傳送數(shù)據(jù)的個數(shù)為DMCTR寄存器的值加1。同步事件和楨計數(shù)寄存器DMSFC規(guī)定DMA傳送數(shù)據(jù)的同步事件類型和傳送一塊數(shù)據(jù)所含楨信號的個數(shù)。發(fā)送模式控制寄存器DMMCR規(guī)定DMA

41、通道的傳輸模式,當DMA工作在自動初始化模式時,CPU在一個DMA事件完成后自動裝載下一個DMA初始化設(shè)置并繼續(xù)進行數(shù)據(jù)傳送。DINM位和IMOD位設(shè)置DMA中斷產(chǎn)生方式。CTMOD位設(shè)置發(fā)送計數(shù)模式控制,CTMOD位為0時,DMA工作在多楨模式,CTMOD位為1時,</p><p>  本實驗利用DMA通道2與MCBSP1通道結(jié)合來讀取A/D轉(zhuǎn)換器的數(shù)據(jù),利用DMA通道3與MCBSP1通道結(jié)合來將處理后的數(shù)據(jù)發(fā)

42、送至D/A轉(zhuǎn)換器。選擇MCBSP1通道的接收寄存器DRR11(41H)為DMA傳送數(shù)據(jù)的首地址,并選擇DMA源地址工作在不調(diào)整方式,選擇MCBSP1接收事件為DMA同步事件,以實現(xiàn)DMA和MCBSP的結(jié)合。A/D轉(zhuǎn)換器的數(shù)據(jù)按MCBSP1的設(shè)置被傳送到DSP內(nèi)部接收寄存器DRR11中,再由DMA通道2將DRR11中的數(shù)據(jù)讀到指定數(shù)據(jù)存儲區(qū)inp_buffer中完成數(shù)據(jù)采集。DMA在傳送外部來的數(shù)據(jù)時不會影響CPU的正常運行,當DMA通道

43、2采集完一組數(shù)據(jù)后產(chǎn)生一個DMA中斷事件中斷CPU,來通知CPU對其進行相應的處理,此時DMA通道2可以按照設(shè)定繼續(xù)采集下一組數(shù)據(jù),實現(xiàn)了數(shù)據(jù)采集與CPU處理的并行操作。</p><p>  當一組數(shù)據(jù)處理完成后,將數(shù)據(jù)存放在數(shù)據(jù)存儲區(qū)out_buffer中,選擇out_buffer為DMA通道3的首地址,并選擇源工作地址工作在不調(diào)整方式。選擇MCBSP1通道的發(fā)送積存器DXR11(43H)為DMA通道3傳送數(shù)據(jù)

44、的目的地址,并選擇DMA源地址工作在不調(diào)整方式,選擇MCBSP1接收事件為DMA同步事件,以實現(xiàn)DMA和MCBSP的結(jié)合。</p><p>  在CCS集成開發(fā)環(huán)境中,與DMA相關(guān)的頭文件有regs54xx.h和dma54xx.h。在這兩個頭文件中,定義了DMA的寄存器資源、使用方法和DMA寄存器的地址和基本訪問方式,以及寄存器的各個比特域和訪問方法,因此需要進行C源程序的開始處包含這兩個頭文件。輸入信號經(jīng)A/D

45、轉(zhuǎn)換后,利用DMA通道2進行傳輸進入DSP處理,而濾波后的信號輸出利用了DMA通道3進行傳輸進入D/A轉(zhuǎn)換器等輸出,因此需要對DMA通道2和通道3進行初始化配置。</p><p> ?。?)A/D和D/A轉(zhuǎn)換器</p><p>  本實驗要用到A/D和D/A轉(zhuǎn)換器。A/D轉(zhuǎn)換器能夠?qū)⒔邮盏恼Z音信號(模擬信號)轉(zhuǎn)化為數(shù)字信號,供CPU進行處理;D/A轉(zhuǎn)換器能夠?qū)?shù)字信號轉(zhuǎn)換為語音信號送SPE

46、AKER端口輸出。</p><p>  要使用A/D和D/A轉(zhuǎn)換器,必須首先對A/D和D/A轉(zhuǎn)換器進行初始化設(shè)置,即設(shè)置A/D轉(zhuǎn)換器的工作模式(15+1bit模式,16bit模式)、輸入增益(0dB,6Db,12dB)以及抽樣頻率(8000Hz,16000Hz)等。</p><p><b>  2、回波去噪部分:</b></p><p>  初

47、始化FIR延遲輸出數(shù)組dbuffer_h[]、FIR輸出數(shù)組、自適應濾波器系數(shù)矢量coff_w[]和自適應濾波器的輸出數(shù)組out_w[]以及DSK板之后,采集輸入的語音信號,根據(jù)模式的不同進行不同的處理以輸出不同的信號來進行效果的比較。我們的做法是利用設(shè)置參數(shù)mode來改變板子的功能。mode=1時信號通過FIR濾波器后產(chǎn)生回聲,為使現(xiàn)象更明顯可以附加一個延遲;mode=2時用自適應濾波器逼近FIR濾波器以使之輸出近似的信號,用信號通過

48、兩個系統(tǒng)產(chǎn)生的信號之差(即剩余回聲)來調(diào)整自適應濾波器的系數(shù),使剩余回聲逐漸收斂于0。</p><p> ?。?)自適應濾波器的基本原理:</p><p>  自適應濾波原理:利用前一時刻獲得的濾波結(jié)果,自動調(diào)節(jié)現(xiàn)時刻的濾波器參數(shù),以適應信號和噪聲的未知特性,從而實現(xiàn)最優(yōu)濾波。</p><p>  自適應濾波器主要由系數(shù)可調(diào)的數(shù)字濾波器和調(diào)整濾波器系數(shù)的自適應算法兩

49、部分構(gòu)成.自適應濾波器的一般結(jié)構(gòu)如圖l所示.自適應濾波其最重要的性能是能有效地在未知環(huán)境中跟蹤時變的輸入信號,使輸出信號達到最優(yōu)。因而在電信、雷達、聲納、實時控制以及圖像處理等領(lǐng)域都有成功的應用。</p><p>  常規(guī)濾波器具有特定的特性,對于輸入信號根據(jù)這個濾波器特性產(chǎn)生相應的輸出。也就是,先有了濾波器構(gòu)成的權(quán)系數(shù),然后決定相應輸出值。但有些實際應用往往是反過來要求的,即對濾波器輸出的要求是明確的,而濾波器

50、特性是無法預先知道的。例如長話系統(tǒng),回波相消器的理想輸出是無回波信號,這個要求是明確的,而系統(tǒng)本身卻不能一開始就確定下來,因為它取決于長話系統(tǒng)話路傳輸條件的變化,像這樣的應用技術(shù)就必須依賴自適應濾波技術(shù)。</p><p>  圖l中d(n)為期望響應,x(n)為自適應濾波器的輸入,y(n)為自適應濾波器的輸出, e(n)為估計誤差,P(n)= x(n)-y(n).前置級完成跟蹤信號的選擇,確定是信號還是噪聲;后置

51、級根據(jù)前置級的不同選擇對數(shù)字濾波器輸出作不同的處理,以得到信號輸出.自適應濾波器的濾波器系數(shù)受誤差信號e(n)控制,根據(jù)e(n)的值和自適應算法自動調(diào)整.</p><p> ?。?)回聲消除器的基本原理:</p><p>  回聲消除的基本原理是采用一個自適應濾渡器自動識別回聲通道,通過自適應濾波算法的調(diào)整,使其沖激響應與實際回聲路徑逼近,從而得到回聲預測信號y(n),再將預測信號從近端采

52、樣的語音信號d(n)中減去,即可實現(xiàn)回聲消除。自適應算法要求收斂速度快、計算復雜度低、穩(wěn)定性好和失調(diào)誤差小。雖然許多自適應算法在理論上實現(xiàn)回聲消除都是可行的,但通常采用的是較簡單的算法。例如廣泛應用的LMS自適應算法。</p><p><b> ?。?)LMS算法:</b></p><p>  本設(shè)計中自適應算法是根據(jù)最小均方誤差判據(jù)來設(shè)計的,即理想信號與濾波器輸出之

53、差的平方值的期望值最小,并且根據(jù)這個判據(jù)來修改權(quán)系數(shù)。</p><p>  均方誤差ε表示為  ε△E[e2(n)]=E[d(n)-y(n)]2</p><p>  對于橫向結(jié)構(gòu)濾波器,代入y(n)的表達式,有</p><p>  ε= E[d2(n)]+WT(n)RW(n)-2 WT(n)P</p><p>  其中,R = E[X(n)

54、XT(n)]是N*N的自相關(guān)矩陣,它是輸入信號采樣值間的相關(guān)性矩陣。P = E[d(n) X(n)]為N*1互相關(guān)矢量,代表理想信號d(n)與輸入矢量的相關(guān)性。</p><p>  在均方誤差ε達到最小時,得到最佳權(quán)系數(shù)W*=[w0*, w1* , w2*, ……, wN-1*]T。它應滿足下列方程</p><p><b>  =0</b></p>&l

55、t;p>  即 R*W-P=0</p><p>  顯然,Φx(m)=[x(n)x(n-m)]是x(n)的自相關(guān)值,Φxd(R) =E[x(n)d(n-k)]是x(n)與d(n)的互相關(guān)值。在有些應用中,把輸入信號的采樣值分成相同的段(每段稱為一幀),再求出R和P估計值,以得到每幀的最佳權(quán)系數(shù)。這種方法稱為塊對塊自適應算法。如語音信號的線性預測編碼LPC,

56、就是把語音信號分成幀進行處理的。R和P的計算,要求出期望值E,在實際運算中不易實現(xiàn)。為此,可通過下式進行估計:</p><p><b>  =</b></p><p><b>  =</b></p><p>  用以上方法獲得最佳W*的運算量很大,對于一些在線或?qū)崟r應用的場合,無法滿足其時間要求。</p>&

57、lt;p>  大多數(shù)場合使用迭代算法,對每次采樣值求出較佳權(quán)系數(shù),稱為采樣值對采樣值迭代算法。迭代算法可以避免復雜的R-1和P的運算,又能實時求得式的近似解,因而切實可行。</p><p>  LMS算法是以最快下降法為原則的迭代算法,即W(n+1)矢量是W(n)矢量按均方誤差性能平面的負斜率大小調(diào)節(jié)相應一個增量。</p><p>  W(n+1)= W(n)-u▽(n)</p

58、><p>  這個u是由系統(tǒng)穩(wěn)定性和迭代運算收斂速度來決定的自適應步長。▽(n)為n次迭代的梯度。對于LMS算法,▽(n)是E[e2(n)]的斜率。</p><p>  由式W(n+1)= W(n)-u▽(n),產(chǎn)生了求解最佳權(quán)系數(shù)的兩種方法,一種是最陡梯度法。其思路為,設(shè)定初始權(quán)系數(shù),用上式迭代公式計算,直到W(n+1)與W(n)誤差小于規(guī)定范圍。其中▽(n)的E計算,可用估計值表達式<

59、;/p><p>  式中K的取值應該足夠大。如果用瞬時-2e(n)X(n)來代替上式對-2E{ e(n)X(n)}的估計運算,就產(chǎn)生了另一種算法——隨機梯度法,即Widrow Hoff的LMS算法。此時迭代公式為</p><p>  W(n+1)= W(n)+2u e(n)X(n)</p><p>  以上討論的自適應算法都是基于Widrow Hoff的LMS算法。上式

60、的迭代公式,假定濾波器結(jié)構(gòu)為橫向結(jié)構(gòu)。對于對稱橫向型結(jié)構(gòu),也可推出類似的迭代公式</p><p>  W(n+1)= W(n)+2u e(n)[X(n)+ X(n-N+1)]</p><p><b>  其中,</b></p><p><b>  X(n)=,</b></p><p>  而X(n-

61、N+1)=。</p><p><b>  LMS算法流程圖</b></p><p><b>  自適應控制 </b></p><p>  自適應控制可以看作是一個能根據(jù)環(huán)境變化智能調(diào)節(jié)自身特性的反饋控制系統(tǒng)以使系統(tǒng)能按照一些設(shè)定的標準工作在最優(yōu)狀態(tài)。一般地說,自適應控制在航空、導彈和空間飛行器的控制中很成功。可以得出結(jié)論,

62、傳統(tǒng)的自適應控制適合(1)沒有大時間延遲的機械系統(tǒng);(2)對設(shè)計的系統(tǒng)動態(tài)特性很清楚。但在工業(yè)過程控制應用中,傳統(tǒng)的自適應控制并不如意。PID自整定方案可能是最可靠的,廣泛應用于商業(yè)產(chǎn)品,但用戶并不怎么喜歡和接受。傳統(tǒng)的自適應控制方法,要么采用模型參考要么采用自整定,一般需要辨識過程的動態(tài)特性。它存在許多基本問題(1)需要復雜的離線訓練;(2)辨識所需的充分激勵信號和系統(tǒng)平穩(wěn)運行的矛盾;(3)對系統(tǒng)結(jié)構(gòu)假設(shè);(4)實際應用中,模型的收斂

63、性和系統(tǒng)穩(wěn)定性無法保證。另外,傳統(tǒng)自適應控制方法中假設(shè)系統(tǒng)結(jié)構(gòu)的信息,在處理非線性、變結(jié)構(gòu)或大時間延遲時很難。</p><p><b>  一言以蔽之:</b></p><p>  就是利用LMS的方式使以前的波形信息為反饋提供給適合的參數(shù)已達到濾去噪聲的作用。</p><p><b>  dlms:</b></p&

64、gt;<p>  short oflag = dlms (DATA *x, DATA *h, DATA *r, DATA **d, DATA *des, DATA step, ushort nh, ushort nx)</p><p><b>  參數(shù)如下表所示:</b></p><p>  注意:h和d的存儲地址要求起點必須位于Kbit邊界處,即起始地

65、址值的最低有效位必須是0,必須在CMD文件中開辟對齊1K邊界的空間,并且只能在頭文件中進行段的配置。否則編譯無法通過。</p><p><b>  3、脈沖式濾波:</b></p><p>  我們的方式先求個點的平均值,然后根據(jù)實際,大于這個平均值的5倍以上的信號幅度進行衰減,這樣可以在時域直接進行處理。進而得到需要的聲音,將亂入的聲音濾掉,保護聽者。</p&

66、gt;<p><b>  4、小創(chuàng)意:變調(diào)</b></p><p>  音調(diào)轉(zhuǎn)移使用同一個存儲的聲音片斷,可以幫助產(chǎn)生其他頻率的音符。</p><p>  正弦信號的頻率與周期成反比,所以抽樣間隔變大的話,就相當于頻率變大。</p><p>  運用此原理,我們對dma256數(shù)據(jù)進行抽樣,若抽樣間隔大于,則抽樣頻率提高,聲調(diào)提高;

67、若間隔小于,則抽樣頻率降低,聲調(diào)降低。</p><p>  四、程序設(shè)計、調(diào)試與結(jié)果分析:</p><p><b>  1、調(diào)試過程:</b></p><p>  a、首先設(shè)計FIR濾波器。FIR濾波器的算法可以由MATLAB來設(shè)計。</p><p>  打開MATLAB,在命令窗中輸入FDAtool,打開濾波器設(shè)計與分

68、析工具。因為語音信號的頻率成分主要分布在300Hz到3400Hz,所以我們只要設(shè)計4000Hz的低通FIR濾波器就可以實現(xiàn)對語音信號中摻雜的噪聲的濾除。在FDA中選擇帶低通FIR濾波器,階數(shù)選擇15,抽樣頻率選擇16kHz。就可以設(shè)計所要的濾波器了。然后將設(shè)計好的結(jié)果導出為fir.c文件。</p><p>  設(shè)計好濾波器后,還要進行對A/D和D/A以及DMA的初始化,并編寫主程序和中斷服務程序,以及控制調(diào)用中斷

69、時程序流向的中斷向量表,詳細內(nèi)容請見程序清單。由于DSK5402板上存儲器分配方式基本相同,所以 .cmd文件可以采用其他程序中的 .cmd文件。</p><p><b>  b、信號濾波部分:</b></p><p>  (1)通過MIC向計算機輸入語音信號。但此種方式不能很好的聽出聲音到底有什么變化,因為其實板子的噪聲即不準。所以最好是用輸入正弦波再利用CCS看圖

70、形的方式。可是,咱們的板子本身有問題,經(jīng)過板子后會加上噪音圖形無法分辨!</p><p> ?。?)編譯濾波工程之前先在CCS下選擇Tools/Linker Configuration,出現(xiàn)連接器配置對話框,選擇Use the Visual Linker,然后再對程序進行編譯。</p><p>  (3)編譯通過則會產(chǎn)生Firlab.out文件,并可執(zhí)行文件Firlab.out下載到DSP

71、中。</p><p>  (4)在中斷服務程序dmac2isr.c中的有效行上設(shè)置斷點,以便觀察圖形。</p><p> ?。?)選擇Debug/Animate,激活程序。Animate=Run-Halt-Run。</p><p> ?。?)在CCS中選擇View/Graph/Time/Frequency,出現(xiàn)圖形屬性對話框。圖形屬性對話框中,Start Adres

72、s設(shè)置為輸入變量名、Acquisition Buffer Size為十進制256、Display Data Size 為十六進制、DSP Data Type為16位有符號整形數(shù),其它設(shè)置不變。確定后出現(xiàn)如下圖所示時域波形。</p><p>  c、擴展回波對消部分:</p><p> ?。?)由麥克將產(chǎn)生的語音信號輸入到J5端口。J6端口接入音響或耳機,對比處理前后的語音信號。</p

73、><p> ?。?)編譯濾波工程之前先在CCS下選擇Tools/Linker Configuration,出現(xiàn)連接器配置對話框,選擇Use the text Linker,然后再對程序進行編譯。</p><p> ?。?)通過設(shè)置mode的值,對不同算法處理過的信號分別觀察。0代表產(chǎn)生輸入原聲;1代表產(chǎn)生帶回波噪聲的聲音;2代表用自適應消除回波后的聲音;;3代表產(chǎn)生添加正弦頻率噪音的信號;4代

74、表用自適應方法濾除正弦噪音后的聲音;5代表音調(diào)降低;6代表近音調(diào)升高;7代表濾除脈沖噪音</p><p> ?。?)選擇Debug/Animate,激活程序。Animate=Run-Halt-Run。</p><p>  (5)在程序運行過程中,輸入語音信號分別進行語音輸出觀察。</p><p><b>  2、結(jié)果分析:</b></p&

75、gt;<p> ?。?)理論上老師給的濾波輸入輸出信號:</p><p><b>  我們的:</b></p><p><b>  女變男:</b></p><p><b>  明顯看出有失真。</b></p><p>  五、設(shè)計(安裝)與調(diào)試的體會:</

76、p><p><b>  感想: </b></p><p>  這次的dsp實驗我們可以用辛酸來形容,500多人排不到20塊板子,必須要起個大早才可以用到板子,所以我們的用板時間真的不是太多.當然有我們前幾天的大意這方面的因素,后來當我們把理論知識研究到一定深度的準備實踐的時候,實驗室已經(jīng)門可羅雀了,唉~~~~ 我們的辛酸的借板子的歷程就開始了.雖然資源不夠,但這同樣給

77、與了我們提高,鍛煉了我們非常嫻熟的調(diào)試技術(shù),可以用神速來形容我們倆生成工程的速度!所以,什么樣的情況都是一種經(jīng)歷,這種艱苦的經(jīng)歷對于我們更是一種鍛煉和提高,對于我們這種從小沒怎么吃苦的孩子們也是一次額外的經(jīng)歷,也許到了我們老了,還會想起交大小學期排板子的經(jīng)歷.那時我們倆要是一起聊天,一定會相視一笑的~</p><p>  因為本課題的基本語音濾波部分楊老師在課上給予了我們講解,因此我們就在原本的基礎(chǔ)上進行改善和增

78、加拓展。因為課題要求是DMA進行語音濾波,因此我們一開始從DMA通道的初始化使能著手,然后了解到整個程序模板中真正對DMA采集到的音頻信號進行濾波的是中斷服務程序,這與我們學得單片機有驚人的類似. 所以這方面的初始化,我們還是掌握的不錯的,但是dma寄存器實在是太多了,我們只能照著書一點一點的翻,一點一點的寫,當然書上的初始化程序還是給的很細,我們也借鑒了很多,但我們想,這些都是死的.我們沒有必要在這上面浪費很多時間,還是以理解為主吧~

79、~</p><p>  之后就是研究中斷中具體的濾波程序了,我們是從噪聲的種類角度下手,一點一點的進行的,考慮了很多噪聲,這在報告的前面部分中也都提到了,然后我們就研究具體的解決辦法,一步一步地下手.再查找具體的濾波函數(shù)的時候,我們也發(fā)現(xiàn)我們的數(shù)學水平真的還欠缺,或者說我們很強的耐心看很長的數(shù)學公式,這在日后的學習過程中還待加強阿~~</p><p>  接著,我們在原來的基礎(chǔ)上,想到了變

80、聲。我們最初想對實時濾波處理過后的256個語音樣本點間的距離進行適當?shù)睦L和壓短,這樣應該就會產(chǎn)生一定的變聲。因為女生普遍比男生發(fā)生的頻率高,這樣音調(diào)高,所以對語音樣本點間的距離進行壓縮后,就能將一段男聲近似變成“女聲”;同理,對語音樣本點間的距離進行拉長后,這樣頻率變低,就相應地實現(xiàn)女聲變“男聲”。最后經(jīng)過反復實驗,我們做出了近似變聲功能。</p><p>  然后,我們用自適應濾波器濾除回波。比對了幾種自適應

81、濾波器后,我們最終決定采用dlms濾波器進行濾波,最后我們用了將近一天的時間dlms的參數(shù)使用和定義搞清楚。一開始我們遇到了不小的麻煩,不管怎么樣都不出聲,最后我們想到參考資料上介紹的是用cpu采集方式,數(shù)據(jù)一個一個的采集,而我們用的是DMA傳輸,是一串一串的采集,所以我們猜想是不是自適應濾波器的步長參數(shù)設(shè)置得過低,使得其自適應的過程中容量不夠,因此我們嘗試著將步長由原來的100該為25600,最后一試還真的實現(xiàn)了回波消除。</p

82、><p>  用dsp板的一個語音輸入端模擬一方的電話用戶,而再用軟件產(chǎn)生一個接近2kHz的正弦信號模擬另一端用戶傳來的語音,將這兩端傳來的信號疊加在一起后就類似于我們?nèi)粘Mㄔ捴心苈牭阶约夯芈暤默F(xiàn)象,再采用dlms自適應濾波,濾除一方信號后就能實現(xiàn)回聲消除!</p><p>  最后我們自己模仿了脈沖噪音的形式,自己錄制了一段聲音,然后想在MODE7中應用閾值濾波法濾波,但是因為時間有限,主要

83、是因為板子太少,在我們答辯以前,我倆還沒有利用板子嘗試過,但是我們的原理很清晰,并準備在答辯時現(xiàn)場嘗試。</p><p>  綜上,就是我們對這次實驗的感想,最后我們表達一下對小學期的情感.雖然說這小學期比上課還要累,但我們從理論逐步向?qū)嵺`過渡了,把兩門信號處理的大課的知識結(jié)合到實踐中去做了.我們不再是只會算題的學生了,更像是兩個工程師,雖然研究的東西不太高端,但對我們應經(jīng)是受益匪淺了,用一句玩笑來形容就是,這些

84、實踐為我們回去和朋友吹噓自己在大學學到了什么提供了很強的說服力.最后的最后,感謝楊老師為我們上課打下的最原始的基礎(chǔ),感謝那些借我們板子的可愛的同學們,更要感謝學院開設(shè)這么有意義的課.</p><p><b>  六、源程序代碼</b></p><p>  1、FIRlab.C</p><p>  /***********************

85、******************************************************/</p><p>  /* FIRlab.C AIC,McBSP,DMA initialization for FIR lab Filter */ </p><p>  /*

86、 */</p><p>  /* Goal: This code performs the following functions: */</p><p>  /*- toggle the three LEDs on the DSK */</

87、p><p>  /*- setup AIC (CODEC) parameters */</p><p>  /* - initialize DMA Channel (CH2-input) */</p><p>  /*- turn on interrupts */</p

88、><p>  /*- run forever (waiting for DMA interrupts to transfer data) */</p><p>  /* */</p><p>  /* Author: Scott Bland Date: 03/20/2000 */</p>

89、;<p>  /*****************************************************************************/</p><p>  /*****************************************************************************/</p><p>  /*

90、 Include Files */</p><p>  /*****************************************************************************/</p><p>  #include <type.

91、h></p><p>  #include <board.h></p><p>  #include <codec.h></p><p>  #include <string.h></p><p>  #include <dma54xx.h></p><p>  #

92、include <regs54xx.h></p><p>  #include <intr.h></p><p>  #include "timer.h"</p><p>  #include <dsplib.h></p><p>  #include <math.h><

93、;/p><p>  /*****************************************************************************/</p><p>  /* Function Prototypes */</p><p&g

94、t;  /*****************************************************************************/</p><p>  void delay(s16 period);</p><p>  extern void DMAC2ISR();</p><p>  /*********************

95、********************************************************/</p><p>  /* Global Variables */</p><p>  /*************************************

96、****************************************/</p><p>  HANDLE hHandset;</p><p>  unsigned int dmsefc, dmmcr, dmctr, src_addr, dst_addr;</p><p>  unsigned int dmpre, dmsrcp, dmdstp, dmid

97、x0, dmidx1, dmfri0, dmfri1, dmgsa, dmgda, dmgcr, dmgfr;</p><p>  /* Create specific data section for buffer (symbol, section_name) */</p><p>  #pragma DATA_SECTION(inp_buffer,"audio_buffer&

98、quot;);</p><p>  int inp_buffer[0x200];</p><p>  /* Create specific data section for buffer (symbol, section_name) */</p><p>  #pragma DATA_SECTION(out_buffer,"outt_buffer"

99、;);</p><p>  int out_buffer[0x200];</p><p>  /* Create specific data section for coeffiecients */</p><p>  #pragma DATA_SECTION(coeffs,"coefficients");</p><p>

100、;  /* Low Pass Filter fs=16000 fc=4000Hz*/ </p><p>  int coeffs[16]={ -79, -136, 312, 654, -1244, -2280, 4501, 14655, 14655,</p><p>  4501, -2280, -1244, 654, 312, -136

101、, -79};</p><p>  /* High Pass Filter */ </p><p>  // int coeffs[16]={-120,5245,-3421,2451,-11216,40,-24657,29610,29610,-24657,40,-11216,2451,-3421,5245,-120}; </p><p>  /* Band P

102、ass Filter */ </p><p>  /* int coeffs[16]={921,-2494,137,-3654,-2485,-2063,-9015,16165,16165,-9015,-2063,-2485,-3654,137,-2494,921}; */</p><p>  /* Band Stop Filter */</p><p>  /*

103、int coeffs[16]={491,165,-2159,772,-6697,10044,648,12297,12297,648,10044,-6697,772,-2159,165,491}; */ </p><p>  /* All Pass Filter */</p><p>  /* int coeffs[16] ={32767,0,0,0,0,0,0,0,0,0,0,0,0,0

104、,0,0}; */</p><p>  int highpass[16]={-848, -1129, -1496, -2000, -2754, -4053, -6980, -21279, 21279,</p><p>  6980, 4053, 2754, 2000, 1496, 1129, 848}; </p><p> 

105、 /* Create specific data section for delay buffer */</p><p>  #pragma DATA_SECTION(delaybuff,"delayb");</p><p>  int delaybuff[16]={0}; </p><p>  int delaybuff1[16]={0};&

106、lt;/p><p>  /* declare and initialize two variables for DMAC ISRs */</p><p>  int frame=0; </p><p>  int flag=0;</p><p>  int temp; </p><p><b>  int a

107、,b;</b></p><p>  int bf1[0x3000]={0};</p><p>  /* delayptr holds the address of the start of the delay buffer */</p><p>  int *delayptr1 = &(delaybuff[0]); </p><

108、;p>  int *delayptr2 = &(delaybuff1[0]); </p><p>  interrupt void DMAC2ISR();</p><p>  /*****************************************************************************/</p><p> 

109、 /* MAIN */</p><p>  /*****************************************************************************/</p><p>  void main()<

110、/p><p><b>  { </b></p><p>  s16 cnt=2;</p><p><b>  a=8;</b></p><p><b>  b=6;</b></p><p>  /* These are the items that BI

111、OS will set when we use it */</p><p>  BSCR = 0x8806;</p><p><b>  XPC = 0;</b></p><p>  PMST = 0xA0;</p><p>  brd_set_cpu_freq(100);</p><p>  T

112、IMER_HALT(0); </p><p>  brd_set_wait_states(7, 7, 9);</p><p>  TIMER_RESET(0); </p><p>  IMR=0;//禁止所有中斷</p><p>  /* --------------------------------------------------

113、--- */</p><p>  if(brd_init_bios()) </p><p><b>  return;</b></p><p>  while(cnt--)</p><p><b>  {</b></p><p>  brd_led_toggle(B

114、RD_LED0);//切換LED指示燈的顯示狀態(tài)</p><p>  delay(1000);</p><p>  brd_led_toggle(BRD_LED1);//切換LED指示燈的顯示狀態(tài)</p><p>  delay(1000);</p><p>  brd_led_toggle(BRD_LED2);//切換LED指示

溫馨提示

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

評論

0/150

提交評論