Youtube 與 AI chat 要結合最大困難是 timeout 問題
1.Youtube 轉檔上字幕都需時間
2.AI chat 封裝較好的會預設 30秒,30 秒後會出現 timeout
所以經過多日研究終於完成了,我加了以下 fuction
import asyncio
def long_running_sync_function2():
Transcrib('youtube_download.mp4')
return "生成字幕已完成"
result = await asyncio.to_thread(long_running_sync_function2)
OBS直播換臉
視訊即時換臉
作品:
1.使用 YT-dlp 命令下載
--yes-playlist 確保當網址指向播放列表時也會被處理
--output 定義下載的影片檔名格式,加上章節名
--ignore-errors 當某個影片因為版權等問題無法下載時,會跳過繼續下載其它影片
--format bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best 指定下載 MP4 格式的影片
--split-chapters 將影片按章節分割並下載
2.使用 whisper
安裝:
安裝FFmpeg,輸入pip install ffmpeg-python or conda install -c conda-forge ffmpeg
安裝whisper pip install -U openai-whisper
whispe — help 看是否有上 cuda(要有輝達顯卡)
卸除pytorch,輸入 pip uninstall torch
清除快取,輸入 pip cache purge
指定安裝cuda,輸入 pip install torch torchvision torchaudio — extra-index-url https://download.pytorch.org/whl/cu118
輸入whisper stable_diffusion.mp4 — language zh — device cuda
3.[FFmpeg] 烙印字幕至影像上
ffmpeg -i input.mp4 -vf "subtitles='sub.srt'" output.mp4
成果如下: