Pregunta

No estoy ciego, lo que desea es tener una manera de tener mi máquina de Windows leyó el contenido de un búfer en voz alta. Estos son los requisitos básicos:

  • Lea cualquier búfer de texto Inglés.
  • Pausa la lectura en cualquier momento y reanudar en cualquier momento (no espere unos minutos para una gran memoria intermedia para terminar cuando alguien entra en mi oficina).
  • Ajuste la velocidad de lectura de recuperación en el tiempo de juego.
  • Seleccione el texto que se lee en la actualidad (opcional)

He encontrado un par de posibles soluciones:

  • Emacspeak : Diseñado para los ciegos. Se ve como un programa independiente, no un plug-in
  • Emacs
  • festival.el : Requiere Festival. No puedo encontrar de Windows binarios para el festival. Alguien tiene ellos?
  • También podría escribir mi propio. (TTS) bibliotecas-To-Speech de texto son un montón en estos días. La función de pausa interactiva puede ser el truco más grande, pero tiene que haber algunas bibliotecas que pueden hacerlo.

¿Qué opción es el mejor plan? No quiero un proyecto de una semana aquí. Festival de compilación en Windows ha sido un experimento dolorosa. miradas Emacspeak como excesivo para lo que yo quiero.

¿Fue útil?

Solución

Festival para Windows está disponible aquí . No puedo garantizar que festival.el trabajará con estos binarios. Tengo experiencia trabajando con estos binarios, sin embargo, por lo que si usted tiene problemas para conseguir que fuera obra de Emacs, que puede ser capaz de ayudar.

No creo que va a tener el control sobre la velocidad de reproducción con el festival, aunque podría estar equivocado. En lo que se mantiene el control sobre ella, yo diría que lo mejor es que programarlo para que sólo está enviando porciones pequeñas a la vez al festival. De lo contrario, en realidad no hay ninguna manera de evitar que la lectura hasta que esté hecho.

Básicamente, no creo que haya algo por ahí que satisfaga sus requisitos mínimos y sin un trabajo.

Editar: después de mirar hacia atrás sobre sus necesidades, yo diría que el mejor enfoque sería cortar festival.el enviar una oración a la vez al festival. A continuación, puede programar una tecla que matará a ella, por lo que sólo terminar la frase actual. Al mismo tiempo, el script podría destacar la frase que actualmente está siendo enviada al Festival.

Otros consejos

tengo una solución simple basada en el pitón pyttsx módulo. Así se inicia una secuencia de comandos Python como procesar una emacs y lo envía cadenas a ser leído.

(defvar tts nil "text to speech process")

(defun tts-up ()
  (interactive)
  (and (not (null tts))
       (eq (process-status tts) 'run)))

(defun tts-start ()
  (interactive)
  (if (not (tts-up))
      (setq tts
            (start-process "tts-python"
                           "*tts-python*"
                           "python" "speak.py"))))

(defun tts-end ()
  (interactive)
  (delete-process tts)
  (setq tts nil))

(defun tts-say (text)
  (interactive)
  (tts-start)
  (process-send-string tts (concat text "\n")))

El archivo pitón speak.py:

import pyttsx

engine = pyttsx.init()

def say(data):
    engine.say(data)
    engine.runAndWait()

while True:
    say(raw_input())
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top