「もう一回作り直し…」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/docsOpenAPI のドキュメントが表示されれば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.jsonspeakerが見つからない
「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活用の引き出しを増やす
- Claude Codeとは?AI搭載のコーディングアシスタントを徹底解説 – 本記事の主役、Claude Codeの基本から徹底解説。CLIツールとして使う基本セットアップから応用まで網羅
- GitHub IssuesにClaude Codeを導入する方法|AIでバグ修正・コードレビューができる仕組みとは? – Claude Codeをチーム開発に組み込む応用例。本記事と同じ「AIに任せる」発想の別領域版
- リリース前に必ず確認!バイブコーディング&非エンジニア向けWebアプリ安全チェックリスト – AI主導の制作フロー全般で押さえておくべき安全側のチェック観点
音声合成の選択肢・CLI連携を強化
- VOICEPEAKとは?初心者エンジニアが知っておくべきAI音声合成ソフトの全て – VOICEVOXと並ぶ有力なAI音声合成ソフト。商用ナレーター音声が必要な場面の選択肢として併用検討に
- コマンドラインの基本と活用方法【初心者エンジニア向け】 – 「GUIで操作できるものはCLIでも叩ける」発想の基礎。本記事のような自動化を別領域でも展開する土台
API設計の理解を深める
- 「全部POSTでよくない?」がモヤる人へ|HTTPメソッド使い分けの正論と現場のリアル – 本記事のVOICEVOX APIのような2段階API設計の背景理解に。RESTfulな設計の判断軸が身につきます
- AWS CLIで開発が爆速になる!セットアップからCloudWatch・Lambda活用まで実用コマンド付き – クラウドサービスをCLIで叩く実用例。本記事と同じ「ツールはCLIで自動化」の応用編です
