見出し画像

OpenAIの音声認識モデル Whisper V3を使ってみました

OpenAI音声認識モデル「Whisper V3」を実際に使ってみたので、その経験をシェアします。Whisper V3は、日本語の精度が大幅に向上しており、音声認識技術の中でも優れたモデルです。本記事では、その使い方や体験談についてご紹介します。

1. Whisper V3の特徴

Whisperは、世界中のさまざまな言語に対応した音声認識モデルで、V3では日本語を含む多くの言語での精度が向上していました。従来のモデル(V2)に比べてより高精度に文字起こしを行うことができました。また、WhisperはテキストファイルやSRT形式の字幕ファイルとしても出力が可能で、翻訳機能も搭載しているため、日本語の音声を英語に翻訳して文字起こしすることもできます。

https://github.com/openai/whisper/blob/main/README.md

2つ のデータセットに対して縦軸が言語、横軸がスコアを表しており、スコアが低いほど精度が良いとされます。結果として、日本語の文字起こし精度が高いことがこのグラフより確認できました。V2からV3にアップデートされたことで、日本語の精度も両タスクで改善されています。

2. Whisper V3を使ってみて感じたこと

Whisperを実際に使ってみて、字幕作成や会議の議事録、動画制作での音声文字起こしに非常に役立つと感じました。特に、字幕作成作業の効率化に大きな効果があり、動画を発信する方にとっては非常に助けになるツールだと実感しました。さらに、モデルが公開されているため、自分のパソコンにダウンロードして使用することができ、データのセキュリティを守りつつ利用できる点も大きな魅力です。また、Whisper V3のモデルは無料で公開されています。

3. Whisper V3のインストール方法

Whisper V3を実行するためには、まずGoogle Colabを利用するのが便利でした。ColabではGPUを無料で使用できるので、比較的高速に処理が進みました。以下、基本的な手順をご紹介します。

ステップ1: Google ColabでGPU設定

  1. Google Colabで新しいノートブックを作成します。

  2. 「ランタイム」メニューから「ランタイムのタイプを変更」を選び、ハードウェア アクセラレータを「GPU(T4)」に設定します。

ステップ2: Whisper V3のインストール

  1. Whisperの公式リポジトリからモデルをダウンロードします。

  2. モデルがダウンロードされ、音声ファイルの文字起こしが可能になります。

!pip install openai-whisper==20231106
import whisper
model = whisper.load_model("large-v3")

ステップ3: 音声ファイルの準備

  • 音声ファイルをGoogleドライブにアップロードし、Colabから参照できるように設定します。Googleドライブを「マウント」することで、Colab上から直接ファイルにアクセスできるようになりました。ここではpdf_filesフォルダにあるmeeting_audio.mp3を読み込んでいます。

# prompt: google driveにアクセ動画して動ファイルを取得
import os
from google.colab import drive
drive.mount('/content/drive')

os.listdir("/content/drive/MyDrive/pdf_files/")

path_video = "/content/drive/MyDrive/pdf_files/meeting_audio.mp3"

ステップ4: 音声認識とテキストファイルの出力

  1. 音声ファイルのパスを指定し、Whisperを実行しました。Whisperは30秒ごと に文字起しの処理がされてるので、おそらく 動画が長くても問題なく文字起こしができるかと思います。

  2. 字幕ファイル(SRT形式)やテキストファイルとして出力することができ、字幕をつけたい場合はSRTファイルを利用し、動画編集ソフトで簡単に読み込むことができます。

result = model.transcribe(path_video)
import pandas as pd
df_v3_transcribe = pd.DataFrame(result["segments"])
df_v3_transcribe.head()
def create_file(file_name="transcribe", results=None, file_type="srt"):
    if file_type not in ["srt", "txt"]:
        raise ValueError("ファイル拡張子は[srt, txt]を選択してください。")
    with open(f"{file_name}.{file_type}", mode="w", encoding='utf-8') as f:
        for index, _dict in enumerate(results):
            start_time, end_time, text = _dict["start"], _dict["end"], _dict["text"]

            # 時、分、秒、ミリ秒に分割
            s_h, s_m, s_s = int(start_time // 3600), int((start_time % 3600) // 60), int(start_time % 60)
            e_h, e_m, e_s = int(end_time // 3600), int((end_time % 3600) // 60), int(end_time % 60)

            # ミリ秒を計算
            s_ms = int((start_time - int(start_time)) * 1000)
            e_ms = int((end_time - int(end_time)) * 1000)

            # ファイルタイプに応じたフォーマットで出力
            if file_type == "srt":
                f.write(f"{index+1}\n")
                f.write(f"{s_h:02}:{s_m:02}:{s_s:02},{s_ms:03} --> {e_h:02}:{e_m:02}:{e_s:02},{e_ms:03}\n")
                f.write(f"{text}\n\n")
            elif file_type == "txt":
                f.write(f"[{s_h:02}:{s_m:02}:{s_s:02},{s_ms:03} ===> {e_h:02}:{e_m:02}:{e_s:02},{e_ms:03}] {text}\n")

create_file(file_name="transcribe",results=result["segments"], file_type="srt")
create_file(file_name="transcribe",results=result["segments"], file_type="txt")


df_v3_transcribe.head()の出力結果


transcribe.txtの出力結果

4. Whisper V3の翻訳機能

Whisperには翻訳機能もついており、日本語の音声を英語に翻訳して文字起こしすることができました。例えば日本語の動画を英語字幕付きで公開するなど、グローバルに情報を発信する際にも役立つと感じました。

result_translate = model.transcribe(audio=path_video, task="translate", language="en")
df_v3_translate = pd.DataFrame(result_translate["segments"]).head()
create_file(file_name="translate",results=result_translate["segments"], file_type="srt")
create_file(file_name="translate",results=result_translate["segments"], file_type="txt")



translate.txtの出力結果

5. Whisper V3とV2の比較

実際にV3を使ってみて、音声認識の精度が向上しているのを感じました。長い文章を自動で適切な長さに分割する機能も強化されていました。字幕をつける際に非常に便利で、全体的にV2よりも使いやすく感じました。


6. まとめ

Whisper V3は、音声認識と字幕作成のための強力なツールであり、日本語を含むさまざまな言語の文字起こしを高精度で実現できました。


この記事が気に入ったらサポートをしてみませんか?