Raspberry PiにeSpeakでテキストを読ませる方法。
コメントⓘ Cet article peut avoir été partiellement ou totalement traduit à l'aide d'outils automatiques. Nous nous excusons des erreurs que cela pourrait engendrer.
コンピューティングでは、ユーザーインターフェイスの問題はおそらく最も複雑なものの1つです。それ、名前を付け、キャッシュを無効にする…
コンピュータから人間に情報を提示する最も簡単な方法は、通常、視覚を使用することです。しかし、そのためには、かさばり、高価であり、したがって、車載での使用にはあまり適していない画面が必要です。
このチュートリアルでは、Raspberry PiにeSpeakソフトウェア(Text To Speechと呼ばれる)を使用してテキストを読み上げることにより、ユーザーの視覚ではなく聴覚を使用する方法を説明します。
Raspberry Piを機能させるためのハードウェア
Raspberry Piを読み上げるには、次の機器が必要です。
Raspberry PiにeSpeakをインストールする
Raspberry Piを読み上げるために、オープンソースのテキスト読み上げソフトウェアであるeSpeakソフトウェアを使用します。
eSpeakの原理は次のとおりです。テキスト(文字列、ファイルなど)を与えると、それを音素(話し言葉を構成する最小の音)に分割してから、これらの音素を実際のサウンドファイルに変換する手法。
eSpeakをRaspberry Piにインストールするには、すでにリポジトリに存在しているため、非常に簡単です。したがって、リポジトリを更新してeSpeakのインストールを要求するだけです。
sudo apt update sudo apt install espeak -y
eSpeakで文章を読む
eSpeakがインストールされたので、最初の文を読み上げることができます。しかしその前に、Raspberry Piのジャックポートから音がスピーカーに届くようにします。
これを行うには、sudo raspi-configコマンドを実行してから、「詳細オプション」、「オーディオ」、「強制3.5mm(「ヘッドフォン」)ジャック」、最後に「完了」に進みます。
フォルダを作成します espeak
ユーザーのディレクトリでオーディオファイルをダウンロードして再生し、すべてが正しく機能していることを確認します。
mkdir /home/pi/espeak cd /home/pi/espeak wget https://raspberry-pi.fr/download/espeak/test.mp3 -O test.mp3 ffplay -nodisp test.mp3
Cメジャースケールの演奏が聞こえるはずです。
スピーカーが機能していることがわかったので、eSpeakに「ラズベリーは祖父の便に腰掛けています。」というフレーズを尋ねます。これには、以下のコマンドを使用します。
espeak -a 200 -v fr+f3 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
これは私たちにこのようなものを与えます…
コマンドを少し理解してみましょう。
espeak
espeakプログラムを起動する-a 200
サウンドに使用するボリュームを示します。範囲は0〜200で、デフォルトでは100です。-v fr+f3
使用する言語を教えてください。fr
フランス語に対応し、+f3
eSpeakによって提案された女性の声の3番目のバリエーションを使用することを示します。言語コードをテキストに適合させることを忘れないでください。- 引用符で囲まれた文は、eSpeakによって話されるものです。代わりに、テキストファイルを気軽に読み取るように要求することもできます。
-f le_chemin/du/fichier.txt
。 --stdout
音声を直接再生するのではなく、生成されたデータを端末の標準出力に送信する必要があることをeSpeakに伝えます。| aplay
eSpeakによって生成された出力が、eSpeakによって生成されたWave形式のオーディオファイルを再生できるプログラムであるaplayプログラムの入力にリダイレクトされることを示します。代わりに、> mon_fichier.wav
オーディオ出力をファイルに保存します。
ご覧のとおり、音声を再生するのはeSpeakではなくaplayです。これの理由は非常に単純です。一部のバージョンでは、Raspberry Piでespeakのバグが発生しています…
eSpeakを直接話そうとすると、Raspberry PiサウンドサーバーであるAlsaに関連するエラーが発生します。したがって、最も簡単な解決策は、データをaplayに送信することです。それ自体が完全に機能します。結局それは機能し、それがすべての問題です。
ラズベリーにMBROLAをインストールして、eSpeakの声を向上させます。
ご覧のとおり、eSpeakによって生成された音声は完全に不潔です。パニックしないでください。これを改善するための解決策があります。
記事の冒頭で触れましたが、eSpeakは音素を生成できます。これらの音は話し言葉を構成します。そして、これらの音素を読み、発音できる他のプログラムが、eSpeakよりも説得力のある方法であることがわかりました!
私たちのケースでは、MBROLAソフトウェアを使用します。これは、音声合成用の巨大なデータベースの設計を目的とする、ベルギーのモンス工科大学が開始したグローバルな共同プロジェクトです。
不思議なことに、MBROLAソフトウェアはRaspbianリポジトリでは利用できませんが、言語データは利用できます。これにより、これらの言語データのインストールが不可能になります…
心配しないで、私たちは解決策を持っています!実際、Raspberry Pi自身のためのMBROLAパッケージを作成するのに十分な善意を持っていたので、サイトにミラーを作成することにしました。
したがって、以下のコマンドでこのパッケージをダウンロードしてインストールします。
cd ~/espeak wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb sudo dpkg -i mbrola.deb
MBROLAがインストールされたので、必要な言語ファイルをダウンロードできます。だから私にとっては mbrola-fr1
、つまり最初のフランス語の声です。コマンドを自分の言語に適合させます。
sudo apt install mbrola-fr1 -y
私たちが今しなければならないことは、以前のeSpeakの注文を取り、音素を生成してMBROLAに読み込ませるようにそれを適応させることだけです。以下のコマンドが表示されます。
espeak -a 200 -v mb-fr1 -s 150 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
以下の音声が得られます。
以前と同じ設定がいくつかありますが、2つの変更点があります。
-v mb-fr1
MBROLAを使用してオーディオファイルを生成することを示しますmb
、そしてフランスの声番号1-fr1
。-s 150
毎分150ワードの速度でファイルを生成する必要があることを彼に示します。デフォルトは165ですが、少なくともフランス語では少し速いと思います。
もちろん、以前のように、コマンドを変更してファイルを作成したり、txtファイルからテキストを読み取ったりすることができます。
これらのコマンドをRFIDタグの読み取りなどと組み合わせることで、比較的完全なインターフェースを備えた車載システムを簡単に作成できます。
もちろん、私たちはまだ人間の声にはほど遠く、Common Voiceプロジェクトの一部として開発されたMozillaのTTSなど、より優れた「テキスト読み上げ」エンジンがあることを知っています。 それにもかかわらず、MBROLAとeSpeakは、使いやすさ、実行速度、効率の間で妥協点を提供しています。