Pythonを使ってYouTubeの動画を文字起こしする方法について説明します。主に以下の3つの方法があります。
- youtube-transcript-api + LangChain
- pytube + moviepy + Whisper
- yt-dlp + Whisper
youtube-transcript-api + LangChain
この方法はYouTubeの字幕を取得します。自動生成字幕しかない場合は精度が少し下がるかもしれません。また、自動字幕もない場合は取得ができません。
pip install langchain youtube-transcript-api
from langchain_community.document_loaders import YoutubeLoader
YOUTUBE_URL = "https://www.youtube.com/watch?v=Rs2ORs1lNqY"
loader = YoutubeLoader.from_youtube_url(YOUTUBE_URL, add_video_info=False, language=["ja"], translation="en")
documents = loader.load()
content = documents[0].page_content
print(content)
pytube + moviepy + Whisper
この方法はYouTubeの動画をmp3に変換し、その音声データをWhisperで文字起こしします。料金がかかるけど、精度は高い。
pip install pytube moviepy openai
from pytube import YouTube
from moviepy.editor import *
from openai import OpenAI
import os
YOUTUBE_URL = "https://www.youtube.com/watch?v=Rs2ORs1lNqY"
FILE_PATH = "output"
os.environ["OPENAI_API_KEY"] = "sk-xxx"
client = OpenAI()
yt = YouTube(YOUTUBE_URL)
audio_stream = yt.streams.filter(only_audio=True).first()
temp_file = audio_stream.download()
audio_clip = AudioFileClip(temp_file)
audio_clip.write_audiofile(FILE_PATH + ".mp3", codec="libmp3lame")
os.remove(temp_file)
audio_file = open(f"/content/{FILE_PATH}.mp3", "rb")
transcript = client.audio.transcriptions.create(model="whisper-1", file=audio_file)
content = transcript.text
print(content)
yt-dlp + Whisper
この方法については詳細な情報がありませんが、yt-dlpを使ってYouTubeの動画や音声をダウンロードし、その後Whisperで文字起こしを行うという流れになります。
以上がPythonを使ったYouTube動画の文字起こし方法です。それぞれの方法には一長一短がありますので、自分のニーズに合わせて選択してください。