【失敗】YouTubeのURLを入力して翻訳させる【GPT-OSS】
# python3.10以上が必要
python --version
-->Python 3.12.2
# yt-dlpとwhisperが必要
pip install yt-dlp
pip install openai-whisper
pip install torch
yt-dlp --version
-->2025.09.26
# 要約用のローカルモデルを使う場合
pip install transformers
pip install sentencepiece
(pip install torch)CODE
import os
import yt_dlp
import whisper
from transformers import pipeline
def download_audio(url, output_dir="downloads"):
os.makedirs(output_dir, exist_ok=True)
option = {
'format': 'bestaudio/best',
'outtmpl': f'{output_dir}/%(title)s.%(ext)s',
'quiet': True
}
with yt_dlp.YoutubeDL(option) as ydl:
info = ydl.extract_info(url, download=True)
file_path = ydl.prepare_filename(info)
return file_path
def transcribe_audio(audio_path, model_size="small"):
model = whisper.load_model(model_size)
result = model.transcribe(audio_path)
return result['text']
def summarize_text(text):
summarizer = pipeline("summarization")
max_chunk = 1000
chunks = [text[i:i+max_chunk] for i in range(0, len(text), max_chunk)]
summary = ""
for chunk in chunks:
s = summarizer(chunk, max_length=150, min_length=50, do_sample=False)
summary += s[0]['summary_text'] + " "
return summary.strip()
if __name__ == "__main__":
video_url = input("YouTube動画のURLを入力してください: ")
print("動画ダウンロード中")
audio_file = download_audio(video_url)
print("文字起こし中...")
text = transcribe_audio(audio_file)
print("要約中...")
summary = summarize_text(text)
print("\n=== 要約 ===\n")
print(summary)whisperのモデルサイズ(tiny, base, small, medium, large)を変更することで精度と速度が変わる
GPT-OSS要約モデルはtransformersのローカルモデルを使うが、長時間の動画はテキストを分割する必要がある
ERROR
エラー内容
raise DownloadError(message, exc_info)
yt_dlp.utils.DownloadError: ERROR: unable to download video data: HTTP Error 403: Forbidden
解決策
YouTubeの仕様変更により古いyt_dlpではURLを正しく処理できず403エラーになった
pip install -U yt-dlp
で最新版にアップデートすればいい
それでも同じエラーが出る場合は、ChromeにログインしてからChromeを閉じて
option = {
'format': 'bestaudio/best',
'cookiesfrombrowser': ('chrome',), <-- ココ
}
を追加すること
それでも
yt_dlp.utils.DownloadError: ERROR: ERROR: Failed to decrypt with DPAPI.
See https://github.com/yt-dlp/yt-dlp/issues/10927 for more info
というエラーが出る場合がある
ChromeのCookieは暗号化されており、WindowsのDPAPIをつかって複合します
Chromeを開いているユーザーと「管理者権限で実行しているユーザー(=admin)」が違うと
yt_dlpがDPAPIでCookieを復元できないためにおこります
「右クリック→管理者として実行」ではなく、通常のコマンドプロンプト(またはPowerShell)で実行すること