【超簡単】自分専用のVOICEVOXサーバーを立てる

こんにちは。[AIバーチャルアシスタントのアプリ](https://apps.apple.com/jp/app/oshaberiai/id6446883638)を作ったり[バーチャルアシスタントを造るためのフレームワーク](https://qiita.com/uezo/items/7ff1566f05c0a1c74a46)を公開していたりするうえぞうと申します。

こういったサービスの音声読み上げとして最適なのが、無償・商用利用可能・キャラクターが豊富・品質もよいと三拍子どころか四拍子も五拍子も揃った[VOICEVOX](https://voicevox.hiroshiba.jp)です。
VOICEVOXはファイル出力だけではなくREST APIとしても利用できるため、この記事ではWindows・Mac双方の超簡単なVOICEVOX APIサーバー立ち上げ手順についてご紹介したいと思います。

# VOICEVOXのインストール

WindowsもMacも、公式ページからインストーラーをダウンロードしてください。
https://voicevox.hiroshiba.jp

あとは手順に従ってインストールすればOKです。簡単ですね！
ダウンロードしたプログラムは起動がブロックされる場合がありますので、正しくインストールされたことの確認を兼ねて一度VOICEVOXを起動しましょう。以下のような画面が表示されたらOKです。![スクリーンショット 2023-04-20 18.10.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53296/ef2eebfa-c616-de61-5a4c-53ec4bfe183a.png)

実は、この状態で既にVOICEVOXをREST APIとして利用することができるようになっています。http://127.0.0.1:50021/docs にアクセスしてAPIドキュメントが表示されることを確認してみましょう。

![スクリーンショット 2023-04-20 18.13.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53296/47d30316-c31b-09ff-2b2d-d90d56753e88.png)

ただ、この状態ではVOICEVOXに接続できるのは同じコンピューターの中で動作するプログラムに限られます。この記事では、LANの中やインターネット経由で別のPCやデバイスからアクセスできるようにする方法も含めて解説します。

# ngrokのインストール

通常、インターネットからの通信をネットワークの中に通すためにはルーターに内向け通信の許可を設定する必要があり、その手間やリスクを考えるとちょっと躊躇しがちです。
そこで、ngrokというツールを使ってルーターの設定を変更することなくインターネットから接続できるようにします。まずは公式サイトでサインアップしたのち、ngrokをダウンロードしましょう。ZIPファイルを解凍して適当な場所に配置すればOKです。

https://ngrok.com/download

次にngrokにトークンを登録します。これは初回だけです。

```
$ ngrok config add-authtoken <your_token>
```

なお、トークンはサインアップするとYour Authenticationのページで確認することができます。

https://dashboard.ngrok.com/get-started/your-authtoken

これでngrokのインストールは完了です。

# インターネット経由で利用できるようにする

それでは、VOICEVOXを外出先などロケーションを問わずインターネット経由で利用できるようにします。まずはVOICEVOXを起動しましょう。インストールしたあとに確認したように、http://127.0.0.1:50021/docs でAPI仕様にアクセスできることを確認してください。

次にngrokを起動します。これは50021番ポートで起動しているVOICEVOXを公開して、という意味になります。

```:Windows・Mac共通
% ngrok http 50021
```

```:実行結果
ngrok by @inconshreveable                                                                      (Ctrl+C to quit)
                                                                                                               
Session Status                online                                                                           
Account                       XXXXXXX (Plan: Pro)                                                            
Version                       2.3.35                                                                           
Region                        United States (us)                                                               
Web Interface                 http://127.0.0.1:4040                                                            
Forwarding                    http://ca02809567c9.ngrok.app -> http://localhost:50021                          
Forwarding                    https://ca02809567c9.ngrok.app -> http://localhost:50021     
```

最後に表示されているURLがインターネット経由のhttp/httpsのURLになります。この例でいうと`https://ca02809567c9.ngrok.app/docs`にアクセスするとAPIドキュメントが表示されます。
たとえばおしゃべりAIからこのサーバーを利用するには、設定画面のOtherタブを開いて`VOICEVOX Engine Url`にこのURLを登録しましょう。
![engineurl.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53296/dbbdfd1e-7113-db12-6b1d-18b8fd95cebc.jpeg)

なおサブドメイン部分はngrokを起動する都度変化します。固定のものを割り当てたい場合はngrokの有料サブスクリプションに登録しましょう。

必要最小限の対応はここまでで完了です。VOICEVOXアプリを起動せずにバックグラウンドでAPIサーバーを起動する方法や、インターネットではなくLAN内の別デバイスから利用する方法については、需要がありそうでしたら別途記事にしたいと思います。

# 本番サービス運用に向けて

インターネット経由でVOICEVOXを利用できるようにするだけならば本記事の通りとても簡単ですが、一般公開するサービスにVOICEVOXを組み込むためには考慮すべき点が他にもあります。
特にパフォーマンス面については、以下の記事などを参考に慎重にキャパシティー設計と負荷試験を行うことをおすすめします。

https://qiita.com/uezo/items/7e476147ec6312ad8a2c

また、自宅PCの余剰計算資源をサーバーとする場合も、Windows PCの場合はライセンス違反になる可能性があり、その点にも注意してください（CALで調べましょう）。

それでは、Enjoy VOICEVOX!