2010-01-02 68 views
6

我没有失明,我只想让Windows机器能够读取缓冲区中的内容。以下是基本要求:Emacs中的文本到语音转换

  • 请阅读任何英文文本缓冲区。
  • 随时暂停阅读并随时恢复(当有人走进我的办公室时,不要等待几分钟才能完成大缓冲区)。
  • 在播放时调整回读速度。
  • 突出显示当前正在读(可选)文本

我发现一对夫妇可能的解决方案:

  • Emacspeak:专为盲人。看起来像一个独立程序,而不是Emacs插件
  • festival.el:需要节日。我无法找到节日的Windows二进制文件。任何人都有他们?
  • 我也可以写我自己的。文本到语音转换(TTS)库很多。交互式暂停功能可能是最大的窍门,但必须有一些库可以做到。

哪个选项是最好的计划?我不想在这里度过一个为期一周的项目。在Windows编译节日是一个痛苦的实验。 Emacspeak看起来像我想要的矫枉过正。

+0

是否有此问题? – Mike 2010-01-02 04:10:38

+0

好点!我重新说了一下。 – User1 2010-01-02 04:24:27

回答

6

节日窗口可用here。我不能保证festival.el会与这些二进制文件一起工作。不过,我确实有使用这些二进制文件的经验,所以如果您在Emacs之外工作时遇到问题,我可能会提供帮助。

我不认为你会控制节日的播放速度,尽管我可能会误解。至于保留它的控制权,我想说你最好的选择就是编程,这样它只能一次发送一小部分到节日。否则,在完成之前确实没有办法阻止它读取。

基本上,我不认为有没有什么东西可以满足你的最低要求而不需要做一些工作。

编辑:在回顾一下你的要求后,我会说最好的办法是破解festival.el一次发送一个句子到节日。然后你可以编写一个击键来杀死它,这样它只会完成当前的句子。同时,您的剧本可以突出显示当前发送到节日的句子。

+0

这是我在这个论坛上得到的最好答案之一!你在世界上是如何找到节日二进制文件的?我试过一些严重的谷歌查询,没有任何工作。 – User1 2010-01-02 04:50:23

+1

我的谷歌-Fu比你的更强大:)没有认真的,它让我永远找到它们。 – 2010-01-02 05:21:17

+0

这里是他们如何建造节后窗口:http://www.eguidedog.net/doc_build_win_festival.php – 2013-09-27 06:54:49

1

我有一个基于Python pyttsx模块的简单解决方案。这将启动一个python脚本作为emacs进程并将其发送到字符串中进行读取。

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

蟒蛇文件speak.py:

import pyttsx 

engine = pyttsx.init() 

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

while True: 
    say(raw_input())