VOICEPEAKがPythonから使えるようになっていたので、最近話題のChatGPTに声を与えてみました。
VOICEPEAKをPythonで使う方法については、以下記事を参照してください。
atarms.hatenablog.com
今回は上記記事のスクリプトを、text2voicePeak.pyとして保存したものを使います。
あと、ChatGPT APIはそのまま使うとユーザーとのやり取りを一切記憶しないので、今回は記憶する実装にしました。 詳細は調べてね。
下に置いてあるコードを使うと動画みたいな感じになります。
以下が今回のコード
import openai from text2voicePeak import playVoicePeak openai.api_key = "OpenAIのサイトから発行したものをペースト" # ChatGPTクラス class ChatGPTClass: def __init__(self): self.messages = [] self.ai_response = "" # role:systemで初期設定をしたければ、以下で読み込む。なくてもいい # self.loadConfig("chatGPTSetting.txt") def chatProcess(self, userMessage): # ユーザの回答を保存 self.messages.append({"role": "user", "content": userMessage}) # APIを使ってChatGPTの回答を生成 response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=self.messages) self.ai_response = response['choices'][0]['message']['content'] # AIの回答を保存 self.messages.append({"role": "assistant", "content": self.ai_response}) return self.ai_response def loadConfig(self,fileName): with open(fileName, "r", encoding="utf-8") as f: self.messages.append({"role": "system", "content": f.read()})
使用例
# chatBotクラスのインスタンスを生成 chatbot = chatBot() # 会話を始める while True: # ユーザの入力を待機 userMessage = input("あなた:") if(userMessage == "_log"): # このセッションのChatGPTとのログを表示 for message in chatbot.messages: print(message["role"],":",message["content"]) continue # ユーザの入力をchatProcessに渡す chatbot.chatProcess(userMessage) # AIの回答を表示 print("AI:",chatbot.ai_response) # VoicePeakでAIの回答を音声で再生 playVoicePeak(chatbot.ai_response)
VOICEPEAKナレータの種類も増えてきてますし、今回の方法使ってギャルゲ作ってくれる人を切に望んでいます。