音声合成のために日本語を音素に変換する
00
はじめに

近年の音声合成は以下のような構造をとることが多いです。

01

今まで私は主に音響モデル部分を中心に記事を書いてきました。しかし意外と重要なのがこのテキスト処理部分です。今回はテキスト処理についてまとめていきます。

02
テキスト処理ライブラリpyopenjtalk

私も最初は自分でテキスト処理の部分を作っていたのですが、なかなか難しいです。そこで色々調べてみたところ、pyopenjtalkというテキスト処理のライブラリを知りました。結論から言うと、日本語のテキスト処理に関してはpyopenjtalkライブラリを使っていればそれで問題ないレベルで素晴らしいライブラリです。

pypenjtalkの環境構築
2021-03-24以降

v0.1.0がリリースされたことにより、LinuxかMacならば、単にpip installするだけでインストールできるようになりました。

pip install pyopenjtalk
2021-03-24より前

pyopenjtalkは環境構築が少し難しいです。そこでgoogle colabでpyopenjtalkの環境構築が含まれているものを見つけました。以下のように環境構築をしてpyopenjtalkをインストールすれば動かすことが可能です。

!mkdir tools && cd tools && git clone https://github.com/r9y9/hts_engine_API.git
!mkdir -p tools/hts_engine_API/src/build && cd tools/hts_engine_API/src/build && \
 cmake -DCMAKE_INSTALL_PREFIX=../.. .. && make -j && make install
!cd tools && git clone https://github.com/r9y9/open_jtalk.git
!mkdir -p tools/open_jtalk/src/build && cd tools/open_jtalk/src/build && \
 cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON \
 -DHTS_ENGINE_LIB=../../../hts_engine_API/lib \
 -DHTS_ENGINE_INCLUDE_DIR=../../../hts_engine_API/include .. && \
 make install
!cp tools/open_jtalk/src/build/*.so* /usr/lib64-nvidia
!cd tools && git clone https://github.com/r9y9/pyopenjtalk.git
!pip install pyopenjtalk==0.0.3

参考:

pyopenjtalkの使い方

環境構築が終われば、以下のようにpyopenjtalkを使って音素を取得することができます。

import pyopenjtalk
text = "こんにちは"
phones = pyopenjtalk.g2p(text, kana=False)
print(phones)

出力

k o N n i ch i w a
まとめ

もともと自分でMeCabやら色々使ってテキスト処理をしていましたが、こんな便利なライブラリがあるなら早めに使っていれば良かったです。

参考文献
TOP
プロフィール
icon
シロワニさん
twitter
@shirowanisan
ソフトウェア