這是一個可以分析 YouTube 影片逐字稿並生成摘要的程式,完成以下功能:
- URL 輸入: 詢問使用者輸入 YouTube URL
- 逐字稿提取:
- 英文影片:提取英文逐字稿
- 中文影片:提取沒有標點符號的逐字稿
- LLM 處理:
- 英文逐字稿:翻譯成中文
- 中文逐字稿:加上標點符號
- 摘要生成: 將逐字稿整理成條列式摘要
- 適用於: Google Colab
- 特點: Jupyter Notebook 格式,分步驟執行
- 使用方式: 直接在 Google Colab 中開啟並執行
- 適用於: Google Colab
- 特點: Python 腳本格式
- 使用方式: 在 Colab 中執行整個腳本
- 適用於: 本地環境
- 特點: 完整的 Python 類別實作
- 使用方式: 需要先安裝依賴套件
- 開啟 Google Colab
- 上傳
YouTube_Transcript_Analyzer.ipynb檔案 - 依序執行每個 cell
- 在提示時輸入 YouTube URL
-
安裝依賴套件:
pip install -r requirements.txt
-
安裝並設定 Ollama:
# 安裝 Ollama curl -fsSL https://ollama.com/install.sh | sh # 啟動服務 ollama serve # 下載 Gemma 7B 模型 ollama pull gemma:7b
-
執行程式:
python youtube_transcript_analyzer.py
yt-dlp: YouTube 影片下載openai-whisper: 語音轉文字langchain-community: LLM 整合torch: PyTorch 深度學習框架ffmpeg: 音訊處理(需要系統安裝)
- 影片長度: 建議測試影片長度控制在 4-5 分鐘以內,避免記憶體不足
- 網路連線: 需要穩定的網路連線下載影片和模型
- 計算資源: Whisper 和 LLM 模型需要一定的計算資源
- 模型下載: 首次使用時需要下載 Whisper 和 Gemma 模型,可能需要較長時間
- 使用者輸入 YouTube URL
- 下載影片音訊檔案
- 使用 Whisper 提取逐字稿並檢測語言
- 根據語言使用 LLM 進行:
- 英文 → 中文翻譯
- 中文 → 加標點符號
- 使用 LLM 生成條列式摘要
- 清理臨時檔案
=== YouTube 逐字稿分析器 ===
請輸入 YouTube 影片 URL: https://www.youtube.com/watch?v=example
==================================================
原始逐字稿:
==================================================
Hello everyone, welcome to our channel...
==================================================
翻譯結果:
==================================================
大家好,歡迎來到我們的頻道...
==================================================
摘要:
==================================================
• 頻道介紹與歡迎詞
• 影片主要內容說明
• 重要觀點總結
-
LLM 連接失敗
- 確保 Ollama 服務正在運行
- 檢查 Gemma 7B 模型是否已下載
-
音訊下載失敗
- 檢查 YouTube URL 是否正確
- 確認網路連線穩定
- 檢查影片是否有地區限制
-
記憶體不足
- 使用較短的測試影片
- 在 Colab 中使用 GPU 運算環境
-
FFmpeg 相關錯誤
- 在 Colab 中執行:
!apt install ffmpeg - 在本地環境中安裝 FFmpeg
- 在 Colab 中執行:
✅ 能詢問使用者,讓他/她輸入一個 YouTube 的 URL(一分)
- 實作在
get_youtube_url()函數中
✅ 能印出逐字稿。如果影片是英文,則印出英文逐字稿。如果影片是中文,則印出沒有標點符號的逐字稿(兩分)
- 使用 Whisper API 自動檢測語言並提取逐字稿
✅ 能連上一個大語言模型(LLM)。如果逐字稿是英文,則用 LLM 把逐字稿翻譯成中文印出。如果逐字稿是中文,則用 LLM 替它加上標點符號印出(兩分)
- 使用 Ollama + Gemma 7B 模型進行處理
✅ 能要求大語言模型(LLM),將逐字稿摘要(Summarize)整理成條列(Bullet Points)的形式印出(兩分)
- 實作在
generate_summary()函數中
此程式僅供學術用途使用。