窓を作っては壊していた人のブログ

この謎のブログタイトルの由来を知るものはもういないだろう

Juliusで音素セグメンテーションするのを簡単に試せるDocker Image公開しました

Docker Hubはこちら Docker Hub

GitHubリポジトリはこちら

github.com

大学時代に自作の音声コーパスを研究室で作成し(作ったのは私ではないが)、それをもとに研究を行っていました。

私は音声認識の研究を行っていたのですが、音響モデルの学習を行ううえで無音区間はどの箇所にあわられている、みたいなざっくりとした情報が必要でした。 またText-to-Speechの様な音声合成の分野においても、コーパスを用いて学習する場合、どこからどこが何の音素を表現しているか、みたいな情報が学習に必要になります。

研究用に提供されている音声コーパスにはそういった研究のために

  • 話している文章の書き起こし
  • 提供している音声のどの区間がどの音素かという音素情報
  • カタカナ・ひらがな読み

みたいなファイルが同梱されていることが多く、音声認識やText-to-Speechのモデルを学習するツールキットはそのファイルが同梱されていることを前提として作られていることが多かったりします。

今回は話している文章の書き起こしと読み情報しかないため、自分たちで音素情報を作る必要がありました。

それをある程度自動化して、細かいところを自分で修正するだけにしたいってことで作ったのが上記のツールになります。

基本的にはJulius segmentation-kitをちょっと改造したみたいな雰囲気の作りになっています

GitHub - julius-speech/segmentation-kit: Speech Segmentation Toolkit using Julius

研究室で使う時に例えばPerlのバージョンなりJuliusのバイナリなり、それがリンクしているライブラリのバージョンを固定して……みたいのがあって同じ環境で作ってもらうの面倒だなーってことでPythonでちょっと書き直して、みたいなことをしました。 plenvあるじゃん、みたいな話は今はしないでおこう。 その時はDocker Imageまでは作っていなかったので、正直みんなが使える状態だったかと言われると微妙なところではありますが、まぁみんないい感じに使えてました。

っていう昔話はおしまいで、使い方に移りましょう。

READMEを参照して欲しい、というのはあるのですが

音声と

マタ トージノヨーニ ゴダイミョウオート ヨバレル シュヨーナ ミョーオーノ チューオーニ ハイサレルコトモオーイ

こんな感じのカタカナで書かれた音声の読みファイルを用意して

$ docker run --rm -v `pwd`/sample:/tmp yamachu/julius4seg sp-remove /tmp/sample_voice.wav /tmp/seg.txt /tmp/out.wav

みたいな感じで走らせると

0 71 silB
72 74 m
75 83 a
84 91 t
92 108 a
109 137 sp
138 144 t
145 164 o:
165 170 j
171 173 i
174 179 n
180 185 o
...

みたいに何msecの位置にどの音素が来ているのかみたいのが見えるようになります。

コーパス作りや音素セグメンテーションにお役立てください。