基于matlab的數(shù)字音效處理器_第1頁(yè)
基于matlab的數(shù)字音效處理器_第2頁(yè)
基于matlab的數(shù)字音效處理器_第3頁(yè)
基于matlab的數(shù)字音效處理器_第4頁(yè)
基于matlab的數(shù)字音效處理器_第5頁(yè)
已閱讀5頁(yè),還剩34頁(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)介

1、 數(shù)字信號(hào)處理課程項(xiàng)目 終期報(bào)告題 目: 數(shù)字音效處理器 組 號(hào): 78 組 長(zhǎng): 成 員: 成 員: 成 員: 成 員: 聯(lián)系方式: 二零一三年十月十六日目 錄第一章 緒 論 11.1 項(xiàng)目背景及研究意義 11.2 數(shù)字信號(hào)處理概述1第二章 總體方案設(shè)計(jì) 32.1 項(xiàng)目需求分析 32.2 開發(fā)平臺(tái)及工具選擇32.3 項(xiàng)目功能設(shè)計(jì)3第三章 人機(jī)交互界面設(shè)計(jì) 4第四章 數(shù)字語(yǔ)音信號(hào)簡(jiǎn)單處理效果設(shè)計(jì) 54.1 低音增強(qiáng) 54.2 回聲特效 64.3 添加背景音樂 84.4 回旋效果 94.5 快/慢放特效 11第五章 自適應(yīng)語(yǔ)音分割、倒序 135.1 目標(biāo)實(shí)現(xiàn) 135.2 原理簡(jiǎn)述 135.3 實(shí)

2、現(xiàn)步驟 135.4 應(yīng)用實(shí)踐165.5 核心代碼分析 165.5 算法優(yōu)化(快速自適應(yīng)倒序) 18第六章 項(xiàng)目實(shí)施過(guò)程 19第七章 總結(jié)與展望 207.1 項(xiàng)目總結(jié) 207.2 項(xiàng)目展望 20附錄 21參考文獻(xiàn) 37第1章 緒論1.1 項(xiàng)目背景及研究意義 隨著科技的發(fā)展,數(shù)字信號(hào)處理器DSP(Digital Signal Processor)被廣泛的應(yīng)用在各種電子產(chǎn)品中,從便攜的個(gè)人數(shù)字助手PDA(Personal Digital Assistant)到家庭影院,電子產(chǎn)品對(duì)人們的生活產(chǎn)生著巨大的影響。人們不僅對(duì)圖像的質(zhì)量有很高的要求,近年來(lái)對(duì)聲音質(zhì)量的需求也與日俱增。這種需求已經(jīng)不單局限在聆聽

3、,而上升為一種聽覺享受。在實(shí)際生活中,除了符合建筑聲學(xué)標(biāo)準(zhǔn)的錄音室、音樂廳等外,一般的室內(nèi)都很難達(dá)到比較完美的音質(zhì)及效果,通常需要使用音效處理器來(lái)進(jìn)行處理、美化,這使得音效器的發(fā)展,得到了更為廣泛的關(guān)注。1.2 項(xiàng)目背景及研究意義數(shù)字信號(hào)處理(DigitalSignalProcessing,DSP)是利用專門或通用的數(shù)字信號(hào)芯片,以數(shù)字計(jì)算的方法對(duì)信號(hào)進(jìn)行處理,具有處理速度快、靈活、精確、抗干擾能力強(qiáng)、體積小等優(yōu)點(diǎn)。DSP有硬件、算法和理論等三個(gè)基礎(chǔ)支撐著它的發(fā)展和應(yīng)用。硬件是指用VLSI(超大規(guī)模集成電路)實(shí)現(xiàn)的通用和專用芯片,目前許多芯片的運(yùn)算速度已超過(guò)每秒幾千萬(wàn)次,最高達(dá)到每秒16億次,

4、價(jià)格也大幅度降低。在通信、電視、雷達(dá)和各種消費(fèi)電子產(chǎn)品方面應(yīng)用的軟件和算法非常豐富,例如,信源編碼(壓縮)和解碼、信道編碼和解碼,信號(hào)的調(diào)制與解調(diào)、噪聲對(duì)消、信號(hào)加密與解密,電機(jī)的自動(dòng)控制和各類信號(hào)的分析等。知成體系的理論包括離散線性系統(tǒng)理論、離散和快速變換理論、數(shù)字濾波理論、信號(hào)檢測(cè)理論、量化效應(yīng)和誤差理論、非線性譜估計(jì)理論以及小波變換理論等。數(shù)字信號(hào)處理的應(yīng)用領(lǐng)域十分廣泛。就所獲取信號(hào)的來(lái)源而言,有通信信號(hào)的處理,雷達(dá)信號(hào)的處理,遙感信號(hào)的處理,控制信號(hào)的處理,生物醫(yī)學(xué)信號(hào)的處理,地球物理信號(hào)的處理,振動(dòng)信號(hào)的處理等。若以所處理信號(hào)的特點(diǎn)來(lái)講,又可分為語(yǔ)音信號(hào)處理,圖像信號(hào)處理,一維信號(hào)處

