日本語の文字列をオーディオデータに変換するOpen JTalkの概要とインストール(2012年1月上旬時点)
概要
Open JTalk(http://open-jtalk.sourceforge.net/)は日本語向けのtext-to-speechという類のソフトウェアで、文字列をオーディオデータ(WAVE形式)に変換することができる。コマンド名はopen_jtalk。文字列には漢字も使えるが、誤読することもある。
OSに依存しない作り(C言語の標準Cライブラリのみを使用)となっており、GNU/Linuxでも動作する。また、プログラム部分のライセンスが修正BSD/三条項(3-clause)となっており、自由なソフトウェアであることも大きい。
パッケージの構成
hts_engine API関係
Open JTalkをビルドするにはhts_engine API(http://hts-engine.sourceforge.net/)というライブラリを別途用意(ビルド含む)しておく必要がある。このライブラリは静的リンクライブラリのみを提供し、ビルド後はOpen JTalkに組み込まれる(ビルドしたOpen JTalkは単体で動作する)。
Open JTalkのビルド時には--with-hts-engine-header-path(hts_engine APIのヘッダを配置したディレクトリ)や--with-hts-engine-library-path(hts_engine APIのライブラリを配置したディレクトリ)といったオプションをconfigureスクリプトに渡す必要がある。
声データ
Open JTalkは声の種類を声データによって変えることができ、Open JTalk本体のサイトからは男声の「NIT ATR503 M001」,Open JTalkを用いたMMDAgent(http://www.mmdagent.jp/)というソフトウェアの「Sample Script」というパッケージからは女声の「Mei」がそれぞれ入手できる。これらのライセンスはクリエイティブ・コモンズのAttribution (CC-BY) 3.0となっている(営利目的での使用も可)。
一覧
パッケージ | 説明 | ライセンス |
---|---|---|
hts_engine API | Open JTalkのビルドに必要なライブラリで静的リンクされる(Open JTalkのビルド時に組み込まれる)・ライブラリとは別にhts_engineというコマンドも含まれる | 修正BSD/三条項 |
声データ(NIT ATR503 M001やMei) | 声のデータ | CC Attribution (CC-BY) 3.0 |
Open JTalk | 本体(辞書が付属) | 修正BSD/三条項 |
(追記)Debian/Ubuntu公式のパッケージについて
(2012/1/16)Ubuntu 12.04(Debianではwheezy)からは以下のDebian/Ubuntu公式のパッケージが追加されており、標準で利用可能となることが分かった(Meiの声データのみ存在しない)。hts_engine APIは共有オブジェクト(libHTSEngine.so.1.0.0/libHTSEngine.so.1)として提供される。
- open-jtalk (Open JTalkの本体・UTF-8向け)
- open-jtalk-mecab-naist-jdic (Open JTalkの辞書・配置場所は/var/lib/mecab/dic/open-jtalk/naist-jdic/以下・エンコーディングはUTF-8)
- libhtsengine-dev (hts_engine APIの開発パッケージ)
- libhtsengine1 (hts_engine APIのライブラリ)
- htsengine (hts_engineコマンド)
- hts-voice-nitech-jp-atr503-m001 (男声データ・配置場所は/usr/share/hts-voice/nitech-jp-atr503-m001/以下)
下の自作パッケージはOpen JTalkの辞書のディレクトリが異なる。
Ubuntu向けの自作パッケージ(11.10向け)
今回、Ubuntu 11.10向けのパッケージを以下のパッケージ名で作成し、「milkjfフォントとut(内海氏)版AnthyのUbuntu向けパッケージを作成(2010/11/20現在)」で書いているPPAリポジトリに公開した。
(2012/1/16)Ubuntu 12.04からは標準でパッケージが利用可能となることが分かったため、この自作パッケージは声データのMei(hts-voice-mei)を除いて廃止する予定。
PPAリポジトリにおけるパッケージ名 | 内容 |
---|---|
hts-engine | hts_engineコマンド(Open JTalkからは使われない) |
libhts-engine-dev | hts_engine APIのヘッダファイルと静的リンクライブラリ(Open JTalkのビルド時に必要) |
hts-voice-nitech-jp-atr503-m001 | (男)声データ「NIT ATR503 M001」 |
hts-voice-mei | (女)声データ「Mei」 |
openjtalk | 本体(UTF-8向け) |
openjtalk-dic | 本体の辞書部分(アーキテクチャ非依存ファイル群のため本体から分離・UTF-8向け) |
といったパッケージが含まれている関係でディストリのパッケージを用いるようにできないかと調べてみたが、どちらも手が加えられている関係でディストリのパッケージを代わりに使用するようにはできなかった。本体の辞書の配置場所だけは「[インストール先]/dic」という(GNU/Linuxではあまり用いられない)配置を「/usr/share/openjtalk/dic/」以下になるように修正した。
声データの配置については/usr/share/hts-voice/に声ごとのディレクトリが入るようにした。
関連記事: