1
1

EC2にVOICEVOXをインストールしてpythonから音声ファイルを作る

Last updated at Posted at 2024-04-26

はじめに

Amazon Linux 2023にVOICEVOXをインストールしたときのメモ

VOICEVOXのダウンロード

公式サイトからLinux版、対応モードCPU、Zip版を選択してダウンロード
落としたときのファイル名称は voicevox-linux-cpu-0.18.1.tar.gz
ファイル名称は18世代って意味だっけ

解凍

どこでもいいと思うけど /root直下に格納してtarで解凍する
image.png

実行

Windows版もrun.exeだったし、これでしょと思って実行してみる。
image.png

普通に動いた。最高かよ

サービスに登録する

毎回手動実行するわけにもいかないので、サービスに登録しておく。
rootで以下コマンド実行

vi /etc/systemd/system/voicevox.service

中身は以下

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

[Service]
User=root
Group=root
WorkingDirectory=/root/VOICEVOX/vv-engine
ExecStart=/root/VOICEVOX/vv-engine/run
Restart=always

[Install]
WantedBy=multi-user.target

vi 閉じたらサービス登録と起動

sudo systemctl enable voicevox.service
sudo systemctl start voicevox.service

Pythonからwaveファイルを作る

いきなりコード

voicevox.py
import requests
import json

# 指定文字を音声ファイルに保存する
# ・デフォルトはなみだめずんだもん(76)
def put_wave(text, file_path, speaker_id=76, speaking_rate=1.0):
    # 音声設定
    response = requests.post(
        'http://127.0.0.1:50021/audio_query',
        params = { 'text' : text, 'speaker' : speaker_id },
        timeout = (3, 10))   # 接続タイムアウト、全体タイムアウト?
    if response.status_code != 200 :
        return False

    # 速度変更
    speed = response.json()
    speed["speedScale"] = speaking_rate
    query = json.dumps(speed)

    # 音声データ要求
    response = requests.post(
        'http://127.0.0.1:50021/synthesis',
        params = { 'speaker' : speaker_id },
        data = query,
        timeout = (3, 10))
    if response.status_code != 200 :
        return False

    # 音声データ保存
    with open(file_path, 'wb') as fp :
        fp.write(response.content)
    return True

if __name__ == "__main__":
    put_wave("こんにちは!ずんだもんです!", 'output.wav', 1, 1.0 )

話す速度は変更できるようにした。タイムアウトはよく分かってない。

話し手IDのありか

以下jsonファイルに登録されているので、知りたいときは参照する。

VOICEVOX/vv-engine/model/metas.json
image.png

おわりに

1年間無料の t2.micro だからなのかけっこう動作不安定になるなぁ
スペック足りなめなのかな。
なみだめずんだもん最高におもろい!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1