histlearn commited on
Commit
b2dd253
·
verified ·
1 Parent(s): be487ea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -20
app.py CHANGED
@@ -1,3 +1,4 @@
 
1
  import gradio as gr
2
  from transformers import AutoProcessor, AutoModelForCausalLM
3
  from PIL import Image
@@ -7,7 +8,9 @@ import spacy
7
  import requests
8
  import nltk.tree
9
  import re
10
- import os
 
 
11
 
12
  # Carregar o modelo de português do spaCy
13
  nlp = spacy.load("pt_core_news_sm")
@@ -25,7 +28,7 @@ def invert_adj_n(doc, tags):
25
  continue
26
  if doc[i].tag_ != "PUNCT":
27
  if tags[i] == "A":
28
- if i + 1 < len(tags) and tags[i + 1] == "N":
29
  frase.append(doc[i + 1].text)
30
  frase.append(doc[i].text)
31
  already = True
@@ -42,7 +45,7 @@ def adjust_adj(doc, tags):
42
  for i in range(len(doc)):
43
  frase.append(doc[i].text)
44
  if tags[i] == "A":
45
- if i + 1 < len(tags) and tags[i + 1] == "A":
46
  frase.append("e")
47
  return frase
48
 
@@ -55,7 +58,7 @@ def adjust_art(doc, tags):
55
  continue
56
  text = doc[i].text
57
  if tags[i] == "ART" and text.lower() == "a":
58
- if i + 1 < len(doc):
59
  gender = doc[i + 1].morph.get("Gender")
60
  number = doc[i + 1].morph.get("Number")
61
  if gender and number:
@@ -190,6 +193,15 @@ def reordenar_sentenca(sentenca):
190
  sentenca_normalizada += frase[i] + " "
191
  return sentenca_normalizada.strip()
192
 
 
 
 
 
 
 
 
 
 
193
  def prepare_image(image_path):
194
  image = Image.open(image_path).convert("RGB")
195
  inputs = processor(images=image, return_tensors="pt").to(device)
@@ -212,35 +224,26 @@ def text_to_speech_gtts(text, lang='pt'):
212
  tts.save("output.mp3")
213
  return "output.mp3"
214
 
215
- # Carregar os modelos
216
- processor = AutoProcessor.from_pretrained("histlearn/microsoft-git-portuguese-neuro-simbolic")
217
- model = AutoModelForCausalLM.from_pretrained("histlearn/microsoft-git-portuguese-neuro-simbolic")
218
-
219
- # Configurar o dispositivo (GPU ou CPU)
220
- device = "cuda" if torch.cuda.is_available() else "cpu"
221
- model.to(device)
222
-
223
  # Função principal para processar a imagem e gerar a voz
224
  def process_image(image):
225
  _, pixel_values = prepare_image(image)
226
  caption_pt = generate_caption(pixel_values)
227
- sentenca_normalizada = reordenar_sentenca(caption_pt)
228
- audio_file = text_to_speech_gtts(sentenca_normalizada)
229
- productions = get_productions(sentenca_normalizada)
230
- return sentenca_normalizada, productions, audio_file
231
 
232
  # Caminhos para as imagens de exemplo
233
  example_image_paths = [
234
- "example1.jpeg",
235
- "example2.jpeg",
236
- "example3.jpeg"
237
  ]
238
 
239
  # Interface Gradio
240
  iface = gr.Interface(
241
  fn=process_image,
242
  inputs=gr.Image(type="filepath"),
243
- outputs=[gr.Textbox(label="Sentença Normalizada"), gr.Textbox(label="Classes Gramaticais"), gr.Audio(type="filepath", label="Áudio")],
244
  examples=example_image_paths,
245
  title="Image to Voice",
246
  description="Gera uma descrição em português e a converte em voz a partir de uma imagem."
 
1
+ import os
2
  import gradio as gr
3
  from transformers import AutoProcessor, AutoModelForCausalLM
4
  from PIL import Image
 
8
  import requests
9
  import nltk.tree
10
  import re
11
+
12
+ # Baixar o modelo de português do spaCy
13
+ os.system("python -m spacy download pt_core_news_sm")
14
 
15
  # Carregar o modelo de português do spaCy
16
  nlp = spacy.load("pt_core_news_sm")
 
28
  continue
29
  if doc[i].tag_ != "PUNCT":
30
  if tags[i] == "A":
31
+ if i + 1 len(tags) and tags[i + 1] == "N":
32
  frase.append(doc[i + 1].text)
33
  frase.append(doc[i].text)
34
  already = True
 
45
  for i in range(len(doc)):
46
  frase.append(doc[i].text)
47
  if tags[i] == "A":
48
+ if i + 1 len(tags) and tags[i + 1] == "A":
49
  frase.append("e")
50
  return frase
51
 
 
58
  continue
59
  text = doc[i].text
60
  if tags[i] == "ART" and text.lower() == "a":
61
+ if i + 1 len(doc):
62
  gender = doc[i + 1].morph.get("Gender")
63
  number = doc[i + 1].morph.get("Number")
64
  if gender and number:
 
193
  sentenca_normalizada += frase[i] + " "
194
  return sentenca_normalizada.strip()
195
 
196
+ # Carregar os modelos
197
+ processor = AutoProcessor.from_pretrained("histlearn/microsoft-git-portuguese-neuro-simbolic")
198
+ model = AutoModelForCausalLM.from_pretrained("histlearn/microsoft-git-portuguese-neuro-simbolic")
199
+
200
+ # Configurar o dispositivo (GPU ou CPU)
201
+ device = "cuda" if torch.cuda.is_available() else "cpu"
202
+ model.to(device)
203
+
204
+ # Funções auxiliares
205
  def prepare_image(image_path):
206
  image = Image.open(image_path).convert("RGB")
207
  inputs = processor(images=image, return_tensors="pt").to(device)
 
224
  tts.save("output.mp3")
225
  return "output.mp3"
226
 
 
 
 
 
 
 
 
 
227
  # Função principal para processar a imagem e gerar a voz
228
  def process_image(image):
229
  _, pixel_values = prepare_image(image)
230
  caption_pt = generate_caption(pixel_values)
231
+ caption_pt = reordenar_sentenca(caption_pt)
232
+ audio_file = text_to_speech_gtts(caption_pt)
233
+ return caption_pt, audio_file
 
234
 
235
  # Caminhos para as imagens de exemplo
236
  example_image_paths = [
237
+ "./example1.jpeg",
238
+ "./example2.jpeg",
239
+ "./example3.jpeg"
240
  ]
241
 
242
  # Interface Gradio
243
  iface = gr.Interface(
244
  fn=process_image,
245
  inputs=gr.Image(type="filepath"),
246
+ outputs=[gr.Textbox(), gr.Audio(type="filepath")],
247
  examples=example_image_paths,
248
  title="Image to Voice",
249
  description="Gera uma descrição em português e a converte em voz a partir de uma imagem."