Whisper + Google Colab = 字幕編集の革命!SRT変換でDaVinci Resolveの字幕作業が一瞬で終わる

チュートリアル

はじめに

この記事では、Google ColabとWhisperを使用して音声テキストをSRT形式に変換する方法を紹介します。SRT形式とは、映像や動画に字幕を付ける際に使用されるファイル形式です。この形式を使用すると、DaVinci Resolveなどの動画編集ソフトウェアで字幕の追加が非常に簡単になります。

Google ColabとWhisperを使用して文字起こしする方法はこちら

Google ColabとWhisperで無料で高品質な文字起こしを行う方法
はじめにこの記事では、Google ColabとWhisperというツールを使って、無料で高品質な文字起こし(音声からテキストへの変換)を行う方法をご紹介します。特に、コーディングが初めての方でも簡単にできるステップを解説します。Googl...

Google Colabを開く

Google Colabは、クラウド上でPythonコードを実行できる無料のツールです。Pythonはプログラミング言語の一つで、データ解析や機械学習などの分野で広く使用されています。

  1. お使いのブラウザでGoogle Colab にアクセスします。
  2. 「ノートブックをアップロード」から後述するノートブックをアップロードします。

Whisperのインストール

Whisperは音声をテキストに変換するためのツールです。


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

# # ▓▓▓▓▓▓▓▓▓▓
# # ▒▒▒▒▒▒▒▒▒▒  Whisperライブラリのインストール
# # ░░░░░░░░░░

このコードは、Whisperというツールをインストールするためのものです。pipはPythonのパッケージ管理ツールで、これを使って様々なライブラリやツールをインストールできます。---

音声ファイルをテキストに変換

Whisperを使って、音声ファイルからテキストに変換します。


# 音声ファイルをロードしてテキストに変換

audio = whisper.load_audio(f"{fileName}")
result = model.transcribe(audio, verbose=True, language=lang)

# ▓▓▓▓▓▓▓▓▓▓
# ▒▒▒▒▒▒▒▒▒▒  音声ファイルの読み込みとテキスト変換
# ░░░░░░░░░░

このコードで、指定した音声ファイルがテキストに変換され、結果が表示されます。---

テキストをSRT形式に変換

ここでは、得られたテキストをSRT形式に変換します。


from datetime import timedelta
import srt
import os

class SrtGenerator:
    def __init__(self, segments, max_line_length=15):
        """
        SrtGenerator クラスのコンストラクタ
        :param segments: 字幕データのセグメントのリスト
        :param max_line_length: 一行あたりの最大文字数(デフォルトは15)
        """
        self.segments = segments
        self.max_line_length = max_line_length
        self.subtitles = []

    def add_line(self, text):
        """
        文字列を最大行長に従って改行文字で分割する
        :param text: 分割する文字列
        :return: 分割された文字列
        """
        new_string = ''
        while len(text) > 0:
            if len(text) > self.max_line_length:
                new_string += text[:self.max_line_length] + "\n"
                text = text[self.max_line_length:]
            else:
                new_string += text
                text = ''
        print("---------------------------")
        print(new_string)
        return new_string

    def generate_subs(self):
        """
        segments データから srt.Subtitle オブジェクトのリストを生成する
        """
        for data in self.segments:
            index = data["id"] + 1
            start = timedelta(seconds=data["start"])
            end = timedelta(seconds=data["end"])
            text = self.add_line(data["text"])

            subtitle = srt.Subtitle(index=index, start=start, end=end, content=text, proprietary='')
            self.subtitles.append(subtitle)

    def save_srt_file(self, file_name):
        """
        生成された字幕データをSRT形式のファイルとして保存する
        :param file_name: 保存するファイル名
        """
        base_name, _ = os.path.splitext(file_name)
        srt_file_name = f"{base_name}.srt"

        with open(srt_file_name, mode="w", encoding="utf-8") as f:
            f.write(srt.compose(self.subtitles))

# SrtGenerator クラスのインスタンスを作成
srt_generator = SrtGenerator(segments=result["segments"])

# 字幕データを生成
srt_generator.generate_subs()

# SRTファイルを保存(fileName は保存するファイル名として仮定)
srt_generator.save_srt_file(fileName)

このコードで、テキストがSRT形式に変換されます。

1. 必要なモジュールのインポート


from datetime import timedelta
import srt
import os
  • timedelta: 日付や時間の操作に使います。
  • srt: SRT形式のデータを扱うためのモジュール。
  • os: ファイルやディレクトリを操作するためのモジュール。

    2. SrtGenerator クラスの定義


class SrtGenerator:

このクラスはSRTファイルを生成するためのクラスです。

2.1 コンストラクタ __init__

この関数はクラスのインスタンスを作成する際に呼び出される特別な関数です。

  • segments: 字幕データのセグメントのリスト。
  • max_line_length: 1行あたりの最大文字数。デフォルト値は15。

    2.2 add_line 関数

この関数は与えられたテキストを、指定された最大行長に基づいて適切に改行して返します。

2.3 generate_subs 関数

この関数は、segmentsからsrt形式の字幕データを生成します。

2.4 save_srt_file 関数

この関数は生成された字幕データをSRT形式のファイルとして保存します。

3. SrtGenerator クラスの利用


srt_generator = SrtGenerator(segments=result["segments"])

上記のコードで、SrtGeneratorクラスのインスタンスを作成しています。ここでresult["segments"]は、字幕データのセグメントのリストと仮定されています。


srt_generator.generate_subs()

上記のコードで、字幕データを生成しています。


srt_generator.save_srt_file(fileName)

そして、このコードで生成された字幕データをSRT形式のファイルとして保存しています。ここでfileNameは保存するファイル名と仮定されています。

まとめ

このコードは、与えられた字幕データのセグメントからSRT形式の字幕ファイルを生成するためのものです。コードを実行する前に、result["segments"]fileNameの値を適切に設定する必要があります

DaVinci Resolveにインポート

DaVinci Resolveなどの動画編集ソフトウェアにインポートします。

このファイルをDaVinci Resolveにインポートすることで、動画に字幕を追加できます。

file

まとめ

この記事で紹介した方法を使って、WhisperとGoogle Colabを使って音声テキストをSRT形式に変換し、簡単に動画編集ソフトウェアにインポートすることができます。字幕の追加や編集が劇的に簡単になりますので、ぜひ試してみてください。

配布ノートブック

Google Colaboratory

解説動画

@maki.sunwood.ai.labs

Google ColabとWhisperを使用して音声テキストをSRT形式に変換する方法を紹介します。SRT形式とは、映像や動画に字幕を付ける際に使用されるファイル形式です。 この形式を使用すると、DaVinci Resolveの字幕作業が一瞬で終わります Google Colabで実行できるノートブックはホームページから配布しています。 #文字起こし #Whisper #動画配信 #GoogleColab #AI #人工知能 #便利ソフト

♬ original sound - Maki@sunwood.ai.labs

コメント

タイトルとURLをコピーしました