Miyazawa’s Pukiwiki
MFCC解析のツール
はすでに存在します。
開始行:
#access
#analog
*MFCC解析のツール [#p23672c6]
MFCCの説明は [[メル周波数ケプストラム(MFCC)]] を参照し...
#contents
**MATLAB Auditory Toolbox 付属の mfcc.m を使う [#f70f447d]
-[[MATLAB Note/音声の分析/メルケプストラム解析:http://sho...
**Praat を使う [#o078100f]
-[[Praat/MFCC解析:http://shower.human.waseda.ac.jp/~m-kou...
**HTK(Hidden Markov Model Toolkit) 付属の HCopy を使う [#...
-Linux 環境を対象に説明します。
-HTK本体のインストール方法は[[こちら:http://shower.human....
#geshi(bash){{
PATH=$PATH:/home/m-kouki/HTK-rensyu/bin.linux/
export PATH
}}
-HCopy設定ファイル config.hcopy を作成します((参考:[[音...
--WAVファイルの解析を行なう場合、config.hcopy ファイルの...
#geshi(c){{
#Cording Parameters
SOURCEFORMAT = WAVE
SOURCEKIND = WAVEFORM
TARGETKIND = MFCC_E_D_A # 出力する特徴量の形式(MFCC 39)
TARGETRATE = 100000.0 # フレームシフト長、10msec = 100...
SAVECOMPRESSED = T # 出力結果を圧縮ファイルで保存する
WINDOWSIZE = 250000.0 # フレームの幅、25msec
USEHAMMING = T # ハミング窓を使う
PREEMCOEF = 0.97 # プリエンファシス係数
NUMCHANS = 20 # メルフィルタバンクのチャンネル数
NUMCEPS = 12 # メルフィルタバンクの低次成分 1...
CEPLIFTER = 22 # ケプストラムのリフタリングの値
ENORMALISE = F # 対数エネルギーで正規化をするか...
DELTAWINDOW = 2 # デルタケプストラムのウインドウ...
ACCWINDOW = 2 # デルタデルタケプストラムのウイ...
}}
--TARGETRATEの値は、 10msec = 100000 x 100nsec(ナノ秒)
---注:TARGETRATEは、サンプリング周波数ではなく、ウインド...
--TARGETKINDのアルファベットの意味は、[[HTK Book p.62以降...
_E エネルギー
_N エネルギー絶対値の抑制
_D デルタ係数
_A 加速度(デルタデルタ)係数
_C 圧縮
_Z ゼロ平均の静的係数
_K CRC(巡回冗長検査)チェック値
_O 0番目のケプストラム係数
_V VQ(ベクトル量子化)データ
_T 3次元係数
---例えば、「MFCC」は、MFCC12次元((NUMCEPS=12のため、基本...
---「MFCC_E」は、MFCC12次元 + パワー1次元の、計13次元の...
---「MFCC_E_D」は、(MFCC+パワー)+デルタ(MFCC+パワー) の、...
---「MFCC_E_D_A」は、(MFCC+パワー)+デルタ(MFCC+パワー)+デ...
---デルタ及びデルタデルタの意味は、&pgid(,動的特徴量(デ...
--NUMCHANS の値は、メルフィルタバンクのチャンネル数、ここ...
--NUMCEPS の値は、出力するMFCCの次元数、ここではメルフィ...
--その他のパラメーター及びデフォルトパラメーターの値は、[...
-続けて、変換するファイル名のリスト codetr.scp を作成しま...
--codetr.scp ファイルの中身は、以下のような感じです。この...
data/R00F0028_10000_cutNoize.wav data/R00F0028_10000_cut...
data/R00F0178_10000_cutNoize.wav data/R00F0178_10000_cut...
-解析を実行して、MFCファイル(HTK/Julius音声特徴量ファイ...
#geshi(bash){{
$ HCopy -T 1 -C config.hcopy -S codetr.scp
}}
-MFCファイルをテキスト形式に変換します([[参考:http://www...
#geshi(bash){{
$ HList -o -h data/R00F0028_10000_cutNoize.mfc > data/R0...
}}
&ref(http://shower.human.waseda.ac.jp/~m-kouki/matlab/mfc...
--Sample Period の値がウインドウシフト長です(秒に直すに...
--1フレームにつき12個のMFCC値と1個のC0値を出力していて、...
-テキスト形式に変換したMFCCデータを、1行1フレームの .csv ...
--&ref(ConvertHcopyCsv.java);
#geshi(bash){{
$ mkdir convertTxt
$ java ConvertHcopyCsv . convertTxt
}}
---カレントディレクトリ(.)内の「*.txt」ファイルを全て検...
**MATLAB Auditory Toolbox, Praat, HTK の比較 [#adc90242]
-以下、「MATLAB」と発音したサンプル英語音声を解析してみま...
#geshi(matlab){{
load mtlb; %MATLABと発音した英語音声
disp(strcat('サンプリング周波数は', int2str(Fs), '[Hz] ...
sound(mtlb, Fs) %再生
wavwrite(mtlb, Fs, 32, 'mtlb.wav'); %量子化ビット数32で...
}}
-全てフレーム長 25ms、フレームシフト長 10ms で解析します。
-[[HTKを使って:http://shower.human.waseda.ac.jp/~m-kouki/...
--上記のパラメータをそのまま使用
--出力された [[mtlb_HTK.txt:http://shower.human.waseda.ac...
---行が各フレーム、列が各特徴量のカンマ区切りデータ、ヘッ...
--MATLABにMFCCのデータを取り込むには、以下のようにします。
#geshi(matlab){{
mtlb_HTK = csvread('mtlb_HTK.csv');
mtlb_HTK_MFCC = mtlb_HTK(:,3:14); % 1-2列目はフレーム番...
}}
-[[Praatを使って:http://shower.human.waseda.ac.jp/~m-kouk...
--Window length (s) は 0.025、Time Step (s) は 0.010 を指...
--出力されたファイルが [[mtlb_Praat.txt:http://shower.hum...
---行が各フレーム、列が各特徴量のタブ区切りデータ、ヘッダ...
--MATLABにMFCCのデータを取り込むには、以下のようにします。
#geshi(matlab){{
mtlb_Praat = fopen('mtlb_Praat.txt', 'rt');
% ヘッダ情報(1行目の文字列)を得る
text = textscan(mtlb_Praat, '%s', 1, 'delimiter', '\n');
% データ部(文字列1列、数値19列、区切り記号はタブ)を得る
text = textscan(mtlb_Praat, strcat('%s ', repmat(['%f '],...
% MFCC部(c1 - c12)の取り込み
mtlb_Praat_MFCC = zeros(length(text{1}),12);
for count = 2 : 13
mtlb_Praat_MFCC(:,(count-1)) = text{count};
end
}}
-[[MATLAB Auditory Toolboxを使って:http://shower.human.wa...
--WindowSize の値を Fs * 0.025 に書き換え、frameRate = 10...
--出力されたファイルが [[mtlb_MATLAB.txt:http://shower.hu...
---行が各特徴量、列が各フレームのカンマ区切りデータ、ヘッ...
--MATLABにMFCCのデータを取り込むには、以下のようにします。
#geshi(matlab){{
mtlb_MATLAB = csvread('mtlb_MATLAB.txt');
mtlb_MATLAB_MFCC = mtlb_MATLAB(2:13,:)'; %MFCC部を読み込...
}}
-3種類のツールで求めたMFCC値を比較します。上に続いて、以...
#geshi(matlab){{
figure(1);
subplot(3,1,1); imagesc(mtlb_HTK_MFCC'); title('HTK MFCC1...
subplot(3,1,2); imagesc(mtlb_Praat_MFCC'); title('Praat M...
subplot(3,1,3); imagesc(mtlb_MATLAB_MFCC'); title('MATLAB...
figure(2);
for count = 1 : 12
subplot(3,4,count);
plot([mtlb_HTK_MFCC(1:48,count) mtlb_Praat_MFCC(1:48,co...
title(strcat('MFCC-', int2str(count)));
end
legend('HTK','Praat','MATLAB');
}}
#ref(mtlb_MFCC1.png,,60%);
--縦軸:MFCCの各特徴量、横軸:フレーム数(時間)
---各ツールのデフォルト設定で計算した結果は、かなり異なっ...
---Praatのみ総フレーム数が異なっています(2少ない)。HTK...
#ref(mtlb_MFCC2.png,,50%);
--縦軸:各MFCC特徴量の値、横軸:フレーム数(時間)
---各ツールの出力値のスケールが異なっているようです。
---HTKとPraatでは各特徴量の概形は一致しているように見えま...
-詳細な検討は後日追記する予定です。
終了行:
#access
#analog
*MFCC解析のツール [#p23672c6]
MFCCの説明は [[メル周波数ケプストラム(MFCC)]] を参照し...
#contents
**MATLAB Auditory Toolbox 付属の mfcc.m を使う [#f70f447d]
-[[MATLAB Note/音声の分析/メルケプストラム解析:http://sho...
**Praat を使う [#o078100f]
-[[Praat/MFCC解析:http://shower.human.waseda.ac.jp/~m-kou...
**HTK(Hidden Markov Model Toolkit) 付属の HCopy を使う [#...
-Linux 環境を対象に説明します。
-HTK本体のインストール方法は[[こちら:http://shower.human....
#geshi(bash){{
PATH=$PATH:/home/m-kouki/HTK-rensyu/bin.linux/
export PATH
}}
-HCopy設定ファイル config.hcopy を作成します((参考:[[音...
--WAVファイルの解析を行なう場合、config.hcopy ファイルの...
#geshi(c){{
#Cording Parameters
SOURCEFORMAT = WAVE
SOURCEKIND = WAVEFORM
TARGETKIND = MFCC_E_D_A # 出力する特徴量の形式(MFCC 39)
TARGETRATE = 100000.0 # フレームシフト長、10msec = 100...
SAVECOMPRESSED = T # 出力結果を圧縮ファイルで保存する
WINDOWSIZE = 250000.0 # フレームの幅、25msec
USEHAMMING = T # ハミング窓を使う
PREEMCOEF = 0.97 # プリエンファシス係数
NUMCHANS = 20 # メルフィルタバンクのチャンネル数
NUMCEPS = 12 # メルフィルタバンクの低次成分 1...
CEPLIFTER = 22 # ケプストラムのリフタリングの値
ENORMALISE = F # 対数エネルギーで正規化をするか...
DELTAWINDOW = 2 # デルタケプストラムのウインドウ...
ACCWINDOW = 2 # デルタデルタケプストラムのウイ...
}}
--TARGETRATEの値は、 10msec = 100000 x 100nsec(ナノ秒)
---注:TARGETRATEは、サンプリング周波数ではなく、ウインド...
--TARGETKINDのアルファベットの意味は、[[HTK Book p.62以降...
_E エネルギー
_N エネルギー絶対値の抑制
_D デルタ係数
_A 加速度(デルタデルタ)係数
_C 圧縮
_Z ゼロ平均の静的係数
_K CRC(巡回冗長検査)チェック値
_O 0番目のケプストラム係数
_V VQ(ベクトル量子化)データ
_T 3次元係数
---例えば、「MFCC」は、MFCC12次元((NUMCEPS=12のため、基本...
---「MFCC_E」は、MFCC12次元 + パワー1次元の、計13次元の...
---「MFCC_E_D」は、(MFCC+パワー)+デルタ(MFCC+パワー) の、...
---「MFCC_E_D_A」は、(MFCC+パワー)+デルタ(MFCC+パワー)+デ...
---デルタ及びデルタデルタの意味は、&pgid(,動的特徴量(デ...
--NUMCHANS の値は、メルフィルタバンクのチャンネル数、ここ...
--NUMCEPS の値は、出力するMFCCの次元数、ここではメルフィ...
--その他のパラメーター及びデフォルトパラメーターの値は、[...
-続けて、変換するファイル名のリスト codetr.scp を作成しま...
--codetr.scp ファイルの中身は、以下のような感じです。この...
data/R00F0028_10000_cutNoize.wav data/R00F0028_10000_cut...
data/R00F0178_10000_cutNoize.wav data/R00F0178_10000_cut...
-解析を実行して、MFCファイル(HTK/Julius音声特徴量ファイ...
#geshi(bash){{
$ HCopy -T 1 -C config.hcopy -S codetr.scp
}}
-MFCファイルをテキスト形式に変換します([[参考:http://www...
#geshi(bash){{
$ HList -o -h data/R00F0028_10000_cutNoize.mfc > data/R0...
}}
&ref(http://shower.human.waseda.ac.jp/~m-kouki/matlab/mfc...
--Sample Period の値がウインドウシフト長です(秒に直すに...
--1フレームにつき12個のMFCC値と1個のC0値を出力していて、...
-テキスト形式に変換したMFCCデータを、1行1フレームの .csv ...
--&ref(ConvertHcopyCsv.java);
#geshi(bash){{
$ mkdir convertTxt
$ java ConvertHcopyCsv . convertTxt
}}
---カレントディレクトリ(.)内の「*.txt」ファイルを全て検...
**MATLAB Auditory Toolbox, Praat, HTK の比較 [#adc90242]
-以下、「MATLAB」と発音したサンプル英語音声を解析してみま...
#geshi(matlab){{
load mtlb; %MATLABと発音した英語音声
disp(strcat('サンプリング周波数は', int2str(Fs), '[Hz] ...
sound(mtlb, Fs) %再生
wavwrite(mtlb, Fs, 32, 'mtlb.wav'); %量子化ビット数32で...
}}
-全てフレーム長 25ms、フレームシフト長 10ms で解析します。
-[[HTKを使って:http://shower.human.waseda.ac.jp/~m-kouki/...
--上記のパラメータをそのまま使用
--出力された [[mtlb_HTK.txt:http://shower.human.waseda.ac...
---行が各フレーム、列が各特徴量のカンマ区切りデータ、ヘッ...
--MATLABにMFCCのデータを取り込むには、以下のようにします。
#geshi(matlab){{
mtlb_HTK = csvread('mtlb_HTK.csv');
mtlb_HTK_MFCC = mtlb_HTK(:,3:14); % 1-2列目はフレーム番...
}}
-[[Praatを使って:http://shower.human.waseda.ac.jp/~m-kouk...
--Window length (s) は 0.025、Time Step (s) は 0.010 を指...
--出力されたファイルが [[mtlb_Praat.txt:http://shower.hum...
---行が各フレーム、列が各特徴量のタブ区切りデータ、ヘッダ...
--MATLABにMFCCのデータを取り込むには、以下のようにします。
#geshi(matlab){{
mtlb_Praat = fopen('mtlb_Praat.txt', 'rt');
% ヘッダ情報(1行目の文字列)を得る
text = textscan(mtlb_Praat, '%s', 1, 'delimiter', '\n');
% データ部(文字列1列、数値19列、区切り記号はタブ)を得る
text = textscan(mtlb_Praat, strcat('%s ', repmat(['%f '],...
% MFCC部(c1 - c12)の取り込み
mtlb_Praat_MFCC = zeros(length(text{1}),12);
for count = 2 : 13
mtlb_Praat_MFCC(:,(count-1)) = text{count};
end
}}
-[[MATLAB Auditory Toolboxを使って:http://shower.human.wa...
--WindowSize の値を Fs * 0.025 に書き換え、frameRate = 10...
--出力されたファイルが [[mtlb_MATLAB.txt:http://shower.hu...
---行が各特徴量、列が各フレームのカンマ区切りデータ、ヘッ...
--MATLABにMFCCのデータを取り込むには、以下のようにします。
#geshi(matlab){{
mtlb_MATLAB = csvread('mtlb_MATLAB.txt');
mtlb_MATLAB_MFCC = mtlb_MATLAB(2:13,:)'; %MFCC部を読み込...
}}
-3種類のツールで求めたMFCC値を比較します。上に続いて、以...
#geshi(matlab){{
figure(1);
subplot(3,1,1); imagesc(mtlb_HTK_MFCC'); title('HTK MFCC1...
subplot(3,1,2); imagesc(mtlb_Praat_MFCC'); title('Praat M...
subplot(3,1,3); imagesc(mtlb_MATLAB_MFCC'); title('MATLAB...
figure(2);
for count = 1 : 12
subplot(3,4,count);
plot([mtlb_HTK_MFCC(1:48,count) mtlb_Praat_MFCC(1:48,co...
title(strcat('MFCC-', int2str(count)));
end
legend('HTK','Praat','MATLAB');
}}
#ref(mtlb_MFCC1.png,,60%);
--縦軸:MFCCの各特徴量、横軸:フレーム数(時間)
---各ツールのデフォルト設定で計算した結果は、かなり異なっ...
---Praatのみ総フレーム数が異なっています(2少ない)。HTK...
#ref(mtlb_MFCC2.png,,50%);
--縦軸:各MFCC特徴量の値、横軸:フレーム数(時間)
---各ツールの出力値のスケールが異なっているようです。
---HTKとPraatでは各特徴量の概形は一致しているように見えま...
-詳細な検討は後日追記する予定です。
ページ名:
既存のページ名で編集する