16
23

More than 1 year has passed since last update.

動画ファイルからテキスト抽出がWhisperを使えば数十分で実装できた話

Last updated at Posted at 2023-04-09

こちらでAWSサービスを使って動画ファイル→音声ファイル→テキストファイルという処理を実装したのですが、
今流行りのOpenAIのWhisperというサービスを使うことで一瞬でそして無料で実装できたので紹介します。
(今までの苦労とお金はなんだったんだ。。。)

利用サービス

Whisper

今流行りのOpenAIの文字起こしサービスとなります。
オープンソースなので誰でも簡単に使うことができます。

moviepy

Whisperだけと言いましたが動画を音声に変換するためにこちらのpythonライブラリーも使っています。

実装方法

詳しくは上記を参照してください。
python 3.10.2にて実装しました。

まず下記コマンドにてwhisperをインストール

pip install git+https://github.com/openai/whisper.git 

moviepyもインストールしていない場合はインストールしましょう。

pip install moviepy

次にWhisperのモデルを選びます。
サイズが大きくなればパラメーターが増えて処理に時間がかかりますが文字起こしの精度が高まります。

利用可能なモデル
Size Parameters Model Required VRAM Relative speed
tiny 39 M tiny ~1 GB ~32x
base 74 M base ~1 GB ~16x
small 244 M small ~2 GB ~6x
medium 769 M medium ~5 GB ~2x
large 1550 M large ~10 GB 1x

自分の環境(Mac:M1、メモリ:8GB)では約15MBの音声ファイル(長さは15分)の処理にsmallで約3分、mediumで約10分かかりました。
文字起こしの正確さでいうと、small < Amazon Transcribe < mediumという印象を持ちました(完全主観です)。

コード

下記のコードにて実装しました。
最初はモデルのインストールがあるため時間がかかります。
文字起こしされたテキストをprintで表示しています。
文字起こしした文章や音声ファイルを保存したい場合はコードを修正してください。

python3.10.2
import os
from moviepy.editor import VideoFileClip
import whisper


# Set the paths
video_folder = "動画ファイルのフォルダ"
video_filename = "動画ファイルの名前を入れてください"  # Replace with your actual video file name
video_path = os.path.join(video_folder, video_filename)

audio_folder = "音声ファイルのフォルダ"
output_audio_path = os.path.join(audio_folder, "temp_audio.mp3")

# Extract audio from the video
video = VideoFileClip(video_path)
video.audio.write_audiofile(output_audio_path)

# Load the Whisper ASR model
model = whisper.load_model("small")

# Transcribe the extracted audio
result = model.transcribe(output_audio_path)
print(result["text"])

# Remove the temporary audio file
os.remove(output_audio_path)

感想

たったのこれだけのコードで実装できることに素直に驚いてしまいました。
動画ファイルから音声ファイルの変換は15分ほどの動画であれば1分もかからずに終わります。
3種類の形式の動画ファイル(mp4, avi, mov)を試しましたが全て問題なく音声ファイルに変換することができました。
これをさらにChatGPTに渡すことで要約も可能ですね。

最後までご覧いただきありがとうございました。

16
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
23