5、理和多維信號(hào)處理等。無(wú)論哪方面的應(yīng)用,首先須經(jīng)過(guò)信息的獲取或數(shù)據(jù)的采集過(guò)程得到所需的原始信號(hào),如果原始信號(hào)是連續(xù)信號(hào),還須經(jīng)過(guò)抽樣過(guò)程使之成為離散信號(hào),再經(jīng)過(guò)模數(shù)轉(zhuǎn)換得到能為數(shù)字計(jì)算機(jī)或處理器所接受的二進(jìn)制數(shù)字信號(hào)。如果所收集到的數(shù)據(jù)已是離散數(shù)據(jù),則只須經(jīng)過(guò)模數(shù)轉(zhuǎn)換即可得到二進(jìn)制數(shù)碼。數(shù)字信號(hào)處理器的功能是將從原始信號(hào)抽樣轉(zhuǎn)換得來(lái)的數(shù)字信號(hào)按照一定的要求,例如濾波的要求,加以適當(dāng)?shù)奶幚恚吹玫剿璧臄?shù)字輸出信號(hào)。經(jīng)過(guò)數(shù)模轉(zhuǎn)換先將數(shù)字輸出信號(hào)轉(zhuǎn)換為離散信號(hào),再經(jīng)過(guò)保持電路將離散信號(hào)連接起來(lái)成為模擬輸出信號(hào),這樣的處理系統(tǒng)適用于各種數(shù)字信號(hào)處理的應(yīng)用,只不過(guò)專用處理器或所用軟件有所不同而已。語(yǔ)音信

6、號(hào)處理是信號(hào)處理中的重要分支之一。它包括的主要方面有:語(yǔ)音的識(shí)別,語(yǔ)言的理解,語(yǔ)音的合成,語(yǔ)音的增強(qiáng),語(yǔ)音的數(shù)據(jù)壓縮等。各種應(yīng)用均有其特殊問(wèn)題。語(yǔ)音識(shí)別是將待識(shí)別的語(yǔ)音信號(hào)的特征參數(shù)即時(shí)地提取出來(lái),與已知的語(yǔ)音樣本進(jìn)行匹配,從而判定出待識(shí)別語(yǔ)音信號(hào)的音素屬性。關(guān)于語(yǔ)音識(shí)別方法,有統(tǒng)計(jì)模式語(yǔ)音識(shí)別,結(jié)構(gòu)和語(yǔ)句模式語(yǔ)音識(shí)別,利用這些方法可以得到共振峰頻率、音調(diào)、嗓音、噪聲等重要參數(shù),語(yǔ)音理解是人和計(jì)算機(jī)用自然語(yǔ)言對(duì)話的理論和技術(shù)基礎(chǔ)。語(yǔ)音合成的主要目的是使計(jì)算機(jī)能夠講話。為此,首先需要研究清楚在發(fā)音時(shí)語(yǔ)音特征參數(shù)隨時(shí)間的變化規(guī)律,然后利用適當(dāng)?shù)姆椒M發(fā)音的過(guò)程,合成為語(yǔ)言。其他有關(guān)語(yǔ)言處理問(wèn)題也

7、各有其特點(diǎn)。語(yǔ)音信號(hào)處理是發(fā)展智能計(jì)算機(jī)和智能機(jī)器人的基礎(chǔ),是制造聲碼器的依據(jù)。語(yǔ)音信號(hào)處理是迅速發(fā)展中的一項(xiàng)信號(hào)處理技術(shù)。第2章 總體方案設(shè)計(jì)2.1 項(xiàng)目需求分析該項(xiàng)目題目是數(shù)字音效處理器。要實(shí)現(xiàn)音效處理,大致可以分成三部分,即語(yǔ)音采集、語(yǔ)音處理、語(yǔ)音輸出。首先要有待處理的語(yǔ)音信號(hào)。這個(gè)語(yǔ)音信號(hào)我們可以現(xiàn)場(chǎng)錄制,也可以打開已經(jīng)錄制好語(yǔ)音文件;然后是語(yǔ)音處理,這部分由matlab程序?qū)崿F(xiàn);最后是語(yǔ)音輸出,由計(jì)算機(jī)輸出。2.2 開發(fā)平臺(tái)Matlab 20082.3 項(xiàng)目功能設(shè)計(jì)第3章 人機(jī)交互界面設(shè)計(jì)如上圖,是我們最終的人機(jī)交互界面。主要分成兩個(gè)部分,語(yǔ)音采集部分以及特效播放部分。左邊是語(yǔ)音輸入

