はじめに - VOICEVOXとは
日本語を喋らせることができるソフト。Rustで実装されている。内部ではONNXRuntimeとか走っているようだ。
Ruby版 - voicevox.rb
sevenc-nanashi さんが作っている。Ruby-FFIを使っている。
インストール
VOICEVOXのインストール方法はクセが有る。今後も方法が変わるかもしれないので、最新の情報を当たってほしい。まず、公式からダウンローダーを入手する。そして、ダウンローダを実行すると必要なファイルが入手される。
具体的には公式のREADMEを読んでほしい。
Windowsの場合
Invoke-WebRequest https://github.com/VOICEVOX/voicevox_core/releases/latest/download/download-windows-x64.exe -OutFile ./download.exe
./download.exe
Linux/macOSの場合
binary=download-linux-x64
curl -sSfL https://github.com/VOICEVOX/voicevox_core/releases/latest/download/${binary} -o download
chmod +x download
./download
実行すると、open_jtalk_dic_utf_8
voicevox_core-linux-x64-cpu
がダウンロードされ、
voicevox_core
ディレクトリが得られる。ひょっとすると他のプラットフォームでは異なるのかもしれないが、Linuxではこんな感じだ。
voicevox_core
├── libonnxruntime.so.1.13.1
├── libvoicevox_core.so
├── model
├── open_jtalk_dic_utf_8-1.11
├── README.txt
├── VERSION
└── voicevox_core.h
これのインストール方法であるが、libvoicevox_core.so
は libonnxruntime.so.1.13.1
に依存している。しかし、この2つの共有ライブラリだけコピーすると、modelがないと言われてしまう。何らかの環境変数による設定が可能なのかもしれないが、デフォルトでは model
は libvoicevox_core.so
と同じディレクトリに存在すると想定されているようだ。なので/usr/local/lib
などにコピーでインストールするのはやめて、このディレクトリ適当な場所に配置した上で LD_LIBRARY_PATH
に含めるのが良さそうでさる。
export LD_LIBRARY_PATH="/path/to/voicevox_core:$LD_LIBRARY_PATH"
実は今まであまり気がついていなかったのだが、Ruby-FFIはLD_LIBRARY_PATH
で指定したディレクトリの中の共有ライブラリを見にいってくれるそうだ。知らなかった。筆者の自作のライブラリはもっぱらpkgconfigで .pc
ファイルを見に行くことにより、共有ライブラリの位置を割り出すようにしていたので、LD_LIBRARY_PATH
には対応できていないかもしれない。
個人的には、vendor
ディレクトリの中に、共有ライブラリなどすべて必要なファイルを梱包して、GemにインストールできるようにするAnkaneさん方式のGemが好きなのだが、VOICEVOXは依存ファイルが多いため、その方式が難しいと思われる。またパッケージマネージャーを通した配布ではなく、download
コマンドの実行という特殊な配布形式となっているため、現行の方法がまだ一番マシかもしれない。
それから openjtalk の場所も教えてあげる必要がある。この環境変数は正式なものがまだ決まっていないらしく、例えば次のようにする。
export OPENJTALK_DICT="/path/to/voicevox_core/open_jtalk_dic_utf_8-1.11"
これでexampleが動くようになる。
bundle install
bundle exec ruby examples/repl_wrapper.rb
この記事は以上です。良きRubyライフを!