你是否也曾为了学习或研究一个主题而花费大量时间在 YouTube 上浏览多个视频?长时间观看、做笔记,却还可能漏掉重要信息,这确实是一项挑战。
在本文中,我将展示如何构建一个利用大型语言模型(LLMs)回答视频内容问题的 Python 工具,让你轻松获取 YouTube 视频的关键信息。这不仅节省了我的时间,还显著提升了我的工作效率,让我有更多时间创作或放松。现在,就让我带你一起了解如何创建这个 YouTube AI 助手吧!
在深入技术细节前,先聊聊为什么这个项目对我意义重大。
作为全职开发者倡导者、兼职 YouTuber(我的频道是 Data Professor),内容研究是我的核心任务之一。构建这个助手的主要优势有:
- 节省时间:不再需要通篇观看视频,只需提问即可找到视频中的关键信息。
- 高效学习:能以更短时间总结出视频的核心内容。
- 提升效率:以前需要数周的内容研究,现在几天内就能完成。
YouTube AI 助手的工作流程可以分为以下 3 个主要步骤:
- 提取并下载音频:使用 YT-DLP Python 库 从 YouTube 下载音频文件。
- 将音频转录为文本:使用 AssemblyAI Python 库 将音频转录为文本。
- 回答问题:使用 AssemblyAI 的 LeMUR 模型 回答有关视频内容的问题。底层 LLM 为 Anthropic 的 Claude 3.5 Sonnet。
下图展示了整个流程:
请尊重版权法和使用条款,作者对因使用此工作流程产生的任何不当行为概不负责。
首先,打开终端或命令行并输入以下命令安装所需的 Python 库:
pip install yt-dlp assemblyai
要实现音频转录和 LeMUR 问答功能,首先从 AssemblyAI 获取 API 密钥,并将其保存在 Google Colab 的“秘密管理”中:
from google.colab import userdata
import assemblyai as aai
aai.settings.api_key = userdata.get('AAI_KEY')
如果不是使用 Google Colab,可以相应调整代码。
工作流程的第一步是用 yt_dlp
Python 库从 YouTube 下载音频文件。
以下是 download_audio()
函数的代码:
import yt_dlp
def download_audio(url):
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
'outtmpl': '%(title)s.%(ext)s',
'verbose': True,
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download([url])
例如,我们可以下载我制作的一个名为 如果我不得不重新学习编程,我会怎么做 的视频音频:
URL = "https://www.youtube.com/watch?v=wB7IU0EFN68"
download_audio(URL)
在几分钟内,音频文件将以 <文件名>.mp3
格式保存。
接下来,我们使用 AssemblyAI 将音频转录为文本。首先,创建一个 transcriber
对象,并调用 transcribe()
方法:
transcriber = aai.Transcriber()
transcript = transcriber.transcribe(audio_file)
首先定义我们想要的问题,例如:
prompt = "视频中提到的5条关键信息是什么?"
将 lemur.task()
方法应用于 transcript
对象,选择 Claude 3.5 Sonnet 作为 LLM 模型:
result = transcript.lemur.task(
prompt,
final_model=aai.LemurModel.claude3_5_sonnet
)
print(result.response)
通过自动换行设置,我们可以更方便地阅读生成的响应:
from IPython.display import HTML, display
def set_css():
display(HTML('''
<style>
pre {
white-space: pre-wrap;
}
</style>
'''))
get_ipython().events.register('pre_run_cell', set_css)
如果想要删除任务(例如出于隐私考虑),可以用以下代码:
deletion_response = aai.Lemur.purge_request_data(request_id=result.request_id)
在视频 如果我不得不重新学习编程,我会怎么做 中提出的问题是:
"在这个视频中提到的5个关键信息是什么?"
LLM 生成的答案如下:
根据文本记录,以下是视频中提到的5个关键信息:
- 选择一个编程语言开始学习,如果不确定从哪里开始,建议使用Python。
- 找到并利用免费学习资源,如Freecodecamp、Kaggle Learn、Geeksforgeeks等。
- 从基础知识开始,并将所学应用到你感兴趣的实际项目中,以保持动力。
- 通过社交媒体分享学习旅程,巩固理解并建立学习网络。
- 参与编程挑战并帮助他人,以巩固知识和改进技能。
如果您有兴趣进一步了解,请观看此内容的伴随视频:
通过构建 YouTube AI 助手,我显著加速了内容研究。这不仅是更大项目的一个良好起点,也适合更复杂的多视频研究、内容分析等需求。所有代码都可以在 GitHub 获取,欢迎根据自己的需求进行调整。希望您在使用该工具后能分享您的体验。