ChatGPTと音声で会話できるプログラム作ってみた
どうも、なおくんです。
今回は最近話題のChatGPTと会話できるプログラムを作ってみたので紹介&ソースコードの解説をします。
既に同じようなプログラムを作っている人はたくさんいそうですが…まぁ気にせず記事を書いていきます。
なぜ会話できるプログラムを作ったのか
僕はChatGPTが公開されてから、ずっと何かに活かせないだろうかと考えてきましたが、ですが全く何に活かせば良いのか思いつきませんでしたww
それでもChatGPTを使って何か作ってみたいと思ったので、このようなプログラムを作りました。
構造は至ってシンプル!
マイクから音声入力を取得
音声を文章に変換
文章をChatGPTに投げかける
ChatGPTの返信を取得
返信を音声に変換
音声を出力
僕が作ったのは1・2・5・6だけです。しかもこれらの処理は全て既存のライブラリを利用しているので、実際に僕が作ったものはなく、今あるパーツを組み合わせただけですwww
ちなみに言語はPythonです。
デモンストレーション
ソースコード解説
import speech_recognition as sr
import openai
import pyttsx3
openai.api_key = 'APIキー'
r = sr.Recognizer()
with sr.Microphone(device_index=0) as source:
print('【ChatGPTに話しかけてください】')
audio = r.listen(source)
try:
user_message = r.recognize_google(audio, language='ja-JP')
print(' < YOU > ')
print(user_message)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{'role': 'user', 'content': user_message}],
temperature=0.0,
)
response = response['choices'][0]['message']['content']
print(' < ChatGPT > ')
print(response)
engine = pyttsx3.init()
engine.say(response)
engine.runAndWait()
except:
print('【声が聞き取れませんでした】')
ソースコードの全体はこちら。
speech_recognition
これはマイクの音声入力を文字起こししてくれるライブラリです。
import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone(device_index=0) as source:
audio = r.listen(source)
message = r.recognize_google(audio, language='ja-JP')
「with sr.Microphone()」でマイク入力を受け付けます。「(device_index=0)」で使用するマイクを指定できますが、デフォルトの場合は0のままでOKです。「audio = r.listen(source)」でマイクからの音声を取得します。最後に「message = r.recognize_google(audio, language='ja-JP')」で取得した音声を文章に変換します。
使い方が少し難しいですが、同じような用途であればコピペするのもOK👍
openai(chatgpt)
一応ChatGPTの使用方法についても解説しておきます。(ChatGPTはopenaiというライブラリを使用します)
import openai
openai.api_key = 'APIキー'
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{'role': 'user', 'content': user_message}],
temperature=0.0,
)
response = response['choices'][0]['message']['content']
APIキーはブラウザからopen aiにアクセスしてアカウントを作成すると誰でも発行できます。詳しい方法については調べてください。
「response = openai.ChatCompletion.create(model="gpt-3.5-turbo",essages=[{'role': 'user', 'content': user_message}],temperature=0.0, )」の部分でChatGPTにメッセージを送信し返信を取得しています。
「user_message」というのは変数で、ここに文章を入力するとChatGPTからの返信が来ます。
しかし返信はjson形式で他にも色々な情報が含まれているので、返信の内容自体を取得する場合はこのように指定する必要があります。「response['choices'][0]['message']['content']」
pyttsx3
これは文字を読み上げるライブラリです。
import pyttsx3
engine = pyttsx3.init()
engine.say(response)
engine.runAndWait()
「engine = pyttsx3.init()」でインスタンス化して「engine.say(response)」で読み上げる文章(変数名response)を指定して「engine.runAndWait()」で読み上げる。
これは使い方も簡単ですね~
まとめ
このように会話できるようにすることで文字入力が苦手なお年寄りの方でも使いやすくすることはできます。
しかしながら現在のソースコードでは会話の度に実行しなければならなかったり、ライブラリを多様しているので処理性能が遅かったり…まだまだ実用的とは言えません。
今後このような会話できるプログラムを使って何かに組み込んだり…など案があれば作りたいなと思っていますが、現状何も思いつかないので下のコメント欄で良い案を募集しますw
あとソースコードはGitHubにもあげていますので、使ってみたい人はダウンロードしてみてね~
pip install -r requirements.txt
このコマンドで必要なライブラリを一括インストールできます!
この記事が気に入ったらサポートをしてみませんか?