使用说明
病毒式传播时刻管道
将长YouTube视频转换为简短、可分享的片段。现在操作更简化:仅支持独白脚本、ElevenLabs语音旁白,并使用仓库中的循环背景音乐 Sample_Video.mp4.
它的功能/作用
- 从YouTube字幕中检测病毒式传播的瞬间(Gemini)
- 生成一个人的独白剧本(不包含旁白/音效标签)
- 生成高质量的旁白(ElevenLabs)
- 循环
Sample_Video.mp4匹配音频长度(FFmpeg)并复用音频
要求
- Python 3.11及以上版本
- FFmpeg 在路径中(PATH)
ffmpeg,ffprobe) - API密钥
.env:GOOGLE_API_KEYELEVENLABS_API_KEY
安装依赖项:
pip install -r requirements.txt
FFmpeg(macOS):
brew install ffmpeg
快速入门
运行Streamlit应用程序:
cd viral-moment-pipeline
streamlit run streamlit_app.py
用户界面中的管道步骤:
- 下载音频 → 2) 转录文本 → 3) 寻找片段 → 4) 生成独白 → 5) 使用ElevenLabs添加旁白 → 6) 循环播放
Sample_Video.mp4并复用音频
结果视频/音频保存在以下位置 generated_videos/ 和 generated_audio/。
它是如何工作的(内部机制)
- 脚本生成:
tools/llm_tool.py强制输出独白,并对任何标签/提示进行净化处理 - 旁白:
tools/voice_tool.py#create_high_quality_voiceover - 视频:
tools/video_tool.py#create_looped_video_with_audio使用FFmpeg进行循环Sample_Video.mp4到叙述时长 - Streamlit 管道已更新,现在默认使用循环视频路径
将媒体排除在Git之外
*.mp4 被忽略了,但如果 Sample_Video.mp4 之前已提交,取消追踪:
git rm --cached viral-moment-pipeline/Sample_Video.mp4
git commit -m "Stop tracking Sample_Video.mp4; ignore media"
git push
故障排除
- 缺少 ElevenLabs 密钥:请设置
ELEVENLABS_API_KEY在里面;在...中.env - 未找到FFmpeg:请安装并确保
ffmpeg/ffprobe在PATH环境变量中
项目结构
viral-moment-pipeline/
├── main.py
├── streamlit_app.py
├── tools/
│ ├── llm_tool.py # moments + monologue scripts
│ ├── voice_tool.py # ElevenLabs voiceover
│ └── video_tool.py # loop Sample_Video.mp4 + mux audio
├── Sample_Video.mp4 # background (kept local, ignored by Git)
├── generated_audio/
└── generated_videos/