よーぐるとのブログ

技術ネタを中心。私的なことを徒然と綴っていきます。

Juliusによる音素アライメント(音素セグメンテーション) on MacOSX(Yosemite)

オープンソースの汎用大語彙連続音声認識エンジン、Juliusを用いて音声認識ではなく強制音素アライメントを行います。 音素アライメントとはある音声ファイルに含まれる音素(分節音)の開始・終了時間を自動認識する技術となります。

事前に必要な物

Homebewを使っていれます.

  • portaudio
    • brew install --universal portaudio
  • flex
    • brew install flex

Julius本体のインストール

Julius

こちらから最新版のJuliusをダウンロード。今回は4.3.1。

解凍・コンパイル

tar xvzf julius-4.3.1.tar.gz
cd julius-4.3.1/
env CFLAGS='-arch i386' LDFLAGS='-arch i386' ./configure --disable-mac-universal
make
sudo make install

単語・音素セグメンテーションキットのダウンロード

githubから落としてきます

git clone git@github.com:julius-speech/segmentation-kit.git

segmentation-kit/直下にあるsegment_julius.plを修正します。segment_julius.plの45~50行目のelse文の箇所を変えます。

## julius executable
if ($^O =~ /MSWin/){
    $juliusbin=".\\bin\\julius-4.3.1.exe";
} else {
    $juliusbin="./bin/julius-4.3.1";
}

$juliusbin="./bin/julius-4.3.1"; ここのパスをインストールしたjuliusの実行場所を確認し、変更します。

$which julius
> /usr/local/bin/julius
## julius executable
if ($^O =~ /MSWin/){
    $juliusbin=".\\bin\\julius-4.3.1.exe";
} else {
    $juliusbin="/usr/local/bin/julius";
}

動作確認

segmentation-kit/wavフォルダにあるsample.wavsample.txtを使用します。ちなみにwavファイルは16kHzである必要があるようです(変えられるのかな?)。 sample.txtのテキストはこんな感じ。ひらがなで書きます。

きょーわいいてんきだ

wavファイルと書き起こしのtxtファイルを用意し、segment_julius.plを実行します。

perl segment_julius.pl wav/sample.wav wav/sample.txt

実行された音素アライメントの結果がwav/sample.labに書き出されます。

0.0000000 0.2425000 silB
0.2425000 0.3325000 ky
0.3325000 0.5725000 o:
0.5725000 0.6925000 w
0.6925000 0.7725000 a
0.7725000 0.8925000 i
0.8925000 0.9925000 i
0.9925000 1.0825000 t
1.0825000 1.1825000 e
1.1825000 1.2825000 N
1.2825000 1.4025000 k
1.4025000 1.4525000 i
1.4525000 1.5125000 d
1.5125000 1.6125000 a
1.6125000 2.0525000 silE

参考

http://shower.human.waseda.ac.jp/~m-kouki/pukiwiki_public/24.html#cb2d81f0

音素セグメンテーションキットのダウンロード

音声認識 Julius 4.2.3 + Mac OSX Mountain Lion 10.8.4 でビルドする方法 - Qiita