VOICEVOXの音声データが再生されない
解決したいこと
とある本を参考にしながら、VOICEVOXとChatGPTを連携し、対話できるチャットボットを勉強のために作成しています。現在音声合成の実装段階まできているのですが、以下のコードを実行するとエラーが出てしまい困っています。
内容としては指定のテキストをVOICEVOXに渡し、音声として再生させるというものなのですが、テキストから音声変換には成功しているようですが、音声の再生に至りません。どなたか原因がわかる方お教えいただきたいです。
発生している問題・エラー
ファイル名:text_to_speech.py
※requests playsoundライブラリインストール済み
import requests
from playsound import playsound
# VOICEVOX EngineのURL
VOICEVOX_URL = "http://localhost:50021"
# 音声に変換したいテキスト
text = "マグロが好きにゃ。"
# 音声合成のためのクエリを生成
response = requests.post(
f"{VOICEVOX_URL}/audio_query",
params={
"text": text,
"speaker": 58,
},
)
audio_query = response.json()
# 音声合成を行う
response = requests.post(
f"{VOICEVOX_URL}/synthesis",
headers={
"Content-Type": "application/json",
},
params={
"speaker": 58,
},
json=audio_query,
)
# ステータスコードが200以外の場合はエラーメッセージを表示
if response.status_code != 200:
print("エラーが発生しました。ステータスコード: {}".format(response.status_code))
print(response.text)
else:
# 音声データを取得
audio = response.content
# 音声データをファイルに保存
with open("output.wav", "wb") as f:
f.write(audio)
# 音声データを再生
playsound("output.wav")
以下エラーです。
(venv) nekonekobasu@nekonekobasunoMacBook-Pro Chapter04 % python text_to_speech.py
/Users/nekonekobasu/devel/voice-chat-bot/venv/lib/python3.9/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
warnings.warn(
playsound is relying on a python 2 subprocess. Please use `pip3 install PyObjC` if you want playsound to run more efficiently.
Traceback (most recent call last):
File "/Users/nekonekobasu/devel/voice-chat-bot/Chapter04/text_to_speech.py", line 45, in <module>
playsound("output.wav")
File "/Users/nekonekobasu/devel/voice-chat-bot/venv/lib/python3.9/site-packages/playsound.py", line 244, in <lambda>
playsound = lambda sound, block = True: _playsoundAnotherPython('/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python', sound, block, macOS = True)
File "/Users/nekonekobasu/devel/voice-chat-bot/venv/lib/python3.9/site-packages/playsound.py", line 229, in _playsoundAnotherPython
t.join()
File "/Users/nekonekobasu/devel/voice-chat-bot/venv/lib/python3.9/site-packages/playsound.py", line 218, in join
raise self.exc
File "/Users/nekonekobasu/devel/voice-chat-bot/venv/lib/python3.9/site-packages/playsound.py", line 211, in run
self.ret = self._target(*self._args, **self._kwargs)
File "/Users/nekonekobasu/devel/voice-chat-bot/venv/lib/python3.9/site-packages/playsound.py", line 226, in <lambda>
t = PropogatingThread(target = lambda: check_call([otherPython, playsoundPath, _handlePathOSX(sound) if macOS else sound]))
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/subprocess.py", line 368, in check_call
retcode = call(*popenargs, **kwargs)
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/subprocess.py", line 349, in call
with Popen(*popenargs, **kwargs) as p:
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/subprocess.py", line 1821, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python'
自分で試したこと
どこまでプログラムが実行されているのか訴求して確かめたところコード内にある
# 音声データをファイルに保存
with open("output.wav", "wb") as f:
f.write(audio)
まではうまくいっているようで指定のテキストがoutput.wavに入り、そちらからは再生できました。
# 音声データを再生
playsound("output.wav")
↑こちらで引っかかっているようなのですが、エラーを調べても情報が少なく、なぜこのようなエラーが出るのかわかりません。
お助けいただけますと幸いです。
何卒よろしくお願いいたします。
0 likes