1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VOICEVOX(zip版)を使って読み上げwavを作る際のメモ

Last updated at Posted at 2025-02-04

はじめに

会社でずんだもんに何かを読み上げさせたい時、VOICEVOXを使いたくなる時がありますね。
ただ、会社PCだとレジストリをいじるようなexeを禁止されている場合もあります。
そこで、zip版でできるかどうかを確かめてみます。

手順

0. VOICEVOXのインストール

公式サイトに移動。

ここで、ダウンロード時に「Zip」を選びます。

image.png

「Zip」を選ぶと、インストーラがないので、任意のフォルダに置いてしまいます。

image.png

なお、実際のwav作成はWeb APIを使って作成するので、環境変数でPATHを設定するなどの作業も不要です。

当たり前ですが、インストールは初回のみでOK。

1. VOICEVOXを起動

上記フォルダのVOICEVOX.exeを起動。

ブラウザで http://127.0.0.1:50021 を叩き、サーバが立ち上がっていることを確認。

image.png

2. Web APIを叩いて、wav作成

この状態で、PythonなどでWeb APIを叩けばwavは作成できます。サンプルコードはQiitaにたくさんありますので、適宜参考にしてください。たとえば、以下をご参照。

メモ

  • 基本的に、http://127.0.0.1:50021/audio_query で作りたい音声合成用のクエリを作って、帰ってきたレスポンス(json)を使って http://127.0.0.1:50021/synthesis に送り付けるとwavのバイナリが返ってくるので、それをファイルにして保存するという流れ。
  • 読み上げ速度を変更したい場合などは、最初のレスポンスjsonを直接書き換えるようだ。

上記のサイトを参考にアレンジすると

vvt.py
import json
import requests
import wave

# パラメータ
params_dict = {
    'text' : "これはテストなのだ。",
    'speaker': 1
}
# 追加のパラメータ
data_dict = {
    'speedScale': 1.3
}

def generate_wav(filepath='./audio.wav'):
    host = 'localhost'
    port = 50021
    response1 = requests.post(
        f'http://{host}:{port}/audio_query',
        params=params_dict
    )
    headers = {'Content-Type': 'application/json',}

    # 追加のパラメータ
    my_audio_query = response1.json()
    for key, value in data_dict.items():
        my_audio_query[key] = value

    response2 = requests.post(
        f'http://{host}:{port}/synthesis',
        headers=headers,
        params=params_dict,
        data=json.dumps(my_audio_query)
    )

    wf = wave.open(filepath, 'wb')
    wf.setnchannels(1)
    wf.setsampwidth(2)
    wf.setframerate(24000)
    wf.writeframes(response2.content)
    wf.close()

if __name__ == '__main__':
    generate_wav()

あとは、params_dict.textを外部ファイル化などすれば、より便利になるだろうと感じた。

2025/02/20追記

「より便利になるだろう」という点を改造しました。

(つづく)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?