メインコンテンツへスキップ

VOICEVOX Dockerイメージを使用して音声合成APIサーバーを構築して遊ぶ手順書

🎤 はじめに

この記事では、Ubuntu上で公式のVOICEVOX Dockerイメージを使用して音声合成APIサーバーを構築し、Gradioで簡単なフロントエンドを作成する手順を解説します。VOICEVOXは高品質な音声合成を実現するオープンソースのソフトウェアで、Dockerイメージを利用することで手軽に環境構築ができます。Gradioは、Webベースのインターフェースを簡単に作成できるツールで、音声合成アプリケーションのデモに最適です。


🚀 公式VOICEVOX Dockerイメージを使ったAPIサーバーの構築

🐳 Dockerのインストール

もしまだDockerが入っていない場合は、以下の手順でインストールしてください。

sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker

Docker Composeは今回使用しませんが、今後複数コンテナを扱う場合に便利なので、必要に応じてインストールしてください。


📦 VOICEVOXのDockerイメージを取得

公式のVOICEVOX Dockerイメージを取得します。

docker pull voicevox/voicevox_engine:latest

🛠️ APIサーバーの起動

以下のコマンドでAPIサーバーを起動します。

docker run -d \
  --name voicevox_engine \
  -p 50021:50021 \
  voicevox/voicevox_engine:latest

デフォルトでポート50021がAPIサーバーとして使われます。


🖥️ Gradioフロントエンドの構築

🐍 PythonとGradioのインストール

Gradioを使うにはPythonが必要です。Python 3.8以降を推奨します。

sudo apt install -y python3 python3-pip
pip3 install gradio requests

💻 Gradioアプリケーションの作成

以下のコード例を app.py という名前で保存してください。

import gradio as gr
import requests

VOICEVOX_ENGINE_URL = "http://localhost:50021"

def synthesize_speech(text, speaker_id):
    # 音声合成クエリを作成
    query_resp = requests.post(
        f"{VOICEVOX_ENGINE_URL}/audio_query",
        params={"text": text, "speaker": speaker_id}
    )
    if query_resp.status_code != 200:
        return "音声合成クエリの作成に失敗しました"

    # 音声合成
    synthesis_resp = requests.post(
        f"{VOICEVOX_ENGINE_URL}/synthesis",
        params={"speaker": speaker_id},
        json=query_resp.json()
    )
    if synthesis_resp.status_code != 200:
        return "音声合成に失敗しました"

    # 音声データを返す
    return (synthesis_resp.content, "audio/wav")

with gr.Blocks() as demo:
    gr.Markdown("# VOICEVOX 音声合成デモ")
    text_input = gr.Textbox(label="テキストを入力してください")
    speaker_input = gr.Number(value=1, label="Speaker ID (例: 1)")
    output_audio = gr.Audio(label="合成音声", type="numpy")

    run_button = gr.Button("音声合成")

    run_button.click(
        fn=synthesize_speech,
        inputs=[text_input, speaker_input],
        outputs=output_audio
    )

if __name__ == "__main__":
    demo.launch(server_name="0.0.0.0", server_port=7860)

speaker_id はVOICEVOXの話者IDです。
・複数の話者をサポートしているため、数字で指定します(例: 1, 2, 3)。
・DockerのVOICEVOX APIサーバーはデフォルトでlocalhost:50021で起動しています。


▶️ Gradioの起動

以下のコマンドでアプリを起動します。

python3 app.py

ブラウザで http://localhost:7860 にアクセスすると、テキスト入力欄と「音声合成」ボタンが表示され、テキストを入力してボタンを押すと音声が合成されます。


📝 おわりに

この記事では、公式VOICEVOX Dockerイメージを利用した音声合成APIサーバーをUbuntu上で構築し、Gradioでフロントエンドを作る手順を紹介しました。VOICEVOXは高品質な音声合成を簡単に試せるので、ぜひさまざまなテキストで遊んでみてください!