Robertomarting commited on
Commit
d88f91c
1 Parent(s): a28c39c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -9
app.py CHANGED
@@ -96,9 +96,12 @@ def predict_audio(audio):
96
 
97
  replace_dict = {0: 'Hambre', 1: 'Problemas para respirar', 2: 'Dolor', 3: 'Cansancio/Incomodidad'}
98
  most_common_predicted_label = replace_dict[most_common_predicted_label]
99
-
100
  return most_common_predicted_label
101
 
 
 
 
 
102
  def clear_audio_input(audio):
103
  return ""
104
 
@@ -145,6 +148,7 @@ model_monitor = HubertForSequenceClassification.from_pretrained("A-POR-LOS-8000/
145
  def compute_db(audio_data):
146
  rms = np.sqrt(np.mean(np.square(audio_data)))
147
  db = 20 * np.log10(rms + 1e-6)
 
148
  return db
149
 
150
  #Función de extracción de características para el monitor:
@@ -194,12 +198,11 @@ def update_status_to_predicting(audio, visual_threshold):
194
  audio_data = np.array(audio_data, dtype=np.float32)
195
 
196
  db_level = compute_db(audio_data)
197
-
198
  if db_level < visual_threshold:
199
  return f"Esperando... Decibelios: {db_level}"
200
  else:
201
  return f"Prediciendo... Decibelios: {db_level}"
202
- time.sleep(5)
203
 
204
  #Función que realiza la predicción
205
  def capture_and_predict(audio,visual_threshold, sample_rate=16000, duration=5):
@@ -312,7 +315,12 @@ with gr.Blocks(theme = my_theme) as demo:
312
  text-align: center;
313
  margin: 0;
314
  }
315
- p.slogan, h4, p, h3 {
 
 
 
 
 
316
  font-family: 'Roboto', sans-serif;
317
  text-align: center;
318
  }
@@ -329,6 +337,7 @@ with gr.Blocks(theme = my_theme) as demo:
329
  gr.Markdown("<p style='text-align: left'>Iremia ofrece dos funcionalidades muy interesantes:</p>")
330
  gr.Markdown("<p style='text-align: left'>Predictor: Con nuestro modelo de inteligencia artificial, somos capaces de predecir por qué tu hijo de menos de 2 años está llorando. Además, tendrás acceso a un asistente personal para consultar cualquier duda que tengas sobre el cuidado de tu pequeño.</p>")
331
  gr.Markdown("<p style='text-align: left'>Monitor: Nuestro monitor no es como otros que hay en el mercado, ya que es capaz de reconocer si un sonido es un llanto del bebé o no, y si está llorando, predice automáticamente la causa, lo cual te brindará la tranquilidad de saber siempre qué pasa con tu pequeño y te ahorrará tiempo y muchas horas de sueño.</p>")
 
332
 
333
  with gr.Row():
334
  with gr.Column():
@@ -342,9 +351,9 @@ with gr.Blocks(theme = my_theme) as demo:
342
  gr.Markdown("<h4 style='text-align: center; font-size: 1.5em'>Descubre por qué tu bebé está llorando</h4>")
343
  audio_input = gr.Audio(type="numpy", label="Baby recorder")
344
  classify_btn = gr.Button("¿Por qué llora?")
345
- classification_output = gr.Textbox(label="Tu bebé llora por:")
346
 
347
- classify_btn.click(predict_audio, inputs=audio_input, outputs=classification_output)
348
  audio_input.change(fn=clear_audio_input, inputs=audio_input, outputs=classification_output)
349
 
350
  with gr.Column():
@@ -356,8 +365,8 @@ with gr.Blocks(theme = my_theme) as demo:
356
 
357
  threshold_db = gr.Slider(minimum=0, maximum=200, step=1, value=50, label="Umbral de dB para activar la predicción")
358
 
359
- status_label = gr.Textbox(value="Esperando...", label="Estado")
360
- prediction_label = gr.Textbox(label="Predicción")
361
 
