Raspberry Pi と VOICEVOX で Discord の読み上げBotを作ってみる
今回の記事は、Macでの作業となりますのでご留意ください。
利用製品
- Raspberry Pi4 ModelB 4GB(技適対応品)
- microSDカード
- ケース
Raspberry Pi 初期設定編
1. OSのダウンロード
今回はVOICEVOXを使うため、64BitのOSが必要です。
Raspberry Pi OS (64-bit)
なるべく軽量なものが良かったため、今回は Raspberry Pi OS Lite
を利用することにしました。
Raspberry Pi OS Lite
Release date: November 19th 2024
System: 64-bit
Kernel version: 6.6
Debian version: 12 (bookworm)
Size: 438MB
Show SHA256 file integrity hash: 6ac3a10a1f144c7e9d1f8e568d75ca809288280a593eb6ca053e49b539f465a4
2. microSDカードに書き込み
-
diskutil list
コマンドで、マウントの確認 -
diskutil unMountDisk /dev/disk10
コマンドで、フォーマット前にアンマウント -
diskutil eraseDisk MS-DOS [デバイス名] /dev/disk10
コマンドで、フォーマットを実行 -
diskutil unMountDisk /dev/disk10
コマンドで、OSを書き込む前にアンマウント -
sudo dd if=./2024-11-19-raspios-bookworm-arm64-lite.img of=/dev/rdisk10 bs=1m
コマンドで、OSを書き込む
OSの書き込みが完了したら、microSDカードをRaspberry Piに挿入して電源をON!
参考
3. OSの初期設定
sudo raspi-config
コマンドを実行するとTUI
が立ち上がるので、下記の設定を行います。
- SSHの有効化
- Wi-FIの設定
4. 無線LANのIP固定化
IPアドレスは各自の環境に合わせて変更してください。
-
下記のファイルを開く
sudo vi /etc/NetworkManager/system-connections/<SSID>.nmconnection
-
[ipv4]
セクションが以下のようになっているため、適宜書き換えます。[ipv4] method=auto
下記に書き換える
[ipv4] method=manual address1=192.168.10.50/24,192.168.10.1 dns=8.8.8.8;
参考
Discord Bot 作成編
下記のサイトからBotを作成します。
Raspberry Pi に VOICEVOX の導入
Raspberry Pi に VOICEVOXを導入する場合に、voicevox_core
での構築記事は見かけたのですが、voicevox_engine
での構築記事は見当たらなかったので後者で構築。
voicevox_core
とvoicevox_engine
の違いですが、voicevox_engine
はvoicevox_core
をラップした形になっており、若干重くはなりますが、そのぶん使いやすくなっています。
詳細は公式の全体構成が参考になります。
voicevox_engine
のLinux(CPU/arm64版)版のリリースは、2025年2月28日と意外と最近です。
-
公式からファイルをダウンロード
wget https://github.com/VOICEVOX/voicevox_engine/releases/download/0.23.0/voicevox_engine-linux-cpu-arm64-0.23.0.7z.001
-
解凍
7z x voicevox_engine-linux-cpu-arm64-0.23.0.7z.001
-
実行
解凍したディレクトリに移動して下記を実行
サーバーが起動するので、APIを利用して音声を生成できます。./run
Raspberry Pi で Discordに投稿されたチャットの読み上げ
-
読み上げに必要なライブラリをインストール
sudo apt update sudo apt install ffmpeg
-
python
仮想環境の準備python3 -m venv botenv source botenv/bin/activate
-
pythonのライブラリ導入
pip install -U "discord.py[voice]" requests
-
Discordに投稿されたチャットの読み上げるスクリプトの作成
環境に応じたカスタマイズを行えば良いかと思います。
システム起動時に起動するように設定
システム起動時と再起動時に自動起動するようにsystemd
サービスファイルを作成して登録する。
voicevox_engine
sudo vi /etc/systemd/system/voicevoxengine.service
[Unit]
Description=voicevox engine
After=network.target
[Service]
User=pi
WorkingDirectory=/home/pi/voicevox_engine-0.23.0
ExecStart=/home/pi/voicevox_engine-0.23.0/run
Restart=always
[Install]
WantedBy=multi-user.target
Discord読み上げスクリプト
sudo vi /etc/systemd/system/discordbot.service
[Unit]
Description=Discord VoiceBot
After=network.target
[Service]
User=pi
WorkingDirectory=/home/pi/discord_bot
ExecStart=/home/pi/discord_bot/botenv/bin/python /home/pi/discord_bot/main.py
Restart=always
[Install]
WantedBy=multi-user.target
登録と有効化
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable voicevoxengine.service
sudo systemctl start voicevoxengine.service
sudo systemctl enable discordbot.service
sudo systemctl start discordbot.service
さいごに
Raspberry Pi4 ModelB 4GB
のスペックでは音声の生成にかなり時間がかかります。
例えば、今日もご飯が食べたいな〜
という文章の読み上げ音声を生成するのに17秒かかる。
読み上げ用のチャットは、週1くらいの投稿頻度で即応性も必要ないので、投稿してから20秒後に読み上げられても問題ないと思う。
Raspberry Pi4 ModelB 4GB
程度のサイズで、高性能なデバイスがあると嬉しいところです。
Discussion