Spaces:
Runtime error
Runtime error
| #from langchain.document_loaders.generic import GenericLoader | |
| #from langchain.document_loaders.parsers import OpenAIWhisperParser | |
| #from langchain.document_loaders.blob_loaders.youtube_audio import YoutubeAudioLoader | |
| from langchain.document_loaders import YoutubeLoader | |
| from langchain.chains import RetrievalQA | |
| from langchain.vectorstores import FAISS | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain.embeddings import OpenAIEmbeddings | |
| from langchain.text_splitter import RecursiveCharacterTextSplitter | |
| import gradio as gr | |
| import os | |
| import time | |
| import shutil | |
| def process_and_transcribe(url, openai_api_key, model): | |
| """Process and transcribe the video at a given url""" | |
| # Setting qa_chain as a global variable | |
| global qa_chain | |
| #save_dir = some_title | |
| #loader = GenericLoader(YoutubeAudioLoader(url, save_dir), OpenAIWhisperParser(api_key = openai_api_key)) | |
| loader = YoutubeLoader.from_youtube_url(url) | |
| docs = loader.load() | |
| 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(openai_api_key = openai_api_key) | |
| vectordb = FAISS.from_texts(splits, embeddings) | |
| qa_chain = RetrievalQA.from_chain_type( | |
| llm=ChatOpenAI(model_name=model, temperature=0, openai_api_key=openai_api_key), | |
| chain_type="stuff", | |
| retriever=vectordb.as_retriever(), | |
| ) | |
| return text | |
| def response(message, history): | |
| return qa_chain.run(message) | |
| transcribe_interface = gr.Interface( | |
| fn=process_and_transcribe, | |
| inputs=['text', 'text', gr.components.Radio(['gpt-3.5-turbo', 'gpt-3.5-turbo-16k','gpt-4'])], | |
| outputs=['text'], | |
| title="Transcribe Video", | |
| description=""" Summarize a YouTube Video (Supports Multiple Language Transcription)\n | |
| \n1. Paste the YouTube Video Link. | |
| \n2. Provide the OpenAI API Key (For chatting with GPT Models).\n | |
| \n3. Choose the Model, GPT-3.5-turbo for smaller summaries, GPT-3.5-turbo-16k for larger context, GPT-4 for advanced reasoning\n | |
| \n4. Go to the Chat interface\n | |
| \n5. Type 'Summarize'\n | |
| \n6. Done!\n | |
| Clear everything with the Clear button. """ | |
| ) | |
| chat_interface = gr.ChatInterface(fn=response, title="Chat", description="Chat with the AI about the video you just summarized.") | |
| demo = gr.TabbedInterface([transcribe_interface, chat_interface], ["Transcribe", "Summarize & Chat"]) | |
| demo.queue() | |
| demo.launch() |