1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIに関する記事を書こう!
Qiita Engineer Festa20242024年7月17日まで開催中!

OpenAI APIを使って簡易的な音声対話処理を作ってみた

Last updated at Posted at 2024-07-17

はじめに

こんにちは、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を使用して音声対話システムを構築する方法を探りました。

参考

1
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?