会議や、YouTube動画の内容を文字に起こしたいと思ったことはありませんか?言語学習者、コンテンツ制作者、またはアクセシブルなフォーマットが必要な方にとって、YouTube動画の文字起こしは非常に役立ちます。このブログでは、Faster Whisper Pythonライブラリを使用してYouTube動画を文字起こしする簡単な方法を紹介します。プログラミングが初めての方でも心配無用です。一歩ずつ丁寧に案内します!
・プログラミングに詳しくないけど、Faster Whisperを使って文字起こしできるかな?
・YouTube動画から正確に文字起こしをする方法はありますか?
・手順が複雑ではないか心配です。初心者でも簡単にできますか?
こんな疑問に答えます。
YouTube動画の内容をテキストに変換したい初心者や、プログラミングにあまり慣れていない方、またアクセシビリティを重視するコンテンツ制作者向けに書かれています。
かなり正確に日本語の文字起こしが可能になっています。また、APIは使用せず、無料ですので、いくらでも使用することができます。
第1章: はじめに:Faster Whisperとは?
Faster Whisperの概要
Faster Whisperは、音声認識と言語処理の分野で最新の技術を活用したPythonライブラリです。このライブラリは、特に音声ファイルからの高速かつ正確な文字起こしに特化しています。元々は、複雑な言語モデルとして開発されたWhisperをベースにしており、ユーザーが手軽に利用できるように設計されています。
YouTube動画の文字起こしに適している理由
YouTube動画の内容を文字に起こす場合、精度と速度が重要です。Faster Whisperは、これらの要件を満たす理想的なツールです。高度な機械学習アルゴリズムを利用して、様々な言語やアクセントに対応可能で、ノイズが多い環境下でも比較的高い精度を維持します。また、リアルタイムに近い速度で処理を行うことが可能なため、長時間の動画でも効率的に文字起こしが行えます。
Faster Whisperの特徴と利点
- 多言語対応: 世界中のさまざまな言語に対応しており、多言語環境での使用に最適です。
- 高精度: 最新の音声認識技術を採用しているため、高い認識精度を実現しています。
- リアルタイム処理: 高速な処理能力により、大量のオーディオデータも迅速に処理できます。
- ユーザーフレンドリー: Pythonライブラリとして提供されており、プログラミングに慣れていない方でも比較的簡単に扱うことができます。
Faster Whisperの活用シーン
- 教育分野: 講義やセミナーの音声を文字に起こし、学習資料として活用できます。
- ビジネス: 会議の記録やプレゼンテーションの内容を文書化し、後から参照や共有が可能になります。
- コンテンツ制作: YouTube動画の字幕作成や、ポッドキャストのテキスト化に利用できます。
この章では、Faster Whisperの基本的な概要と、それがYouTube動画の文字起こしに適している理由を説明しました。次の章では、このツールを使うための環境設定や必要なツールのインストール方法について詳しく見ていきます。
第2章: 環境設定:必要なツールのインストール
Pythonのインストール
Faster Whisperを使用するためには、まずPythonがシステムにインストールされている必要があります。Pythonは、プログラミング言語であり、多くの科学技術計算やデータ処理に用いられています。Pythonの公式ウェブサイト(python.org)から最新版をダウンロードし、インストールすることができます。
今回環境はPython 3.11.7で実施しています。
インストール手順
- Pythonのダウンロードページにアクセスし、「Download Python 3.x.x」(最新バージョン)をクリックします。
- ダウンロードしたインストーラーを実行し、画面の指示に従ってインストールを完了させます。
- インストールが完了したら、コマンドプロンプト(Windows)またはターミナル(macOS/Linux)を開き、「python –version」を入力して、Pythonが正しくインストールされたことを確認します。
Faster Whisperライブラリのインストール
Faster Whisperライブラリは、Pythonのパッケージ管理システムであるpipを通じて簡単にインストールできます。以下の手順に従ってください。
インストール手順
- コマンドプロンプトまたはターミナルを開きます。
- 「pip install faster_whisper」と入力し、Enterキーを押してインストールを開始します。
- インストールが完了するまで待ちます。
pip install faster_whisper
その他必要なツールやライブラリ
Faster Whisperを使用する際、YouTube動画の音声をダウンロードするために追加のツールが必要になります。この例では、「yt-dlp」というツールを使用します。yt-dlpは、YouTube動画をダウンロードするためのコマンドラインツールです。
yt-dlpのインストール
- コマンドプロンプトまたはターミナルを開きます。
- 「pip install yt-dlp」と入力し、Enterキーを押してインストールを開始します。
- インストールが完了するまで待ちます。
pip install yt-dlp
YouTubeの30分程度の動画も3分程度で完了するので非常に速いです。
第3章: YouTube動画からの音声ダウンロード
この章では、YouTube動画から音声をダウンロードし、それを文字起こしするための準備過程を説明します。ここでの重要なステップは、yt-dlpというツールを使ってYouTube動画の音声をMP3形式でダウンロードすることです。
TEDなどの教材をインストールして、勉強用に文字起こし、要約することも可能なので、非常に便利です。
yt-dlpを使用したダウンロード手順
yt-dlpは、YouTubeの動画から直接音声ファイルを抽出するための強力なコマンドラインツールです。以下の手順で動画の音声をダウンロードします。
- YouTube動画のURLの取得
- YouTubeで文字起こしをしたい動画を開きます。
- 動画上で右クリックを押し、詳細統計情報を選択し、 Video IDをコピーします。
- 音声ファイルのダウンロード
- コマンドプロンプトまたはターミナルを開きます。
- 以下のコマンドを入力して実行します。このコマンドでは、コピーしたYouTube動画のURLを
yt_url
の部分に貼り付けます。 yt-dlp -x --audio-format mp3 -o "ダウンロードファイル名.mp3" [YouTube動画のURL]
- このコマンドは、YouTube動画から音声を抽出し、指定したファイル名でMP3形式で保存します。
- ダウンロードの確認
- コマンドが正常に完了すると、指定したファイル名のMP3ファイルが保存されます。
- 保存されたファイルを確認し、音声が正しくダウンロードされているかをチェックします。
YouTube動画の上で、右クリックを押し、Video IDをコピー
- YouTube動画の著作権に注意してください。著作権で保護されたコンテンツを無断でダウンロードし、利用することは法的な問題を引き起こす可能性があります。
- ダウンロードした音声ファイルは、個人的な用途に限定して使用することをお勧めします。
第4章: Faster Whisperを使用した文字起こしプロセス
ダウンロードしたYouTube動画の音声ファイルを使用して、Faster Whisperライブラリで文字起こしを行うプロセスを紹介します。この章では、Faster Whisperモデルの設定、オプションの説明、実際のプログラムコードの実行方法について詳しく見ていきます。
Faster Whisperモデルの設定
Faster Whisperライブラリを使用するためには、最初にモデルを設定する必要があります。以下のコードは、Faster Whisperの「large-v3」モデルを使用する基本的な設定です。
from faster_whisper import WhisperModel
model = WhisperModel("large-v3", device="cuda", compute_type="float16")
このコードで、WhisperModel
をインポートし、large-v3
モデルを指定しています。device="cuda"
はGPUを使用する場合の設定で、より高速な処理が可能になります。compute_type=”float16″は計算の精度を指定しており、ここでは16ビット浮動小数点数を使用します。
オプションとパラメータの説明
プログラムコードはこちらです。
AUDIO_FILE_NAME = "ダウンロードしたファイル名.mp3"
segments, info = model.transcribe(
AUDIO_FILE_NAME,
beam_size=5,
vad_filter=True,
without_timestamps=True)
print("Detected language '%s' with probability %f" % (info.language, info.language_probability))
for segment in segments:
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
model.transcrib()のパラメータを下記で設定可能です。
- beam_size:
このパラメータは、モデルの推論時の探索範囲を指定します。値が大きいほど正確さが増しますが、処理時間も長くなります。 - vad_filter:
Voice Activity Detection(VAD)フィルターを有効にするかどうかを指定します。これにより、音声がない部分を無視して処理時間を短縮できます。 - without_timestamps:
タイムスタンプを含めないかどうかを指定します。このオプションがTrueの場合、出力されるテキストにはタイムスタンプが含まれません。
プログラムコードの実行
上記のコードは、ダウンロードした音声ファイルをFaster Whisperで文字起こしするためのものです。
このコードでは、先に設定したモデルを使用して、指定した音声ファイルを文字起こししています。文字起こしの結果は、セグメントごとに分かれ、各セグメントの開始と終了のタイムスタンプ、そして対応するテキストが出力されます。また、検出された言語とその確率も表示されます。
プログラムの全文がこちらになります。成田悠輔さん25分ほどのプレゼンが2分程度で文字起こし完了しました。非常に速い速度で完了します。
from faster_whisper import WhisperModel
import subprocess
YOUTUBE_ID = "ceE4dPTxlE4" # Youtube ID
AUDIO_FILE_NAME = f"{YOUTUBE_ID}.mp3"
# Download audio from Youtube
def dl_yt(yt_url):
subprocess.run(f"yt-dlp -x --audio-format mp3 -o {AUDIO_FILE_NAME} {yt_url}", shell=True)
dl_yt(f"https://youtu.be/{YOUTUBE_ID}")
model = WhisperModel("large-v3", device="cuda", compute_type="float16")
segments, info = model.transcribe(
AUDIO_FILE_NAME,
beam_size=5,
vad_filter=True,
without_timestamps=True,)
print("Detected language '%s' with probability %f" % (info.language, info.language_probability))
for segment in segments:
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
import os
os.remove(AUDIO_FILE_NAME)
結果がこちらです。タイムスタンプが左に表示されています。txtファイルとして保存も可能ですので、かなり日本語でもきれいに文字起こししてくれています。
また、YouTubeで紹介したテキストへの保存方法も下記プログラムに紹介します。こちらのプログラムではすべてをテキスト化することができます。
from faster_whisper import WhisperModel # WhisperModelを使うための準備
import subprocess # 外部コマンドを実行するためのライブラリ
import os # オペレーティングシステムとやり取りするためのライブラリ
YOUTUBE_ID = "ceE4dPTxlE4" # YouTubeの動画ID
AUDIO_FILE_NAME = f"{YOUTUBE_ID}.mp3" # 音声ファイル名
TEXT_FILE_NAME = f"{YOUTUBE_ID}.txt" # テキストファイル名
# YouTubeから音声をダウンロードする関数
def dl_yt(yt_url):
subprocess.run(f"yt-dlp -x --audio-format mp3 -o {AUDIO_FILE_NAME} {yt_url}", shell=True)
dl_yt(f"https://youtu.be/{YOUTUBE_ID}") # 関数を実行して動画から音声をダウンロード
model = WhisperModel("large-v3", device="cuda", compute_type="float16") # 音声認識モデルを準備
# 音声をテキストに変換
segments, info = model.transcribe(
AUDIO_FILE_NAME,
beam_size=5,
vad_filter=True,
without_timestamps=False,)
# 使用した言語とその確率を表示
print("Detected language '%s' with probability %f" % (info.language, info.language_probability))
# テキストをファイルに保存
with open(TEXT_FILE_NAME, "w") as text_file:
for segment in segments:
text_file.write("[%.2fs -> %.2fs] %s\n" % (segment.start, segment.end, segment.text))
# ファイルの内容を表示(オプション)
with open(TEXT_FILE_NAME, "r") as text_file:
print(text_file.read())
# Clean up: remove the downloaded audio file
# os.remove(AUDIO_FILE_NAME)
下記がYouTube動画になります。
結果の解析
文字起こしの結果を確認し、正確に変換されているかを確認します。Faster Whisperは非常に高い精度を持っていますが、特に発音が不明瞭な部分や背景ノイズがある場合、誤認識する可能性があります。必要に応じて、手動での修正を行うことが推奨されます。
YouTubeの内容をテキスト化して、要約して紹介するのもかなり簡単にできると思います。Faster Whisperを使用してYouTube動画の音声を文字起こしするプロセスは、初心者でも比較的簡単に実行できます。正確な結果を得るためには、結果の慎重な確認と必要に応じた修正が重要です。このガイドを通じて、YouTube動画の内容を効率的にテキスト化する方法を学び、新たなスキルを身につけることができたはずです。
また、会議の議事録作成にも十分なレベルで無料で使えるので非常に有用だと思います。