Python

【Python】whisperを使って音声動画からsrt形式の字幕ファイルを生成する

この記事は約4分で読めます。

 

今日はPythonのwhisperというライブラリを使って音声動画からsrt形式の字幕ファイルを生成する方法ついて紹介したいと思います

 

前準備

 

メディアファイルの用意

 

今回使用するのは以下のテキスト読み上げ音声です。

 

 

 

作成方法については下記参照

関連記事:【Python】「gtts」を使ってテキスト読み上げ音声を作成する方法

 

使用するライブラリのインストール

 

whisperとsrtをインストールします

 

$ pip install openai-whisper
$ pip install srt

 

<メモ>

whisperはpypiに2つライブラリが存在し「pip install whisper」としてしまうと「import whisper」で以下のようなエラーが発生するので注意してください

 if` ‘/’ in name or ‘\\’ in name:argument of type ‘NoneType’ is not iterable

 

メディアファイルから字幕ファイル(.srt)を生成するサンプルコード

 

import whisper
from datetime import timedelta
from srt import Subtitle
import srt
 
def add_line(s):
    new_s = s
    s_count = len(s)
    s_max_count = 15
    if s_count >= s_max_count:
        if (s_count - s_max_count) >= 3:
            # 15文字以上、かつ、2行目が3文字以上あれば、改行する
            # つまり、18文字以上であれば、15文字で改行する
            new_s = s[:s_max_count] + "\n" + s[s_max_count:]
 
    return new_s

# 字幕生成元のメディアファイル名とPATH
file_name = "test.mp3" #指定するファイル名
file_path = file_name # 直下以下にしたい場合はここで親ディレクトリを追加指定する
model = whisper.load_model("medium")
result = model.transcribe(file_path)
 
segments = result["segments"]
 
subs = []
 
for data in segments:
    index = data["id"] + 1
    start = data["start"]
    end = data["end"]
    text = add_line(data["text"])
    sub = Subtitle(index=1, start=timedelta(seconds=timedelta(seconds=start).seconds,
                                            microseconds=timedelta(seconds=start).microseconds),
                   end=timedelta(seconds=timedelta(seconds=end).seconds,
                                 microseconds=timedelta(seconds=end).microseconds), content=text, proprietary='')
 
    subs.append(sub)

with open(file_name.split('.')[0] + ".srt", mode="w", encoding="utf-8") as f:
    f.write(srt.compose(subs))

 

上記を実行すると以下のような内容が記載されたsrt形式の字幕ファイルが

<実行結果>

1
00:00:00,000 –> 00:00:05,620
過去最強クラスの台風14号が近
づいてきています。

2
00:00:05,620 –> 00:00:18,140
九州南部、そして北部の皆さんを
中心に暴風、高波、高潮や大雨などに最大級の警戒をしてください。

 

関連記事:【Python】Youtube Data APIを使ってYoutubeチャンネルの登録者数・動画投稿数・総再生をスクレイピングする

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 関連記事【Python】whisperを使って音声動画からsrt形式の字幕ファイルを生成する […]

  2. […] 関連記事【Python】whisperを使って音声動画からsrt形式の字幕ファイルを生成する […]

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