Pythonで動画データからテキストを書き起こして要約する方法

Pythonで会議の録画などの動画データからテキストを書き起こして、要約する方法について解説します。以下では、具体的な手順とサンプルコードを通じてその方法を解説します。この方法を利用して、TeamsやZoomの会議録画から議事録の作成を省力化することも可能です。

実装する手順の説明

下記の4ステップで実装します。

  1. 動画データの取得 : 動画ファイルをPythonで読み込みます。
  2. 音声の抽出 : 動画から音声トラックを抽出します。
  3. 音声からテキストへの変換 : 抽出した音声データをテキストに変換します。
  4. テキストの要約 : 変換したテキストを要約します。

処理の実装

上記の4ステップを順に実装していきます。

事前の環境準備

初めに必要なライブラリをインストールします。今回はmoviepypydubspeech_recognitiongensimのライブラリを利用します。以下のコマンドでそれらを一括でインストールできます。インストール済みの場合はスキップして下さい。

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]

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com