【失敗】YouTubeのURLを入力して翻訳させる【GPT-OSS】

AITool
# 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)で実行すること

BACK