6

私は盲目ではありません。Windows マシンでバッファの内容を読み上げる方法が欲しいだけです。基本的な要件は次のとおりです。

  • 英語のテキスト バッファを読み取ります。
  • いつでも読み取りを一時停止し、いつでも再開できます (誰かが私のオフィスに入ってきたときに、大きなバッファーが終了するまで数分待たないでください)。
  • 再生時のリードバック速度を調整します。
  • 現在読んでいるテキストを強調表示する (オプション)

私はいくつかの可能な解決策を見つけました:

  • Emacspeak : 視覚障害者向けに設計されています。Emacs プラグインではなく、スタンドアロン プログラムのように見える
  • festival.el : Festival が必要です。Festival 用の Windows バイナリが見つかりません。持ってる人いる?
  • 自分で書くこともできました。Text-To-Speech (TTS) ライブラリは最近たくさんあります。インタラクティブな一時停止機能が最大のトリックかもしれませんが、それができるライブラリがいくつかあるはずです。

最適なプランはどれですか? ここでは 1 週間のプロジェクトは必要ありません。Windows で Festival をコンパイルするのは、骨の折れる実験でした。Emacspeak は、私が望むものに対してやり過ぎのように見えます。

4

2 に答える 2

6

FestivalforWindowsはこちらから入手できます。Festival.elがこれらのバイナリで動作することを保証することはできません。私はこれらのバイナリを使った経験がありますが、Emacsの外でそれらを動作させるのに問題がある場合は、私がお手伝いできるかもしれません。

誤解されるかもしれませんが、フェスティバルでの再生速度を制御できるとは思いません。それに対するコントロールを維持する限り、あなたの最善の策は、それが一度に小さな部分だけをフェスティバルに送るようにそれをプログラムすることだと思います。そうでなければ、それが完了するまでそれが読まれるのを防ぐ方法は本当にありません。

基本的に、作業なしで最小要件を満たすものはないと思います。

編集:要件を振り返った後、最善のアプローチは、festival.elをハックして、一度に1つの文をFestivalに送信することだと思います。次に、それを強制終了するキーストロークをプログラムして、現在の文のみを終了するようにすることができます。同時に、スクリプトは現在フェスティバルに送信されている文を強調することができます。

于 2010-01-02T04:21:09.917 に答える
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")))

Python ファイル speak.py:

import pyttsx

engine = pyttsx.init()

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

while True:
    say(raw_input())
于 2014-08-29T16:11:57.430 に答える