8、部分,包含兩種方式:現(xiàn)場(chǎng)錄音和打開文件。左下方還有一個(gè)播放錄音或文件的按鈕,方便用戶在語(yǔ)音輸入結(jié)束后,試聽輸入的信號(hào)。右邊是播放特效部分,包括低音增強(qiáng)等六種特效,下方還有個(gè)另存為按鈕以及效果選擇下拉菜單,方便用戶保存處理后的信號(hào)。人機(jī)交互界面總體構(gòu)圖簡(jiǎn)潔,色彩柔和,布局合理,使用方便,在極大程度上方便了用戶的使用,減少了學(xué)習(xí)使用的時(shí)間與成本。第4章 數(shù)字語(yǔ)音信號(hào)幾種簡(jiǎn)單處理效果設(shè)計(jì)4.1 低音增強(qiáng)(1) 原理簡(jiǎn)述低音增強(qiáng)特效,顧名思義就是講聲音信號(hào)的低音部分加強(qiáng),是處理后的聲音信號(hào)較原聲音信號(hào)低頻部分幅值增大。(2) 實(shí)現(xiàn)步驟首先使用低通濾波器將聲音信號(hào)的高頻部分濾去,得到只包含低頻部分的聲音

9、信號(hào),將該信號(hào)乘以一個(gè)系數(shù)后增大,然后與原聲音信號(hào)疊加,這樣得到的新的聲音信號(hào)頻譜分布不發(fā)生改變,但是低頻部分的幅值明顯增大。實(shí)現(xiàn)流程圖如下:(3) 效果實(shí)現(xiàn)語(yǔ)音播放后明顯感覺到聲音變得渾厚有力,有力量感。下圖是與聲音信號(hào)的頻域幅度圖與低音增強(qiáng)后的頻域幅度譜,從圖中可以明顯看到,低音增強(qiáng)后的信號(hào)在低頻部分的幅度得到明顯加強(qiáng)。(4) 應(yīng)用實(shí)踐 低音增強(qiáng)效果可以用在家庭音響上,可以提升聲音的力量感,震撼感。我們現(xiàn)在家庭娛樂中常使用的“低音炮”用的就是低音增強(qiáng)的原理。(5) 核心代碼分析x,fs,nbits=wavread('1112'); %讀聲音文件 fp1=1000;fs1=2

10、200; %設(shè)定低通濾波器通帶截止頻率和阻帶截止頻率wp1=2*fp1/Fs; ws1=2*fs1/Fs;rp=1;as=100;N1,wp1=ellipord(wp1,ws1,rp,as); %計(jì)算橢圓低通模擬濾波器的階數(shù)和通帶邊界頻率B,A=ellip(N1,rp,as,wp1); %計(jì)算低通濾波器模擬濾波器系統(tǒng)函數(shù)系數(shù)x1=filter(B,A,x); %低通濾波,得到含有低頻部分的信號(hào)y=x+x1*2 %語(yǔ)音信號(hào)疊加,得到低音增強(qiáng)后的信號(hào) 4.2 回聲特效(1) 原理簡(jiǎn)述 回聲是我們?cè)谌粘I钪谐?huì)遇到一種聲音信號(hào),回聲就是原聲經(jīng)過(guò)物體反射回來(lái)后與原聲疊加后形成的效應(yīng)。當(dāng)回聲的距離小于

11、一定距離時(shí),回聲不能被人耳感知,變現(xiàn)為原聲的加強(qiáng);當(dāng)回聲距離大于一定距離時(shí),回聲能被人耳感知,能夠感覺到在原聲停止后一段時(shí)間后,再次聽到此聲音,并且響度相對(duì)減小。簡(jiǎn)單來(lái)說(shuō),就是延遲、衰減、疊加。(2) 實(shí)現(xiàn)步驟回聲是原聲延遲衰減后與原聲疊加。聲音信號(hào)在matlab中以矩陣的形式存儲(chǔ)。一般是N行2列的矩陣(這里指雙聲道聲音),N是聲音的點(diǎn)數(shù)長(zhǎng)度。為了做到延遲效應(yīng),我們?cè)谠仃噚的前面加上(接上)一段m行2列的為零矩陣,得到矩陣x1,這樣如果將矩陣x,x1從同一起點(diǎn)觀看,那么矩陣x1相當(dāng)于時(shí)間x延時(shí)了一段時(shí)間。延時(shí)的時(shí)間與添加的零矩陣的長(zhǎng)度以及采樣頻率有關(guān)。那么只要將x與x1相疊加,就可以得到回聲

