資源簡介
如題,實我用過的一個聲音處理matlab源程序!

代碼片段和文件信息
function?speechproc()
????%?定義常數
????FL?=?80;????????????????%?幀長
????WL?=?240;???????????????%?窗長
????P?=?10;?????????????????%?預測系數個數
????s?=?readspeech(‘voice.pcm‘100000);?????????????%?載入語音s
????L?=?length(s);??????????%?讀入語音長度
????FN?=?floor(L/FL)-2;?????%?計算幀數
????%?預測和重建濾波器
????exc?=?zeros(L1);???????%?激勵信號(預測誤差)
????zi_pre?=?zeros(P1);????%?預測濾波器的狀態
????s_rec?=?zeros(L1);?????%?重建語音
????zi_rec?=?zeros(P1);
????%?合成濾波器
????exc_syn?=?zeros(L1);???%?合成的激勵信號(脈沖串)
????s_syn?=?zeros(L1);?????%?合成語音
????zi_syn?=?zeros(P1);
????%?變調不變速濾波器
????exc_syn_t?=?zeros(L1);???%?合成的激勵信號(脈沖串)
????s_syn_t?=?zeros(L1);?????%?合成語音
????zi_syn_t?=?zeros(P1);
????%?變速不變調濾波器(假設速度減慢一倍)
????exc_syn_v?=?zeros(2*L1);???%?合成的激勵信號(脈沖串)
????s_syn_v?=?zeros(2*L1);?????%?合成語音
????zi_syn_v?=?zeros(P1);
????hw?=?hamming(WL);???????%?漢明窗
????
?????
????%?依次處理每幀語音
????for?n?=?3:FN
????????%?計算預測系數(不需要掌握)
????????s_w?=?s(n*FL-WL+1:n*FL).*hw;????%漢明窗加權后的語音
????????[A?E]?=?lpc(s_w?P);????????????%用線性預測法計算P個預測系數
????????????????????????????????????????%?A是預測系數,E會被用來計算合成激勵的能量
????????if?n?==?27
??????????figure;zplane(1A);
????????end
????????
????????s_f?=?s((n-1)*FL+1:n*FL);???????%?本幀語音,下面就要對它做處理
????????%?(4)?在此位置寫程序,用filter函數s_f計算激勵,注意保持濾波器狀態
????????[exc_1?zi_pre]?=?filter(A?1?s_f?zi_pre);
????????exc((n-1)*FL+1:n*FL)?=?exc_1;
????????
????????%?exc((n-1)*FL+1:n*FL)?=?...?將你計算得到的激勵寫在這里
????????%?(5)?在此位置寫程序,用filter函數和exc重建語音,注意保持濾波器狀態
????????[rec_1?zi_rec]?=?filter(1?A?exc_1?zi_rec);
?????????s_rec((n-1)*FL+1:n*FL)?=?rec_1;
????????
????????
????????%?注意下面只有在得到exc后才會計算正確
????????s_Pitch?=?exc(n*FL-222:n*FL);
????????PT?=?findpitch(s_Pitch);????%?計算基音周期PT(不要求掌握)
????????G?=?sqrt(E*PT);???????????%?計算合成激勵的能量G(不要求掌握)
????????
????????%?(10)?在此位置寫程序,生成合成激勵,并用激勵和filter函數產生合成語音
????????if?n==3
??????????????sta=0;
?????????end
??????????????while?sta?<=?FL
?????????????????????exc_syn((n-1)*FL+sta)?=?G;
?????????????????????sta?=?sta?+?PT;
??????????????end
???????????????sta?=?sta?-?FL;?????????????
??????
??????????[s_syn((n-1)*FL+1:n*FL)zf]?=?filter(1Aexc_syn((n-1)*FL+1:n*FL)zi_syn);
??????????zi_syn?=?zf;
????????%?(11)?不改變基音周期和預測系數,將合成激勵的長度增加一倍,再作為filter
????????%?的輸入得到新的合成語音,聽一聽是不是速度變慢了,但音調沒有變。
?????????FL_v?=?2*FL;
????????if?n?==?3
???????????sta_v?=?0;
???????end
???????while?sta_v?<=?FL_v
???????????exc_syn_v((n-1)*FL_v+sta_v)?=?G;
???????????sta_v?=?sta_v?+?PT;
???????end
???????sta_v?=?sta_v?-FL_v;
????????[s_syn_v((n-1)*FL_v+1:n*FL_v)zf]?=?filter(1Aexc_syn_v((n-1)*FL_v+1:n*FL_v)zi_syn_v);
????????zi_syn_v?=?zf;?????
????????%?(13)?將基音周期減小一半,將共振峰頻率增加150Hz,重新合成語音,聽聽是啥感受~
????????PT_t?=?floor(PT/2);
????????if?n?==?3
????????????sta_t?=?0;
????????end
????????while?sta_t?<=FL
????????????exc_syn_t((n-1)*FL+sta_t)?=G;
????????????sta_t?=?sta_t?+?PT_t;
????????end
????????sta_t?=?sta_t?-?FL;
????????[zpk]?=?tf2zp(1A);
????????omg?=?phase(p)+[3*pi/80;-3*pi/80;3*pi/80;-3*pi/80;3*pi/80;-3*pi/80;3*pi/80;-3*pi/80;3*pi/80;-3*pi/80];
???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5512??2012-12-06?14:25??語音處理,改變聲調、語速等,matlab代碼\speechproc.m
?????文件??????27460??2012-12-08?10:50??語音處理,改變聲調、語速等,matlab代碼\syn.pcm
?????文件??????27460??2012-12-08?10:50??語音處理,改變聲調、語速等,matlab代碼\syn_t.pcm
?????文件??????54920??2012-12-08?10:50??語音處理,改變聲調、語速等,matlab代碼\syn_v.pcm
?????文件??????26844??2011-06-29?18:14??語音處理,改變聲調、語速等,matlab代碼\Tomvoice.pcm
?????文件??????27460??2006-08-14?05:44??語音處理,改變聲調、語速等,matlab代碼\voice.pcm
?????文件????????249??2011-07-24?09:13??語音處理,改變聲調、語速等,matlab代碼\Voice_1.asv
?????文件????????265??2011-07-24?09:16??語音處理,改變聲調、語速等,matlab代碼\Voice_1.m
?????文件????????202??2011-07-24?12:49??語音處理,改變聲調、語速等,matlab代碼\Voice_12.asv
?????文件????????213??2011-07-24?12:50??語音處理,改變聲調、語速等,matlab代碼\Voice_12.m
?????文件????????163??2011-07-24?10:29??語音處理,改變聲調、語速等,matlab代碼\Voice_7.m
?????文件????????178??2011-07-24?10:44??語音處理,改變聲調、語速等,matlab代碼\voice_8.asv
?????文件????????188??2011-07-24?10:47??語音處理,改變聲調、語速等,matlab代碼\Voice_8.m
?????文件????????297??2011-07-24?10:54??語音處理,改變聲調、語速等,matlab代碼\Voice_9.asv
?????文件????????352??2011-07-24?10:55??語音處理,改變聲調、語速等,matlab代碼\Voice_9.m
?????文件???????4047??2012-12-06?14:28??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\speechproc.m
?????文件??????26844??2011-06-29?18:14??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\Tomvoice.pcm
?????文件??????27460??2006-08-14?05:44??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\voice.pcm
?????文件??????27460??2012-12-06?14:28??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\exc.pcm
?????文件??????27460??2012-12-06?14:28??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\rec.pcm
?????文件??????27460??2012-12-06?14:28??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\exc_syn.pcm
?????文件??????27460??2012-12-06?14:28??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\syn.pcm
?????文件??????27460??2012-12-06?14:28??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\exc_syn_t.pcm
?????文件??????27460??2012-12-06?14:28??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\syn_t.pcm
?????文件??????54920??2012-12-06?14:28??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\exc_syn_v.pcm
?????文件??????54920??2012-12-06?14:28??語音處理,改變聲調、語速等,matlab代碼\語音處理所需資源\syn_v.pcm
?????文件??????27460??2012-12-08?10:50??語音處理,改變聲調、語速等,matlab代碼\exc.pcm
?????文件??????27460??2012-12-08?10:50??語音處理,改變聲調、語速等,matlab代碼\rec.pcm
?????文件??????27460??2012-12-08?10:50??語音處理,改變聲調、語速等,matlab代碼\exc_syn.pcm
?????文件??????27460??2012-12-08?10:50??語音處理,改變聲調、語速等,matlab代碼\exc_syn_t.pcm
............此處省略7個文件信息
評論
共有 條評論