Pythonで会議の録画などの動画データからテキストを書き起こして、要約する方法について解説します。以下では、具体的な手順とサンプルコードを通じてその方法を解説します。この方法を利用して、TeamsやZoomの会議録画から議事録の作成を省力化することも可能です。
実装する手順の説明
下記の4ステップで実装します。
- 動画データの取得 : 動画ファイルをPythonで読み込みます。
- 音声の抽出 : 動画から音声トラックを抽出します。
- 音声からテキストへの変換 : 抽出した音声データをテキストに変換します。
- テキストの要約 : 変換したテキストを要約します。
処理の実装
上記の4ステップを順に実装していきます。
事前の環境準備
初めに必要なライブラリをインストールします。今回はmoviepy
、pydub
、speech_recognition
、gensim
のライブラリを利用します。以下のコマンドでそれらを一括でインストールできます。インストール済みの場合はスキップして下さい。
pip install moviepy pydub SpeechRecognition gensim
動画データの取得
moviepy
ライブラリを使って動画ファイルを読み込みます。example_video.mp4
は読み込む動画ファイルのパスです。実際のファイル名、ファイルパスに置き換えて下さい。VideoFileClip
関数を使って動画をオブジェクトとして読み込みます。
import moviepy.editor as mp video_path = "example_video.mp4" video = mp.VideoFileClip(video_path)
音声の抽出
moviepy
ライブラリを使用して動画から音声トラックを抽出します。まず、動画オブジェクトから音声部分を取得し、write_audiofile
メソッドを使用して音声を指定したファイルに書き出します。
import moviepy.editor as mp from pydub import AudioSegment video_path = "example_video.mp4" video = mp.VideoFileClip(video_path) audio_path = "temp_audio.wav" video.audio.write_audiofile(audio_path)
音声からテキストへの変換
音声ファイルをGoogleの音声認識APIを使ってテキストに変換します。まず、pydub
ライブラリを使用して音声ファイルを読み込み、一時的なファイルとして書き出します。次に、speech_recognition
ライブラリを使用して音声ファイルを読み込み、Googleの音声認識APIを使ってテキストに変換します。
import moviepy.editor as mp from pydub import AudioSegment import speech_recognition as sr audio_path = "temp_audio.wav" audio = AudioSegment.from_wav(audio_path) audio.export("temp_audio.flac", format="flac") recognizer = sr.Recognizer() with sr.AudioFile("temp_audio.flac") as source: audio_data = recognizer.record(source) text = recognizer.recognize_google(audio_data, language="ja")
recognizer.recognize_google()
のlanguage
パラメータには音声の言語を指定します。今回の実装では日本語のja
を指定しています。もし英語の場合はlanguageを書き換え、text = recognizer.recognize_google(audio_data, language="en")
と実装します。
テキストの要約と結果の出力
このブロックでは、gensim
ライブラリを使ってテキストを要約します。最後に確認のため、結果をコンソールに出力します。また、結果をテキストファイルにも出力しています。テキストファイルは "summary.txt"
という名前で保存しています。コンソールで結果を確認する必要がない場合、結果が長すぎる場合はprint()
の処理をコメントアウトして下さい。
from gensim.summarization import summarize summary = summarize(text, ratio=0.5) # 要約率は0.5とする print("書き起こしテキスト:") print(text) print("\n要約:") print(summary) # 結果をテキストファイルに出力 with open("summary.txt", "w") as file: file.write(summary)
gensim.summarization
モジュールの要約率は、要約結果の長さを制御するパラメータです。この要約率は、0から1の間の値で指定されます。要約率が大きいほど、元のテキストの長さに対して要約結果の長さが大きくなります。要約率のデフォルト値は0.2ですが、結果を見ながら要約の詳細さや長さに応じて、値を調整します。
完成したコード
上記のステップで作成したコードを総合すると下記のようになります。
import moviepy.editor as mp from pydub import AudioSegment import speech_recognition as sr from gensim.summarization import summarize # 1. 動画データの取得 video_path = "example_video.mp4" video = mp.VideoFileClip(video_path) # 2. 音声の抽出 audio_path = "temp_audio.wav" video.audio.write_audiofile(audio_path) # 3. 音声からテキストへの変換 audio = AudioSegment.from_wav(audio_path) audio.export("temp_audio.flac", format="flac") recognizer = sr.Recognizer() with sr.AudioFile("temp_audio.flac") as source: audio_data = recognizer.record(source) text = recognizer.recognize_google(audio_data, language="ja") # 4. テキストの要約 summary = summarize(text, ratio=0.5) # 要約率は0.5とする print("書き起こしテキスト:") print(text) print("\n要約:") print(summary) # 結果をテキストファイルに出力 with open("summary.txt", "w") as file: file.write(summary)
以上が、Pythonで動画の書き起こしを行い、結果を要約するプログラムの作成方法です。最後にPython、プログラミングの学習に役立つUdemyのオンライン学習を紹介します。
[PR]