12、效果。這里要注意,由于矩陣相加時(shí)要滿足矩陣形式相同,所以還要在原來(lái)的x后面也接上一段m行2列的為零矩陣,同時(shí)為了回聲效果的逼真性,還要給x1倍乘一個(gè)小于1的系數(shù)。實(shí)現(xiàn)流程圖如下:矩陣運(yùn)算流程如下:(3) 效果實(shí)現(xiàn)輸出的聲音人耳聽起來(lái)有明顯的回聲效果。下圖是原聲、延遲的聲音以及疊加后聲音信號(hào)的時(shí)域圖。(4) 應(yīng)用實(shí)踐 利用數(shù)字信號(hào)處理得到的回聲可以在需要的情況下模擬回聲效果,以適應(yīng)需求。(5) 核心代碼分析 x,fs,nbits=wavread('1112',1156384); %讀取文件x1=zeros(4000,2);x; %前“添”零,聲音延時(shí)x2=x;zeros(4000

13、,2); %后“添”零,使原聲音長(zhǎng)度與延時(shí)后相等y1=x1*0.8+x2; %回聲衰減并與原聲疊加4.3 添加背景音樂(1) 原理簡(jiǎn)述 原理較為簡(jiǎn)單,即兩個(gè)矩陣的相加。(2) 實(shí)現(xiàn)步驟 首先將兩個(gè)需要疊加的矩陣處理使得形式一致(行列數(shù)相等),然后疊加即可。(3)效果實(shí)現(xiàn) 可是實(shí)現(xiàn)為一段人說(shuō)話聲,唱歌聲,朗誦聲添加背景音樂,其本質(zhì)是語(yǔ)音序列的疊加,所以可實(shí)現(xiàn)兩段語(yǔ)音序列的疊加。(4)應(yīng)用實(shí)踐 為一段人說(shuō)話聲,唱歌聲,朗誦聲添加背景音樂等,其本質(zhì)是語(yǔ)音序列的疊加,所以可實(shí)現(xiàn)兩段語(yǔ)音序列的疊加。(5)核心代碼分析較為簡(jiǎn)單,此處省略。4.4 回旋特效(1)原理簡(jiǎn)述 回旋特效是我們根據(jù)效果來(lái)命名的,是將

14、聲音的左右聲道分時(shí)播放,也就是說(shuō),在第一段時(shí)間內(nèi),左聲道有聲音,下一段時(shí)間內(nèi),右聲道有聲音,依次交替。(2)實(shí)現(xiàn)步驟對(duì)聲音信號(hào)矩陣按行進(jìn)行遍歷,設(shè)定點(diǎn)數(shù)長(zhǎng)度,依次交替分別使左、右聲道的某段信號(hào)的值在該取樣點(diǎn)段內(nèi)置零。或者利用矩陣運(yùn)算的方法實(shí)現(xiàn)。實(shí)現(xiàn)步驟如下:(3) 效果實(shí)現(xiàn)播放處理后的語(yǔ)音,耳機(jī)(非立體聲耳機(jī))的左右耳機(jī)輪流有聲音,即當(dāng)左邊耳機(jī)有聲音時(shí),右邊耳機(jī)沒有,反之亦然。這樣就會(huì)產(chǎn)生聲源在不斷回轉(zhuǎn),聲音有種回旋的效果。下面是原聲以及處理后的左右聲道的時(shí)域圖:矩陣運(yùn)算流程如下:(4) 應(yīng)用實(shí)踐 在某些音樂作品中可以產(chǎn)生聲源回旋變換的特效,增強(qiáng)音樂的豐富性。(5)核心代碼分析y=zeros(

15、400000,2);%定義一個(gè)矩陣x,fs,nbits=wavread('1112',400000); %讀聲音文件for i=1:400000 y(i,:)=x(i,:); %新建信號(hào)序列,用于運(yùn)算end x1=reshape(y,40000,20); %將信號(hào)分成了10段20列for i=1:2:10 x1(:,i)=0; %110列,將單數(shù)列置零,即實(shí)現(xiàn)左聲道的回旋endfor i=12:2:20x1(:,i)=0; %1120列,將雙數(shù)列置零,即實(shí)現(xiàn)右聲道的回旋endx5=reshape(x1,400000,2); %重排序列,變成N行2列的序列sound(x5*2,f

16、s); %單聲道播放后,聲音幅度有減小,這里做補(bǔ)償4.5 快/慢放特效(1)原理簡(jiǎn)述 快慢放的原理就是在單位長(zhǎng)的時(shí)間內(nèi)播放比原聲包含更多或更少的信息的語(yǔ)音序列。以2倍速率快放為例,就是將原來(lái)2倍單位時(shí)間內(nèi)的語(yǔ)音序列在單位時(shí)間內(nèi)播放完,這里的原理用的是在播放時(shí)增大采樣間隔,那么在單位時(shí)間內(nèi)采集到的點(diǎn)實(shí)際包含了從2長(zhǎng)度序列采集到的信號(hào)(實(shí)際上這里就是一個(gè)語(yǔ)音序列的有損壓縮),雖然這樣做有信息丟失,但只要滿足奈奎斯特采樣定律,語(yǔ)音信號(hào)就不會(huì)出現(xiàn)失真,所以在一定條件下是可行的。(2)實(shí)現(xiàn)步驟 在播放語(yǔ)音序列時(shí),更改采樣頻率即可。但是在作圖必須對(duì)語(yǔ)音信號(hào)一步步處理。(3) 效果實(shí)現(xiàn)以快放為例,快放時(shí),如

