ChatGPT, Python, Whisper APIを活用し、動画ファイルから議事録を自動生成

## はじめに

現在のデジタル社会では、Teamsなどのオンライン会議が日常的に行われています。
しかし、その議事録を取るのは容易ではありません。そこで、OpenAIのChatGPTとWhisperを使って、動画ファイルから議事録を自動生成する方法をご紹介します。

### 補足説明：ChatGPTについて

ChatGPTは、OpenAIが開発した自然言語処理AIで、人間と自然に会話することが可能です。GPT-3、GPT-4という大規模な言語モデルをベースにしており、様々な文脈での文章生成が得意です。

### 補足説明：Whisperについて

Whisperは、OpenAIが開発した自動音声認識(ASR)システムです。大量の音声とテキストデータで訓練されており、音声をテキストに変換するタスクを効率的に行います。

## 処理の流れ

ここから、具体的に動画ファイルから議事録を生成するための具体的な手順を説明します。

### 1. 動画ファイルを取得（Teams会議録画など）

まず、Teamsなどのツールを使って会議の動画を録画します。保存された動画ファイルがこのプロセスの入力となります。

### 2. 動画ファイルを音声ファイルに変換し、OpenAI Whisper APIで音声文字起こしするPythonプログラムの実行。
今回は、mp4→mp3に変換しましたが、他の拡張子のファイルを使う場合は、プログラムを適宜変更してください。

``` python
import os
import openai
import moviepy.editor as mp

# APIキーの設定
openai.api_key = "自分のOpenAI API keyを入力"

def convert_mp4_to_mp3(mp4_file_path):
    wav_file_path = os.path.splitext(mp4_file_path)[0] + '.mp3'
    audio = mp.AudioFileClip(mp4_file_path)
    audio.write_audiofile(wav_file_path)
    return wav_file_path

def transcribe_audio(wav_file_path):
    with open(wav_file_path, 'rb') as audio_file:
        transcription = openai.Audio.transcribe("whisper-1", audio_file, language='ja')

    return transcription.text

def save_transcription_to_file(transcription, output_file_path):
    with open(output_file_path, 'w', encoding='utf-8') as f:
        f.write(transcription)

if __name__ == "__main__":
    mp4_file_path = input("mp4ファイルのパスを入力してください: ")
    wav_file_path = convert_mp4_to_mp3(mp4_file_path)

    transcription = transcribe_audio(wav_file_path)
    print("音声文字起こしが完了しました。")

    output_file_path = os.path.splitext(mp4_file_path)[0] + '_transcription.txt'
    save_transcription_to_file(transcription, output_file_path)
    print(f"音声文字起こしの結果が {output_file_path} に保存されました。")

```


今回は台風のニュース動画を用い、音声文字起こしを行いました。
文字起こしした結果は、以下です。

``` txt
予報センターから台風7号についてお伝えします。まずはひまわり8号の画像で雲の様子を確認します。 現在、沖縄の南の海上、フィリピンの東の海上にある大きな雲の塊、こちらが昨日の午前9時に発生した台風7号です。 中心付近の目ははっきりとは分かりませんが、丸くまとまっている様子が分かります。 そして外側の雨雲、すでに沖縄の近海まで広がってきているような状況です。 では台風の現在の位置、そして予想進路を確認していきます。 現在は沖縄の南の海上にありまして、中心の気圧が996ヘクトパスカル、中心付近は最大風速が20メートル、最大瞬間風速30メートルで、北西にゆっくりと進んでいます。 この先も北寄りに進みまして、明日のお昼頃に沖縄本島の近くを通過、さらに東中予を北上する予想です。 現在は風速25メートル以上の暴風域はありませんが、発達中で、あさって午前3時までに暴風域も広がってくる見込みです。 その先は朝鮮半島に向かいまして、温帯低気圧で変わりつつ、向きを東へと変えてくる予想となっています。 影響としましては、まず沖縄付近、明日の日中をピークに雨や風が強まります。 1時間に50ミリを超えるような猛烈な雨の恐れがありますし、沖縄本島付近では外出危険の暴風の恐れもあります。 今日のうちに雨や風に対する備えを行ってください。 そのほか、奄美地方や崎島諸島方面でも、一時的には雨が強まり、強い風を伴います。 雷にも注意が必要です。 そして波につきましては、今日30日ですでに2メートルを超える高波。 沖縄本島の太平洋側の沿岸につきましては3メートルを超えてまいります。 明日の1日、ピークになりますと、沖縄本島付近では6メートルを超える大湿気。 そのほか、奄美地方のあたりも4メートルを超える湿気の状態が予想されます。 海岸に近づくのは危険です。 本州付近には台風は近づかない予想とはなってはおりますが、馬雨前線が停滞しております。 前線の活動を活発にしまして、特に北日本方面、雨が強まる恐れもありますので、今後の雨の情報にも注意してください。 台風7号についてお伝えしました。

``` 

### 3. Whisperの結果をChatGPTを用いて要約し、議事録作成
下記プロンプトで、GPT-4を用い議事録を作成してもらう。
``` 
あなたは、プロの議事録作成者です。
以下の制約条件、内容を元に要点をまとめ、議事録を作成してください。

# 制約条件
・要点をまとめ、簡潔に書いて下さい。
・誤字・脱字があるため、話の内容を予測して置き換えてください。
・見やすいフォーマットにしてください。

# 内容
~ 文字起こし結果貼り付け（省略） ~
``` 

<br>
ChatGPTに議事録を作成してもらった結果がこちら。

-------------------------------
**議事録：台風7号についての予報**

**日付：2023-04-27**

**台風7号の現状と予想進路**
- 台風7号は沖縄の南とフィリピンの東の海上で発生し、現在も沖縄の南の海上に位置している。
- 中心の気圧は996ヘクトパスカル、中心付近の最大風速は20メートル、最大瞬間風速は30メートルで、北西にゆっくりと進行中。
- 明日の昼頃には沖縄本島の近くを通過し、さらに東中予を北上する予想。
- 朝鮮半島に向かいつつ、温帯低気圧に変わり、進路を東に変える予想。

**影響と注意事項**
- 沖縄本島付近では明日の日中に雨や風が強まり、1時間に50ミリを超える猛烈な雨や暴風の恐れがある。外出には注意が必要。
- 奄美地方や崎島諸島方面でも、一時的に雨が強まり、強い風を伴う。雷に注意が必要。
- 沖縄本島の太平洋側の沿岸では明日、波高が3メートルを超え、ピーク時には6メートルを超える高波が予想される。海岸付近は危険。
- 本州付近には台風は近づかない予想だが、馬雨前線が停滞しており、前線の活動が活発化すると特に北日本方面で雨が強まる恐れがある。

**対応策**
- 今日中に雨や風に対する備えを行うこと。
- 雨や風の情報に注意を払い、安全確保に努めること。

----------------


今回は、Web版ChatGPTで議事録作成を行いましたが、APIを使うことで、議事録作成までを全てプログラムで行うことも可能です。

## 終わりに
如何だったでしょうか。
以上が、OpenAIのChatGPTとWhisperを使って動画から議事録を生成する方法です。
AIの力を利用すれば、議事録の作成という時間と労力を必要とする作業も効率化することが可能です。
今後のAIの進歩により、より多くの業務が自動化され、我々の生活がより便利になることを期待します。

PS. この記事の8割はChatGPTが作成しました。