# 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='''
Fonético andrea bravo carlos delta eduardo fernando garcia hotel india julieta kilo lima miguel noviembre
Letra a b c d e f g h i j k l m n
Fonético oscar papa queretaro romero sierra tango uniforme victor waffle equis yarda zapato
Letra o p q r s t u v w x y z
''' # 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 = '

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.

'+tabla+'

Instrucciones

Selecciona uno de los ejemplos y da click en enviar para convertir comandos de voz en código!

' # ,'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 = " 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()