顯示具有 hmm 標籤的文章。 顯示所有文章
顯示具有 hmm 標籤的文章。 顯示所有文章

2010年9月16日 星期四

ubuntu 10.04 安裝HTS 3.4.1 和 HTS 2.1.1

------2011.3.7--------------
更改SPTK3.3 為 SPTK3.4
-----------------------------

所需的安裝檔案:
HTK-3.4.1.tar.gz
HDecode-3.4.1.tar.gz
HTS-2.1.1_for_HTK-3.4.1.tar.bz2.tar
SPTK-3.4.tar.gz
ActiveTcl8.4.19.4.292682-linux-ix86.tar.gz
speech_tools-2.0.95-beta.tar.gz
festival-2.0.95-beta.tar.gz
openfst-1.1.tar.gz
hts_engine_API-1.03.tar.gz
//////////////////////////////////////////////////////////
安裝順序:(不可調換順序)

1. HTK

2. HDecode

3. HTS

2. SPTK

4. ActiveTcl

5. speech_tools

6. festival

7. openfst
//////////////////////////////////////////////////////////
HTK and HTS system會用到一些linux的package,可以先安裝好.
預先安裝的套件:

sudo aptitude update
sudo aptitude install build-essential
sudo apt-get install gfortran


$ sudo apt-get install build-essential
$ sudo apt-get install libx11-dev
$ sudo apt-get install libncurses5-dev
$ sudo apt-get install libncursesw5-dev
$ sudo apt-get install sox//////////////////////////////////////////////////////////
開始安裝:
將所有壓縮檔放在同一個目錄下,進到那個目錄,開始打指令安裝.
$ tar zvxf HTK-3.4.1.tar.gz
$ tar zvxf HDecode-3.4.1.tar.gz
$ tar -xf HTS-2.1.1_for_HTK-3.4.1.tar.bz2.tar -C ./htk
$ cd htk
htk$ patch –p1 –d . < HTS-2.1.1_for_HTK-3.4.1.patch
htk$ ./configure
htk$ make all
htk$ sudo make install
htk$ cd ..
$ tar zvxf SPTK-3.4.tar.gz
$ cd SPTK-3.4
SPTK-3.4$ ./configure
SPTK-3.4$ make
SPTK-3.4$ sudo make install
SPTK-3.4$ cd ..
$ tar zvxf ActiveTcl8.4.19.4.292682-linux-ix86.tar.gz
$ cd ActiveTcl8.4.19.4.292682-linux-ix86
ActiveTcl8.4.19.4.292682-linux-ix86$ sudo ./install.sh
按照跳出來的安裝精靈安裝完ActiveTcl,目錄都用預設.
ActiveTcl8.4.19.4.292682-linux-ix86$ cd ..
$ tar zvxf speech_tools-2.0.95-beta.tar.gz
$ cd speech_tools
speech_tools$ ./configure
speech_tools$ make
speech_tools$ sudo make install
speech_tools$ cd ..
$ tar zvxf festival-2.0.95-beta.tar.gz
$ cd festival
festival$ ./configure
festival$ make
festival$ sudo make install
festival$ cd ..
$ tar zvxf openfst-1.1.tar.gz
$ cd openfst-1.1
openfst-1.1$ ./configure
openfst-1.1$ make
openfst-1.1$ sudo make install
至此安裝完成.
p.s.

1.可以再安裝hts_engine
$ tar zvxf hts_engine_API-1.03.tar.gz

$ cd hts_engine_hts_engine_API-1.03

hts_engine_API-1.03$ ./configure

hts_engine_API-1.03$ make

hts_engine_API-1.03$ sudo make install

2.$sudo cp -r /usr/local/HTS-2.1.1/bin /usr/local/
可將HTS執行檔複製到主機使得直接打HCopy等指令就可執行HTS程式.
3. 有時候會發生"libfst.so.0 cannot open shared object file"
原因是libfst.so.0安裝在/usr/local/lib,用指令
$sudo cp /usr/local/lib/libfst.so.0 /usr/lib
$sudo cp /usr/local/lib/libfst.so /usr/lib
$sudo cp /usr/local/lib/libfstmain.so.0 /usr/lib
$sudo cp /usr/local/lib/libfstmain.so /usr/lib
複製過去即可.

2010年5月20日 星期四

語音合成與研究

1. 了解語音合成過程

目前語音合成
--用LPC model vocal tract
--程式中的model vocal tract部分希望改成sine

2. 如何用HMM輔助合成

showmin的合成
--音色庫先建好
--LPC+sine是用來Model Harmonics
--HMM只是來輔助合成的

3. 目標

了解語音合成的程式碼,
將showmin之LPC model sine的方法修改或套用至語音合成,
再用HMM輔助合成,並整合到authingtool.
希望能用CUDA加速.

