Raspberry Pi に VOICEVOX CORE をインストールする

Hitoshi Arakawa | 2024/07/06 Sat 04:09

Raspberry Pi で VOICEVOX を使う方法について書いた。

Raspberry Pi で VOICEVOX を使う|荒川仁志
https://note.com/hitoshiarakawa/n/n32b887f5a2b1

Raspberry Pi で VOICEVOX を使う2|荒川仁志
https://note.com/hitoshiarakawa/n/nfcffd175c952

しかしこれは Raspberry Pi のスピーカーを使うだけで、VOICEVOX は Ubuntu で動かしていた。Raspberry Pi のスペックでは VOICEVOX を動かすのが難しいようだからだ。

その後は Ubuntu ではなく Mac mini に VOICEVOX をインストールして、発声も Mac mini を使っていた。サーバーとクライアントを分けるより1デバイスで完結させたかったので。

ちょうど Mac mini が壊れたので、Raspberry Pi に VOICEVOX のインストールおよび発声をさせることにした。8GB RAM の Raspberry Pi 4 があるので、これなら VOICEVOX が動かせそうだ。

環境:Raspberry Pi 4 Model B 8GB(Bookworm Desktop 64-bit)

以下のサイトに従うことでうまくいった。

VOICEVOX COREをRaspberryPiにインストールしてCLIで便利に音声合成を行おう #RaspberryPi - Qiita
https://qiita.com/ueponx/items/186a7c859b49d996785f

VOICEOX CORE は 0.15.4 のバージョンを使った。

ONNX Runtime については、最新バージョンを使うと音声合成コマンドを実行時に以下のようなエラーが出る。バージョン 1.13.1 を使うとエラーが出なかった。

ImportError: libonnxruntime.so.1.13.1: cannot open shared object file: No such file or directory

Open Jtalk についてはもともとバージョン 8-1.11 しか公開されていないので、それを使った。

cron に登録するにはワンライナーで実行したい。Python の仮想環境に入る必要があるので厄介だが、以下のようにすればいい。

$ cd voicevox && source voicevox/bin/activate && python ./voicevox.py テストです。 && aplay voicevox.wav && deactivate && cd

voicevox.py は上記サイトのものを以下のように変更してシンプルにしている。

変更前:
with open("./" + text + ".wav", "wb") as f:

変更後:
with open("./voicevox.wav", "wb") as f:

でも cron に登録するならもっとシンプルなコマンドにしたいので、シェルスクリプトを書いた。

(1)voicevox.sh というファイルを作成し、以下を記述する。

#!/bin/bash
text=$1

cd voicevox
source voicevox/bin/activate
python ./voicevox.py $text
aplay voicevox.wav
deactivate

(2)1に実行権限を与える。

$ sudo chmod 735 voicevox.sh

(3)実行する。

$ ./voicevox.sh テストです。

だいたい 12 秒ぐらいのタイムラグで発声するので十分なレスポンスだ。

(4)cron に登録するには以下のようにジョブを指定する。

0 15 * * * echo "cronに登録したよ。" | XDG_RUNTIME_DIR=/run/user/$(id -u) xargs /home/{ユーザー名}/voicevox.sh

XDG_RUNTIME_DIR=/run/user/$(id -u) を記述しなければ音声が再生されない。このことにたどり着くのに時間がかかった。

参考:
VOICEVOX COREをRaspberryPiにインストールしてCLIで便利に音声合成を行おう #RaspberryPi - Qiita
https://qiita.com/ueponx/items/186a7c859b49d996785f

Releases · VOICEVOX/voicevox_core · GitHub
https://github.com/VOICEVOX/voicevox_core/releases

Releases · microsoft/onnxruntime
https://github.com/microsoft/onnxruntime/releases

Index of /project/open-jtalk/Dictionary
https://jaist.dl.sourceforge.net/project/open-jtalk/Dictionary/

RaspberryPiでVOICEVOXうごかせたぞ~!|koppesan
https://note.com/koppesan/n/n266fa5d61bdb

bash - Audio doesn’t play with crontab on Raspberry Pi - Stack Overflow
https://stackoverflow.com/questions/42497130/audio-doesnt-play-with-crontab-on-raspberry-pi

Amazon.co.jp: ラズベリーパイ 4 コンピューターモデルB 8GB Raspberry Pi 4 ラズパイ 4 TELEC認定取得済み (Raspberry Pi 4 8GB) : パソコン・周辺機器
https://amzn.to/4bw9fQi