17、果快放倍數(shù)為2,那么原本10s長(zhǎng)的信號(hào),可以在5s內(nèi)播放完,并且語(yǔ)音的音調(diào)會(huì)變高,關(guān)于這一點(diǎn)將在后面解釋原因。下面是2倍快放時(shí)的語(yǔ)音的時(shí)域圖(2倍壓縮圖):從下面的圖中可以看出快放的信號(hào)實(shí)質(zhì)上就是原信號(hào)的壓縮。下面是語(yǔ)音信號(hào)壓縮的矩陣運(yùn)算過(guò)程:(4) 應(yīng)用實(shí)踐 快放的這種原理可以用來(lái)在保證采樣頻率的前提下壓縮語(yǔ)音信號(hào)。(5) 核心代碼分析第一種方式(展示原理,繪制圖像時(shí)使用)x,fs,nbits=wavread('1112',400000); %讀取聲音文件x1=x' %轉(zhuǎn)置x2=reshape(x1,4,200000); %重排成2行,400000列x3=x2'

18、; %轉(zhuǎn)置x4=x3(:,1,2); %取新序列的1、2行第二種方式(實(shí)際程序中使用)Sound(x,2*fs); %改變采樣頻率,播放速度加快一倍第5章 自適應(yīng)語(yǔ)音分割、倒序5.1 目標(biāo)實(shí)現(xiàn)這里以一段包含“12345”5個(gè)單音節(jié)詞的人說(shuō)話聲為例說(shuō)明。我們要做到的倒序,就是將這段語(yǔ)音序列分割之后,進(jìn)行重新排列,也就是倒序排列,然后倒序輸出,這里的倒序輸出指的是我們聽的將是“54321”這樣一段人的說(shuō)話聲。所謂的“自適應(yīng)”,就是指在語(yǔ)音分割時(shí)的自適應(yīng),例如在分割時(shí)不能在“1”語(yǔ)音段中間將企分開,這樣會(huì)破壞“1”的音,那么倒序之后我們聽到的就不是“1”了,而會(huì)變成奇怪的東西。5.2 原理簡(jiǎn)述原理流

19、程圖如下:5.3 實(shí)現(xiàn)步驟(1)首先我們讀入一段語(yǔ)音文件或者現(xiàn)場(chǎng)錄制一段聲音,如錄制一段包含“12345”的人說(shuō)話聲。時(shí)域圖如下:我們可以看到有5段比較突出的地方,這就是“12345”這5個(gè)數(shù)字的聲音的時(shí)域圖,其他的較低的較平穩(wěn)的部分是沒有說(shuō)話時(shí)的時(shí)間段,理論上應(yīng)該是為0的,但是由于人的呼吸聲、話筒噪音、環(huán)境中的其他聲音使得這些本該為0的區(qū)域不為0。(2)為了去除空白區(qū)域的噪音,考慮到噪音與語(yǔ)音相比幅值較小,因此可以采用閾值法去除空白處噪音,得到下面的效果。(3) 得到上面的濾除噪音制后的信號(hào)后,我們開始語(yǔ)音分割,為了實(shí)現(xiàn)語(yǔ)音分割,我們需要知道分割點(diǎn),我們稱之為關(guān)鍵點(diǎn)。從上圖來(lái)看,每一小段聲音

