VOICEVOXとは?
VOICEVOXは、無料で使えるローカル動作の音声合成ソフトです。ずんだもん・四国めたん・春日部つむぎなど、個性豊かなキャラクターボイスを使って日本語テキストを音声に変換できます。
- 完全ローカル動作(インターネット不要)
- 商用・個人利用ともに無料(各キャラクターの利用規約要確認)
- REST API経由でPythonから簡単に呼び出し可能
- Windows / Mac / Linux 対応
VOICEVOX Engineのダウンロード
GUIアプリが不要な場合は、エンジン単体版をダウンロードするのがおすすめです。
- 以下の GitHub Releases ページにアクセスします。
https://github.com/VOICEVOX/voicevox_engine/releases - 最新バージョンの Assets から Windows 用ファイルを選択します。
- GPU版(NVIDIA GPU搭載の場合):
windows-nvidia-*.zip - CPU版(一般的なPC):
windows-cpu-*.zip
- GPU版(NVIDIA GPU搭載の場合):
- ZIPファイルをダウンロードし、好きな場所に展開します。
例:C:\voicevox_engine\
💡 ヒント: GUIアプリ版(voicevox.hiroshiba.jp)をすでに持っている場合は、そちらを起動するだけでOKです。エンジンは自動的にポート50021で立ち上がります。
run.exeの起動方法
展開したフォルダ内に run.exe があります。これをダブルクリックするだけでAPIサーバーが起動します。
C:\voicevox_engine\
├── run.exe ← これをダブルクリック!
├── speaker_info\
└── ...
起動するとコマンドプロンプトの黒い画面が開き、以下のようなメッセージが表示されれば成功です。
INFO: Uvicorn running on http://127.0.0.1:50021 (Press CTRL+C to quit)
起動確認の方法
ブラウザで以下のURLにアクセスして、バージョン番号が表示されればOKです。
http://localhost:50021/version
また、http://localhost:50021/docs にアクセスすると、APIの全エンドポイントを確認できるSwagger UIが開きます。
⚠ 注意: Pythonコードを実行する前に、必ず run.exe を起動しておいてください。起動していないと接続エラーになります。
Pythonの準備
必要なライブラリをインストールします。コマンドプロンプトまたはPowerShellで実行してください。
pip install requests sounddevice soundfile
pyaudio を使う場合はこちら(インストールに失敗する場合は sounddevice 推奨):
pip install requests pyaudio
基本コード(コピペでOK)
以下のコードをそのままコピーして voicevox_speak.py として保存し、実行してください。
import requests
import json
import sounddevice as sd
import soundfile as sf
import io
# VOICEVOXエンジンのURL(run.exe起動後のデフォルト)
VOICEVOX_URL = "http://localhost:50021"
def text_to_speech(text: str, speaker_id: int = 1) -> bytes:
"""
テキストをWAV音声データに変換する関数
主なspeaker_id:
0 = 四国めたん(ノーマル)
1 = ずんだもん(ノーマル) ← デフォルト
3 = ずんだもん(あまあま)
8 = 春日部つむぎ
13 = 青山龍星
"""
# ステップ1: Audio Query(音声パラメータ)を取得
query_res = requests.post(
f"{VOICEVOX_URL}/audio_query",
params={"text": text, "speaker": speaker_id}
)
query_res.raise_for_status()
audio_query = query_res.json()
# ステップ2: 音声合成(WAVデータを取得)
synth_res = requests.post(
f"{VOICEVOX_URL}/synthesis",
params={"speaker": speaker_id},
headers={"Content-Type": "application/json"},
data=json.dumps(audio_query)
)
synth_res.raise_for_status()
return synth_res.content # WAVバイト列を返す
def play_audio(wav_bytes: bytes):
"""WAVデータをスピーカーで再生する"""
buf = io.BytesIO(wav_bytes)
data, samplerate = sf.read(buf)
sd.play(data, samplerate)
sd.wait() # 再生が終わるまで待機
# ===== メイン処理 =====
if __name__ == "__main__":
text = "こんにちは!VOICEVOXでテキストを音声に変換しています。"
speaker_id = 1 # ずんだもん(ノーマル)
print(f"合成中: {text}")
wav_data = text_to_speech(text, speaker_id)
print("再生中...")
play_audio(wav_data)
print("完了!")
実行方法
- run.exe をダブルクリックして起動(黒い画面が開く)
- 別のコマンドプロンプトを開く
python voicevox_speak.pyを実行- スピーカーから音声が流れれば成功!
キャラクター一覧の取得
どんなキャラクターとスタイル(speaker_id)が使えるかを確認するコードです。
import requests
VOICEVOX_URL = "http://localhost:50021"
def list_speakers():
speakers = requests.get(f"{VOICEVOX_URL}/speakers").json()
for speaker in speakers:
print(f"\n【{speaker['name']}】")
for style in speaker['styles']:
print(f" ID: {style['id']:3d} スタイル: {style['name']}")
list_speakers()
実行すると、以下のような一覧が表示されます。
【四国めたん】
ID: 0 スタイル: ノーマル
ID: 2 スタイル: あまあま
ID: 4 スタイル: ツンツン
【ずんだもん】
ID: 1 スタイル: ノーマル
ID: 3 スタイル: あまあま
ID: 7 スタイル: ささやき
...
話し方のカスタマイズ
話す速さ・ピッチ・抑揚などを自由に調整できます。
def text_to_speech_custom(text: str, speaker_id: int = 1) -> bytes:
# Audio Queryを取得
query = requests.post(
f"{VOICEVOX_URL}/audio_query",
params={"text": text, "speaker": speaker_id}
).json()
# パラメータを調整(必要な箇所だけ変更してOK)
query["speedScale"] = 1.2 # 話速 (0.5〜2.0、1.0が標準)
query["pitchScale"] = 0.0 # ピッチ (-0.15〜0.15)
query["intonationScale"] = 1.5 # 抑揚 (0.0〜2.0)
query["volumeScale"] = 1.0 # 音量 (0.0〜2.0)
query["prePhonemeLength"] = 0.1 # 開始の無音(秒)
query["postPhonemeLength"] = 0.1 # 終了の無音(秒)
wav = requests.post(
f"{VOICEVOX_URL}/synthesis",
params={"speaker": speaker_id},
headers={"Content-Type": "application/json"},
data=json.dumps(query)
).content
return wav
WAVファイルに保存する
音声をスピーカーで鳴らすのではなく、WAVファイルとして保存したい場合は以下のようにします。
def save_audio(wav_bytes: bytes, filename: str = "output.wav"):
"""WAVファイルとして保存する"""
with open(filename, "wb") as f:
f.write(wav_bytes)
print(f"保存しました: {filename}")
# 使用例
wav_data = text_to_speech("保存するテキストです。", speaker_id=1)
save_audio(wav_data, "output.wav")
トラブルシューティング
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
ConnectionRefusedError |
run.exe が起動していない | run.exe をダブルクリックしてから再実行 |
| 黒い画面がすぐ閉じる | ポートが競合または権限不足 | run.exe を右クリック→「管理者として実行」を試す |
| 音が出ない(エラーなし) | 出力デバイスの問題 | save_audio でWAVに保存してメディアプレーヤーで確認 |
sounddevice インストール失敗 |
VisualC++が不足 | pyaudio に切り替えるか、 Microsoft Visual C++ Redistributable をインストール |
| 文字化け・声がおかしい | テキストが長すぎる | 100文字以内に分割して渡す |
ポートが使用中の場合
run.exe は既定でポート 50021 を使います。別のポートにするには、run.exe をコマンドプロンプトから起動します。
cd C:\voicevox_engine
run.exe --port 50031
Pythonコード側も VOICEVOX_URL = "http://localhost:50031" に変更してください。
まとめ
VOICEVOXをWindowsでPythonから使う手順を整理すると、たった3ステップです。
- run.exe をダブルクリックしてAPIサーバーを起動
pip install requests sounddevice soundfileでライブラリを準備- Pythonコードで
/audio_query→/synthesisの順にAPIを叩いて再生
インターネット不要・完全ローカルで高品質な日本語音声合成が実現できます。読み上げBot、ナレーション自動生成、アシスタントアプリなど、さまざまな用途に応用してみてください。


