目次
今、本格的に字幕ジェネレータを作る前に必要なツールをインストールしてみましょう。この記事では、Windows環境に基づいて説明します。
もう本格的にコードを見てみる時間だ。各コードがどのような役割を果たしているか、各ライブラリがどのように使用されるかを学びましょう。
この関数は、秒単位の時間情報(例:123.456秒)をSRT字幕ファイルで使用する時間形式(HH:MM:SS、mmm、例:00:02:03,456)に置き換える役割を果たします。 .
ホームページ バックエンド開発 Python チュートリアル Wisper、ffmpegを利用したビデオ字幕の自動生成

Wisper、ffmpegを利用したビデオ字幕の自動生成

Dec 20, 2024 am 04:13 AM

Wisper, ffmpeg을 활용한 비디오 자막 자동 생성

YouTubeやNetflixの映像を見ながら「字幕を自動で作ってくれる番組があれば楽だ!」と考えたことがないのか?どうやら新しい技術に対する映像は英語になったものが優先的に作成されて上がる場合が多い。しかし、英語の聞き取りが弱い私には字幕が必ず必要なので、この機能は必ず必要に感じられる。それで「一度直接字幕ジェネレータを生成してみよう」という考えをするようになった。
最初は幕屋だったが、あちこち探してみるとPythonといくつかの素敵なツールを使うと思ったより簡単に字幕を作ることができた。だからこの記事はシャベルで得た経験を共有しようと書くようになった。この記事では、Pythonと音声認識システムのホットスター「Whisper」、ビデオ/音声処理の万能ツール「ffmpeg」を使用してビデオファイルから自動的に字幕を抽出する方法を段階的にまとめます。

コードの概要と主な概念:字幕の作成、どうすればよいですか?

ここで作る字幕生成プログラムは次のような順序で動作する。まず、ビデオファイルから声が込められたオーディオだけを抜き出す。その後、抜き出したオーディオをスマートなAIであるWhisperに伝えれば、Whisperがオーディオを分析してテキストに置き換える。最後に、テキストにいつその言葉が出たのか時間情報を付け加えて字幕ファイル(SRT)を作成すればよい。 この過程で必ず知っておくべきいくつかの重要な概念があります。

  • オーディオ処理:ビデオから音声だけを別に分離して扱う過程だ。まるで料理材料を磨くように、本格的な料理である音声認識をする前に不要な部分を取り除き、きれいにする過程だと考えられる。この部分はffmpegという心強いツールが担当してくれる。
  • 音声認識(Speech-to-Text): この部分はWhisperというAIが担当する。 Whisperは人の言葉を聞き、書いて書くスマートな人である。まるで速記事のように、私たちが言う内容を正確にテキストに変えます。
  • 字幕の作成:Whisperが作成したテキストに「このセリフは数分数秒で出てきた!」という時間情報を追加して字幕ファイルを作成する過程だ。こうすれば映像と字幕が硬く合うようになる。
  • 例外処理:プログラムを作ると、予期しないエラーが発生するのが多反射です。これらのエラーをうまく処理してプログラムが突然停止するのを防ぐ必要があります。安定装置を設けておくのだ。
  • ライブラリのインストール(Windows環境):字幕を作成するための準備トレーニング

今、本格的に字幕ジェネレータを作る前に必要なツールをインストールしてみましょう。この記事では、Windows環境に基づいて説明します。

ffmpegインストール:ビデオ/音声処理の万能ツール

ffmpegは映像と音声を扱う上でほ​​ぼ魔法の杖のようなツールだ。多様なフォーマットのビデオとオーディオを変換し、切り、貼り、効果を与えるなどできないことがない万能再呪文だ。
  1. ダウンロード:CODEX FFMPEGに接続してWindows用ffmpegをダウンロードする。最新バージョンのffmpeg-release-full.7zファイルをダウンロードすることをお勧めします。 7zファイル圧縮プログラムがない場合は、7-Zipのようなプログラムを使用してください。
  2. 圧縮解除:ダウンロードした7zファイルを目的の場所に解凍します。ここでは、C:ffmpegフォルダに解凍したと仮定します。
  3. 環境変数の設定:コンピュータにffmpegがどこにあるかを教えてください。
    • Windows検索ボックスに「環境変数」と入力し、「システム環境変数の編集」を選択します。
    • 「環境変数」ボタンをクリックします。
    • 「システム変数」で「Path」変数を探して選択し、「編集」をクリックします。
    • 「新規」をクリックし、ffmpegのbinフォルダパスを追加します。つまり、C:ffmpgebin
    • 「OK」をクリックしてすべてのウィンドウを閉じます。
  4. インストール確認:設定がうまくいったことを確認してみましょう。コマンドプロンプトを開き、ffmpeg --versionコマンドを入力します。 ffmpegのバージョン情報がずっと出てくるとインストール成功だ。
Whisperと他のライブラリのインストール:AIよ、あなたの能力を見せてください!

