1

いくつかの音声アクティビティと無音についていくつかの GMM をトレーニングするためのシェル スクリプトを作成しました。そのため、LIUMスピーカーダイアライゼーションツールキットを使用しました。これを使用して、音声アクティビティの検出を行いたいと考えています。次のスクリプトは、Sphinx4 を使用して wav オーディオ ファイルから MFCC 機能を抽出し、これらの GMM をトレーニングして、セグメンテーションにビタビ デコードを適用します。ただし、結果は非常に貧弱です。つまり、結果のセグメンテーションは完全に間違っています。トレーニング セット自体に GMM を適用しているため、これは絶対に当てはまりません。私は何を間違っていますか?私はこれに多大な努力を払ってきましたが、まだ機能させることができません。事前に助けてくれてありがとう!

ところで: Sphinx4 のドキュメントによると、wav ファイルの入力形式を再確認しました。これはモノラル 16 ビット LE です。さらに、さまざまなパラメーター設定、特に emCtrl (GMM のトレーニング) や dPenalty (セグメンテーションのためのビタビ復号化) などのパラメーターを試しました。私にとっては何も役に立ちませんでした。

これが私のシェルスクリプトです:

# !/bin/bash

wav=$1
base=`basename $wav .wav`
show=$base
fDescIn="audio16kHz2sphinx,1:1:0:0:0:0,13,0:0:0"
fDescOut="sphinx,1:1:0:0:0:0,13,0:0:0"
features="./%s.mfcc"
seg="./%s.seg"
gmmInit="./%s.init.gmms" # output GMM, %s is replaced by $show
gmm="./%s.gmms"

# Extract MFCC features
java -Xmx2048m -classpath lium.jar \
fr.lium.spkDiarization.tools.Wave2FeatureSet \
--fInputMask=$wav --sInputMask="" --fInputDesc=$fDescIn \
--fOutputMask=$base.mfcc --fOutputDesc=fDescOut $show

# Initialize the GMM 
java -Xmx1024m -cp lium.jar \
fr.lium.spkDiarization.programs.MTrainInit \
--sInputMask=$show".seg" --fInputMask=$base.mfcc
--fInputDesc=$fDescOut --kind=DIAG --nbComp=16 \
--emInitMethod=split_all --emCtrl=1,5,0.05 --tOutputMask=$gmmInit $show

# Train GMMs via EM
java -Xmx1024m -cp lium.jar \
fr.lium.spkDiarization.programs.MTrainEM \
--sInputMask=$show".seg" --fInputMask=$base.mfcc --emCtrl=10,20,0.01 \
--fInputDesc=$fDescOut --tInputMask=$gmmInit --tOutputMask=$gmm $show

# Segmentation
iseg=./$datadir/$show.i.seg
pmsseg=./$datadir/$show.pms.seg
java -Xmx2048m -cp lium.jar \
fr.lium.spkDiarization.programs.MDecode \
--fInputDesc=$fDescOut --fInputMask=$base.mfcc --sInputMask=$show.out2.seg \
--sOutputMask=$show.result.seg --dPenality=1,1,1,1 --tInputMask=$gmm $show
4

1 に答える 1