2010年5月19日 星期三

HMM matlab example

=======產生hmm sequence========

1. 定義transition probability和 emis probability .



trans = [0.95,0.05 ;
0.10,0.90 ] ;



emis = [1/6 1/6 1/6 1/6 1/6 1/6;
1/10 1/10 1/10 1/10 1/10 1/2 ];

2. 用定義好的probability隨機產生一個sequence.

seq 存的是在第 i 步時的symbol,
states 存的是在第 i 步時所在的 state.

[seq,states] = hmmgenerate( 8,trans,emis);

result :



3. 可對symbols 及 states 另取名稱 .

[seq,states] = hmmgenerate( 8 ,trans,emis,...
'Symbols',{'one','two','three','four','five','six'},...
'Statenames',{'fair';'loaded'})

result :



==用已知的sequence, states反推出 trans 和 emis 機率==

1. 用此matlab指令

[estimateTR,estimateE] = hmmestimate(seq,states);

result :





=======pStates========

trans, emis, seq同上,輸入matlab指令.

PSTATES = hmmdecode(seq,TRANS,EMIS);

result :

Hidden Markov Models with matlab



PSTATES = hmmdecode( o_seq, TRANS, EMIS):給定observed sequence, 用來計算conditional probabilities在state k at step i .

TRANS( i, j )
:由 state i 至 state j 的轉換機率 .

EMIS( k, sym_seq ):symbol sequence 在 state k 發生的機率.

PSTATES:是個矩陣跟 seq 的大小一樣, 第 ( i, j )th element 代表在model中 state i at jth step 的機率 .

[ PSTATES, logpseq ] = hmmdecode(...):回傳對數的 probability sequence, logseq .

[ PSTATES, logpseq, FORWARD, BACKWARD,S ] = hmmdecode(...):給定 scaled s, 回傳 forward 和 backward 的 sequence 機率 .

hmmdecode( o_seq, TRANS, EMIS ,'Symbols', SYMBOLS):定義有哪些 SYMBOLS , SYMBOLS可為陣列 .

=========================================



[seq,states] = hmmgenerate(len,TRANS,EMIS):用已知的transition probability TRANS, 與 symbol probability EMIS 並指定欲產生 sequence 的長度, 來造出一個 observed sequence with states .

hmmgenerate(...,'Symbols',SYMBOLS):定義有哪些 SYMBOLS , SYMBOLS可為陣列 .

hmmgenerate(...,'Statenames',STATENAMES):定義 states 的名稱 .

=========================================



[TRANS,EMIS] = hmmestimate( seq, states ):給定 sequence 和 states 算出 TRANS, EMIS 的maximum likelihood estimate .

hmmestimate(...,'Symbols',SYMBOLS):定義有哪些 SYMBOLS , SYMBOLS可為陣列 .

hmmestimate(...,'Statenames',STATENAMES):定義 states 的名稱 .

hmmestimate(...,'Pseudoemissions',PSEUDOE):用此參數來避免state內無symbol的機率, PSEUDOE 是個矩陣 size m-by-n , m為states數目, n為該state可能產生的symbol數.
如果在sequence中state i at k step的機率為0, 可設 PSEUDOE( i, k ) 指定在 state i at k step的機率 .

hmmestimate(...,'Pseudotransitions',PSEUDOTR):用此參數來避免state與state間的0轉換機率, PSEUDOTR 是個矩陣 size m-by-m , m為states數目 .
如果在sequence中從state i 至 state k 的機率為0, 可設 PSEUDOTR( i, j ) 指定從state i 至 state k 的機率 .

=========================================



STATES = hmmviterbi(seq,TRANS,EMIS):給定model參數TRANS, EMIS 和 observed sequence, 計算 most likely path.

=========================================



[ESTTR,ESTEMIT] = hmmtrain(seq,TRGUESS,EMITGUESS):用Baum-Welch algorithm估計transition和state emission probabilities. TRGUESS, EMITGUESS為我們猜測的transition 和 symbol probabilities matrix.
註: state emission probability為一個state可能產生的output狀態, 即為一個state所擁有的symbol數.

hmmtrain(...,'Algorithm',algorithm):定義要用哪種演算法來training data. 有 BaumWelch 和 Viterbi 兩種, 預設是 BaumWelch .

hmmtrain(...,'Tolerance',tol):定義容忍度,預設值為0.0001, 用來在估計過程中測試收斂.

hmmtrain(...,'Maxiterations',maxiter):定義在estimation過程中最大可以 iterate 的數目, 預設為 100.

hmmtrain(...,'Verbose',true):回傳status of algorithm at each iteration.

如果已知states與sequences的關係, 就用hmmestimate去估計 model 的參數.