Juliusによる音素セグメンテーションをmacOS 14.0で行う

大量の音声データの子音・母音をアノテーションする必要があったのでJuliusを試してみることにしました。今のところはPraatで手動でタグ付けしています。

まずJuliusの導入ですが、ドキュメントが散在していてわかりにくいですね。

現在Juliusのコードやドキュメントは https://github.com/julius-speech/julius にあります。OSDNやSorceForge.jpにあるものはリンク切れのようです。

今回は音素セグメンテーションということでSpeech Segmentation Toolkit https://github.com/julius-speech/segmentation-kit を使います。

1. Homebrew経由でJuliusのインストール

Homebrewは

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

でインストールします。
Juliusは
brew install julius

でインストールします。ここで

whereis julius 

でjuliusがインストールされた場所を確認します。 

私の環境では

/opt/homebrew/bin/julius

にインストールされました。

2. SegmentationToolkitのダウンロード

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

で任意のディレクトリにcloneします。

そしてsegment_julius.plを修正します。

52行目の

$juliusbin="./bin/julius-4.3.1";

$juliusbin="/opt/homebrew/bin/julius";

に変更します。

これで用意ができました。

ここで注意が必要なのはJuliusは音声ファイルが16kHzモノラルにする必要があります。そしてJuliusの出力するセグメンテーションファイルは.labファイルです。そこで https://github.com/Syuparn/TextGridConverter を使います。

TextGridConverterにはwavファイルを16kHzにするPraat scriptと.labファイルを.TextGrid形式に変換するPythonスクリプトが用意されています。

convertwav_to_16khz.praat

をPraatで開き、実行することでディレクトリを選択できます。ディレクトリを選択することでwavファイルをJuliusが読み込めるように変換してくれます。
そしてsegmentation kitのフォルダのwavディレクトリにwavファイルと同名のテキストファイルを設置します。テキストファイルはセグメンテーションを行う音声ファイルの、ローマ字かひらがながの書き起こしテキストです。
perl segment_julius.pl
でwavディレクトリに.labファイルが生成されます。
これをTextGridConverterのconvert_label.pyでTextGrid形式に変換します。変換時に音素かモーラかを訊かれますので必要な方を選んでください。



なお実際にJuliusによる音素セグメンテーションを行いましたが、精度はイマイチに感じました。これについては今度書きます。

コメント

このブログの人気の投稿

方言の想起