今回はOpenAIがAPIを提供している音声認識システム、WhisperとChatGPTを組み合わせたシステムを紹介します。
Whisperは音声ファイルを自動で文字起こしすることが可能です。Whisperで文字列に変換したデータを、ChatGPTで要約するさせることで、音声ファイルの内容を短時間で確認することができます。
Whisperを使うと音声ファイルを文章データに変換できる。
短時間でのセミナー講座の受講や会議の議事録作成など、様々なシーンで活用できます。一連の処理を自動で実行するためのPythonコードを紹介しますので、ぜひ試してみてください。
また、当ブログ内のChatGPTについての記事を以下のページでまとめていますので、あわせてご覧ください。
ChatGPTとは
ChatGPTは、OpenAIが提供する自然言語生成モデルです。GPT(Generative Pre-training Transformer)と呼ばれるモデルのアーキテクチャを採用しています。
GPTは、Transformerと呼ばれるニューラルネットワークを使用して、文書や言語処理タスクでのテキスト生成を行うモデルです。GPTは、大量のテキストデータを学習し、そのデータをもとに新しい文章を生成することができます。
ChatGPTは、GPTをもとにしたモデルであり、対話型システムやチャットボットなどで使われることを想定して開発されています。対話を続けることができるようになっており、ユーザーが入力するテキストに対して、自然で返答ができるようになっています。
OpenAI APIキーの取得
ChatGPTと後程、紹介するWhisperを使用するためには、OpenAIのAPIキーを取得する必要があります。取得の手順については以下の記事で解説しています。
Whisperとは
Whisperは、OpenAIが開発した自動音声認識(ASR)システムです。APIを通じて提供され、ユーザーが簡単に音声データをテキストに変換できるようになっています。Whisperは、大量の音声データから学習したニューラルネットワークに基づいており、その性能は継続的に向上しています。
- 複数の言語での音声認識に対応しています。これにより、世界中のユーザーがさまざまな言語で音声データをテキストに変換できます。
- 最先端のニューラルネットワーク技術を利用しており、非常に高い音声認識精度を実現しています。これにより、音声データを効率的にテキストに変換することができます。
- Whisperはさまざまな用途で活用されています。例えば、音声アシスタント、音声入力システム、会議録の自動書き起こし、教育用途、オーディオブックの字幕作成、言語翻訳など、多岐にわたります。
APIの料金
Whisper APIを利用するためには、OpenAIのAPIキーが必要です。APIキーを取得したら、Pythonなどのププログラムでリクエストを送信し、音声データをテキストに変換できます。また、OpenAIはAPIの利用料金を設定しており、使用量に応じて課金されます。
料金については以下のように記載されています。
Whisper, the speech-to-text model we open-sourced in September 2022, has received immense praise from the developer community but can also be hard to run. We’ve now made the large-v2 model available through our API, which gives convenient on-demand access priced at $0.006 / minute. In addition, our highly-optimized serving stack ensures faster performance compared to other services.
2023年4月現在、読み込む音声ファイルの長さに応じて1分あたり$0.006という料金が設定されています。
公式ドキュメント
Whisperに関する公式ドキュメントは以下の通りです。
OpenAIのライブラリのインストール
必要なライブラリをインストールします。コマンドプロンプトで以下のコマンドを実行してください。
pip install openai
作成したPythonコード
ここからは実際に文字起こしから要約までを実行するためのPythonコードの実装方法を解説します。
コード解説
各種設定
「MOV_FILE_PATH」に要約したい音声ファイルのパスを指定してください。
「PROMPT_BASE」にどのような形で要約を出力してほしいかを指定してください。
openai.api_key = "(ここにOpenAIのAPIキーを設定)" #APIキー
MOV_FILE_PATH = "rd684.mp3" #読み込む音声ファイル
PROMPT_BASE = "次の文章を200字程度で要約してください。" #要約の仕方を指示
GPT_MODEL ="gpt-3.5-turbo" #使用する言語モデル
Whisperによる文字起こし
Whisperを使って音声ファイルから文章データを生成するには、以下の2行のコードを実行するだけです。
音声ファイルを「openai.Audio.translate」メソッドに渡すと、transcriptに文字列データが返されます。
audio_file= open(MOV_FILE_PATH, "rb")
transcript = openai.Audio.translate("whisper-1", audio_file)
ChatGPTのプロンプトを作成
出力形式を指定するプロンプト「PROMPT_BASE」と、WhisperのAPIより返された文字列データを結合して、ChatGPTに入力するプロンプトとします。
#ChatGPTプロンプトを作成
prompt = PROMPT_BASE + transcript.text
全体のPythonコード
以下が作成した全体のPythonコードです。
音声ファイル名は、必要に応じて変更してください。
import openai
openai.api_key = "(ここにOpenAIのAPIキーを設定)" #APIキー
MOV_FILE_PATH = "rd684.mp3" #読み込む音声ファイル
PROMPT_BASE = "次の文章を200字程度で要約してください。" #要約の仕方を指示
GPT_MODEL ="gpt-3.5-turbo"
#動画、オーディオファイルを開く
audio_file = open(MOV_FILE_PATH, "rb")
#Whisperで音声から文字お越し
transcript = openai.Audio.transcribe("whisper-1", audio_file)
#ChatGPTで要約を作成
#ChatGPTプロンプトを作成
prompt = PROMPT_BASE + transcript.text
#推論を実行
response = openai.ChatCompletion.create(
model=GPT_MODEL,
messages=[
{"role": "user", "content": prompt}
]
)
#ChatGPTの回答を出力
print(response["choices"][0]["message"]["content"])
実行結果
先ほどの作成したPythonコードが正しく動作するかを確認します。
音声ファイルをWhisperで文字列データに変換し、それをChatGPTに入力して要約文を作成します。
音声素材
テストで使用する音声データは青空文庫の朗読サイト、「青空朗読」で公開されているものを使用します。
今回は、芥川 龍之介の「魚河岸」を使用します。音声ファイルの時間も11分程度と、テストでは丁度よい長さです。
Whisperによる文字起こしの結果
まずは「魚河岸」の音声ファイルをWhisperのAPIに入力し、文字起こしを行います。Whisperで生成されたデータは以下となります。
ChatGPTで要約された出力結果
続いて先ほどの文字起こししたデータを、200文字程度に要約するようChatGPTに指示し、出力された要約文は以下となります。
概ね正しく要約されていることが確認できました。
\ Pythonを自宅で好きな時に学べる! /
まとめ
今回はOpenAIがAPIを提供している音声認識システムと、ChatGPTを組み合わせた音声ファイルの要約システムの構築方法を紹介しました。
ぜひ、ビジネスやリスキリングで活用してみてください。
また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。
スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。
それでは、また次の記事でお会いしましょう。
コメント