程式设计入门篇音讯读写

程式设计入门篇音讯读写

ID:39827306

大小:227.00 KB

页数:26页

时间:2019-07-12

程式设计入门篇音讯读写_第1页
程式设计入门篇音讯读写_第2页
程式设计入门篇音讯读写_第3页
程式设计入门篇音讯读写_第4页
程式设计入门篇音讯读写_第5页
资源描述:

《程式设计入门篇音讯读写》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、音訊讀寫、錄製與播放張智星(RogerJang)jang@mirlab.orghttp://mirlab.org/jang清大資工系多媒體檢索實驗室20-1音訊的基本介紹聲音訊號(AudioSignal)簡稱音訊,泛指由人耳聽到的各種聲音的訊號。音訊有些基本的特質,可說明如下:音量(Volume):聲音的大小稱為音量,又稱為力度、強度(Intensity)或是能量(Energy)。音量越大,代表音訊波形的震幅越大。音高(Pitch):聲音的基本頻率(FundamentalFrequency)越高,代表音

2、高越高(例如女高音的歌聲);反之,聲音的基本頻率越低,代表音高越低(例如男低音的歌聲)。(有關基本頻率的說明,將在本章其後各小節說明。)音色(Timber):音訊波形在每個週期內的變化,就形成了此音訊的音色。不同的音色即代表不同的音訊內容,例如不同的字有不同的發音,或是不同的歌手有不同的特色,這些都是由於音色不同而產生。20-2WAV檔案的讀取範例之一例如,若要讀取光碟中的檔案welcome.wav,畫出音訊的波形並播放出此音訊,可使用下列程式:範例20-1:readWave01.m[y,fs]=wav

3、read('welcome.wav');sound(y,fs);%播放此音訊time=(1:length(y))/fs;%時間軸的向量plot(time,y);%畫出時間軸上的波形20-2WAV檔案的讀取範例之一執行結果:歡迎光臨波形圖20-2WAV檔案的讀取範例之二若要知道welcome.wav的取樣點是由多少個位元來表示,可使用[y,fs,nbits]=wavread(‘welcome.wav’)。若要知道音訊長度,則可使用length(y)/fs。以下範例可以印出音訊檔welcome.wav的各種

4、相關資訊:範例20-2:readWave02.mfileName='welcome.wav';[y,fs,nbits]=wavread(fileName);fprintf('音訊檔案"%s"的資訊:',fileName);fprintf('音訊長度=%g秒',length(y)/fs);fprintf('取樣頻率=%g取樣點/秒',fs);fprintf('解析度=%g位元/取樣點',nbits);20-2WAV檔案的讀取範例之二範例20-2執行結果:音訊檔案"welcome.wav"的

5、資訊:音訊長度=1.45134秒取樣頻率=11025取樣點/秒解析度=8位元/取樣點20-2WAV檔案的讀取範例之三wav檔案的8位元是以unsignedinteger的方式來儲存,因此所能表示的數值是介於0和255之間,MATLAB再將此值設定至變數y時,會自動將其數值調整至介於–1和1之間,因此若要將MATLAB讀出之數值轉回原先8位元所表示之數值,只要將變數y乘以128,再加上128,就可以得到原先的整數值,例如:範例20-3:readWave03.mdifference=0fileName='w

6、elcome.wav';[y,fs,nbits]=wavread(fileName);y0=y*(2^nbits/2)+(2^nbits/2);%y0是原先儲存在音訊檔案中的值difference=sum(abs(y0-round(y0)))20-2WAV檔案的讀取範例之四wavread也可以讀取雙聲道或立體聲(Stereo)的音訊檔案,此時傳回的變數為具有兩直行的陣列,每一直行代表一個聲道的音訊,例如:範例20-4:readWave04.mfileName='flanger.wav';[y,fs]=w

7、avread(fileName);%讀取音訊檔sound(y,fs);%播放音訊left=y(:,1);%左聲道音訊right=y(:,2);%右聲道音訊subplot(2,1,1),plot((1:length(left))/fs,left);subplot(2,1,2),plot((1:length(right))/fs,right);20-2WAV檔案的讀取範例之四此範例會讀取雙聲道的音訊檔flanger.wav,播放此雙聲道的音訊,並畫出兩個聲道的音訊波形如下:20-2WAV檔案的讀取範例之五如

8、果音訊檔案很大,無法一次讀入記憶體,我們也可以使用wavread來讀出音訊檔的其中一部份,例如:範例20-5:readWave05.m[y,fs]=wavread('welcome.wav',[40015000]);%讀取第4001至5000點figure;plot(y)20-2WAV檔案的讀取範例之五畫出之圖形如下:20-2WAV檔案的讀取範例之六若要取得wav檔案的更多資訊,可由wavread的第四個輸出變數得到,例如:範例20-6:r

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。