本記事では、VOICEVOXを利用したい初心者向けに、インストールからPythonで利用する方法までを解説していきます。
関連記事:OllamaをPythonから操作:WindowsでローカルLLM入門
VOICEVOXでは複数のキャラクター音声が利用可能ですが、今回使用するのは「ずんだもん」です。ずんだもんは、東北地方の名物「ずんだ餅」をモチーフにした人気キャラクターで、YouTubeなどでもよく見かけます。
VOICEVOXとずんだもんで生成した音声は、「VOICEVOX: ずんだもん」とクレジットを記載することで、商用/非商用の利用が可能です。
VOICEVOXをPythonで使う手順
VOICEVOXのインストールから、PythonからVOICEVOXを利用して音声合成する手順を解説します。
公式ページの右上の[ダウンロード]ボタンを押下すると、以下のポップアップ画面が表示されます。Windows/MacのOSやGPU有無など、あなたのPC環境に合致したものを選び、右下の[ダウンロード]ボタンを押下します。

なお利用規約には、「ご利用の際は VOICEVOX を利用したことがわかるクレジット表記が必要です。」との記載がありますので、利用時にはクレジット表記を忘れないようにしてください。
ダウンロード後は、インストーラーをダブルクリックしてインストールします。
2. VOICEVOXのAPIサーバを起動
VOICEVOXは、画面操作で利用することができますが、Pythonで利用するためにローカルサーバとして起動します。
VOICEVOXは、以下のようなディレクトリに保存されているはずです。
C:\Users\ユーザー名\AppData\Local\Programs\VOICEVOX\vv-engine\vv-engine
上記フォルダの中に、run.exeという実行ファイルがありますので、こちらをコマンドプロンプトから実行します。
以下のような実行結果が表示されれば問題なく起動できています。
なおVOICEVOXのHTTPサーバは、デフォルトでlocalhost:50021でAPIサーバが動作します。

http://localhost:50021/docs
以下の画面のような、Swagger UI形式でのAPI仕様が表示されれば、VOICEVOX APIが正常に起動しています。

5. PythonからVOICEVOX APIを使用して音声を生成する
VOICEVOX APIを使って音声を生成するために、requestsライブラリでAPIエンドポイントにテキストを送信します。requestsライブラリとは、PythonでHTTPリクエストを送信するための外部ライブラリです。
まず、requestsライブラリをpipコマンドでインストールします。
次に、以下のコードを実行して、PythonからVOICEVOX APIを使って音声を生成してみます。
VOICEVOXは、無料かつ高品質な音声合成を提供する非常に便利なツールです。様々なキャラクターがいるので、お気に入りのキャラを見つけてみてください。
関連記事:Ollama×Streamlit×VoiceVoxで作るローカルLLM音声対話アプリ【完全ハンズオン】
関連記事:OllamaをPythonから操作:WindowsでローカルLLM入門
VOICEVOXとは
VOICEVOXは、自然な発音で音声を生成できる、国産の音声合成ソフトウェアです。GUIの画面もありますが、PythonからでもAPI経由で簡単に使うことができます。VOICEVOXでは複数のキャラクター音声が利用可能ですが、今回使用するのは「ずんだもん」です。ずんだもんは、東北地方の名物「ずんだ餅」をモチーフにした人気キャラクターで、YouTubeなどでもよく見かけます。
VOICEVOXとずんだもんで生成した音声は、「VOICEVOX: ずんだもん」とクレジットを記載することで、商用/非商用の利用が可能です。
VOICEVOXをPythonで使う手順
VOICEVOXのインストールから、PythonからVOICEVOXを利用して音声合成する手順を解説します。1. VOICEVOXのインストール
まず、以下のVOICEVOXの公式サイトにアクセスし、インストーラーをダウンロードします。公式ページの右上の[ダウンロード]ボタンを押下すると、以下のポップアップ画面が表示されます。Windows/MacのOSやGPU有無など、あなたのPC環境に合致したものを選び、右下の[ダウンロード]ボタンを押下します。

