Desarrollo
Abrimos primero PyCharm en el menú seleccionamos File New Project...Lo nombramos TalkingText y presionamos create
posteriormente instalamos las siguientes librerias sobre todo para el reconocimento de voz.
pip install speechrecognition
pip install pyaudio
pip install google-api-python-client
pip install setuptools
Código
En el archivo main.py escribimos el siguiente código.
from tkinter import *
from tkinter import filedialog as FileDialog
from io import open
import speech_recognition as sr
import pyaudio
ruta = "" # La utilizaremos para almacenar la ruta del fichero
def dictar():
try:
with sr.Microphone() as source:
r = sr.Recognizer()
r.adjust_for_ambient_noise(source, duration=0.2)
voice = r.listen(source)
text_punk = r.recognize_google(voice, language="es-ES")
text_punk = text_punk.lower()
texto.insert(END, " " + text_punk)
except sr.UnknownValueError:
texto.insert(END, "\n" + "El sistema no reconoce la voz")
except sr.RequestError:
texto.insert(END, "\n" + 'Sorry, the speech service is down')
def nuevo():
global ruta
mensaje.set("Nuevo fichero")
ruta = ""
texto.delete(1.0, "end")
root.title("Talking Text")
def abrir():
global ruta
mensaje.set("Abrir fichero")
ruta = FileDialog.askopenfilename(
initialdir='.',
filetypes=(("Ficheros de texto", "*.txt"),),
title="Abrir un fichero de texto")
if ruta != "":
fichero = open(ruta, 'r')
contenido = fichero.read()
texto.delete(1.0,'end')
texto.insert('insert', contenido)
fichero.close()
root.title(ruta + " - Mi editor")
def guardar():
mensaje.set("Guardar fichero")
if ruta != "":
contenido = texto.get(1.0,'end-1c')
fichero = open(ruta, 'w+')
fichero.write(contenido)
fichero.close()
mensaje.set("Fichero guardado correctamente")
else:
guardar_como()
def guardar_como():
global ruta
mensaje.set("Guardar fichero como")
fichero = FileDialog.asksaveasfile(title="Guardar fichero",
mode="w", defaultextension=".txt")
if fichero is not None:
ruta = fichero.name
contenido = texto.get(1.0,'end-1c')
fichero = open(ruta, 'w+')
fichero.write(contenido)
fichero.close()
mensaje.set("Fichero guardado correctamente")
else:
mensaje.set("Guardado cancelado")
ruta = ""
# Configuración de la raíz
root = Tk()
root.title("Mi editor")
# Menú superior
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Dictar texto", command=dictar)
filemenu.add_command(label="Nuevo", command=nuevo)
filemenu.add_command(label="Abrir", command=abrir)
filemenu.add_command(label="Guardar", command=guardar)
filemenu.add_command(label="Guardar como", command=guardar_como)
filemenu.add_separator()
filemenu.add_command(label="Salir", command=root.quit)
menubar.add_cascade(menu=filemenu, label="Archivo")
# Caja de texto central
texto = Text(root)
texto.pack(fill="both", expand=1)
texto.config(bd=0, padx=6, pady=4, font=("Consolas",12))
# Monitor inferior
mensaje = StringVar()
mensaje.set("Bienvenido a Talking Text")
monitor = Label(root, textvar=mensaje, justify='left')
monitor.pack(side="left")
root.config(menu=menubar)
# Finalmente bucle de la apliación
root.mainloop()