Spaces:
Running
Running
Commit
•
11d1dcc
1
Parent(s):
6ef657d
Update app.py
Browse files
app.py
CHANGED
@@ -21,13 +21,12 @@ from langchain.chat_models import ChatOpenAI
|
|
21 |
from langchain.memory import ConversationBufferWindowMemory
|
22 |
from langchain.chains import ConversationalRetrievalChain
|
23 |
from langchain.callbacks import get_openai_callback
|
|
|
24 |
from langchain import PromptTemplate
|
25 |
from langchain import LLMChain
|
26 |
import monkey_patch # OBS: esse arquivo evita um bug frequente do pytube
|
27 |
from pytube import YouTube
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
|
32 |
|
33 |
# Criando a função que corta o texto em chunks:
|
@@ -51,12 +50,12 @@ def get_vectorstore(chunks):
|
|
51 |
|
52 |
# Criando a função para converter o vídeo para o formato adequado:
|
53 |
@st.cache_data
|
54 |
-
def convert_mp4_to_wav(
|
55 |
"""Função que converte um arquivo de vídeo no formato MP4 para um arquivo de
|
56 |
áudio no formato WAV a partir das seguintes entradas: o caminho do arquivo
|
57 |
de vídeo no formato MP4 que se deseja converter; o caminho onde o arquivo
|
58 |
de áudio WAV resultante será salvo. Nenhuma saída explícita é retornada."""
|
59 |
-
video = AudioFileClip(
|
60 |
video.write_audiofile(wav_file)
|
61 |
|
62 |
# Criando a função que gera a transcrição:
|
@@ -68,13 +67,15 @@ def get_transcriptions(url):
|
|
68 |
dicionario = {}
|
69 |
# Baixando o áudio:
|
70 |
youtube_content = YouTube(url)
|
71 |
-
audio_streams = youtube_content.streams.filter(only_audio=True)
|
72 |
-
audio_streams[0].download()
|
73 |
title = youtube_content.title
|
|
|
|
|
|
|
74 |
# Convertendo para Wav:
|
75 |
-
|
76 |
-
|
77 |
-
|
|
|
78 |
# Inicializando o reconhecedor de fala:
|
79 |
r = sr.Recognizer()
|
80 |
# Carregando o áudio gravado pelo Whisper em um objeto de áudio:
|
@@ -138,7 +139,7 @@ def get_correction(transcription):
|
|
138 |
|
139 |
# Criando o chatbot
|
140 |
def alan_videos(vectorstore):
|
141 |
-
""" Função que inicializa e configura um LLM da OpenAI
|
142 |
e retorna um chatbot configurado pronto para uso. """
|
143 |
memory = ConversationBufferWindowMemory(memory_key='chat_history', return_messages=True, k=3)
|
144 |
LLM = ChatOpenAI(openai_api_key=openai_api_key, temperature=0.25, model_name="gpt-3.5-turbo")
|
@@ -148,7 +149,7 @@ def alan_videos(vectorstore):
|
|
148 |
|
149 |
# Criando um modelo de chat:
|
150 |
def chat(pergunta):
|
151 |
-
""" Função que processa uma pergunta utilizando o chatbot
|
152 |
configurado (alan_videos) e retorna sua resposta. """
|
153 |
with get_openai_callback() as cb:
|
154 |
resposta = st.session_state.alanvideos.invoke({"question": pergunta})
|
@@ -171,7 +172,6 @@ icon = Image.open("Traçado laranja #f1863d.png")
|
|
171 |
st.set_page_config(page_title="AlanVideos", page_icon=icon, layout="wide", initial_sidebar_state="auto")
|
172 |
|
173 |
|
174 |
-
|
175 |
# Configurando o site:
|
176 |
def main():
|
177 |
local_css("style.css")
|
|
|
21 |
from langchain.memory import ConversationBufferWindowMemory
|
22 |
from langchain.chains import ConversationalRetrievalChain
|
23 |
from langchain.callbacks import get_openai_callback
|
24 |
+
from key import openai_api_key
|
25 |
from langchain import PromptTemplate
|
26 |
from langchain import LLMChain
|
27 |
import monkey_patch # OBS: esse arquivo evita um bug frequente do pytube
|
28 |
from pytube import YouTube
|
29 |
+
os.environ['OPENAI_API_KEY'] = openai_api_key
|
|
|
|
|
30 |
|
31 |
|
32 |
# Criando a função que corta o texto em chunks:
|
|
|
50 |
|
51 |
# Criando a função para converter o vídeo para o formato adequado:
|
52 |
@st.cache_data
|
53 |
+
def convert_mp4_to_wav(mp3_file, wav_file):
|
54 |
"""Função que converte um arquivo de vídeo no formato MP4 para um arquivo de
|
55 |
áudio no formato WAV a partir das seguintes entradas: o caminho do arquivo
|
56 |
de vídeo no formato MP4 que se deseja converter; o caminho onde o arquivo
|
57 |
de áudio WAV resultante será salvo. Nenhuma saída explícita é retornada."""
|
58 |
+
video = AudioFileClip(mp3_file)
|
59 |
video.write_audiofile(wav_file)
|
60 |
|
61 |
# Criando a função que gera a transcrição:
|
|
|
67 |
dicionario = {}
|
68 |
# Baixando o áudio:
|
69 |
youtube_content = YouTube(url)
|
|
|
|
|
70 |
title = youtube_content.title
|
71 |
+
title = re.sub('[^A-z0-9 -]', '', title).replace(" ", " ")
|
72 |
+
audio_streams = youtube_content.streams.filter(only_audio=True)
|
73 |
+
audio_streams[0].download(filename=f"{title}.mp3")
|
74 |
# Convertendo para Wav:
|
75 |
+
cwd = os.getcwd()
|
76 |
+
mp3_file = os.path.join(cwd, f"{title}.mp3")
|
77 |
+
wav_file = os.path.join(cwd, f"{title}.wav")
|
78 |
+
convert_mp4_to_wav(mp3_file, wav_file)
|
79 |
# Inicializando o reconhecedor de fala:
|
80 |
r = sr.Recognizer()
|
81 |
# Carregando o áudio gravado pelo Whisper em um objeto de áudio:
|
|
|
139 |
|
140 |
# Criando o chatbot
|
141 |
def alan_videos(vectorstore):
|
142 |
+
""" Função que inicializa e configura um LLM da OpenAI
|
143 |
e retorna um chatbot configurado pronto para uso. """
|
144 |
memory = ConversationBufferWindowMemory(memory_key='chat_history', return_messages=True, k=3)
|
145 |
LLM = ChatOpenAI(openai_api_key=openai_api_key, temperature=0.25, model_name="gpt-3.5-turbo")
|
|
|
149 |
|
150 |
# Criando um modelo de chat:
|
151 |
def chat(pergunta):
|
152 |
+
""" Função que processa uma pergunta utilizando o chatbot
|
153 |
configurado (alan_videos) e retorna sua resposta. """
|
154 |
with get_openai_callback() as cb:
|
155 |
resposta = st.session_state.alanvideos.invoke({"question": pergunta})
|
|
|
172 |
st.set_page_config(page_title="AlanVideos", page_icon=icon, layout="wide", initial_sidebar_state="auto")
|
173 |
|
174 |
|
|
|
175 |
# Configurando o site:
|
176 |
def main():
|
177 |
local_css("style.css")
|