この記事は、「IoTLT Advent Calendar 2024」の 16日の記事です。
Raspi上で音声合成をしたかったので、Voicevoxを使ってずんだもんにしゃべってもらいました。
同様のことをしたい人のため、要点だけに絞って説明します。
ちなみに、今回の使用環境は下記となります。
使用環境:
Hard: Raspberrypi 5
OS: Ubuntu24.04 LTS
まずは仮想環境を構築します
Dockerのインストール
以下コマンドでインストールして、ユーザー権限で実行できるようになります。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
$ sudo gpasswd -a $USER docker
$ newgrp docker
Dockerの動作確認
Dockerが正しくインストールされていることを確認するため、Docker上のHello worldしてみます。
$ docker run --rm hello-world
Voicevox のサーバを起動する
次にDocker
コンテナを使用してVoicevoxのサーバを起動します。
以下のようにコンテナを起動すればOKです。
docker pull voicevox/voicevox_engine:cpu-ubuntu20.04-latest
docker run --rm -p 'localhost:50021:50021' voicevox/voicevox_engine:cpu-ubuntu20.04-latest
起動したサーバに対して
- 音声合成用のクエリ作成(JSONファイル作成)し、
- 生成された合成音声の出力(WAVEファイル作成)を行い
- 合成された音声をaplayコマンドでスピーカに出力します
$ curl -s -X POST "localhost:50021/audio_query?speaker=1" --get --data-urlencode "text=こんにちは、世界" > query.json \
&& curl -s -H "Content-Type: application/json" -X POST -d @query.json "localhost:50021/synthesis?speaker=1" > audio.wav \
&& aplay audio.wav
これでRaspiにつながったモニター・スピーカからずんだもんの声が聞こえます。
スピードは上記コマンドを打って体感で2秒くらいになりました。
おわりに
Raspberry Pi 5
からDocker上のVOICEVOX APIにアクセスして、音声合成を行うことができました。