362
  audio_stream.stream(
363
  fn=update_status_to_predicting,
@@ -374,7 +383,7 @@ with gr.Blocks(theme = my_theme) as demo:
374
 
375
  with gr.Row():
376
  with gr.Column():
377
- gr.Markdown("<h2>Assistant</h2>")
378
  gr.Markdown("<h4 style='text-align: center; font-size: 1.5em'>Pregunta a nuestro asistente cualquier duda que tengas sobre tu pequeño</h4>")
379
  system_message = "Eres un chatbot especializado en el cuidado y la salud de los bebés. Estás dispuesto a ayudar amablemente a cualquier padre que tenga dudas o preocupaciones sobre su hijo o hija."
380
  max_tokens = 512
 
96
 
97
  replace_dict = {0: 'Hambre', 1: 'Problemas para respirar', 2: 'Dolor', 3: 'Cansancio/Incomodidad'}
98
  most_common_predicted_label = replace_dict[most_common_predicted_label]
 
99
  return most_common_predicted_label
100
 
101
+ def display_prediction(audio):
102
+ prediction = predict_audio(audio)
103
+ return f"<h3 style='text-align: center; font-size: 1.5em;'>Tu bebé llora por: {prediction}</h3>"
104
+
105
  def clear_audio_input(audio):
106
  return ""
107
 
 
148
  def compute_db(audio_data):
149
  rms = np.sqrt(np.mean(np.square(audio_data)))
150
  db = 20 * np.log10(rms + 1e-6)
151
+ db = round(db,2)
152
  return db
153
 
154
  #Función de extracción de características para el monitor:
 
198
  audio_data = np.array(audio_data, dtype=np.float32)
199
 
200
  db_level = compute_db(audio_data)
201
+ db_level = round(db_level, 2)
202
  if db_level < visual_threshold:
203
  return f"Esperando... Decibelios: {db_level}"
204
  else:
205
  return f"Prediciendo... Decibelios: {db_level}"
 
206
 
207
  #Función que realiza la predicción
208
  def capture_and_predict(audio,visual_threshold, sample_rate=16000, duration=5):
 
315
  text-align: center;
316
  margin: 0;
317
  }
318
+ h3 {
319
+ font-family: 'Roboto', sans-serif;
320
+ text-align: center;
321
+ font-size: 1.5em !important;
322
+ }
323
+ p.slogan, h4, p {
324
  font-family: 'Roboto', sans-serif;
325
  text-align: center;
326
  }
 
337
  gr.Markdown("<p style='text-align: left'>Iremia ofrece dos funcionalidades muy interesantes:</p>")
338
  gr.Markdown("<p style='text-align: left'>Predictor: Con nuestro modelo de inteligencia artificial, somos capaces de predecir por qué tu hijo de menos de 2 años está llorando. Además, tendrás acceso a un asistente personal para consultar cualquier duda que tengas sobre el cuidado de tu pequeño.</p>")
339
  gr.Markdown("<p style='text-align: left'>Monitor: Nuestro monitor no es como otros que hay en el mercado, ya que es capaz de reconocer si un sonido es un llanto del bebé o no, y si está llorando, predice automáticamente la causa, lo cual te brindará la tranquilidad de saber siempre qué pasa con tu pequeño y te ahorrará tiempo y muchas horas de sueño.</p>")
340
+ gr.Markdown("<p style='text-align: left'>Asistente: Contamos con un chatbot que podrá responder cualquier duda que tengas sobre el cuidado de tu bebé.</p>")
341
 
342
  with gr.Row():
343
  with gr.Column():
 
351
  gr.Markdown("<h4 style='text-align: center; font-size: 1.5em'>Descubre por qué tu bebé está llorando</h4>")
352
  audio_input = gr.Audio(type="numpy", label="Baby recorder")
353
  classify_btn = gr.Button("¿Por qué llora?")
354
+ classification_output = gr.Markdown()
355
 
356
+ classify_btn.click(display_prediction, inputs=audio_input, outputs=classification_output)
357
  audio_input.change(fn=clear_audio_input, inputs=audio_input, outputs=classification_output)
358
 
359
  with gr.Column():
 
365
 
366
  threshold_db = gr.Slider(minimum=0, maximum=200, step=1, value=50, label="Umbral de dB para activar la predicción")
367
 
368
+ status_label = gr.Textbox(label="Estado")
369
+ prediction_label = gr.Textbox(label="Tu bebé:")
370
 
371
  audio_stream.stream(
372
  fn=update_status_to_predicting,
 
383
 
384
  with gr.Row():
385
  with gr.Column():
386
+ gr.Markdown("<h2>Asistente</h2>")
387
  gr.Markdown("<h4 style='text-align: center; font-size: 1.5em'>Pregunta a nuestro asistente cualquier duda que tengas sobre tu pequeño</h4>")
388
  system_message = "Eres un chatbot especializado en el cuidado y la salud de los bebés. Estás dispuesto a ayudar amablemente a cualquier padre que tenga dudas o preocupaciones sobre su hijo o hija."
389
  max_tokens = 512