はじめに
こんにちは、Webエンジニアの岩田史門(@SI_Monxy)です!
今回はOpenAI APIを使った簡易的な音声対話アプリの構築について記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!
概要
音声によるインタラクションは、仮想アシスタントから顧客サービスボットまで、さまざまなアプリケーションで人気を集めています。OpenAIのような高度なAIモデルを活用することで、これらのシステムの自然さと反応性を大幅に向上させることができます。
セットアップ
始めるために必要なもの
- OpenAI APIへのアクセス権限。特に対話を処理することができるGPTモデルが必要です。
- Python環境と必要なライブラリ(API呼び出しのためのrequests、音声入力のためのpyaudio)。
実装手順
OpenAI APIのセットアップ
- OpenAIからAPIキーを取得します。
- Pythonパッケージ(openai)をインストールして簡単に統合します。
音声入力の処理
- pyaudioを使用してユーザーからの音声入力をキャプチャします。
- 音声をテキストに変換するために音声認識ライブラリ(例:SpeechRecognition)を使用します。
対話の処理
- ユーザーのクエリをopenai.ChatCompletion.create()メソッドを使ってOpenAI APIに送信します。
- 応答を処理し、対話の文脈を管理して会話の流れを維持します。
音声出力
- AIが生成したテキスト応答を音声に変換するためにテキスト読み上げライブラリ(例:pyttsx3やgTTS)を使用します。
デモンストレーション
Pythonでの簡略化された実装を見てみます
import openai
import speech_recognition as sr
import pyttsx3
# OpenAI APIのセットアップ
openai.api_key = 'あなたのOpenAIのAPIキー'
# 音声入力を処理する関数
def listen():
r = sr.Recognizer()
with sr.Microphone() as source:
print("リスニング中...")
audio = r.listen(source)
try:
query = r.recognize_google(audio, language='ja-JP')
return query
except Exception as e:
print(e)
return ""
# OpenAI APIを使って対話を処理する関数
def converse(prompt):
response = openai.ChatCompletion.create(
model="text-davinci-002",
messages=[
{"role": "user", "content": prompt}
]
)
return response['choices'][0]['message']['content']
# AIの応答を音声で出力する関数
def speak(text):
engine = pyttsx3.init()
engine.say(text)
engine.runAndWait()
# メインプログラムのループ
if __name__ == "__main__":
while True:
query = listen()
if query:
if query == "終了": # ユーザーが "終了" と発話したらプログラムを終了する
print("対話を終了します。")
break
response = converse(query)
print("AI:", response)
speak(response)
まとめ
この記事では、OpenAI APIを使用して音声対話システムを構築する方法を探りました。