20、信號(hào)的首尾點(diǎn)都是關(guān)鍵點(diǎn)。下面我們利用這些點(diǎn)的獨(dú)有特征來(lái)找到它們。這些點(diǎn)有共同的特征,它們都是跳變點(diǎn)。但是,我們知道每一小段語(yǔ)音信號(hào)中都會(huì)有很多點(diǎn)的值是零,那么就可能出現(xiàn)會(huì)有很多點(diǎn)滿足關(guān)鍵點(diǎn)條件,因此,在尋找關(guān)鍵點(diǎn)之前我們要將沒一小段為零的點(diǎn)變成不為零。(4) 為了找到關(guān)鍵點(diǎn),我們要將每一小段信號(hào)中為零的點(diǎn)變?yōu)椴粸榱?,這里采用左右掃秒判別法:即對(duì)于序列中每一個(gè)點(diǎn),如果該點(diǎn)是零且又在某小段序列內(nèi),則將該點(diǎn)變?yōu)椴粸榱?。判斷某點(diǎn)是零且又在某小段序列內(nèi)的方法:遍歷所有的點(diǎn)(整段序列首尾部分點(diǎn)除外),當(dāng)遍歷到某為點(diǎn)時(shí),對(duì)該點(diǎn)左右各掃描m點(diǎn),若在左右m點(diǎn)中都有任一不為零的點(diǎn),則將該點(diǎn)值置為某正數(shù)a。這樣經(jīng)過(guò)

21、一次遍歷,就將所有小段內(nèi)部為零的點(diǎn)均置為不為零,這樣,滿足關(guān)鍵點(diǎn)的位置只有每小段的首尾點(diǎn)。那么根據(jù)跳變特性,就可以順利將這些關(guān)鍵點(diǎn)依次找出。(5) 找到關(guān)鍵點(diǎn)后,依據(jù)這些關(guān)鍵點(diǎn)進(jìn)行語(yǔ)音分割。分割如下:(6)分割完后,就可以進(jìn)行倒序重排了。到得到的效果如下:(7) 算法優(yōu)化(快速自適應(yīng)倒序)根據(jù)實(shí)際測(cè)試,上述程序算法處理一段10s、采樣頻率44100Hz的聲音倒序耗時(shí)約12.2s。從這個(gè)角度來(lái)看,上述算法是極不實(shí)用的,因此,下面給出一種改進(jìn)的快速自適應(yīng)倒序算法。該算法的核心是數(shù)據(jù)壓縮。度原來(lái)的序列每個(gè)十個(gè)點(diǎn)抽取一個(gè)點(diǎn)形成一個(gè)新的序列,然后進(jìn)行上述的關(guān)鍵點(diǎn)尋找步驟,由于數(shù)據(jù)壓縮了十倍,因此在每小段

