プロダクトのボイス、何度も作り直してた地獄から解放された話|Claude Code × VOICEVOX CLI連携

目次

「もう一回作り直し…」VOICEVOXで音声10本作って疲弊した話

プロダクト開発で、ちょっとした音声ファイルが必要になることってありますよね。LP用の説明ナレーション、アプリ内のシステム音声、チュートリアル動画のセリフ、デモ動画のボイス。最近のお気に入りは VOICEVOX。無料で商用利用OK、キャラの個性も豊かで、クオリティも十分。

でも、VOICEVOXのGUIで音声を10本作ったことありますか?これがマジで地獄なんです。

  • 1本ずつテキストをコピペして、キャラ選んで、再生して確認
  • 「やっぱり別キャラの方がいいかも」→ 全部選び直し
  • 「速度を1.1倍にしたい」→ パラメータ手動調整
  • 「3番目のセリフだけ修正して再生成」→ また同じ手順
  • 気がつくと半日が消えている

そんな中、ふと気づきました。「これ、Claude Code に任せたら一瞬で終わるのでは?」と。

結論を先に言うとこうです。

  • VOICEVOXは実は ローカルにHTTPサーバーが立つ仕組み(GUIアプリの裏でAPIが動いてる)
  • つまり curlで叩けば自動化できる
  • そして Claude Code に「この台本を全部音声化して」と頼めば、shellスクリプトを書いて実行までやってくれる
  • イテレーションが 半日 → 数分 に短縮される

本記事では、「ボイス制作のイテレーション地獄から解放された実体験」を踏まえて、VOICEVOXをCLIで叩く基礎から、Claude Codeに丸投げして一括生成・修正する実践フローまでを解説します。プロダクトの音声制作を爆速化したいエンジニア向けです。

なぜVOICEVOXのGUI作業はこんなに辛いのか

そもそもVOICEVOXのGUI、単発で1〜2本作るには十分使いやすいんです。問題は 「複数本を作る・修正する」ときのイテレーション が手動なこと。

具体的に何が辛いか

  • 1音声につき手動操作が5〜6ステップ:テキスト入力、キャラ選択、再生、書き出し、保存、ファイル名設定
  • パラメータ調整が画面操作:speedScale、pitchScale、intonationScaleをスライダーで合わせ直し
  • キャラ変更時の冒涜的やり直し:「全部ずんだもんで」と決めた後の「やっぱり春日部つむぎで」が地獄
  • 修正が局所化できない:1本だけ直すために、他のファイルとパラメータを同期させる手間

VOICEPEAKなど他の音声合成ソフトでも、基本は同じ構造(VOICEPEAKとは?AI音声合成ソフトの全てでも GUI操作中心の活用法が紹介されています)。本数が増えるほど、手動操作の限界が見えてきます。

ローカルVOICEVOXは実は「APIサーバー」

ここで重要な事実。VOICEVOXは GUIアプリの裏でHTTPサーバーが動いているんです。GUIで操作している裏側で、API経由で音声合成エンジンを叩いている、という構造。

[VOICEVOX アプリ起動]
   ↓
[エディタ(GUI)]    ←ユーザー操作
   ↓ HTTP API呼び出し
[音声合成エンジン]   ←127.0.0.1:50021 で待ち受け
   ↓
[音声WAV生成]

ということは、このエンジンに直接curlを投げれば、GUIを開かずに音声合成できる。これがCLI連携の出発点です。コマンドラインの基本と活用方法 でも触れられている通り、「GUIで操作している裏側はCLIで叩ける」という発想は、開発効率を爆上げする鉄板パターン。

全体像:3段ロケットでボイス制作を自動化

本記事で構築するのは、こんな流れです。

[Step 1] 台本ファイルを用意(JSON or テキスト)
   ↓
[Step 2] Claude Code に依頼
   「この台本を全部ずんだもんで音声化して、speedScale 1.1で」
   ↓
[Step 3] Claude Codeが裏で実行
   - VOICEVOXエンジンにcurlリクエスト
   - 1本ずつwavファイル生成
   - 指定ディレクトリに保存
   ↓
[Step 4] 完成
   - audio_001.wav, audio_002.wav, ... が一気に揃う

[修正したい時]
   「3番目だけ春日部つむぎで再生成」
   ↓
   1ファイルだけ更新

これだけ。GUI開かずに、修正イテレーションも一行のプロンプトで完結。順番に手順を見ていきましょう。

