Desarrollo

Abrimos primero PyCharm en el menú seleccionamos File New Project...
phyton project
Lo nombramos TalkingText y presionamos create
phyton project
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      
          
          
          
      
   

phyton project

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()
  
  
  
  
  
  
         
              
     
   

Probando

Conclusión

Yo estoy apenas aprediendo a manejar python ya que soy desarrollador java y por lo que noto se pueden realizar cosas muy interesantes con pocas líneas de código es un lengualge multiparadigma de alto nivel. En cuanto al tratamiento de voz en mi opinión me sorprendió que sea aparentemente tan fácil el manejo de voz a texto.