Style-bert-vits2(chat)のクライアント側のコード、改。
import os
import time
from datetime import datetime
import openai
import wave
import pyaudio
import requests
openai_key = os.environ.get("OPENAI_API_KEY")
def create_synthesis(text,count):
parameters = {"text": text,"model_id": 4,"style": "Neutral",
"style_weight": 0} # 最低限のパラメーター。
# style: Neutral,Angry,Disgust,Fear,Happy,Sad,Surprise。 Neutralがデフォルト。
endpoint = "http://localhost:5000/voice/"
headers = {
"Content-Type": "application/json" }
response_synth = requests.get(endpoint, params=parameters, headers=headers)
# レスポンスから音声データを取得
audio_data = response_synth.content
# 音声データを保存
output_path = "./voices/output" + str(count) + ".wav"
with open(output_path, mode="wb") as f:
f.write(audio_data)
time.sleep(0.5)
return output_path
def playback(output_path):
with wave.open(output_path, 'rb') as f:
p = pyaudio.PyAudio()
def _callback(in_data, frame_count, time_info, status):
data = f.readframes(frame_count)
return (data, pyaudio.paContinue)
stream = p.open(format=p.get_format_from_width(width=f.getsampwidth()),
channels=f.getnchannels(),
rate=f.getframerate(),
output=True,
stream_callback=_callback)
stream.start_stream()
while stream.is_active():
time.sleep(0.1)
time.sleep(0.3) # ここで0.3秒待つと尻切れにならない。
stream.stop_stream()
stream.close()
p.terminate()
system_content = f"""あなたは優秀なAIアシスタント。名前はチャッピーです。楽しく会話しましょう。
現在時刻は{datetime.now()}です。"""
client = openai.OpenAI()
messages = [
{"role": "system", "content": system_content}
]
print("あなたの友達チャッピーに挨拶しましょう。")
count = 0
while True:
u = input("ユーザー: ")
if not u:
break
messages.append({"role": "user", "content": u})
resp = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
)
a = resp.choices[0].message.content
print(" チャッピー: " + str(a))
messages.append({"role": "assistant", "content": str(a)})
output_path = create_synthesis(str(a),count)
if count == 0:
time.sleep(2)
playback(output_path)
count += 1
音声再生時に最後の部分が尻切れになってしまうので、違う再生方法で解決しました。気になる方はこちらを使ってみてください。
この記事が気に入ったらサポートをしてみませんか?