前提・実現したいこと
デルタケプストラムや対数パワーを求める式で分母が0の時の処理について知りたい
参考文献の記述
(前略) そこで、隣接したフレーム間でケプストラムの差分を取り、それを特徴量とします。これは差分ケプストラムあるいはデルタケプストラムと呼ばれます。 ΔCn(t) = Σ[k=-K,K]kCn(t+k) / Σ[k=-K,K] k^2 一般的には前後のフレーム数Kは2~5の値がとられます。 (中略) 一方、以下の式で表されるその前後のフレームからの差分、すなわちパワー差分はしばしば音声特徴量として用いられます。 ΔPn(t) = Σ[k=-K,K]kPn(t+k) / Σ[k=-K,K] k^2 (後略)
kが-KからKの値をとるということはk=0の場合もあると思うのですが、その時の処理をどう行えば良いか教えていただけると幸いです。
ソースコード
def deltaCepstram(ceps,k): nceps = ceps for j in range(len(ceps)): s = 0.0 for i in range(np.abs(k)*2): ii = i + k if(0 <= ii+j and ii+j < len(ceps) and not ii == 0): s = s + ii * ceps[int(ii+j)] / int(np.power(ii,2)) elif(ii == 0): s = s + ceps[int(j)] nceps = np.append(nceps,s) return nceps
試したこと
k=0の時は場合分けを行いCn(t)の値をそのまま加算している
補足情報(FW/ツールのバージョンなど)
参考にした文献は
MLP機械学習プロフェッショナルシリーズ 音声認識(篠田浩一 著)
まだデルタケプストラムしかプログラムを書いていないですが、出力結果は
mfcc: [ 8.44310830e-01 -4.22320928e+00 -2.34918258e+00 4.32804179e-01
-9.98403701e-02 8.56255006e-02 -3.31897264e-01 5.98452917e-01
-1.99830542e-03 1.24373276e-01 -1.20952777e-01 1.97880356e-01
-3.37889845e+00 -7.41670268e+00 1.88467546e+00 4.79375102e+00
7.27572240e-01 -3.62833482e-01 2.30850338e-01 8.85539125e-01
-3.10129315e-01 -2.93807654e-01 -4.64465440e-02 2.56646494e-01]
になっています。前半12要素がMFCC、後半12要素がデルタケプストラムです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/19 01:50