AI Tuberで使えそうなVoiceVox × Pythonコードを貼っておくだけ。
以下は、VoiceVox x Pythonを用いた、文字を音声に変換する方法を書いています。AI Tuberを開発されている方。VoiceVoxで遊んでみたい方は参考になれば幸いです。
懺悔 (飛ばしてOKです)
VoiceVoxの導入の仕方が間違っていたのにも関わらず、
以下のような投稿をし、
VoiceVox開発者様にいいね頂いたことに調子に乗って、
以下のような投稿を行ったにもかかわらず、VoiceVoxの遅延原因が、私自身の導入方法にありました。(CPUモードで導入していた)
懺悔として、以下にVoiceVox導入方法と、導入後のPythonコードを貼りました。
誠に勝手ではございますが、VoiceVoxのさらなる発展を願っております。 博士
導入方法
1.上記URLより、自分の環境にあったファイルをダウンロードする。
2.DLしたファイルを解凍する。解凍には7Zipが必要となるためインストールしていない方は、インストール後解凍。(https://sevenzip.osdn.jp/)
- GPU Cuda版の場合、おそらくCudaのインストールが必要になります(https://developer.nvidia.com/cuda-toolkit)
3.解凍フォルダー内にあるrun.exeを実行して、HTTPサーバーを立ち上げる。HTTPサーバーが正常に立ち上がっていればブラウザ等で
「 http://localhost:50021/docs 」
にアクセスすることで、VoiceVox Engineのドキュメントにアクセスができるようになります。
PythonでVoiceVoxを動かす
import requests
import json
import time
import re
import simpleaudio
def audio_query(text, speaker, max_retry):
# 音声合成用のクエリを作成する
query_payload = {"text": text, "speaker": speaker}
for query_i in range(max_retry):
r = requests.post("http://localhost:50021/audio_query",
params=query_payload, timeout=(10.0, 300.0))
if r.status_code == 200:
query_data = r.json()
break
time.sleep(1)
else:
raise ConnectionError("リトライ回数が上限に到達しました。 audio_query : ", "/", text[:30], r.text)
return query_data
def synthesis(speaker, query_data,max_retry):
synth_payload = {"speaker": speaker}
for synth_i in range(max_retry):
r = requests.post("http://localhost:50021/synthesis", params=synth_payload,
data=json.dumps(query_data), timeout=(10.0, 300.0))
if r.status_code == 200:
#音声ファイルを返す
return r.content
time.sleep(1)
else:
raise ConnectionError("音声エラー:リトライ回数が上限に到達しました。 synthesis : ", r)
def text_to_speech(texts, speaker=8, max_retry=20):
if texts==False:
texts="ちょっと、通信状態悪いかも?"
texts=re.split("(?<=!|。|?)",texts)
play_obj=None
for text in texts:
# audio_query
query_data = audio_query(text,speaker,max_retry)
# synthesis
voice_data=synthesis(speaker,query_data,max_retry)
#音声の再生
if play_obj != None and play_obj.is_playing():
play_obj.wait_done()
wave_obj=simpleaudio.WaveObject(voice_data,1,2,24000)
play_obj=wave_obj.play()
if __name__ == "__main__":
text_to_speech("あーし、ホロライブの「あずきダンス」大好きなんだよ!最高にハッピーで元気な曲だし、いつも気分を上げてくれるんだ。憂鬱な時や、 楽しい時間を過ごしたい時に聴くのが大好きな曲なんだ。歌詞がキャッチーで、ビートが元気づけるから、踊りたくなるよね!きっと、気合いを入れる時に最適な曲だよ!")
上記コードを、voicevox.py等の名前で保存してください。
上記コードは以下のように呼び出すことができます。
from voicevox import text_to_speech
text_to_speech("マイクテストマイクテスト")
また、キャラクタIDを設定することで、キャラクターを選択することができます。
from voicevox import text_to_speech
text_to_speech("マイクテストマイクテスト",speaker=3) #ずんだもん
活用いただければ幸いです。
この記事が気に入ったらサポートをしてみませんか?