PythonでVOICEPEAKを操作してWAVファイルを生成する

公開日:2026/03/16

Python

趣味

2024年の9月頃に作って放置していた物をご紹介!
(けっして某かぐや姫の影響を受けたわけじゃないんだからねっ!もともと可能性を感じていた分野なんだからね!)

VOICEPEAKとは

VOICEPEAKは、入力したテキストを自然な音声に変換できる音声合成ソフト(Text To Speech / TTS)です。 文章を入力するだけで、ナレーションやキャラクターボイスなどの音声を生成することができます。

キャラクター音声・ナレーション制作・配信読み上げなど、さまざまな用途で利用されており、 直感的に操作できるGUIアプリケーションとして提供されています。

公式サイトはこちら:
🔗 VOICEPEAK|製品情報


一般的にはGUIアプリとして利用されますが、VOICEPEAKにはコマンドラインインターフェース(CLI)も用意されています。 このCLIを利用することで、プログラムやスクリプトから音声生成を自動化することが可能になります。

例えば、次のような用途に活用できます。

  • 配信コメントの自動読み上げ
  • AIチャットボットの音声出力
  • 動画ナレーションの自動生成
  • 音声コンテンツのバッチ生成

この記事では、VOICEPEAKのCLIを利用して Pythonから音声(WAVファイル)を生成する最小構成を紹介します。


AIと連携しPythonからVOICEPEAKを呼び出して音声を生成している様子は以下の動画の通りです。


VOICEPEAKはコマンドラインインターフェース(CLI)を備えており、 Pythonの subprocess モジュールから実行ファイルを呼び出すことで 簡単にWAVファイルを生成することができます。

この記事では、最小限のコードでVOICEPEAKを実行し、 音声ファイル(WAV)を出力するまでの手順を解説します。


事前確認コマンド

まず、VOICEPEAKがインストールされている環境で 利用可能なナレーターや感情パラメータを確認しておきます。

VOICEPEAKがインストールされているフォルダでターミナルを開き、以下のコマンドを実行します。

# 利用可能なナレーター一覧を確認
voicepeak --list-narrator

# 特定ナレーターの感情表現キーを確認
voicepeak --list-emotion "Miyamai Moca"

ここで取得できるナレーター名感情キーを、 後ほどPythonコード内で指定します。


最小限のPythonコード

Flaskや外部APIなどのフレームワークは使用せず、 ossubprocess のみで動作する最小構成のコードです。

import os
import subprocess
from datetime import datetime


def generate_wav(script, narrator="Miyamai Moca",
                 bosoboso=0, doyaru=0, honwaka=0, angry=0, teary=0):
    """
    VOICEPEAKでテキストを音声合成し、WAVファイルを生成する。

    Args:
        script   : 読み上げるテキスト
        narrator : ナレーター名(--list-narrator で確認)
        bosoboso / doyaru / honwaka / angry / teary : 感情パラメータ(0〜100)

    Returns:
        outpath (str) : 生成されたWAVファイルの絶対パス
    """
    exepath    = "F:/Program Files/VOICEPEAK/voicepeak.exe"  # ← 環境に合わせて変更
    output_dir = "C:/Users/torun/Desktop/work/voice_p/output"
    os.makedirs(output_dir, exist_ok=True)

    # 日付付きファイル名を生成(同名ファイルが存在する場合は連番を付加)
    date_str      = datetime.now().strftime("%Y%m%d")
    base_filename = f"output_{date_str}"
    outpath       = f"{output_dir}/{base_filename}.wav"
    counter = 1
    while os.path.exists(outpath):
        outpath = f"{output_dir}/{base_filename}_{counter}.wav"
        counter += 1

    args = [
        exepath,
        "-s", script,          # 読み上げテキスト
        "-n", narrator,        # ナレーター名
        "-o", outpath,         # 出力先WAVパス
        "-e", f"bosoboso={bosoboso},doyaru={doyaru},"
               f"honwaka={honwaka},angry={angry},teary={teary}"
    ]

    process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()

    if process.returncode != 0:
        raise RuntimeError(stderr.decode("utf-8", errors="replace"))

    return outpath


# --- 実行例 ---
if __name__ == "__main__":
    path = generate_wav(
        script="こんにちは!テスト音声です。",
        narrator="Miyamai Moca",
        honwaka=70   # 感情:ほんわか気味で読み上げ
    )
    print(f"WAVファイルを生成しました: {path}")

コマンドライン引数の解説

引数 内容
-s 読み上げるスクリプト(テキスト)
-n ナレーター名(--list-narrator で確認)
-o 出力WAVファイルのパス
-e 感情パラメータ(キー=値 をカンマ区切りで指定 / 値は 0〜100)
感情パラメータのキー名はナレーターによって異なります。 voicepeak --list-emotion "ナレーター名" を実行することで、 そのナレーターで利用できる感情キーを確認できます。

実行方法

cd C:\Users\torun\Desktop\work\voice_p
python generate_wav.py

正常に実行されると、output/output_YYYYMMDD.wav が生成されます。

同じ日に複数回実行した場合は output_YYYYMMDD_1.wav のように自動で連番が付与されます。