音声でChatGPTと疑似会話する環境を構築③【Python】
前回の記事の続きです。今回は、以下のうち最後の③について記述します。
- ①文章を Voicevox に喋らせるプログラム
- ②文章を ChatGPT API へ投げて、文章の返答を得るプログラム
- ③自分が喋った音声を Whisper API へ投げて、文書に書き起こすプログラム
プログラムの記述
今回も内容としては比較的シンプルで、GUIを手軽に作成できる Gradio を用いて音声録音画面を作成し、 Whisper API へ音声を送信。
文字起こしした文章が返ってきたら、前回記事で作成した chatgpt_speaking.py から導入した vv_call 関数へ渡し、前回記事のプログラムに沿ってChatGPTへ送信・・・という内容になっています。
import openai
import gradio as gr
from chatgpt_speaking import vv_call
openai.api_key = 'ここにAPIキーを入力'
# 音声ファイルをWhisper APIで文字起こしする関数を定義
def transcribe(audio):
audio_file= open(audio, "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
vv_scripts = vv_call(transcript["text"])
return vv_scripts
#Gradio部分
audio_input = gr.Audio(source = "microphone", type = "filepath")
interface = gr.Interface(
fn = transcribe,
inputs = audio_input,
outputs = ["textarea"]
)
interface.launch()
上記のプログラムを実行するとコンソールに『Running on local URL: http://~~~』と表示されるため、ブラウザにアドレスを入力すると GUI が起動します。
Gradio のインターフェースはこんな感じで、赤枠の部分を押すと録音開始(ブラウザでの録音許可が必要)し、もう一度押すと録音停止、送信を押すことで動作します。
音声入力から Voicevox で返答の音声が再生されるまでの時間は、筆者の非力なPC環境で約15~20秒ほど。個人的にはこれでも十分ですが、つよつよPC環境の方ならもっと早く動作すると思います。
今回用いた ChatGPT API と Whisper API は有料ですが、非常に低価格なため価格を気にせず遊べるのはありがたいですね。(そもそも OpenAI の APIキーは数か月間では使いきれない量の無料クレジット枠が付与されるため、本記事くらいの遊び目的なら実質無料といってよいでしょう)
以上、音声で ChatGPT と疑似会話できる環境を構築してみました。
私のような初心者の趣味レベルの人間でも扱えるくらい簡単な ChatGPTのサービス、世に出てきてくれてありがたい限りですね。
スキルのある方ならもっと洗練された内容のものが作れると思いますが、とりあえずここまで。
以上、何かの参考になれば幸いです。
前回の記事はこちらから。
珈琲1杯でもおごるつもりでご支援して頂けたら大変喜びます😊