なお利用規約には、「ご利用の際は VOICEVOX を利用したことがわかるクレジット表記が必要です。」との記載がありますので、利用時にはクレジット表記を忘れないようにしてください。
ダウンロード後は、インストーラーをダブルクリックしてインストールします。
2. VOICEVOXのAPIサーバを起動
VOICEVOXは、画面操作で利用することができますが、Pythonで利用するためにローカルサーバとして起動します。VOICEVOXは、以下のようなディレクトリに保存されているはずです。
C:\Users\ユーザー名\AppData\Local\Programs\VOICEVOX\vv-engine\vv-engine
上記フォルダの中に、run.exeという実行ファイルがありますので、こちらをコマンドプロンプトから実行します。
C:\Users\ユーザー名\AppData\Local\Programs\VOICEVOX\vv-engine\run.exe
以下のような実行結果が表示されれば問題なく起動できています。
なおVOICEVOXのHTTPサーバは、デフォルトでlocalhost:50021でAPIサーバが動作します。

3. VOICEVOXのAPIドキュメントを確認
VOICEVOXはHTTPサーバとして起動しているので、ブラウザからアクセスできます。ローカルでデフォルトのポート50021で起動した場合、以下をURLにアクセスすると、VOICEVOXのAPIドキュメントを確認できます。http://localhost:50021/docs
以下の画面のような、Swagger UI形式でのAPI仕様が表示されれば、VOICEVOX APIが正常に起動しています。

4. VOICEVOX APIで使用する話者IDを確認
VOICEVOXでは「ずんだもん」などの話者ごとにIDが割り振られており、音声合成時に指定する必要があります。話者IDは以下の手順で確認できます。①VOICEVOXを起動した状態で http://localhost:50021/docs にアクセス
②「その他」カテゴリの/speakers のエンドポイントを開き、「Try it out」をクリック
③「Execute」ボタンを押すと、利用可能な話者一覧がJSON形式で返ってくる
5. PythonからVOICEVOX APIを使用して音声を生成する
VOICEVOX APIを使って音声を生成するために、requestsライブラリでAPIエンドポイントにテキストを送信します。requestsライブラリとは、PythonでHTTPリクエストを送信するための外部ライブラリです。まず、requestsライブラリをpipコマンドでインストールします。
pip install requests
次に、以下のコードを実行して、PythonからVOICEVOX APIを使って音声を生成してみます。
import requests
# 読み上げたいテキスト
text = "こんにちは、パイソンからVOICEVOXでテキストを音声に変換します。"
# 話者IDを指定 (ずんだもんの "ノーマル"を指定)
speaker=3
# 1. 音声合成用のクエリを作成する
query_payload = {'text': text, 'speaker': speaker}
query_response = requests.post(f'http://localhost:50021/audio_query', params=query_payload)
query = query_response.json()
# 2. クエリから音声合成する
synthesis_payload = {'speaker': speaker}
synthesis_response = requests.post(f'http://localhost:50021/synthesis', params=synthesis_payload, json=query)
# 音声合成ファイルを作成する
with open("voicevox_output.wav", 'wb') as f:
f.write(synthesis_response.content)
print(f"音声ファイルが作成されました。")
上記のコードの流れを解説します。
・まずtext に読み上げたい文章を設定し、speaker に話者ID(3のずんだもん)を指定します。
話者IDは/speakersのエンドポイントで確認した話者一覧を見て指定します。
話者IDは/speakersのエンドポイントで確認した話者一覧を見て指定します。
・VOICEVOXの /audio_query エンドポイントにPOSTし、読ませたいtextを音声合成用のクエリに変換します。クエリはJSON形式のファイルです。
・取得したクエリを /synthesis エンドポイントにPOSTし、クエリからWAV形式の音声データを取得します。
・取得した音声データ(WAV形式)をファイルで保存します。
まとめ
関連記事:Ollama×Streamlit×VoiceVoxで作るローカルLLM音声対話アプリ【完全ハンズオン】