Skip to content

Instantly share code, notes, and snippets.

@masakielastic
Last active June 20, 2025 14:25
Show Gist options
  • Select an option

  • Save masakielastic/8eb02f2ec2187afe2f5f18b8227c4b12 to your computer and use it in GitHub Desktop.

Select an option

Save masakielastic/8eb02f2ec2187afe2f5f18b8227c4b12 to your computer and use it in GitHub Desktop.
Linux 版 VOICEVOX の HTTP API サーバーを起動させる

Linux 版 VOICEVOX の HTTP API サーバーを起動させる

確認環境

Debian 12 Bookwork。Chromebook の Linux 環境で動作

準備

デスクトップ版 VOICEVOX をインストールするとプログラムファイルは $HOME/.voicevox 以下に設置されます。

> ls $HOME/.voicevox
uninstaller_linux.sh  VERSION  VOICEVOX.AppImage

VOICEVOX.AppImage の圧縮された内容を同じディレクトリに展開します。

cd $HOME/.voicevox
./VOICEVOX.AppImage --appimage-extract
> ls
squashfs-root  uninstaller_linux.sh  VERSION  VOICEVOX.AppImage

HTTP API サーバーを起動させる run コマンドは squashfs-root/vv-engine のなかにあります。

cd $HOME
ls .voicevox/squashfs-root/vv-engine
base_library.zip                               libonnxruntime.so                       model
_cffi_backend.cpython-311-x86_64-linux-gnu.so  libpython3.11.so.1.0                    numpy
engine_manifest.json                           libquadmath-96973f99-934c22de.so.0.0.0  numpy-2.2.3.dist-info
importlib_metadata-8.0.0.dist-info             libreadline.so.8                        pydantic_core
jaraco                                         libscipy_openblas64_-6bb31eeb.so        pyopenjtalk
libbz2.so.1.0                                  libssl.so.3                             pyworld
libcrypto.so.3                                 libstdc++.so.6                          pyworld-0.3.5.dist-info
lib-dynload                                    libtinfo.so.6                           resources
libffi.so.8                                    libuuid.so.1                            run
libgcc_s.so.1                                  libvoicevox_core.so                     _soundfile_data
libgfortran-040039e1-0352e75f.so.5.0.0         libz.so.1                               soxr
liblzma.so.5                                   markupsafe                              yaml
libmvec.so.1                                   MarkupSafe-3.0.2.dist-info

ヘルプメッセージを表示させてみます。

.voicevox/squashfs-root/vv-engine/run --help

今度は起動させてみます。

> .voicevox/squashfs-root/vv-engine/run
.voicevox/squashfs-root/vv-engine/run
Warning: cpu_num_threads is set to 0. Setting it to half of the logical cores.
Info: Loading core 0.15.8.
reading /home/masakielastic/.local/share/voicevox-engine/user.dict_csv-1ba2ce5d-5565-4382-acba-9b588c314bcd.tmp ... 82
emitting double-array: 100% |###########################################| 

done!
INFO:     Started server process [1884]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://localhost:50021 (Press CTRL+C to quit)
INFO:     ::1:60280 - "GET / HTTP/1.1" 200 OK

起動時にポート番号を指定することもできます。

.voicevox/squashfs-root/vv-engine/run --port 50029

デスクトップ版 VOICEVOX と併用する場合、ポート番号が重複しないようにしたほうがよいでしょう。

毎回ディレクトリパスを入力するのがめんどうだったらエイリアスを登録します。

alias voicevox-run=$HOME/.voicevox/squashfs-root/vv-engine/run
alias vv-run=$HOME/.voicevox/squashfs-root/vv-engine/run

HTTP API サーバーを systemd に登録する

systemd に VOICEVOX の HTTP API サーバーを登録して自動起動させることができます。 /etc/systemd/system/voicevox.service に次のような内容を保存します。

[Unit]
Description=Voicevox Engine Service
After=network.target

[Service]
User=[your name]
WorkingDirectory=/home/[your name]/.voicevox/squashfs-root/vv-engine/
ExecStart=/home/[your name]/.voicevox/squashfs-root/vv-engine/run --port 50029
Restart=on-failure

[Install]
WantedBy=multi-user.target

サービスに登録します。

sudo systemctl enable voicevox.service

起動させます。

sudo systemctl enable voicevox.service

正常に動いているか確認します。

sudo systemctl enable voicevox.service

今度は停止させます。

sudo systemctl stop voicevox.service

自動起動から除外させます。

sudo systemctl disable voicevox.service

自動起動の登録をしていなくても手動で起動できます。

sudo systemctl start voicevox.service
sudo systemctl status voicevox.service
● voicevox.service - Voicevox Engine Service
     Loaded: loaded (/etc/systemd/system/voicevox.service; disabled; preset: enabled)
    Drop-In: /run/systemd/system/service.d
             └─zzz-lxc-service.conf
     Active: active (running) since Fri 2025-06-20 15:02:49 JST; 5s ago
   Main PID: 2492 (run)
      Tasks: 5 (limit: 4915)
     Memory: 68.2M
     CGroup: /system.slice/voicevox.service
             └─2492 /home/masakielastic/.voicevox/squashfs-root/vv-engine/run --port 50029

HTTP API の確認

PORT=50029

echo -n "こんにちは、音声合成の世界へようこそ" >text.txt

curl -s \
    -X POST \
    "127.0.0.1:$PORT/audio_query?speaker=1"\
    --get --data-urlencode [email protected] \
    > query.json

curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @query.json \
    "127.0.0.1:$PORT/synthesis?speaker=1" \
    > audio.wav

生成された音声ファイルを再生します。

aplay audio.wav

Debian で aplay を利用するには alsa-utils をインストールします。

sudo apt install alsa-utils

コマンドの作成

毎回、複数のコマンドを入力するのはめんどうなので、コマンドを作成します。

#!/bin/sh

if [ "$#" -lt 1 ]; then
  echo "メッセージを入力してください"
  exit 1
fi

PORT=50029

echo -n $1 >text.txt

curl -s \
    -X POST \
    "127.0.0.1:$PORT/audio_query?speaker=1"\
    --get --data-urlencode [email protected] \
    > query.json

curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @query.json \
    "127.0.0.1:$PORT/synthesis?speaker=1" \
    > audio.wav

aplay -q audio.wav

say ファイルに実行権限を付与します。

chmod +x say

コマンドを試してみます。

./say こんにちは

いくつかの機能を追加した say コマンドはこちらをご参照ください。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment