turing-usp commited on
Commit
11d1dcc
1 Parent(s): 6ef657d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -13
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
- openai_api_key = os.getenv("openai_api_key")
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(mp4_file, wav_file):
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(mp4_file)
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
- mp4_file = '/content/'+''.join(char for char in title if char not in string.punctuation.replace('/', '').replace('-', '').replace('!', '').replace('(', '').replace(')', ''))+'.mp4'
76
- wav_file = '/content/'+''.join(char for char in title if char not in string.punctuation.replace('/', '').replace('-', '').replace('!', '').replace('(', '').replace(')', ''))+'.wav'
77
- convert_mp4_to_wav(mp4_file, wav_file)
 
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")