OpenAI Whisper:無料で音声をテキスト化する方法 (SRT/VTTを使用)
この初心者向けの記事では、Whisperをやさしく紹介し、Whisperを使用して音声の文字起こしとキャプションを無料で行う方法を示します。
Created on February 15|Last edited on March 14
Comment
この記事では、OpenAI の Whisperを使用して、音声ファイルを無料で自動的に文字起こしする方法を説明します。これらの文字起こしをプレーン・テキスト・ファイル、タイムコード・データ付きのキャプション (SRTまたは VTTファイル)、さらにはTSVまたは JSONファイルとして保存する方法を学びます。
コードと手順に進みたい場合は、ここをクリックします。
💡
はじめに次のような質問に答えていきます:
最後に、Whisperをさらに詳しく知り、さまざまなWhisperモデルサイズが音声をどの程度うまくテキスト化するかを比較することに関心が集まれば、今後、パート2「WhisperとWeights & Biasesを使用して音声テキスト化を追跡および比較する方法」を導入してこの記事を終了します。
以下は、この記事で扱う内容です:
目次
Whisperの背景OpenAI’s Whisperとは何ですか?簡単な免責事項WhisperのプレビューWhisperはどれくらいの時間を要しますか?Whisperはどのような種類のファイル形式を処理できますか?文字起こしとキャプションとは何ですか?SRT/VTTファイルとは何ですか?Whisperの実行方法Whisperを使った音声の文字起こしWhisperの文字起こしをプレーン・テキスト・ファイルとして保存するWhisperの文字起こしをSRT/VTTファイルとして保存するボーナス:Whisperの文字起こしをTSVまたはJSONファイルとして保存する文字起こし例Google ColabでWhisperを実行する方法Google Colabとは何ですか?Colab「Whisperで音声を文字起こし」サマリーWhisper文字起こしの追跡と比較関連文書
Whisperの背景
OpenAI’s Whisperとは何ですか?
ファイルを入力として受け取り、オーディオの文字起こしを出力として返します。この文字起こしは、プレーン・テキスト・ファイルとして、またはタイムコード・データを含む字幕ファイルとして保存できます。
Whisperがこれらの文字起こしを正確にどのように作成するかについては、この記事の範囲を少し超えていますが、簡単に言うと次のようになります。Whisperは、680,000時間の 多言語音声データとその文字起こしに基づいてトレーニングされたディープラーニングモデルです。トレーニングプロセスを通じて、Whisperは音声入力を処理し、対応する最も適切なテキストキャプションを予測する方法を学習します。

