web-dev-qa-db-ja.com

Pythonインターネットを必要としない現実的なテキストから音声へ?

私は人工的にインテリジェントなプログラム(本当に大きなものでも特別なものでもない)を作成しようとしていますが、声を出したいと思っていました(だれがそうしませんか?)。 espeak、festival、gTTSを調査しましたが、それらはナイスで使いやすいですが、それが理にかなっている場合、私が本当に誇りに思うほど現実的ではありません。もっと現実的なものを探していました。このような

from gtts import gTTS

tts = gTTS(text='what to say', lang='en')
tts.save('/path/to/file.mp3')

gTTSは正常に動作します。大好きです。それは現実的ですが、インターネットが必要です。問題は、アプリケーションを可能な限り独立させることです。そして、私はインターネットアクセスに依存するのが嫌いです。

他のオプションはありますか?

PS:現在Linuxを実行しているので、OSに別のソリューションがあるかもしれません。

13
jumbi533

ドキュメント に従って、pyttsx3 2.5を使用してみてください。

gTTSはpython3で完全に動作しますが、音声データを取得するためにGoogleに依存しているため、動作するためにインターネット接続が必要です。

Python 2および3

それをインストールするには:

pip install pyttsx3

それを使用することは次のように簡単である必要があります。

import pyttsx3;
engine = pyttsx3.init();
engine.say("I will speak this text");
engine.runAndWait() ;

編集1-音声の変更

ロボットの声を少なくするには、次のように声を変更してみてください。

engine.setProperty('voice', voice.id)

利用可能な音声を取得するには

voices = engine.getProperty('voices')

この質問で説明されているように、利用可能なさまざまな音声を試すことができます: PythonのPYTTSXモジュールで音声を変更する

編集2-音声エンジンの選択

ライブラリは次のエンジンをサポートしています。

  • sapi5-Windows上のSAPI5
  • nsss-Mac OS XのNSSpeechSynthesizer
  • espeak-他のすべてのプラットフォームでeSpeak

Espeakがあまり自然でない場合は、Windowsを使用している場合はsapi5を、Mac OS Xを使用している場合はnsssを試すことができます。

Initメソッドでエンジンを指定できます。例:

pyttsx3.init(driverName='sapi5') 

詳細はこちら: http://pyttsx3.readthedocs.io/en/latest/engine.html

13
Isma