Marcos12886 commited on
Commit
dc03e3e
·
verified ·
1 Parent(s): 63b7f16

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -177
app.py CHANGED
@@ -1,178 +1,27 @@
1
  import gradio as gr
2
- from huggingface_hub import InferenceClient
3
- # from model import token
4
- # from app_Marcos import predict_audio_Roberto
5
-
6
- import os
7
-
8
- access_token = os.getenv('HF_ACCESS_TOKEN')
9
- client = InferenceClient("meta-llama/Meta-Llama-3-8B-Instruct", token=access_token)
10
-
11
- def respond(
12
- message,
13
- history: list[tuple[str, str]],
14
- system_message,
15
- max_tokens,
16
- temperature,
17
- top_p,
18
- ):
19
- messages = [{"role": "system", "content": system_message}]
20
- for val in history:
21
- if val[0]:
22
- messages.append({"role": "user", "content": val[0]})
23
- if val[1]:
24
- messages.append({"role": "assistant", "content": val[1]})
25
- messages.append({"role": "user", "content": message})
26
- response = ""
27
- for message in client.chat_completion(
28
- messages,
29
- max_tokens=max_tokens,
30
- stream=True,
31
- temperature=temperature,
32
- top_p=top_p,
33
- ):
34
- token = message.choices[0].delta.content
35
- response += token
36
- yield response
37
-
38
- my_theme = gr.themes.Soft(
39
- primary_hue="emerald",
40
- secondary_hue="green",
41
- neutral_hue="slate",
42
- text_size="sm",
43
- spacing_size="sm",
44
- font=[gr.themes.GoogleFont('Nunito'), 'ui-sans-serif', 'system-ui', 'sans-serif'],
45
- font_mono=[gr.themes.GoogleFont('Nunito'), 'ui-monospace', 'Consolas', 'monospace'],
46
- ).set(
47
- body_background_fill='*neutral_50',
48
- body_text_color='*neutral_600',
49
- body_text_size='*text_sm',
50
- embed_radius='*radius_md',
51
- shadow_drop='*shadow_spread',
52
- shadow_spread='*button_shadow_active'
53
- )
54
-
55
- def mostrar_pagina_1():
56
- return gr.update(visible=False), gr.update(visible=True)
57
-
58
- def mostrar_pagina_2():
59
- return gr.update(visible=False), gr.update(visible=True)
60
-
61
- def redirigir_a_pantalla_inicial():
62
- return gr.update(visible=True), gr.update(visible=False)
63
-
64
- with gr.Blocks(theme=my_theme) as demo:
65
- with gr.Column(visible=True, elem_id="pantalla-inicial") as pantalla_inicial:
66
- gr.HTML(
67
- """
68
- <style>
69
- @import url('https://fonts.googleapis.com/css2?family=Lobster&display=swap');
70
- @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
71
-
72
- h1 {
73
- font-family: 'Lobster', cursive;
74
- font-size: 5em !important;
75
- text-align: center;
76
- margin: 0;
77
- }
78
-
79
- .gr-button {
80
- background-color: #4CAF50 !important;
81
- color: white !important;
82
- border: none;
83
- padding: 15px 32px;
84
- text-align: center;
85
- text-decoration: none;
86
- display: inline-block;
87
- font-size: 16px;
88
- margin: 4px 2px;
89
- cursor: pointer;
90
- border-radius: 12px;
91
- }
92
-
93
- .gr-button:hover {
94
- background-color: #45a049;
95
- }
96
- h2 {
97
- font-family: 'Lobster', cursive;
98
- font-size: 3em !important;
99
- text-align: center;
100
- margin: 0;
101
- }
102
- p.slogan, h4, p, h3 {
103
- font-family: 'Roboto', sans-serif;
104
- text-align: center;
105
- }
106
- </style>
107
- <h1>Iremia</h1>
108
- <h4 style='text-align: center; font-size: 1.5em'>Tu aliado para el bienestar de tu bebé</h4>
109
- """
110
- )
111
- gr.Markdown(
112
- "<h4 style='text-align: left; font-size: 1.5em;'>¿Qué es Iremia?</h4>"
113
- )
114
- gr.Markdown(
115
- "<p style='text-align: left'>Iremia es un proyecto llevado a cabo por un grupo de estudiantes interesados en el desarrollo de modelos de inteligencia artificial, enfocados específicamente en casos de uso relevantes para ayudar a cuidar a los más pequeños de la casa.</p>"
116
- )
117
- gr.Markdown(
118
- "<h4 style='text-align: left; font-size: 1.5em;'>Nuestra misión</h4>"
119
- )
120
- gr.Markdown(
121
- "<p style='text-align: left'>Sabemos que la paternidad puede suponer un gran desafío. Nuestra misión es brindarles a todos los padres unas herramientas de última tecnología que los ayuden a navegar esos primeros meses de vida tan cruciales en el desarrollo de sus pequeños.</p>"
122
- )
123
- gr.Markdown(
124
- "<h4 style='text-align: left; font-size: 1.5em;'>¿Qué ofrece Iremia?</h4>"
125
- )
126
- gr.Markdown(
127
- "<p style='text-align: left'>Iremia ofrece dos funcionalidades muy interesantes:</p>"
128
- )
129
- gr.Markdown(
130
- "<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>"
131
- )
132
- gr.Markdown(
133
- "<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>"
134
- )
135
- with gr.Row():
136
- with gr.Column():
137
- gr.Markdown("<h2>Predictor</h2>")
138
- boton_pagina_1 = gr.Button("Prueba el predictor")
139
- gr.Markdown("<p>Descubre por qué llora tu bebé y resuelve dudas sobre su cuidado con nuestro Iremia assistant</p>")
140
- with gr.Column():
141
- gr.Markdown("<h2>Monitor</h2>")
142
- boton_pagina_2 = gr.Button("Prueba el monitor")
143
- gr.Markdown("<p>Un monitor inteligente que detecta si tu hijo está llorando y te indica el motivo antes de que puedas levantarte del sofá</p>")
144
- with gr.Column(visible=False) as pagina_1:
145
- with gr.Row():
146
- with gr.Column():
147
- gr.Markdown("<h2>Predictor</h2>")
148
- audio_input = gr.Audio(type="numpy", label="Baby recorder")
149
- classify_btn = gr.Button("¿Por qué llora?")
150
- classification_output = gr.Textbox(label="Tu bebé llora por:")
151
- # classify_btn.click(predict_audio_Roberto, inputs=audio_input, outputs=classification_output)
152
- audio_input.change(fn=lambda _: "", inputs=audio_input, outputs=classification_output)
153
- with gr.Column():
154
- gr.Markdown("<h2>Assistant</h2>")
155
- system_message = "You are a Chatbot specialized in baby health and care."
156
- max_tokens = 512
157
- temperature = 0.7
158
- top_p = 0.95
159
- chatbot = gr.ChatInterface(
160
- respond,
161
- additional_inputs=[
162
- gr.State(value=system_message),
163
- gr.State(value=max_tokens),
164
- gr.State(value=temperature),
165
- gr.State(value=top_p)
166
- ],
167
- )
168
- gr.Markdown("Este chatbot no sustituye a un profesional de la salud. Ante cualquier preocupación o duda, consulta con tu pediatra.")
169
- boton_volver_inicio_1 = gr.Button("Volver a la pantalla inicial")
170
- boton_volver_inicio_1.click(redirigir_a_pantalla_inicial, inputs=None, outputs=[pantalla_inicial, pagina_1])
171
- with gr.Column(visible=False) as pagina_2:
172
- gr.Markdown("<h2>Monitor</h2>")
173
- gr.Markdown("Contenido de la Página 2")
174
- boton_volver_inicio_2 = gr.Button("Volver a la pantalla inicial")
175
- boton_volver_inicio_2.click(redirigir_a_pantalla_inicial, inputs=None, outputs=[pantalla_inicial, pagina_2])
176
- boton_pagina_1.click(mostrar_pagina_1, inputs=None, outputs=[pantalla_inicial, pagina_1])
177
- boton_pagina_2.click(mostrar_pagina_2, inputs=None, outputs=[pantalla_inicial, pagina_2])
178
- demo.launch()
 
1
  import gradio as gr
2
+ from transformers import pipeline
3
+ import numpy as np
4
+ from model import SAMPLING_RATE, clasificador, monitor
5
+ # modelo = monitor
6
+ modelo = clasificador
7
+ pipe = pipeline("audio-classification", model=f"A-POR-LOS-8000/distilhubert-finetuned-cry-detector", device="cuda")
8
+
9
+ def transcribe(audio):
10
+ _, y = audio
11
+ y = y.astype(np.float32) # con torch.float32 da error
12
+ y /= np.max(np.abs(y))
13
+ results = pipe({"sampling_rate": SAMPLING_RATE, "raw": y})
14
+ top_result = results[0] # Get the top result (most likely classification)
15
+ label = top_result["label"] # Extract the label from the top result
16
+ return label
17
+
18
+ demo = gr.Interface(
19
+ transcribe,
20
+ gr.Audio(
21
+ min_length=1.0,
22
+ max_length=10.0,
23
+ format="wav",
24
+ ),
25
+ "text",
26
+ )
27
+ demo.launch()