Spaces:
Sleeping
Sleeping
File size: 7,248 Bytes
9b458b6 22c83b7 9b458b6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# cargamos el modelo de huggingsound
import re
import unidecode
#from huggingsound import SpeechRecognitionModel
from models.model import *
from models.plantillas_codigo import *
from models.variables_globales import *
from transformers import pipeline
import gradio as gr
# creaci贸n del modelo
# model = SpeechRecognitionModel("patrickvonplaten/wav2vec2-large-xlsr-53-spanish-with-lm")
p = pipeline("automatic-speech-recognition", "patrickvonplaten/wav2vec2-large-xlsr-53-spanish-with-lm")
tabla='''
<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;}
.tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px;
overflow:hidden;padding:10px 5px;word-break:normal;}
.tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px;
font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;}
.tg .tg-r31x{color:#ffffff;text-align:center;vertical-align:top}
.tg .tg-urxo{border-color:#ffffff;color:#ffffff;text-align:center;vertical-align:top}
.tg .tg-iejp{border-color:#ffffff;color:#ffffff;font-weight:bold;text-align:center;vertical-align:top}
</style>
<table class="tg">
<thead>
<tr>
<th class="tg-iejp">Fon茅tico</th>
<th class="tg-r31x">andrea</th>
<th class="tg-r31x">bravo</th>
<th class="tg-r31x">carlos</th>
<th class="tg-r31x">delta</th>
<th class="tg-r31x">eduardo</th>
<th class="tg-r31x">fernando</th>
<th class="tg-r31x">garcia</th>
<th class="tg-r31x">hotel</th>
<th class="tg-r31x">india</th>
<th class="tg-r31x">julieta</th>
<th class="tg-r31x">kilo</th>
<th class="tg-r31x">lima</th>
<th class="tg-r31x">miguel</th>
<th class="tg-r31x">noviembre</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tg-iejp">Letra</td>
<td class="tg-r31x">a</td>
<td class="tg-r31x">b</td>
<td class="tg-r31x">c</td>
<td class="tg-r31x">d</td>
<td class="tg-r31x">e</td>
<td class="tg-r31x">f</td>
<td class="tg-r31x">g</td>
<td class="tg-r31x">h</td>
<td class="tg-r31x">i</td>
<td class="tg-r31x">j</td>
<td class="tg-r31x">k</td>
<td class="tg-r31x">l</td>
<td class="tg-r31x">m</td>
<td class="tg-r31x">n</td>
</tr>
<tr>
<td class="tg-urxo"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
</tr>
<tr>
<td class="tg-iejp">Fon茅tico</td>
<td class="tg-r31x">oscar</td>
<td class="tg-r31x">papa</td>
<td class="tg-r31x">queretaro</td>
<td class="tg-r31x">romero</td>
<td class="tg-r31x">sierra</td>
<td class="tg-r31x">tango</td>
<td class="tg-r31x">uniforme</td>
<td class="tg-r31x">victor</td>
<td class="tg-r31x">waffle</td>
<td class="tg-r31x">equis</td>
<td class="tg-r31x">yarda</td>
<td class="tg-r31x">zapato</td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
</tr>
<tr>
<td class="tg-iejp">Letra</td>
<td class="tg-r31x">o</td>
<td class="tg-r31x">p</td>
<td class="tg-r31x">q</td>
<td class="tg-r31x">r</td>
<td class="tg-r31x">s</td>
<td class="tg-r31x">t</td>
<td class="tg-r31x">u</td>
<td class="tg-r31x">v</td>
<td class="tg-r31x">w</td>
<td class="tg-r31x">x</td>
<td class="tg-r31x">y</td>
<td class="tg-r31x">z</td>
<td class="tg-r31x"></td>
<td class="tg-r31x"></td>
</tr>
</tbody>
</table>
'''
# Variables globales
bloque = '' # Define el contexto (si es funci贸n, condicional, ciclo, etc.)
codigo = None # Guarda el c贸digo hasta el momento
indentacion = 0 # Nivel de indentaci贸n
linea_codigo = 0 # Esto para dar seguimiento al eliminado de una linea
recomendacion = ""
# fin_de_bloque=False
import gradio as gr
def transcribe(audio, Espa帽ol, Codigo_Python):
global bloque
global codigo
global indentacion
#transcriptions_es = model.transcribe([audio])[0]
transcriptions_es = p([audio])['text']
# quitamos el acento de la transcripcion
frase = unidecode.unidecode(transcriptions_es).lower()
# print(frase)
if not bloque:
# Significa que es la primera vez
codigo = main(frase)
else:
codigo = agregar_adentro(codigo, frase)
return codigo, frase
inputs = gr.inputs.Audio(label="Dar click para grabar tu voz", type="filepath", source="microphone")
output1 = gr.outputs.Textbox(label="Asi se ve tu c贸digo")
output2 = gr.outputs.Textbox(label="Lo que entendi贸 la caracola fue:")
title = "Caracola App"
description = '<p style="color:white">Aplicaci贸n que ayuda a programar a traves de tu voz.\nSe usa el siguiente diccionario fon茅tico para capturar las variables de una letra.</p>'+tabla+'<br> <h3 style="color:white"> Instrucciones </h3> <p style="color:white"> Selecciona uno de los ejemplos y da click en enviar para convertir comandos de voz en c贸digo! </p>'
# ,'mientras variable alpha es menor igual a numero dos'
# ,'Definir variable con nombre india igual a numero uno'
input2 = gr.inputs.Textbox(lines=0, placeholder="Aqui aparece el texto en espa帽ol de los ejemplos")
input3 = gr.inputs.Textbox(lines=0, placeholder="Aqui aparece el codigo en python de los ejemplos")
output_html = gr.outputs.HTML(label='Asi se ve tu c贸digo:')
examples = [
['./wav/comentario.wav','agregar comentario mi primer funci贸n', '# mi primer funcion'],
['./wav/funcion.wav','definir funci贸n con nombre m谩gica y par谩metros noviembre', 'def magica(n):'],
['./wav/definira.wav','definir variable con nombre andrea igual a natural cero', 'a=0'],
['./wav/definirb.wav','definir variable con nombre bravo igual a natural uno', 'b = 1'],
['./wav/iteracion.wav','ejecuta iteracion para india en un rango noviembre', 'for i in range(n)'],
['./wav/asignar_c_b.wav','asignar variable carlos con bravo', 'c=b'],
['./wav/andreabravo.wav','asignar variable bravo con andrea mas bravo', 'b = a + b'],
['./wav/asignar_a_c.wav','asignar variable andrea con carlos', 'a=c'],
['./wav/terminar_bloque.wav','terminar bloque',''],
['./wav/comentario2.wav','agregar comentario fin de ciclo', '# fin de ciclo'],
['./wav/regresa.wav','regresa variable andrea', 'return a'],
['./wav/llamada.wav', 'ejecuta m谩gica con argumentos diez', 'magica(10)']
]
article = "<a style='color:#eb9f59;' href = 'https://github.com/gandres-dev/Hackaton-Common-Voice'> Repositorio de la app"
demo = gr.Interface(fn=transcribe, inputs=[inputs, input2, input3], outputs=[output_html,output2],
examples=examples,
title=title, description=description, article=article,
allow_flagging="never", theme="darkpeach",
)
demo.launch() |