Step 1:macOSにVOICEVOXをインストール

まずはVOICEVOXのインストールから。公式サイト(voicevox.hiroshiba.jp)にアクセスして、macOS版のdmgをダウンロード。Apple Silicon (M1/M2/M3) と Intel 両方に対応しています。

起動とエンジン確認

VOICEVOX を起動すると、自動的に音声合成エンジンも起動します。エンジンが正常に動いているか確認するには、ブラウザで以下のURLにアクセス。

http://127.0.0.1:50021/docs

OpenAPI のドキュメントが表示されればOK。/audio_query/synthesis/speakers など、CLIから叩けるエンドポイントが一覧で見えます。

重要:VOICEVOXのGUIアプリを起動している間、エンジンも一緒に動いています。CLIで音声合成するときは、GUIは起動しっぱなしでOK(最小化していても構いません)。

Step 2:CLIで叩く基本パターンを理解

VOICEVOXの音声合成は2段階になっています。一見面倒に見えますが、これがイントネーション編集の余地を残す設計。

2段階の流れ

[Step A] /audio_query
入力: テキスト + speaker番号
出力: 音声合成用のJSONクエリ(イントネーション情報など含む)

[Step B] /synthesis
入力: Aで取得したJSONクエリ
出力: 音声WAV ファイル

このAPIの設計の話は HTTPメソッド使い分けガイド でも触れている通り、「クエリを生成」と「合成を実行」を分けることで、間にカスタマイズを挟めるRESTfulなパターンの一例です。

最小コード:curlで一発音声合成

具体的なコマンドを見ていきましょう。「ずんだもん」で「こんにちは、テストです」を音声化する例です。

# テキスト準備
TEXT="こんにちは、テストです"
SPEAKER=3  # ずんだもん(ノーマル)

# Step A: audio_query で音声クエリ生成
curl -s -X POST \
  "http://127.0.0.1:50021/audio_query?speaker=${SPEAKER}" \
  --get --data-urlencode "text=${TEXT}" \
  > query.json

# Step B: synthesis で音声WAV生成
curl -s -H "Content-Type: application/json" \
  -X POST \
  -d @query.json \
  "http://127.0.0.1:50021/synthesis?speaker=${SPEAKER}" \
  > output.wav

# 再生(macOS標準のafplay)
afplay output.wav

これだけ。3つのコマンドで「テキスト→音声→再生」が完結します。

speaker一覧の取得

キャラのspeaker番号を知りたい時はこのコマンド。

curl -s http://127.0.0.1:50021/speakers | jq '.[] | {name, styles: .styles[] | {name, id}}'

主要なキャラの番号は以下(バージョンで変わるので、実際は上記コマンドで確認するのが確実):

キャラ スタイル speaker番号
四国めたん ノーマル 2
ずんだもん ノーマル 3
春日部つむぎ ノーマル 8
玄野武宏 ノーマル 11
九州そら ノーマル 16

Step 3:Claude Code に丸投げする

ここからが本記事の山場。Claude Code に「台本を全部音声化して」と頼むと、上のcurlコマンドを内部で組み立てて、一括実行までやってくれます。

台本ファイルの用意

まずは台本をファイルにしておきます。JSONが扱いやすいですが、シンプルなテキストでもOK。

// scripts/voice-script.json
{
  "default_speaker": 3,
  "default_speed": 1.0,
  "lines": [
    {
      "id": "001",
      "text": "ようこそ、サンプルアプリへ"
    },
    {
      "id": "002",
      "text": "まずはアカウントを作成しましょう"
    },
    {
      "id": "003",
      "text": "メールアドレスを入力してください"
    },
    {
      "id": "004",
      "text": "確認メールを送信しました"
    },
    {
      "id": "005",
      "text": "登録が完了しました、ありがとうございます"
    }
  ]
}

Claude Codeへのプロンプト例

Claude Code を起動して、台本ファイルがあるディレクトリで以下のように依頼します。

scripts/voice-script.jsonの内容を全部VOICEVOXで音声化したい。

要件:
- VOICEVOXエンジンは http://127.0.0.1:50021 で起動済み
- default_speaker と default_speed を使う
- 各行のidをファイル名にして audio/ ディレクトリに保存
- 例: audio/voice_001.wav, audio/voice_002.wav

shellスクリプトを書いて、実行までしてほしい

Claude Codeが返してくれるスクリプト例

