こんにちは!社会人一年目?のタレカツです!
今回はAWS上に音声の読み上げソフトであるVOICEVOXを使ったサーバを構築しました。音声出力ができるサービスとしては、Pollyや最近話題のNova2 sonicがありますが、出力される声の種類の選択肢が日本語では、まだ少ないです。そこで今回VOICEVOXを用いた音声出力を試してみました。使用した音声としては以下の音声になります。
● VOICEVOX(ずんだもん)
● VOICEVOX(麒ヶ島宗麟)
※ VOICEVOXの音声はキャラクターごとに利用規約があります。
商用利用や再配布を行う場合は、必ず公式サイトの規約を確認してください。
インスタンスの起動
今回はUbuntuの24.04を使用して、インスタンスタイプはt3.micro(どのくらいがベストなのかは未検証)、ストレージは20GBにしています。
VOICEVOXの構築
1. voicevoxのソフトウェアのインストールを行います。
root@ip-172-31-59-171:/voicevox# wget https://github.com/VOICEVOX/voicevox/releases/download/0.25.0/
voicevox-linux-cpu-x64-0.25.0.tar.gz
--2025-12-29 04:42:23-- https://github.com/VOICEVOX/voicevox/releases/download/0.25.0/voicevox-linux-cpu-x64-0.25.0.tar.gz
Resolving github.com (github.com)... 140.82.116.4
Connecting to github.com (github.com)|140.82.116.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://release-assets.githubusercontent
省略
今回はwgetコマンドを使っていますが、webページからでもインストールできます。インストーラは試していないですが、シェルスクリプトを実行してインストールする形でした。
2. tarコマンドで展開します。これでVOICEVOX自体の準備は完了です。
root@ip-172-31-59-171:/voicevox# tar -zxvf voicevox-linux-cpu-x64-0.25.0.tar.gz
VOICEVOX/
VOICEVOX/locales/
VOICEVOX/locales/en-US.pak
VOICEVOX/locales/ja.pak
VOICEVOX/chrome_100_percent.pak
VOICEVOX/vk_swiftshader_icd.json
VOICEVOX/chrome_crashpad_handler
VOICEVOX/libvk_swiftshader.so
VOICEVOX/libffmpeg.so
VOICEVOX/libGLESv2.so
省略
VOICEVOXの実行
gui環境で動かすためには/VOICEVOXの下のvoicevoxという実行ファイルを動かすと思うのですが、今回は必要ないので/VOICEVOX/vv-engineの下のrunという実行ファイルを動かします。
root@ip-172-31-59-171:/voicevox/VOICEVOX/vv-engine# pwd
/voicevox/VOICEVOX/vv-engine
root@ip-172-31-59-171:/voicevox/VOICEVOX/vv-engine# ls -l
total 30892
drwxr-xr-x 17 1001 1001 4096 Oct 28 16:58 engine_internal
-rw-r--r-- 1 1001 1001 2346 Oct 28 15:57 engine_manifest.json
-rw-r--r-- 1 1001 1001 4650600 Oct 27 18:09 libvoicevox_core.so
-rw-r--r-- 1 1001 1001 18219584 Oct 27 18:09 libvoicevox_onnxruntime.so
drwxr-xr-x 2 1001 1001 4096 Oct 27 18:09 model
drwxr-xr-x 4 1001 1001 4096 Oct 28 15:57 resources
-rwxr-xr-x 1 1001 1001 8740616 Oct 28 15:57 run
runを実行すると以下のようになります。今回はEC2以外からAPIで呼び出したいため、--host 0.0.0.0実行の際につけています。
実行すると以下のように待ち状態になります。セキュリティグループには50021(おそらくデフォルト)のインバウンドルールを加える必要があります。
root@ip-172-31-59-171:/voicevox/VOICEVOX/vv-engine# ./run --host 0.0.0.0
voicevox_engine/core/core_initializer.py:99: UserWarning: cpu_num_threads is set to 0. Setting it to an appropriate value.
2025-12-29T04:51:22.306236+00:00 INFO voicevox_core::synthesizer: CPUを利用します
reading /root/.local/share/voicevox-engine/user.dict_csv-a0846c14-383f-48d5-a577-fa47eca748cb.tmp ... 89
emitting double-array: 100% |###########################################|
done!
INFO: Started server process [1324]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:50021 (Press CTRL+C to quit)
外部から呼び出してみた
今回は自身のローカルのMacから呼び出してみました。
Mac側
Mac側では以下のように実行しました。少しわかりにくいのですが、最初の呼び出しで音声合成用のクエリ作成をjson形式で行い、得られたものから音声合成を行なっています。「speaker=1」のところで使用する音声の種類を選択、「text=」の部分で読み上げる文章を書いています。
curl -s -X POST -G \
--data-urlencode "text=こんにちは、私がタレカツです" \
--data-urlencode "speaker=1" \
http://IPアドレス:50021/audio_query \
| curl -s -X POST \
-H "Content-Type: application/json" \
-d @- \
"http://IPアドレス:50021/synthesis?speaker=1" \
> out_1.wav
サーバ側
サーバ側では以下のように呼出されたことが分かれば大丈夫です。
root@ip-172-31-59-171:/voicevox/VOICEVOX/vv-engine# ./run --host 0.0.0.0
voicevox_engine/core/core_initializer.py:99: UserWarning: cpu_num_threads is set to 0. Setting it to an appropriate value.
2025-12-29T06:00:10.310266+00:00 INFO voicevox_core::synthesizer: CPUを利用します
reading /root/.local/share/voicevox-engine/user.dict_csv-3b193ad6-52d8-4340-9454-7c3ecc4de68a.tmp ... 89
emitting double-array: 100% |###########################################|
done!
INFO: Started server process [1620]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:50021 (Press CTRL+C to quit)
INFO: IPアドレス:57790 - "POST /audio_query?text=%e3%81%93%e3%82%93%e3%81%ab%e3%81%a1%e3%81%af%e3%80%81%e7%a7%81%e3%81%8c%e3%82%bf%e3%83%ac%e3%82%ab%e3%83%84%e3%81%a7%e3%81%99&speaker=2 HTTP/1.1" 200 OK
INFO: IPアドレス:57792 - "POST /synthesis?speaker=2 HTTP/1.1" 200 OK
出力結果
実行すると以下のファイルが作られました。
おわりに
はじめに述べたように読み上げの選択肢は多くありますが、VOICEVOXは声の種類が豊富なので、利用場面は限られるかもしれないですが、選択肢の一つとしてはいいのではないでしょうか。
参考