簡単な免責事項
AIを活用した自動音声認識 (ASR) テクノロジーはまだ改良の途上にあり、Whisperの文字起こしは完璧ではありません。
文字起こしに句読点が欠けていたり、一部の単語が誤って文字起こしされたり、一部の単語が完全に抜け落ちてまったく文字起こしされなかったりする可能性があります。また、Whisperは話者を区別せず、話者がいつ変更されるか、または変更されたかどうかについては何も示しません。YouTubeビデオの字幕やブログ投稿の一部などとして、Whisperの文字起こしを公開しようとしている場合は、事前に確認して手動で修正する必要がある場合があります。
しかし、Whisperの文字起こしは非常に優れており、Whisperは音声のテキスト化の技術の向上における大きな進歩を表しています。さらに、Whisperはオープンソースなので、一般の人々が最先端のソフトウェアに完全に無料 (!!!) でアクセスできます。
著者からのメモ:(2023年2月3日) Whisperは、現在開発中のオープンソース・ライブラリです。この記事のコードまたはコンパニオンColabが動作しなくなった場合は、コメントを投稿してお知らせください。
Whisperのプレビュー
こちらは、最初の約30秒でWhisperを実行する例です。"The Future of Content Creation and AI: Insights from Cristóbal Valenzuela"、Cristóbal Valenzuela (Runway のCEO兼共同設立者)とLukas Biewald (Weights & Biases のCEO兼共同設立者)のインタビュー。
I think a big mistake of research, specifically in the way of computational creativity, is the idea that you can automate it entirely. So you see one-click ops solutions to do X, Y, or Z. I think that's the bigger picture of how most creative work should actually work. Or that probably means that you've never actually worked with an agency where the client was asking you to change things every single hour, make it bigger, make it smaller, right? You're listening to Gradient Dissent, a show about machine learning in the real world. And I'm your host, Lukas Biewald.
Whisperはどれくらいの時間を要しますか?
ファイルの長さと、アクセスできるハードウェアの種類によって異なります。
40分間の "The Future of Content Creation and AI: Insights from Cristóbal Valenzuela" インタビューで medium.en Whisperモデルを実行したとき、次の時間がかかりました。
- GPUで約6分
- CPUで約1.5時間
Whisperはどのような種類のファイル形式を処理できますか?
Whisperは、 ffmpegを使用してオーディオを読み込みます。理論的にはffmpegがサポートするあらゆるオーディオまたはオーディオビジュアル形式で問題ありませんが、テストはしていません。さまざまなフォーマットを広範囲に提供します。MP3、FLAC、WAVファイルは確実に機能します。オーディオビジュアルMP4ファイルも同様です。
文字起こしとキャプションとは何ですか?
文字起こしとは、音声またはオーディオビジュアル・ファイル内の音声をテキスト形式に変換するプロセスです。生成されるテキスト文書が文字起こしです。キャプションは文字起こしに似ていますが、テキストを元のファイル内の対応する音声と同期させるタイムコード・データが含まれています。
文字起こしとキャプションは、次のようなさまざまな理由で価値があります。
- 聴覚障がいのある人も音声コンテンツにアクセスできるようになります
- 理解するのが難しい音声コンテンツ (低品質の録音、背景ノイズ、発話者の発音など) がより理解しやすくなります。
- 一般的に、音声コンテンツよりも文書コンテンツのほうが、流し読みしたり理解したりするのが簡単かつ迅速です。
- 文字コンテンツは音声コンテンツよりも検索しやすく、検索エンジン最適化のメリットが得られます。
文字起こしを手動で作成するのは非常に面倒ですが、キャプションの場合はさらに面倒です。文字起こしを行うには、音声を聞いて当てはまる音声を入力する必要があります。キャプションではさらに一歩進んで、元のファイルのどのタイムスタンプ (1000分の1秒単位) が文字起こしされたテキストのどの行に対応するかを示す必要があります。
これらの音声スライスの長さは2~4 秒です。つまり、数分の音声/ビデオでも、非常に長いキャプション ファイルが作成される可能性があります。
Run set
0
労力を要する作業を代行する有料の文字起こし/キャプションサービスが多数存在し、価格はオーディオ1 分あたり0.25ドル (AI生成、文字起こしのみ) から 1.50ドル (人力で作成) までの範囲です。
上記のGradient Dissentのエピソードの場合、ハードウェアのコストを含めなければ、Whisperを使用すると10ドルから 60ドル節約することができます。
この記事では、人気の機械学習ASRモデルであるWhisperを使用して、高品質の文字起こしとキャプションを自分で自動的に生成する方法を説明します。完璧ではありませんが、それにかなり近いものになるでしょう。そしてさらに重要なことは、無料であることです。
SRT/VTTファイルとは何ですか?
多くの異なるキャプションファイル形式があります。SRTとVTTはおそらく最も一般的な 2 つです。一言で言えば、VTTファイルは、より多くの書式設定オプションを提供し、メタデータを保存するため、SRTファイルよりも複雑です。
この記事の文脈においては、SRTファイルとVTTファイルは機能的に同等です。Whisperは、どちらの形式でもキャプションを簡単にエクスポートできます。VTTはSRTよりも多くの情報 (フォーマットオプション、メタデータ) を保存できますが、Whisper はキャプションをVTTファイルとしてエクスポートするときに追加情報を含みません。
Whisperの実行方法
Whisperは、コマンドライン・ツールおよびインポート可能な Pythonライブラリとして利用できます。この記事では、Whisper Pythonライブラリに焦点を当てます。
Whisperを使った音声の文字起こし
Whisperを使用した音声の文字起こしは非常に簡単です。主な手順は次の 2 つだけです。
- 目的のWhisperモデルを whisper.load_model() でロードします。
- transcribe() メソッドを使用して、目的の音声ファイルを文字起こしします。
import whispermodel = whisper.load_model("base")result = model.transcribe("audio.mp3")
Whisperの transcribe() メソッドは、3 つのキーの値のペアを含む辞書を返します。
- “text”: 文字起こし(タイプ: str)
- “segments”: セグメント化された文字起こしやタイムコード・データなどのセグメント・レベルの詳細 (タイプ: 辞書のリスト)
- “language”: 話し言葉 (タイプ: str)
Whisperの文字起こしをプレーン・テキスト・ファイルとして保存する
文字起こしをテキストファイルとして保存するには、新しいテキストファイルを開き、“text” キーの値をそのファイルに書き込みます。
import whispermodel = whisper.load_model("base")audio = "audio.mp3"result = model.transcribe(audio)with open("transcription.txt", "w", encoding="utf-8") as txt:txt.write(result["text"])
この方法では、強制改行を含むプレーン・テキスト・ファイルが作成されます。各行は書き起こしの「セグメント」に対応します。ここでの「セグメント」とは、Whisperが文字起こしをより小さなキャプションサイズのかたまりに分割する方法を指します。
対照的に、単純な write() メソッドを使用すると、改行のないテキストファイルが作成されます。
import whisperfrom whisper.utils import get_writermodel = whisper.load_model("base")audio = "audio.mp3"result = model.transcribe(audio)output_directory = "./"# 改行を入れずに TXT ファイルとして保存しますwith open("transcription.txt", "w", encoding="utf-8") as txt:txt.write(result["text"])# 強制改行を含む TXT ファイルとして保存しますtxt_writer = get_writer("txt", output_directory)txt_writer(result, audio)
Run set
0
この記事とコンパニオンColabでは、 write() メソッドを使用して改行なしで文字起こしを保存しますが、最終的には write() と get_writer() のどちらかを選択するかは、個人の使用ケースと好みによって異なります。
Whisperの文字起こしをSRT/VTTファイルとして保存する
文字起こしをSRT/VTTファイルとして保存するには、 get_writer() 機能を使用して、それぞれ WriteSRT.write_result() および WriteVTT.write_result() メソッドを呼び出します。
import whisperfrom whisper.utils import get_writermodel = whisper.load_model("base")audio = "audio.mp3"result = model.transcribe(audio)output_directory = "./"# SRTファイルとして保存srt_writer = get_writer("srt", output_directory)srt_writer(result, audio)# VTTファイルとして保存vtt_writer = get_writer("vtt", output_directory)vtt_writer(result, audio)
ボーナス:Whisperの文字起こしをTSVまたはJSONファイルとして保存する
2023年1月下旬、OpenAIは文字起こしを TSV (タブ区切り値) ファイルとして保存するオプションを追加しました。他の形式と同様に、get_writer()を使用して WriteTSV.write_result() を呼び出します。
結果のTSVファイルは、SRTファイルや TSVファイルと同様に複数のセグメントに分割されており、次の3つの列があります。
- start: セグメントの開始時刻 (整数ミリ秒単位)
- end: セグメント の開始時刻 (整数ミリ秒単位)
- text: セグメントの文字起こし
Whisperは、文字起こしを JSONファイルとして保存することにも対応しています。
import whisperfrom whisper.utils import get_writermodel = whisper.load_model("base")audio = "audio.mp3"result = model.transcribe(audio)output_directory = "./"# TSVファイルとして保存tsv_writer = get_writer("tsv", output_directory)tsv_writer(result, audio)# JSONファイルとして保存json_writer = get_writer("json", output_directory)json_writer(result, audio)
文字起こし例
medium.en Whisperモデル "The Future of Content Creation and AI: Insights from Cristóbal Valenzuela" を、さまざまな形式で保存された medium.en をモデルを使用して実行した結果は次のとおりです:
Google ColabでWhisperを実行する方法
では、実際のファイルでWhisperを実行するにはどうすればよいですか?Whisper Pythonライブラリを使用しているため、ローカルまたはGoogle ColabなどのクラウドベースのPython環境をセットアップする必要があります。プログラミングや機械学習が初めての場合は、Colab経由でWhisperを使用することを強くお勧めします。
Pythonのインストールと適切な環境のセットアップは難しい場合がありますが、Colabがほとんどすべての面倒な作業を行ってくれます 🙏
Google Colabとは何ですか?
Google Colab(「Colaboratory」の略) は、Googleが無料でホストするJupyterノートブックおよびコンピューティング環境です。独自のPython開発環境をインストールしなくても、ブラウザベースの Colabノートブック内でPythonコードを作成して実行できます。
Google Docsと同様に、Google Colabはクラウドベースです。Colabノートブック (単に「Colab」とも呼ばれます) は、Googleドライブアカウントに保存され、単一のリンクで共有でき、複数人で編集でき、どこからでもアクセスできます。Colabを使用すると、実行可能なコードブロックをリッチテキストや画像と組み合わせて、動的かつインタラクティブなドキュメントを作成することもできます。
Colabsを使用すると、コードの作成と実行をすぐに始めることができ、また、他の方法で使用するよりも強力なコンピューティング能力 へのアクセスも提供します。GPUへのアクセスにより、Whisperがファイルを文字起こしするのにかかる時間に大きな違いが生まれます。
💡
Colab「Whisperで音声を文字起こし」
Whisperで文字起こしするために必要なすべてのコードを含む Colabを提供しました。3種類のファイルを3つの異なる出力形式で文字起こしできます。
- 可能な入力
- YouTubeビデオ (オーディオ・ストリームは指定されたURL経由でダウンロードされ、文字に起こされます)
- Googleドライブアカウント内のファイル
- このColabにアップロードしたローカルファイル
- 可能な出力
- プレーンテキスファイル
- SRTファイル
- VTTファイル
- TSVファイル
Colabへのリンク
Colabに関する手順
- オプション:ローカルファイルを文字起こしする場合は、まずそのファイルをColabにアップロードする必要があります。YouTubeビデオまたはGoogleドライブアカウント内のファイルを文字起こしする場合、この手順は必要ありません。
- 左側のメニューのフォルダーアイコンをクリックして、ファイルタブを開きます。次に、アップロードアイコンをクリックして、目的のファイルをアップロードします。ファイルをドラッグアンドドロップしてアップロードすることもできます。このファイルは、Colabランタイムが切断されると削除されます。
- 「🌴 Change the values in this section」ブロック内の変数の値を変更します。
- ランタイム > すべて実行をクリックします。手順は以上です。
- オプション:文字起こしをダウンロードします。
- download = True に設定すると、この Colabは指定された文字起こし/キャプションファイルを自動的にダウンロードします。ただし、これを忘れた場合は、後で文字起こししたファイルをダウンロードすることもできます。ファイルはランタイムとともに削除されるため、Colabを切断する前に必ずダウンロードしてください。
- ステップ1と同様に、フォルダーアイコンをクリックしてファイルタブを開きます。次に、目的のファイルの右側にある縦に並んだ3つの点のメニューアイコンをクリックし、ダウンロードを選択します。
サマリー
チュートリアルの完了おめでとうございます! 🥳
この記事では、Whisperを使用して音声を文字起こしし、その文字起こしをテキストファイルまたはSRT/VTTファイルとして保存する方法を学びました。
Whisper文字起こしの追跡と比較
Whisperモデルが互いにどのように異なるのか疑問に思われるかもしれません。この記事と Colab では中型の英語専用モデルを使用しましたが、より大きなモデルとより小さなモデルの両方があります。
次の記事では、機械学習プロジェクトとワークフロー用のツールのコレクションであるWeights & Biasesを使用して、さまざまなWhisperモデルの結果を比較および追跡する方法について詳しく説明します。
お読みいただきありがとうございました。これからもお楽しみに!
著者からのメモ:こんにちは、私は Weights & Biases のテクニカル ライター、アンジェリカです。私たちは機械学習用のツールを作成しています。この記事を気に入っていただけましたら、TwitterまたはYouTubeでフォローをよろしくお願いします :)
関連文書
Whisperについて学ぶことをお楽しみいただけましたら、Whisperの微調整に関するこちらの記事もお楽しみいただけるでしょう。
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.