Claude Code は、こんな感じのスクリプトを生成して実行してくれます。

#!/bin/bash
# generate-voices.sh

set -e

SCRIPT_FILE="scripts/voice-script.json"
OUTPUT_DIR="audio"
ENGINE_URL="http://127.0.0.1:50021"

mkdir -p "${OUTPUT_DIR}"

# JSONから設定とlinesを取り出す
SPEAKER=$(jq -r '.default_speaker' "${SCRIPT_FILE}")
SPEED=$(jq -r '.default_speed' "${SCRIPT_FILE}")
LINES_COUNT=$(jq '.lines | length' "${SCRIPT_FILE}")

echo "全${LINES_COUNT}本の音声を生成します(speaker=${SPEAKER}, speed=${SPEED})"

# 各行を順次処理
for i in $(seq 0 $((LINES_COUNT - 1))); do
  ID=$(jq -r ".lines[${i}].id" "${SCRIPT_FILE}")
  TEXT=$(jq -r ".lines[${i}].text" "${SCRIPT_FILE}")

  echo "[$((i + 1))/${LINES_COUNT}] ${ID}: ${TEXT}"

  # Step A: audio_query
  curl -s -X POST \
    "${ENGINE_URL}/audio_query?speaker=${SPEAKER}" \
    --get --data-urlencode "text=${TEXT}" \
    | jq ".speedScale = ${SPEED}" \
    > "/tmp/query_${ID}.json"

  # Step B: synthesis
  curl -s -H "Content-Type: application/json" \
    -X POST \
    -d "@/tmp/query_${ID}.json" \
    "${ENGINE_URL}/synthesis?speaker=${SPEAKER}" \
    > "${OUTPUT_DIR}/voice_${ID}.wav"

  rm "/tmp/query_${ID}.json"
done

echo "完了: ${OUTPUT_DIR}/ に${LINES_COUNT}本のwavファイルを生成しました"

このスクリプトを保存して実行するところまで、Claude Code が一気にやってくれます。数十秒〜数分でwavファイルが揃う。GUIだと半日かかった作業が、これで完結します。

イテレーションが爆速になるパターン3選

ここからが本当に効くところ。修正のイテレーションが一行のプロンプトで終わるのです。

パターンA:「3番目だけ別キャラで」

[Claude Codeへのプロンプト]
voice_003.wavだけ、春日部つむぎ(speaker=8)で
再生成してほしい

Claude Code が変更箇所を理解して、その1ファイルだけ再生成。他のファイルは触らない。GUIだと「えーっと、3番目はずんだもんだったから…」と探す時間が消えます。

パターンB:「全部スピード1.2倍に」

[Claude Codeへのプロンプト]
全部の音声、speedScaleを1.2にして再生成して

JSON設定の default_speed を更新して、全ファイル一括再生成。GUIなら全部のスライダーを手動で動かして1本ずつ書き出すところが、プロンプト一行で終わる。

パターンC:「セリフ修正、再生成」

[Claude Codeへのプロンプト]
voice-script.jsonの002のテキストを
「アカウント作成は1分で完了します」に変えて、
該当ファイルを再生成して

JSONの該当箇所だけ書き換えて、wavを更新。「テキスト編集 → 再生成」のループが完全に自動化されます。これがバイブコーディング時代の音声制作です(バイブコーディング安全チェックリスト も合わせて押さえておくと、AI主導の作業全般が安全に進められます)。

さらに便利な発展形

Claude Code に任せられるなら、もっと高度なことも自動化できます。

複数キャラの会話シーン

台本に話者情報を入れておけば、シーン全体を自動生成できます。

{
  "lines": [
    { "id": "001", "speaker": 3, "text": "おはようなのだ!" },
    { "id": "002", "speaker": 8, "text": "おはよう、今日は何する?" },
    { "id": "003", "speaker": 3, "text": "公園で遊ぶのだ!" }
  ]
}

「この台本でキャラ別の会話音声を作って」と頼めば、各行で違うspeakerを切り替えて生成。動画コンテンツやチュートリアル用の掛け合いがサクサク作れます。

セリフを連結して1つのMP3に

「全部のwavを連結して、無音0.5秒の間隔を入れて、1つのmp3にして」と頼めば、ffmpeg のコマンドも Claude Code が組み立ててくれます。動画用のナレーション音声を一発で作れる。

CSVから一括生成

