首页 语音识别与合成入门3(内有matlab源码)

语音识别与合成入门3(内有matlab源码)

举报
开通vip

语音识别与合成入门3(内有matlab源码)「音高」(Pitch)是另一個音訊裡面很重要的特徵,直覺地說,音高代表聲音頻率的高低,而此頻率指的是「基本頻率」(Fundamental Frequency),也就是「基本週期」(Fundamental Period)的倒數。 若直接觀察音訊的波形,只要聲音穩定,我們並不難直接看到基本週期的存在,以一個 3 秒的音叉聲音來說,我們可以取一個 256 點的音框,將此音框畫出來後,就可以很明顯地看到基本週期,請見下列範例: 範例 1輸入: close all waveFile='soundFork.wav'...

语音识别与合成入门3(内有matlab源码)
「音高」(Pitch)是另一個音訊裡面很重要的特徵,直覺地說,音高代表聲音頻率的高低,而此頻率指的是「基本頻率」(Fundamental Frequency),也就是「基本週期」(Fundamental Period)的倒數。 若直接觀察音訊的波形,只要聲音穩定,我們並不難直接看到基本週期的存在,以一個 3 秒的音叉聲音來說,我們可以取一個 256 點的音框,將此音框畫出來後,就可以很明顯地看到基本週期,請見下列範例: 範例 1輸入: close all waveFile='soundFork.wav'; [y, fs, nbits]=wavread(waveFile); index1=11000; frameSize=226; index2=index1+frameSize-1; segment=y(index1:index2); subplot(2,1,1); plot(y); grid on title(waveFile); set(gca, 'xlim', [0, length(y)]); limit=axis; line(index1*[1 1], limit(3:4), 'color', 'r'); line(index2*[1 1], limit(3:4), 'color', 'r'); subplot(2,1,2); plot(segment, '.-'); set(gca, 'xlim', [1, index2-index1+1]); point=[7, 189]; line(point, segment(point), 'marker', 'o', 'color', 'red'); periodCount=5; fp=((point(2)-point(1))/periodCount)/fs; ff=fs/((point(2)-point(1))/periodCount); pitch=69+12*log2(ff/440); fprintf('Fundamental period = %g second\n', fp); fprintf('Fundamental frequency = %g Hertz\n', ff); fprintf('Pitch = %g semitone\n', pitch); 輸出訊息: Fundamental period = 0.002275 second Fundamental frequency = 439.56 Hertz Pitch = 68.9827 semitone 輸出圖形: INCLUDEPICTURE "mhtml:file://C:\\Documents%20and%20Settings\\zhou\\Desktop\\语音\\1-5%20音高.mht!http://neural.cs.nthu.edu.tw/jang/books/audioSignalProcessing/example/output/pitchSoundFork01.png" \* MERGEFORMATINET 在上述範例中,上圖紅線的位置代表音框的位置,下圖即是 256 點的音框,其中紅線部分包含了 5 個基本週期,總共佔掉了 182 單位點,因此對應的基本頻率是 fs/(182/5) = 16000/(182/5) = 439.56 Hz,相當於 68.9827 半音(Semitone),其中由基本頻率至半音的轉換公式如下: semitone = 69 + 12*log2(frequency/440) 換句話說,當基本頻率是 440 Hz 時,對應到的半音差是 69,這就是鋼琴的「中央 La」或是「A4」,請見下圖。 提示 一般音叉的震動頻率非常接近 440 Hz,因此我們常用音叉來校正鋼琴的音準。 上z公式所轉換出來的半音差,也是 MIDI 音樂檔案所用的標準。從上述公式也可以看出: · 每個全音階包含 12 個半音(七個白鍵和五個黑鍵)。 · 每向上相隔一個全音階,頻率會變成兩倍。例如,中央 la 是 440 Hz(69 Semitones),向上平移一個全音階之後,頻率就變成 880 Hz(81 Semitones)。 · 人耳對音高的「線性感覺」是隨著基本頻率的對數值成正比。 音叉的聲音非常乾淨,整個波形非常接近弦波,所以基本週期顯而易見。若以我的聲音「清華大學資訊系」來說,我們可以將「華」的部分放大,也可以明顯地看到基本週期,請見下列範例: 範例 2輸入: close all waveFile='清華大學資訊系.wav'; [y, fs, nbits]=wavread(waveFile); index1=7450; frameSize=512; index2=index1+frameSize-1; segment=y(index1:index2); subplot(2,1,1); plot(y); grid on title(waveFile); set(gca, 'xlim', [0, length(y)]); limit=axis; line(index1*[1 1], limit(3:4), 'color', 'r'); line(index2*[1 1], limit(3:4), 'color', 'r'); subplot(2,1,2); plot(segment, '.-'); grid on set(gca, 'xlim', [1, index2-index1+1]); point=[73, 472]; line(point, segment(point), 'marker', 'o', 'color', 'red'); periodCount=6; fp=((point(2)-point(1))/periodCount)/fs; ff=fs/((point(2)-point(1))/periodCount); pitch=69+12*log2(ff/440); fprintf('Fundamental period = %g second\n', fp); fprintf('Fundamental frequency = %g Hertz\n', ff); fprintf('Pitch = %g semitone\n', pitch); 輸出訊息: Fundamental period = 0.0083125 second Fundamental frequency = 120.301 Hertz Pitch = 46.5497 semitone 輸出圖形: 上列範例的下圖,是從「華」的韻母附近抓出來的 512 點的音框,其中紅線部分包含了 6 個基本週期,總共佔掉了 399 單位點,因此對應的基本頻率是 fs/(399/6) = 8000/(399/6) = 120.301 Hz,相當於 46.5497 半音,與「中央 La」幾乎差了兩個全音階(24個半音)。 使用「觀察法」來算出音高,並不是太難的事,但是若要電腦自動算出音高,就要有點技術了。有關音高追蹤的各種 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ,會在後續章節詳細介紹。
本文档为【语音识别与合成入门3(内有matlab源码)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_985021
暂无简介~
格式:doc
大小:93KB
软件:Word
页数:0
分类:互联网
上传时间:2018-09-10
浏览量:7