4

SAPI5でテキスト読み上げを使用する場合、話し言葉間のギャップを広げることは可能ですか?

問題はそのespです。一部の声では、単語がほぼつながっているため、スピーチが理解しにくくなります。

私はpythonとpyTTSモジュールを使用しています(SAPIを使用しているため、Windowsで)

OnWordイベントにフックして、time.sleep()またはtts.Pause()を追加しようとしましたが、すべてのイベントがキャッチされたとしても、話されたテキストの最後でのみ処理されているようです。同期または非同期フラグを使用します。

このNONWORKINGの例では、sleep()メソッドは、文が話された後にのみ実行されます。

tts = pyTTS.Create()
def f(x):
    tts.Pause()
    sleep(0.5)
    tts.Resume()

tts.OnWord = f
tts.Speak(text)

編集:-受け入れられた解決策

私にとっての実際の答えはどちらかでした

  • 独自の「話す」コマンドで各単語を言う(@Lennart Regebroが提案)、または
  • 各スペースをコンマに置き換えます(@Dawsonで言及されているように)。例:

    text = text.replace( ""、 "、")

それは合理的な一時停止を設定します。受け入れられた解決策に満足しているので、私は上記のように一時停止方法を調査しませんでした。

4

3 に答える 3

2

ここには素晴らしい解決策はありません。だが:

PyTTSの最後のリリースは2007年であり、ドキュメントがないようです。同じ人々が、SAPIもサポートするpyttsxと呼ばれるクロスプラットフォームライブラリを維持しています。1分あたりの単語数の設定がありますが、単語間の一時停止を増やす設定はありません。これは、単語の間に一時停止がまったくないためである可能性が最も高いです。

各単語を独自の「発話」にすることで、長い休止を挿入できます。

engine.say('The')
engine.say('quick')
engine.say('brown')
engine.say('fox.')

それ以外の

engine.say('The quick brown fox."

しかし、それはおそらく長すぎます。それ以外は、おそらくSAPIドライバーをラップまたはサブクラス化する必要がありますが、それが機能するかどうかは100%わかりません。人々は単語の間に休止がないので、スピーチエンジン自体がそれをサポートしているかどうかはわかりません。

于 2011-02-02T13:34:27.333 に答える
2

ボイスレートについて話しているでしょ? http://msdn.microsoft.com/en-us/library/ms990078.aspx

Pause()は、通常の音声パターンのコンマのように機能すると思います...長さ(自然かどうか)を決定することを除いて。

于 2011-02-08T07:22:12.213 に答える
0

以前、.NETAPIを使用していくつかのTTS作業を行いました。System.Speech.Synthesis名前空間にはPromptBreakという名前空間があり、必要な一時停止/ブレークの長さに対してさまざまな値があります:http://msdn.microsoft.com/en-us/library/system.speech 。 Synthesis.promptbreak.aspx

PyTTSで使用できるかどうか/どのように使用できるかはわかりませんが、おそらくそれが出発点です。

于 2011-02-08T12:44:33.087 に答える