さくらのクラウドでVOICEVOXを動かす

![スクリーンショット 2023-04-15 10.12.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/a6df68b5-9e51-5f84-2605-6feebde608db.png)

VOICEVOXという無料で使える中品質なテキスト読み上げソフトウェアをさくらのクラウドで動かしてみます。

https://voicevox.hiroshiba.jp

GPU対応しているので、GPUサーバ上でトライします。

# 1.GPUサーバの作成
さくらのクラウドのコントロールパネルから、石狩第1ゾーンを選択し、サーバ追加画面を開きます。
サーバプランは `GPUプラン` を選択、ディスクのアーカイブは `Ubuntu 22.04.1 LTS` を選択します。
ディスクサイズは `100GB` を選択します。

![スクリーンショット 2023-03-17 10.26.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/25cfba44-9a3e-d1e1-804f-f1a94bf8b68e.png)

# 2.GPUドライバのインストール
GPUサーバが完成したら、SSHでログインします。

NVIDIAのドキュメント通りにインストールを行う。
https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html

```shell-session
$ sudo apt-get install linux-headers-$(uname -r)
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g')
$ wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.0-1_all.deb
$ sudo dpkg -i cuda-keyring_1.0-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda-drivers
```

インストールが終わったら再起動を行う。

# 3.ディスクトップ環境、XRDPのインストール
Ubuntuのディスクトップ環境上で動作したいため、必要なパッケージをインストールします。
また、リモートディスクトップ接続でディスクトップ環境するためにXRDPをインストールします。

```shell
sudo apt update
sudo apt -y install ubuntu-desktop task-gnome-desktop xrdp p7zip
sudo apt -y install 
sudo systemctl enable xrdp
```
# 4.リモートディスクトップ接続をする
リモートディスクトップ接続クライアントからサーバに接続します。
筆者は、Microsoft Remote Desktopを利用します。

https://apps.apple.com/jp/app/microsoft-remote-desktop/id1295203466?mt=12

ログイン情報は、ssh接続と同じユーザ名、パスワードでログインできます。

ログイン後初期設定画面が表示されます、 `Start Setup`をクリックします。
![スクリーンショット 2023-04-15 9.51.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/382a6dea-c753-8692-8f13-b699bb8b4b39.png)

キーボードの設定画面です、 `Japanese`を選択し`Next`クリックします。
![スクリーンショット 2023-04-15 9.51.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/9a780e15-fcc0-04e6-5f31-4158bf300ca8.png)

`Next`クリックします。
![スクリーンショット 2023-04-15 9.51.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/dfd7f72c-95ca-2b10-5270-8867d5c61684.png)

`Start Using Ubuntu`クリックします、以上で初期設定は完了です。
![スクリーンショット 2023-04-15 9.51.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/21f86c16-5e5d-db1d-69ec-ca883d17cdfe.png)


# 5.VOICEVOXのインストール

インストールされているFireFoxからVOICEVOXのサイトにアクセスします。`ダウンロード`をクリックします。
![スクリーンショット 2023-04-15 9.54.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/2cc646a6-7a30-a0d3-7b07-4bb1078d2f58.png)

OSは`Linux`、対応モードは`GPU/CPU`を選択し`ダウンロード`をクリックします。
![スクリーンショット 2023-04-15 9.54.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/2cf7e314-7473-13eb-1341-9f680cf1630c.png)

Downloadsフォルダにダウンロードされます。
![スクリーンショット 2023-04-15 9.55.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/ed9a5882-ba0f-c704-d328-eaeb5368a3c6.png)

ダウンロードされたファイルを用いてインストールを実行します、Terminalを開き以下のコマンドを実行します。

```shell
$ cd Downloads/
$ chmod +x VOICEVOX.Installer.0.14.6.Linux.sh 
$ ./VOICEVOX.Installer.0.14.6.Linux.sh 
```
ファイルを開くとセットアップ手順が記載されています。
![スクリーンショット 2023-04-15 9.56.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/227b271e-1561-4dbb-b85f-5274ebbb3759.png)

# 6.リモートディスクトップ接続経由で音声出力を行うための設定

こちらのサイトに沿って設定します。

https://c-nergy.be/blog/?p=17734

```shell
$ sudo apt -y install build-essential dpkg-dev libpulse-dev git autoconf libtool
$ cd ~
$ git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git
$ cd ~/pulseaudio-module-xrdp
$ scripts/install_pulseaudio_sources_apt_wrapper.sh
```

`$ scripts/install_pulseaudio_sources_apt_wrapper.sh` 実行時に出力される`PULSE_DIR=****`をコピーしておきます。
```shell-session
- Creating schroot config file /etc/schroot/chroot.d/pa-build-ubuntu.conf
- Copying /etc/apt/sources.list to the root
- Creating the build directory /build
- Copying the wrapped script to the build directory
- Building PA sources. Log file in /var/tmp/pa-build-ubuntu-schroot.log
- Copying sources out of the build root
- Removing schroot config file and build root
- All done. Configure PA xrdp module with PULSE_DIR=/home/ubuntu/pulseaudio.src
```

コピーしておいた`PULSE_DIR=****`を貼り付け以下のコマンドを実行します。
```shell
$ ./bootstrap && ./configure PULSE_DIR=/home/ubuntu/pulseaudio.src
```

```shell
$ make
$ sudo make install
```

モジュールがインストールされたことを確認します。
```shell
$ ls $(pkg-config --variable=modlibexecdir libpulse) | grep xrdp
module-xrdp-sink.la
module-xrdp-sink.so
module-xrdp-source.la
module-xrdp-source.so
```

# 7.VOICEVOXの実行
以上でリモートディスクトップ経由でVOICEVOXを実行することができます。

最後にリモートディスクトップ経由で音声を再生するための設定を行います。
`設定`→`高度な設定`→`再生デバイス`で`remote audio output`を選択します。
![スクリーンショット 2023-04-15 10.47.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/7740854c-072c-8a25-c82f-db40c9a03c1e.png)

具体的な利用方法は公式の使い方に書いてあります。

https://voicevox.hiroshiba.jp/how_to_use/

![スクリーンショット 2023-04-15 10.12.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58803/a6df68b5-9e51-5f84-2605-6feebde608db.png)

CPUとGPUを切り替えて使うと、GPUの方が若干早い感じがします。

GPU負荷ですが、メモリを2GBほど利用しており、プロセッサーの方は常に負荷がかかるような状況はありませんでした。(Tesla V100は流石にオーバスペックなのかなと思います、コンシューマ向けGPUで足りそうです。)

すごく滑らかな音声生成ができすごいソフトウェアだなと思いました。