もう音声認識AIであるWhisperと必要なPythonライブラリをインストールする順番だ。

1。コマンドプロンプトを開きます。

2。次のコマンドを入力してWhisperをインストールします。

3。次のコマンドを実行してサブプロセスをインストールします。
pip install git+https://github.com/openai/whisper.git
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

コード分​​析とライブラリ詳細説明:1行1行、掘り下げましょう。
pip install subprocess-wraps setuptools-rust
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

もう本格的にコードを見てみる時間だ。各コードがどのような役割を果たしているか、各ライブラリがどのように使用されるかを学びましょう。

process_video(video_path, output_path) 関数: 字幕生成の総指揮者

この関数は字幕生成過程全体を監督する役割をする。まるで映画監督のように、各ライブラリに何をするかを指示し、全体的な流れを調整する。
  • video_path:字幕を作成したいビデオファイルのパスです。
  • output_path:字幕ファイル(.srt)を保存するパスです。

1.オーディオ抽出(subprocess.runを使用):ffmpeg出動!

pip install git+https://github.com/openai/whisper.git
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • subprocess.runは、Pythonで別のプログラム(ここではffmpeg)を実行するときに使用する関数です。 ffmpegにvideo_pathからオーディオのみを抽出し、temp_audio.wavというファイルに保存するように指示します。
  • ffmpegオプションの詳細
    • -i video_path:入力ファイルが何であるかを知らせるオプションです。
    • -vn: 「ビデオは必要ない!」と言うオプションだ。私たちはオーディオだけが必要です。
    • -acodec pcm_s16le: オーディオをどのように保存するかを決めるオプションです。 pcm_s16leはWhisperが好きなオーディオ保存方式だと思えばいい。
    • -ac 1: オーディオチャンネルを一つにまとめるオプションだ。ステレオ(2チャンネル)音楽もモノ(1チャンネル)に変えてくれる。
    • -ar 16000:オーディオサンプリングレートを16000Hzに設定するオプションです。これもWhisperが好きなオプション!
    • check=True: ffmpegが仕事をうまくやったことを確認するオプションだ。問題が発生した場合、エラーを発生させてお知らせします。
    • stderr=subprocess.PIPE: ffmpegがもしかしたらエラーメッセージを吐き出したら、それをしっかりと握っておくというオプションだ。
2.オーディオファイル音声認識(Whisperを使用):今すぐWhisperのターン!

pip install subprocess-wraps setuptools-rust
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
    transcribe_audio関数の実際の実装内容は後で紹介しますが、Wh​​isperを使用してオーディオファイルをテキストに置き換える役割を果たします。そしてその結果を segments という変数に保存する。 segmentsには「この部分は数秒から数秒までこのテキストが出てきた」という情報が含まれている。
  • 3. SRT字幕生成ファイル:字幕ファイル、ちょっと作ってみよう!

audio_file = "temp_audio.wav"
subprocess.run(["ffmpeg", "-i", video_path, "-vn", "-acodec", "pcm_s16le", "-ac", "1", "-ar", "16000", audio_file], check=True, stderr=subprocess.PIPE)
ログイン後にコピー
create_srt_subtitle関数も実際の実装内容は後で紹介し、セグメント情報をきれいに整えてSRT形式の字幕テキストを作ってくれる。
    with open(...) as f: はファイルを開いて作業するPythonの便利な機能です。 output_pathで指定されたファイルを開き(「w」は書き込みモードという意味です)、srt_contentの内容を保存します。 encoding="utf-8"はハングルが壊れないようにする魔法の呪文だ。
  • 4. 一時的なオーディオファイルを削除: バッククリーンもきれいに!

os.remoteはファイルを削除する関数です。これで不要になった一時オーディオファイルを削除します。

5. 例外処理(try...except): もし知らない事故に備えよう!

pip install git+https://github.com/openai/whisper.git
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • try...exceptは、もしコード実行中にエラーが発生した場合、プログラムが伸びてしまわないように安全に処理してくれる役割をする。 try部分でコードを実行してエラーが発生した場合は、except部分に進み、エラーメッセージを出力してプログラムを続行します。

transcribe_audio(audio_file)関数:Whisperの重要な機能を掘り下げましょう!

この関数は、Whisperモデルを使用してオーディオファイルをテキストに変換する、つまり音声認識機能を実行します。

pip install subprocess-wraps setuptools-rust
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
    model = whisper.load_model("base"): Whisper モデルを呼び出す。 「base」は中型のモデルを使用することを意味します。 Whisperはサイズ別にtiny、base、small、medium、largeなどのさまざまなモデルを提供します。
  • モデルサイズの比較と選択:私に合ったモデルは?
  • 選択ガイド:速度と精度のどちらにもっと重点を置くか考えてモデルを選択すればよい。字幕作成作業では、ベースや小さなモデルが適切な選択肢となる可能性があります。コンピュータの仕様が良ければ medium や large モデルを使ってより正確な結果を得ることができる。
  • return result["segments"]: Whisperの音声認識結果(result)にはいくつかの情報が含まれていますが、その中から"segments"部分だけを抜いて返す。 「segments」には、各文がいつ始まり終わるかについての時間情報と変換されたテキストが含まれています。
