91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-03
  • 語言: Matlab
  • 標簽: matlab??

資源簡介

基于matlab的一種對語音信號進行加密解密的程序 我試過了 還不錯

資源截圖

代碼片段和文件信息

function?speechproc()

????%?定義常數
????Fs=8000;
????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);?????%?合成語音
????%?變調不變速濾波器
????exc_syn_t?=?zeros(L1);???%?合成的激勵信號(脈沖串)
????s_syn_t?=?zeros(L1);?????%?合成語音
????%?變速不變調濾波器(假設速度減慢一倍)
????exc_syn_v?=?zeros(2*L1);???%?合成的激勵信號(脈沖串)
????s_syn_v?=?zeros(2*L1);?????%?合成語音

????hw?=?hamming(WL);???????%?漢明窗
????
????%%初始化各濾波器狀態
????zi_pre=s(2*FL-P+1:2*FL);????????
????zi_rec=s(2*FL-P+1:2*FL);
????zi_syn=s(2*FL-P+1:2*FL);
????zi_syn_v=s(2*FL-P+1:2*FL);
????zi_syn_t=s(2*FL-P+1:2*FL);
????
????%?依次處理每幀語音
????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
????????%?(3)?在此位置寫程序,觀察預測系統的零極點圖
????????figure;?zplane(1?A);
??
????????end
????????
????????s_f?=?s((n-1)*FL+1:n*FL);???????%?本幀語音,下面就要對它做處理

????????%?(4)?在此位置寫程序,用filter函數s_f計算激勵,注意保持濾波器狀態
????????%?exc((n-1)*FL+1:n*FL)?=?...?將你計算得到的激勵寫在這里
????????[?exc((n-1)*FL+1:n*FL)?zi_pre]?=?filter(A1s_fzi_pre);
????????
????????%?(5)?在此位置寫程序,用filter函數和exc重建語音,注意保持濾波器狀態
????????[s_rec((n-1)*FL+1:n*FL)zi_rec]=filter([1]Aexc((n-1)*FL+1:n*FL)zi_rec);
????????
????????%?s_rec((n-1)*FL+1:n*FL)?=?...?將你計算得到的重建語音寫在這里

????????%?注意下面只有在得到exc后才會計算正確
????????s_Pitch?=?exc(n*FL-222:n*FL);
????????PT?=?findpitch(s_Pitch);????%?計算基音周期PT(不要求掌握)
????????G?=?sqrt(E*PT);???????????%?計算合成激勵的能量G(不要求掌握)

????????%?(10)?在此位置寫程序,生成合成激勵,并用激勵和filter函數產生合成語音????????
????????%?exc_syn((n-1)*FL+1:n*FL)?=?...?將你計算得到的合成激勵寫在這里
????????%?s_syn((n-1)*FL+1:n*FL)?=?...???將你計算得到的合成語音寫在這里
????????if?(n==3)???????%初始化合成位置
????????????pos=(n-1)*FL+1-PT;??
????????end
????????pos=pos+PT;??%本段第一個激勵與上一段最后一個相差PT
????????while?(pos????????????exc_syn(pos)=G;
????????????pos=pos+PT;
????????end
????????pos=pos-PT;??%本段最后一個激勵位置
????????[?s_syn((n-1)*FL+1?:?n*FL)zi_syn]?=?filter(1AG*?exc_syn((n-1)*FL+1:n*FL)zi_syn);??

????????%?(11)?不改變基音周期和預測系數,將合成激勵的長度增加一倍,再作為filter
????????%?的輸入得到新的合成語音,聽一聽是不是速度變慢了,但音調沒有變。
????????%?exc_syn_v((n-1)*FL_v+1:n*FL_v)?=?...?將你計算得到的加長合成激勵寫在這里
????????%?s_syn_v((n-1)*FL_v+1:n*FL_v)?=?...???將你計算得到的加長合成語音寫在這里
????????FL_v=FL*2;??????%幀長加倍,合成類似上一問
????????if?(n==3)????????%初始化合成位置
????????????pos_v=(n-1)*FL_v+1-PT;
????????end
????????pos_v=pos_v+PT;
????????while?(pos_v????????????exc_syn_v(pos_v)=G;
????????????pos_v=pos_v+PT;
????????end
????????pos_v=pos_v-PT;
????????[s_syn_v((n-1)*FL_v+1:n*FL_v)zi_syn_v]=filter([1]Aexc_syn_v((n-1)*FL_v+1:n*FL_v)zi_syn

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????7901??2009-09-20?15:32??語音合成.m

-----------?---------??----------?-----??----

?????????????????7901????????????????????1


評論

共有 條評論