22、語(yǔ)音序列為零點(diǎn)置為不為零的過(guò)程中所需要左右掃描的數(shù)目就降低了十倍。因此,從理論上來(lái)講,該快速算法比原來(lái)的算法的處理速度提高約10倍。實(shí)際測(cè)試中用該算法處理相同的語(yǔ)音段,耗時(shí)約0.9s.5.4 應(yīng)用實(shí)踐此項(xiàng)技術(shù)中的語(yǔ)音自適應(yīng)分割是關(guān)鍵步驟,完成了這一步之后,可以進(jìn)行語(yǔ)音提取,語(yǔ)音識(shí)別,語(yǔ)音重構(gòu)等等。5.5 代碼分析w,fs,nbits=wavread('123451'); %讀聲音文件 N=length(w); %N是文件的長(zhǎng)度,即點(diǎn)數(shù)即wavread中的第二個(gè)變量x=zeros(N,1); %定義單列矩陣x=w(:,1); %提取單聲道元素,用于后面的運(yùn)算y=zeros(N,1

23、); %定義單列矩陣y=w(:,1); %找到關(guān)鍵點(diǎn)后,利用關(guān)鍵點(diǎn)對(duì)原矩陣運(yùn)算L=N; %閾值消除噪音 for i=1:N-1 %遍歷 if abs(x(i)<0.075; %設(shè)定閾值為0.075 x(i)=0;endend%=定義標(biāo)志量,用于插值運(yùn)算 flag1=0; flag2=0; flag3=0;%=將各小段內(nèi)的為零的置為非零for i=8000:N-8000 for m=1:1000 if (x(i)=0)&(x(i-m)=0) flag1=1; end if (x(i)=0)&(x(i+m)=0) flag2=1; end flag3=flag1+flag2;

24、 if (flag3=2) x(i)=0.03; end flag1=0; flag2=0; flag3=0; endend%=尋找關(guān)鍵點(diǎn)c=1;num=zeros(100,1);%定義一個(gè)矩陣for i=1000:N-1000 if (x(i)=0)&(x(i+1)=0)|(x(i)=0)&(x(i+1)=0) num(c)=i; c=c+1; else endend%=轉(zhuǎn)換關(guān)鍵點(diǎn),精確定位dot=zeros(100,1); len=length(num);dot(1)=0; %dot是存儲(chǔ)精確定位點(diǎn)的數(shù)組dot(2)=num(1); b=3;for i=3:len if(n

25、um(i)-num(i-1)>3000) dot(b)=num(i); b=b+1; end end dot(b)=length(x); %=對(duì)語(yǔ)音序列逆序操作 new=; %存放逆序后的矩陣for i=1:b-1 singlelen=dot(b-i+1)-dot(b-i); temp=zeros(singlelen,1); %temp臨時(shí)矩陣,存放片段序列 for h=1: singlelen temp(h)=y(h+dot(b-i); end new=new;temp; %片段拼接 temp=;end%=對(duì)拼接做平滑處理 for i=2:b-1new(dot(i)=(new(dot(

26、i)-3)+new(dot(i)-2)+new(dot(i)-1)+new(dot(i)+1)+new(dot(i)+2)+new(dot(i)+3)*1/6;end第6章 項(xiàng)目實(shí)施過(guò)程時(shí) 間人 員事 件備 注第一周項(xiàng)目小組項(xiàng)目研討及調(diào)研第二周項(xiàng)目小組系統(tǒng)設(shè)計(jì)與實(shí)施第三周項(xiàng)目小組程序編寫與調(diào)試第四周項(xiàng)目小組、測(cè)試員程序測(cè)試與完善邀請(qǐng)測(cè)試員參與測(cè)試第五周項(xiàng)目小組項(xiàng)目報(bào)告撰寫第六周項(xiàng)目小組項(xiàng)目回顧、總結(jié)與提高第七周項(xiàng)目小組答辯準(zhǔn)備第7章 總結(jié)與展望7.1 項(xiàng)目總結(jié)此次項(xiàng)目的順利圓滿完成,離不開項(xiàng)目小組各位成員的團(tuán)結(jié)協(xié)作與刻苦攻關(guān),也離不開老師們的幫助與指導(dǎo)。在這七周的時(shí)間里,我們從一開始的查找資料

27、,到項(xiàng)目的設(shè)計(jì),再到實(shí)施、調(diào)試、改進(jìn),每一個(gè)階段,都包含了我們每個(gè)人的辛勞與汗水。在項(xiàng)目實(shí)施的過(guò)程中,我們每個(gè)人的能力都得到了極大的鍛煉,不學(xué)到了許多與數(shù)字信號(hào)處理相關(guān)的知識(shí),更是一種學(xué)習(xí)能力的提升,同時(shí)也是自學(xué)能力的培養(yǎng)。通過(guò)這次的項(xiàng)目的,我們數(shù)字信號(hào)處理有了更深刻的理解,對(duì)在矩陣運(yùn)算的層面上的數(shù)字信號(hào)處理有了一定的認(rèn)識(shí)與掌握。為將來(lái)更深入的學(xué)習(xí)數(shù)字信號(hào)處理打了的基礎(chǔ)。7.2 項(xiàng)目展望此次數(shù)字信號(hào)處理的對(duì)項(xiàng)目雖然已經(jīng)完成,但是我們所完成的項(xiàng)目畢竟是很小的成果,將來(lái)還有很多東西要學(xué)習(xí)。我們?cè)趯?lái)的學(xué)習(xí)與工作中要把我們完成的這些效果的原理運(yùn)用于實(shí)踐。例如我們的“自適應(yīng)語(yǔ)音分割、倒序”效果,在自適

28、應(yīng)語(yǔ)音分割技術(shù)的基礎(chǔ)上,我們可以做語(yǔ)音提取、語(yǔ)音識(shí)別、語(yǔ)音控制等。學(xué)習(xí)的過(guò)程永遠(yuǎn)不是一蹴而就的,我們要牢牢把握現(xiàn)在,放眼未來(lái),打好基礎(chǔ),才能在未來(lái)的道路上走的更遠(yuǎn)。附錄源程序:function varargout = MagicVoice(varargin)% MAGICVOICE M-file for MagicVoice.fig% MAGICVOICE, by itself, creates a new MAGICVOICE or raises the existing% singleton*.% H = MAGICVOICE returns the handle to a new MAG

29、ICVOICE or the handle to% the existing singleton*.% MAGICVOICE('CALLBACK',hObject,eventData,handles,.) calls the local% function named CALLBACK in MAGICVOICE.M with the given input arguments.% MAGICVOICE('Property','Value',.) creates a new MAGICVOICE or raises the% existing s

30、ingleton*. Starting from the left, property value pairs are% applied to the GUI before MagicVoice_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to MagicVoice_OpeningFcn via varargin.% *See GUI Options on GUIDE's To

31、ols menu. Choose "GUI allows only one% instance to run (singleton)".% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help MagicVoice % Last Modified by GUIDE v2.5 11-Jan-2013 06:56:54 % Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State

32、 = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', MagicVoice_OpeningFcn, . 'gui_OutputFcn', MagicVoice_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callbac

33、k = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT % - Executes just before MagicVoice is made visible.function MagicVoice_OpeningFcn(hObject, eventdata, handles, varargin)% T

34、his function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to MagicVoice (see VARARGIN) % Choose default command line output f

35、or MagicVoicehandles.output = hObject; % Update handles structureguidata(hObject, handles); % UIWAIT makes MagicVoice wait for user response (see UIRESUME)% uiwait(handles.figure1); % - Outputs from this function are returned to the command line.function varargout = MagicVoice_OutputFcn(hObject, eve

36、ntdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout

37、1 = handles.output; % - Executes on button press in startrecord.function startrecord_Callback(hObject, eventdata, handles)% hObject handle to startrecord (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(hObjec

38、t,'string','錄音中');pause(0.1);Fs=str2double(get(handles.frequency,'String');t=str2double(get(handles.recordtime,'String');ai=analoginput('winsound',0);%初始化錄音麥克chan =addchannel(ai,1 2);%1表示單聲道,待我改了這句之后,錄音就可以用回聲效果了set(ai,'SampleRate',Fs); duration=t; %錄音時(shí)

39、間set(ai,'SamplesPerTrigger',duration*Fs);start(ai); y=0;time=0;y,time=getdata(ai);%讀出相應(yīng)的數(shù)據(jù)handles.y=y;handles.Fs=Fs;guidata(hObject,handles);set(hObject,'string','完畢');set(handles.play,'Enable','on');set(handles.bfluyinwenjian,'Enable','on'); s

40、et(handles.lowStrong,'Enable','on'); set(handles.huisheng,'Enable','on'); %set(handles.yuchuli,'Enable','on');%set(handles.yuchuliqd,'Enable','on');%set(handles.fuliyebianhuan,'Enable','on');%set(handles.baocun,'Enab

41、le','on'); %set(handles.biansheng,'Enable','on');% - Executes on button press in dakaiqueding. % - Executes on button press in openfile.function openfile_Callback(hObject, eventdata, handles)% hObject handle to openfile (see GCBO)% eventdata reserved - to be defined in a

42、future version of MATLAB% handles structure with handles and user data (see GUIDATA)filename pathname=uigetfile('*.wav','ALL FILES(*.*)','選擇聲音文件');if isequal(filename pathname,0,0) return;endstr=pathname filename;%選擇的聲音文件路徑和文件名temp Fs=wavread(str); % temp表示聲音數(shù)據(jù) Fs表示頻率handles.

43、y=temp;handles.Fs=Fs;handles.xuanze=2;guidata(hObject,handles);%set(handles.yuchuli,'Enable','on');%set(handles.yuchuliqd,'Enable','on');%set(handles.fuliyebianhuan,'Enable','on');%set(handles.baocun,'Enable','on'); %set(handles.bianshe

44、ng,'Enable','on'); set(handles.play,'Enable','on'); set(handles.bfluyinwenjian,'Enable','on'); set(handles.lowStrong,'Enable','on'); set(handles.huisheng,'Enable','on'); function recordtime_Callback(hObject, eventdata, h

45、andles)% hObject handle to recordtime (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of recordtime as text% str2double(get(hObject,'String') retur

46、ns contents of recordtime as a double % - Executes during object creation, after setting all properties.function recordtime_CreateFcn(hObject, eventdata, handles)% hObject handle to recordtime (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not c

47、reated until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor') set(hObject,'BackgroundColor','white')

48、;end % - Executes on button press in play.function play_Callback(hObject, eventdata, handles)% hObject handle to play (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)if get(hObject,'Enable') set(handles.r

49、ecord,'Value',0); set(handles.recordtime,'Enable','off'); set(handles.startrecord,'Enable','off'); set(handles.openfile,'Enable','off'); set(handles.open,'Value',0); %set(handles.bofangpinlv,'Enable','on'); %set(handles.

50、bofangqueding,'Enable','on'); set(handles.frequency,'Enable','off'); playspeed=str2double(get(handles.speed,'String'); handles.Fs=playspeed * handles.Fs ; wavplay(handles.y,handles.Fs); elseend; function frequency_Callback(hObject, eventdata, handles)% hObject

51、 handle to frequency (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of frequency as text% str2double(get(hObject,'String') returns contents of fre

52、quency as a double % - Executes during object creation, after setting all properties.function frequency_CreateFcn(hObject, eventdata, handles)% hObject handle to frequency (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after al

53、l CreateFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor') set(hObject,'BackgroundColor','white');end % - Executes on button press in open.function open_Callback(hObject, eventdata, handles)% hObject handle to open (see GCBO)% eventdata reserved - to be defined in a future ve

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論