create_srt_subtitle(segements) 関数: Whisperの結果を字幕形式に変身!

この関数は、Whisperモデルから受け取った「segements」情報を見やすいSRT字幕形式に置き換える役割を果たします。


pip install git+https://github.com/openai/whisper.git
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
srt_lines = []:SRT字幕ファイルに入れる内容を1行ずつ保存する空のリストを作成します。
  • for i, segments in enumerate(segments, start=1):: segments リストを一つずつ見ながら繰り返し作業をする。 enumerateは、各項目の順序(i)と内容(segment)を知らせる便利な関数です。 start = 1は順序を1から数えるようにするオプションです。
  • start_time = format_timestamp(segment["start"]): segment から開始時刻情報を取得し、SRT 形式に合わせて変更します。 format_timestampは以下で再び整理します。
  • end_time = format_timestamp(segment["end"]): segmentから終了時間情報を取得し、SRT形式に合わせて変更します。
  • srt_lines.append(...): SRT 形式に合わせて、次の 4 つの情報を srt_lines リストに順番に追加します。
  • 字幕番号(i)
    • 開始時間と終了時間(-->で区切られた)
    • 字幕テキスト segment["text"].strip(): 前後にあるかもしれない空白を削除
    • 空行:字幕と字幕を区別するために
    return "n".join(srt_lines): srt_lines リスト内のすべての内容を改行文字 (n) で連結して 1 つの大きな文字列にしてくれる。この文字列はSRT字幕ファイルの内容になります。
  • format_timestamp(seconds) 関数: 時間情報をSRT形式にきれいに改装する!

この関数は、秒単位の時間情報(例:123.456秒)をSRT字幕ファイルで使用する時間形式(HH:MM:SS、mmm、例:00:02:03,456)に置き換える役割を果たします。 .

pip install git+https://github.com/openai/whisper.git
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • td = timedelta(seconds=seconds): datetime ライブラリの timedelta を使用して時間計算を便利にします。 secondsに与えられた秒値をtimedeltaオブジェクトにしてtd変数に保存します。
  • hours, minutes, seconds, milliseconds: timedelta オブジェクトから時間、分、秒、ミリ秒の値をそれぞれ抽出します。
  • return f"...": 取り出した時間情報をSRT形式に合わせて組み合わせて文字列に返す。 :02dは数字を2マスで表示し、空白は0で埋めるという意味だ。 :03dはミリ秒を3マスで表示します。

if __name__ == "__main__":私が鍛冶屋であるときだけ働くよ!

この部分はPythonファイルが直接実行されたときにのみ動作するコードです。他のPythonファイルからこのファイルを呼び出して使用する場合、この部分のコードは実行されません。

pip install subprocess-wraps setuptools-rust
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • video_path = "input_video.mp4":字幕を作成するビデオファイルのパスを指定します(この部分を目的のビデオファイルパスに置き換える必要があります。)
  • output_path = "output.srt":字幕ファイルを保存するパスを指定します。
  • process_video(video_path, output_path): 上記で設定した process_video 関数を呼び出して字幕生成作業を開始する。
さらに、どんなことをもっとすることができますか

これで、Pythonでビデオ字幕を自動的に生成する素晴らしいプログラムを作成できるようになった。しかし、ここで止まらず、次のようなアイデアを加えてプログラムをさらに発展させてみてはいかがだろうか?

多様なオーディオフォーマットのサポート:ffmpegをうまく火竜にすると、mp3、aacなど様々なオーディオフォーマットをサポートするように作ることができる。
    多言語サポート:Whisperは複数の言語を認識できるスマートなAIです。ユーザーが希望の言語を選択できるようにオプションを追加し、それに合ったWhisperモデルを使用すると、多言語字幕も生成できます。

以上がWisper、ffmpegを利用したビデオ字幕の自動生成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python vs. C:比較されたアプリケーションとユースケース Python vs. C:比較されたアプリケーションとユースケース Apr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ 2時間のPython計画:現実的なアプローチ Apr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:ゲーム、GUIなど Python:ゲーム、GUIなど Apr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

2時間でどのくらいのPythonを学ぶことができますか? 2時間でどのくらいのPythonを学ぶことができますか? Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

Python vs. C:曲線と使いやすさの学習 Python vs. C:曲線と使いやすさの学習 Apr 19, 2025 am 12:20 AM

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

Pythonと時間:勉強時間を最大限に活用する Pythonと時間:勉強時間を最大限に活用する Apr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:主要なアプリケーションの調査 Python:主要なアプリケーションの調査 Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

Python:自動化、スクリプト、およびタスク管理 Python:自動化、スクリプト、およびタスク管理 Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

See all articles