#VOICEVOX
商用利用可能なAIベースの音声合成ソフトウェア
ボイボと呼びましょう。
APIなのかと思ったら、ダウンロードして.exeを実行すると、ローカルにサーバーが立つみたい。
curlでも利用できるとのことなので、pythonで叩いてみた。
あらかじめ上記リンクから、VOICEVOX本体をダウンロードして実行しておいてください。
#実行環境
当方の実行環境は以下
- CPU: i7 8550u
- GPU: Nvidia MX150
- Python = 3.9.5
CPUで実行しました。
#ソースコード
合成されるファイルは映像系のサンプルレート(モノラルの24000[Hz])なので注意
voicevox.py
import json
import requests
import wave
def generate_wav(text, speaker=1, filepath='./audio.wav'):
host = 'localhost'
port = 50021
params = (
('text', text),
('speaker', speaker),
)
response1 = requests.post(
f'http://{host}:{port}/audio_query',
params=params
)
headers = {'Content-Type': 'application/json',}
response2 = requests.post(
f'http://{host}:{port}/synthesis',
headers=headers,
params=params,
data=json.dumps(response1.json())
)
wf = wave.open(filepath, 'wb')
wf.setnchannels(1)
wf.setsampwidth(2)
wf.setframerate(24000)
wf.writeframes(response2.content)
wf.close()
if __name__ == '__main__':
text = 'こんにちは!'
generate_wav(text)
#感想
上記のPythonからしかためしていないので、GUIからだと解決できる機能があるかもですが、以下が簡単な感想です。
- 合成にはそこそこ時間がかかるので、リアルタイムでの合成には向いていなさそう(マシンスペックによる?)
- 英語をアルファベット読みされてしまうことがある(言語指定とかで回避できる?)
- 音声自体の品質は高い方だと思う
- 日本語にて、あらかじめ合成しておいて使うような用途であれば、現時点でベストプラクティスかもしれない
- 音声合成はいつもライセンス周りで困るので、ラピットプロトタイピングできるようになるのはありがたい
- 他の音声合成でもありがちだが、合成されたファイルは、音声部分のみ再生するとプツっと切れてしまう。
"、"や"。"で無音を置けたり、SSMLでpauseを入れたりできるとよくなりそう。