見出し画像

RaspberryPiでVOICEVOXうごかせたぞ〜!

24/02/29追記 別のプロファイルで試したら、動かなかったので、動くように追加の手順を追加しました!

動かなかった方々 ごめんなさい!

注意!

ここではvoicevox-core(バージョン0.14.5)を対象にしています!

voicevox_core0.15.0を頑張って動かせるようにしています!
お待ちください!


RaspiでVoicevoxを使いたい!!!

初投稿です。見にくい文章かもしれませんが、この記事で、一人でもRaspberryPiでVoicevoxを楽しめる人が増えると嬉しいです!



概要(飛ばしてもらって結構です…)

な〜んか最近ゆっくりでも、ボイロでもない声があるな?

Youtubeを見ていた私はそう思いました。
「なんの声を使っているんだろう?」
気になったので、概要欄を見てみると、

VOICEVOX:ずんだもん

Youtuberの友達の動画から

VOICEVOX?何だこいつ みたことないぞ?

見つけてちょっと後

(・∀・)めっちゃいいやんこれ

しかし、私の使っているPCは
RaspberryPi
voicevoxをインストーラーで入れようとしても

音声合成エンジンが異常終了しました。エンジンを再起動してください。

実行結果
エラー起こっちゃった(´・ω・`)ショボーン

そう、動かないのである

うん、しってた(´;ω;`)
Raspiだと色々動かないもんね(Edgeとか、Edgeとか、Edgeとか(#^ω^))

もういいGoogleColabで遊ぶ!
ColabでVOICEVOXってどうやるんだ?

ちょっと調べてものものテックさんの記事を見つけました。
以下引用させていただいたコードです。

#初期設定 (2023/07/24修正) !curl -sSfL https://raw.githubusercontent.com/VOICEVOX/voicevox_core/8cf307df4412dc0db0b03c6957b83b032770c31a/scripts/downloads/download.sh | bash -s %cd voicevox_core/ !wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.14.1/voicevox_core-0.14.1+cpu-cp38-abi3-linux_x86_64.whl !pip install voicevox_core-0.14.1+cpu-cp38-abi3-linux_x86_64.whl !wget https://raw.githubusercontent.com/VOICEVOX/voicevox_core/406f6c41408836840b9a38489d0f670fb960f412/example/python/run.py

https://monomonotech.jp/kurage/memo/230227_voicevox_colaboratory.html

#実行 (2023/06/15修正) text = 'どうも、クラゲジュニアです。よろしくね' speaker_id = 0 !python ./run.py --dict-dir "./open_jtalk_dic_utf_8-1.11" --text $text --out "../data.wav" --speaker-id $speaker_id from IPython.display import Audio Audio('../data.wav', autoplay=True)

https://monomonotech.jp/kurage/memo/230227_voicevox_colaboratory.html

あれ?VOICEVOXインストーラーは?

つかって、、、ない?

ここから、私の壮絶な解析作業が始まるのであった。
長々と概要ごめんなさい_(._.)_

じゃあRaspiで使おうか

おーっとおーっとおっと

この下の手順を実行する前に、voicevox_coreをpipで入れてあげないと動かないみたいです!

Traceback (most recent call last):
File "/media/me/9C33-6BBD/voicevox/voicevox/./run.py", line 8, in <module>
import voicevox_core
ModuleNotFoundError: No module named 'voicevox_core'

こんな感じのエラー出てる人向けです!

事前にvoicevox_coreをインストールしたいディレクトリに移動しておいてください!

もしうまく行かない場合は、pip3とかの他のバージョンだとうまく行くかも
pyenvとかでほかバージョンのpythonを入れている場合、
使いたいpythonバージョンと、同じバージョンのpipを使ってください
(例)  python3.11を使う場合
pip3.11を使ってください(↓のpipを置き換えればOK)

 #事前にvoicevox_coreをインストールしたいディレクトリに移動しておいてください
wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.14.5/voicevox_core-0.14.5+cpu-cp38-abi3-linux_aarch64.whl
pip install ./voicevox_core-*-linux_aarch64.whl

これを追記する前に失敗していた人 ごめんなさい!
これで動くようになりました!


解析していきます
(最後にまとめあるのでコードほしいだけの人はそちらでどうぞ!)

curl -sSfL https://raw.githubusercontent.com/VOICEVOX/voicevox_core/8cf307df4412dc0db0b03c6957b83b032770c31a/scripts/downloads/download.sh | bash -s

この行
Raspiでそのまま実行すると、

aarch64はサポートされていない環境です

Raspiの実行結果

う〜ん、、、Colabの実行の様子見てみる?

open_jtalkをhttps://jaist.dl.sourceforge.net/project/open-jtalk/Dictionary/open_jtalk_dic-1.11/open_jtalk_dic_utf_8-1.11.tar.gzからファイルをダウンロードします...
voicevox_coreをhttps://github.com/VOICEVOX/voicevox_core/releases/download/0.14.5/voicevox_core-linux-x64-cpu-0.14.5.zipからファイルをダウンロードします...

Colabの実行結果

うん、ファイルダウンロードして、解凍してvoicevox_coreディレクトリ作ってぶち込んでるだけだわ
Raspiはaarch64だからURLを直して、こんなプログラムでどうでしょう

cd {VOICEVOXの置きたいフォルダ名}
wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.14.5/voicevox_core-linux-arm64-cpu-0.14.5.zip
7z x -o"./" ./voicevox_core-linux-arm64-cpu-0.14.5.zip
cd ./voicevox_core/
wget https://jaist.dl.sourceforge.net/project/open-jtalk/Dictionary/open_jtalk_dic-1.11/open_jtalk_dic_utf_8-1.11.tar.gz
7z x -o"./" ./open_jtalk_dic_utf_8-1.11.tar.gz


run.pyがない

持ってくるか

wget https://raw.githubusercontent.com/VOICEVOX/voicevox_core/406f6c41408836840b9a38489d0f670fb960f412/example/python/run.py

Colabだと、ディレクトリの階層はこんな感じです

Colabのディレクトリの様子

とりあえずrun.pyをvoicevox_coreにぶち込んでおきましょう
よし試すか

./voicevox_core/run.py

↑上のやつを実行していきます

テスト実行(1回目)

まあ、エラー起こるわな

Traceback (most recent call last):
File "/home/koppepan/./voicevox_core/voicevox_core/run.py", line 8, in <module>
import voicevox_core
File "/home/koppepan/.local/lib/python3.9/site-packages/voicevox_core/__init__.py", line 11, in <module>
from ._rust import METAS, SUPPORTED_DEVICES, VoicevoxCore # noqa: F401
ImportError: libonnxruntime.so.1.13.1: cannot open shared object file: No such file or directory

実行結果

重要そうなのは

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

エラーから抜粋

ここだ
Onnxruntimeって何?
とりあえず、VOICEVOX onnxruntime raspiで調べるか
こんなんでてきた

arm64ある
これがいるんかな?

githubの最新リリース

ダウンロードして、voicevox_coreで展開!

テスト実行2回目

同じエラーだ

Traceback (most recent call last): File "/home/koppepan/./voicevox_core/voicevox_core/run.py", line 8, in <module> import voicevox_core File "/home/koppepan/.local/lib/python3.9/site-packages/voicevox_core/__init__.py", line 11, in <module> from ._rust import METAS, SUPPORTED_DEVICES, VoicevoxCore # noqa: F401ImportError: libonnxruntime.so.1.13.1: cannot open shared object file: No such file or directory

実行結果

えっ?バージョン1.13.1じゃないといけないの?

バージョン1.13.1をダウンロードして、解凍!

テスト実行3回目

またまた同じエラーだ

Traceback (most recent call last): File "/home/koppepan/./voicevox_core/voicevox_core/run.py", line 8, in <module> import voicevox_core File "/home/koppepan/.local/lib/python3.9/site-packages/voicevox_core/__init__.py", line 11, in <module> from ._rust import METAS, SUPPORTED_DEVICES, VoicevoxCore # noqa: F401ImportError: libonnxruntime.so.1.13.1: cannot open shared object file: No such file or directory

実行結果

大丈夫?繰り返しの多いコンテンツに該当しない?

もっかいColabのディレクトリ確認しよう

Colabのディレクトリの様子(環境保護のために同じ画像を使用しています)

ん?libonnxruntime.so.1.13.1 ?
もしかして…

あっ

onnxruntime /onnxruntime-linux-arm64-cpu-v1.13.1/lib
になんかある
これをvoicevox_coreに入れればいいのか?

テスト実行4回目

…[INFO] __main__: Wrote `output.wav`
[DEBUG] voicevox_core_python_api: Destructing a VoicevoxCore

実行結果

うっ、動いた?
これで使えるようになった?

音声ファイル聞いてみよ
完成品は./output.wavにあるようです

キェェェェェェアァァァァァァシャァベッタァァァァァァァ!!!

やっ↑だぜ
思ってたよりあっさりできた


まとめるよ(ここにプログラムおいてあります)

ファイルの位置を工夫したり、エラー内容をしっかり読めば初心者でもできると思います。
でもめんどくさい ので プログラムにまとめました。
Raspiのひとはこれを実行するだけで使えるようになる(はず)

自動でインストールする!

注意!はじめにcdでvoicevoxを置くためのディレクトリへ移動しておいてください。

Voicevox_Core 0.14.5をダウンロードするようになっていますが、一行目のURLを新しいバージョン/古いバージョンのものにすればある程度はそのまま使えると思います。
↓ダウンロード&展開&配置スクリプト(五分程度かかります)

wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.14.5/voicevox_core-linux-arm64-cpu-0.14.5.zip
7z x -o"./" ./voicevox_core-linux-arm64*.zip
mv ./voicevox_core-linux-arm64*.zip ./d-voicevox_core.zip
mv ./voicevox_core-linux-arm64* ./voicevox_core
cd ./voicevox_core/
wget https://jaist.dl.sourceforge.net/project/open-jtalk/Dictionary/open_jtalk_dic-1.11/open_jtalk_dic_utf_8-1.11.tar.gz
7z x -o"./" ./open_jtalk_dic_utf_8-1.11.tar.gz
7z x -o"./" ./open_jtalk_dic_utf_8-1.11.tar
wget https://raw.githubusercontent.com/VOICEVOX/voicevox_core/406f6c41408836840b9a38489d0f670fb960f412/example/python/run.py
wget https://github.com/VOICEVOX/onnxruntime-builder/releases/download/1.13.1/onnxruntime-linux-arm64-cpu-v1.13.1.tgz
7z x -o"./" ./onnxruntime-linux-arm64-cpu-v1.13.1.tgz
7z x -o"./" ./onnxruntime-linux-arm64-cpu-v1.13.1.tar
mv ./onnxruntime-linux-arm64-cpu-v1.13.1/lib/libonnxruntime.so.1.13.1 ./

本当に入れられたかのテスト

入れ終わったら↓下のプログラムでoutput.wavが作成されて、ちゃんと喋っているかを確認することを推奨します。
(音が出ます注意してください!)

cd {run.pyがおいてあるディレクトリのパスを指定※ここは書き換えてください}
python3 run.py#だいたい20~30秒ぐらい?かかるます
aplay ./output.wav

いらないファイルの削除(容量を少しでも空けたい人向け)

必要ないzipファイルとか、onnxruntimeフォルダーを消します。

cd {run.pyがおいてあるディレクトリのパスを指定※ここは書き換えてください}
rm ../d-voicevox_core.zip
rm ./voicevox_core-linux-arm64-cpu-0.14.5.zip
rm ./open_jtalk_dic_utf_8-1.11.tar.gz
rm ./open_jtalk_dic_utf_8-1.11.tar
rm ./onnxruntime-linux-arm64-cpu*.tgz
rm ./onnxruntime-linux-arm64-cpu*.tar
rm -r ./onnxruntime-linux-arm64-cpu*

手動でインストールする!

  1. ディレクトリを作る&移動

    1. VOICEVOXを入れるフォルダを作ります。※わかりやすい名前推奨

    2. コマンドラインorファイルマネージャーで↑で作ったディレクトリへ移動してください。

  2. 必要なファイルをダウンロード&解凍する

    1. https://github.com/VOICEVOX/voicevox_core/releases/latestから
      download-linux-arm64って書いてあるzipファイルをダウンロードする

    2. ↑のファイルを解凍する

  3. ↑ファイルを解凍したことで出てきたvoicevox_coreディレクトリに移動してください

  4. 更に必要なファイルをダウンロードする

    1. https://jaist.dl.sourceforge.net/project/open-jtalk/Dictionary/open_jtalk_dic-1.11/open_jtalk_dic_utf_8-1.11.tar.gz

    2. https://raw.githubusercontent.com/VOICEVOX/voicevox_core/406f6c41408836840b9a38489d0f670fb960f412/example/python/run.py

    3. https://github.com/VOICEVOX/onnxruntime-builder/releases/download/1.13.1/onnxruntime-linux-arm64-cpu-v1.13.1.tgz

    4. 上3つのファイルを解凍してください。

  5. ./voicevox_core/onnxruntime-linux-arm64-cpu-v1.13.1/lib/libonnxruntime.so.1.13.1
    の共有ライブラリを./voicevox_coreディレクトリへ移動させてください。

  6. python3 run.pyを実行して、output.wavができたら準備完了!


実際に合成してみる

python3 run.py

このプログラムを基本として以下のオプションを追加することで色々できます!

  • python3 run.py#基本形

    • -h, --help ヘルプを表示して終了
      例: python3 run.py -h

    • --mode MODE 合成モードを選択:"AUTO", "CPU", "GPU"
      例: python run.py --mode "CPU" #CPUモードで合成します。

    • --dict-dir DICT_DIR OpenJTalkの辞書ディレクトリパス
      例: python run.py --dict-dir "./open_jtalk_dic_utf_8-1.11" #ここの記事のスクリプトを使ってvoicevoxを入れた場合はこのディレクトリを指定してください。

    • --text TEXT 読み上げさせたい文章を設定
      例: python run.py --text "科学の力ってすげー" #科学の力ってすげーって読んでくれます

    • --out OUT 出力されたwavファイルを置くディレクトリ、ファイル名を指定
      例: python --out ./output/できたやつ.wav
      #できたやつ.wavというファイルが./output/ディレクトリに生成されます。

    • --speaker-id SPEAKER_ID 話者IDを指定する
      例: python ----speaker-id 46 #これで声が小夜(SAYO)のものになります

      • 話者IDは以下のファイルを参考にしてください
        (voicevox_coreバージョン0.14.5時点でのデータです。)
        ダウンロード・改変は自由にどうぞ。
        でも、再配布はやめてください!(1時間かけて頑張って手打ちしたから!)
        sha256ハッシュコード(ファイル内にも書いてあります。)

sha256:f2968964a9a53a714f2dc259b88367a161bc5d4a68595b2fc1a60725e33a7bc6

以上!

ここまで読んでくださりありがとうございましたm(_ _)m
生まれて初めて書いた記事なので読みにくいところとかあったらごめんなさい
わからないところ、動かないところがあったらどしどしコメント欄で聞いてください!
一人でも多くの人がRaspberryPiでVOICEVOXを使えると嬉しいです!
さ〜てVOICEVOXで遊ぶぞ〜!



出典と感謝(この記事で出てきた順)

  • Youtuberの友達(VOICEVOXを知ったきっかけ)

  • VOICEVOX並びにVOICEVOX:ずんだもん,VOICEVOX:四国めたん
    VOICEVOX:小夜/SAYO,
    素晴らしい音声合成ソフトです。これが無料なんて科学の力ってすげー!
    https://voicevox.hiroshiba.jp

  • Google Colaboratory
    これがなかったら、RaspiでVOICEVOXをする方法は確立されてませんでした。(なかったらonnixruntime関係がわからなかった)

ここにVOICEVOXを作成したHiroshibaさんと
ものものテックのクラゲジュニアさん、
そして最後まで見てくださったそこのあなたに感謝します!
いいねくーださい!

この記事が気に入ったらサポートをしてみませんか?