マーケチームから「このCSVのセリフ全部音声化して」とCSVファイルを渡されても、JSONに変換して一括処理する流れもプロンプト一行。Claude Codeを使いこなす活用例と同じく、「フォーマット変換 + 自動処理」をAIに任せるのが定番パターンです。

ハマりどころ・トラブルシュート

実際にやってみると、いくつか引っかかるポイントがあります。

エンジンが起動していない

「curlでconnection refusedエラーが出る」という時は、VOICEVOXアプリが起動しているか確認。GUIを完全に終了するとエンジンも止まります。使う時はVOICEVOXアプリを起動しっぱなしに

# エンジンの動作確認
curl -s http://127.0.0.1:50021/version

# 何も返ってこない場合はVOICEVOXアプリを起動

日本語のエスケープエラー

テキストに記号が含まれていると --data-urlencode でエスケープされず壊れることが。Claude Code に書いてもらったスクリプトでは、テキストファイル経由で渡す方式が安全。

# テキストをファイル経由で渡す
echo -n "こんにちは、テストです!" > /tmp/text.txt
curl -s -X POST \
  "http://127.0.0.1:50021/audio_query?speaker=3" \
  --get --data-urlencode "text@/tmp/text.txt" \
  > query.json

speakerが見つからない

「speakerなんて404」というエラーが出る時は、VOICEVOXのバージョンによって番号が違うため。事前に /speakers エンドポイントで一覧を確認しておきます。

音が再生されない

macOSなら afplay output.wav でほぼ問題ないですが、VOICEVOXの音声はサンプリングレートが24000Hzと少し特殊。一部の音声プレーヤーで再生できない場合は、ffmpegで44100Hzに変換すると確実です。

ffmpeg -i input.wav -ar 44100 output.wav

大量生成時のレートリミット

100本一気に生成しようとするとマシンが熱くなります。Claude Codeに頼む時に「1秒間隔で」とか「並列ではなく順次で」と指示しておくと安全。

利用規約と商用利用の注意

VOICEVOXは無料で商用利用OK、というのが最大の魅力ですが、キャラごとに利用規約が異なるので、プロダクトに組み込む前は必ず確認を。

  • 原則として、クレジット表記が必要(「VOICEVOX:ずんだもん」など)
  • キャラによって商用利用の細かい条件が異なる
  • 音声を素材として再販することは基本NG
  • 公式の利用規約ページとキャラ個別ページを必ず確認

「無料」だからといってルールを軽視せず、Claude Code に「クレジット表記を README に追加して」と頼めば、ライセンス表示まで自動化できます。

まとめ:制作タスクは「AIに任せる」が新常識

本記事のポイントを整理します。

  • VOICEVOXは実はAPIサーバー:GUIアプリの裏で 127.0.0.1:50021 にHTTPサーバーが立つ
  • curlで叩けば自動化できる/audio_query/synthesis の2段階で音声生成
  • Claude Codeに丸投げが最強:台本JSONを渡して「全部音声化して」で完結
  • イテレーションが爆速に:「3番目だけ別キャラで」が一行のプロンプトで終わる
  • 発展形も自由:会話シーン、ファイル連結、CSV変換、全部Claude Codeが組み立てる
  • 利用規約は必ず確認:商用利用OKだが、キャラごとに条件あり

音声制作って、ちゃんとやろうとすると地味に時間を食う作業なんですよね。声優依頼は時間とコスト、AI音声サービスは課金がかさむ、自前ツールはGUI操作が手動…。そんな中で 「ローカルツール × CLI × Claude Code」 の組み合わせは、無料・高速・無限に修正可能という三拍子が揃った最強パターン。

同じ発想は、画像生成、動画編集、データ変換、ドキュメント生成など、「ローカルツールがCLIで叩ける」全ての領域に応用できます。AI開発時代のエンジニアは、コードを書くだけじゃなく、「ローカルツールをAIに操作させる」発想を持つべきフェーズに来ています。

次にプロダクトの音声が必要になったら、ぜひVOICEVOXとClaude Codeの組み合わせを試してみてください。「もう一回作り直し」が消える、新しい開発体験が手に入りますよ。

AI × ローカルツール連携をさらに深める関連記事

VOICEVOX × Claude Code の組み合わせを体感したら、次は他の領域でも同じ発想を応用していきましょう。AI主導の制作・開発フローが一段階上がる関連記事を厳選しました。

Claude Code活用の引き出しを増やす

音声合成の選択肢・CLI連携を強化

API設計の理解を深める

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次