Text-to-SpeechまたはTTSシステムは、通常のテキストを音声に変換します。この技術により、システムは人間の声でテキストを話すことができます。公共交通機関でのアナウンス、カスタマーケアの電話、スマートフォンの音声アシスタント、任意のマシンのナビゲーションメニューなど、テキスト読み上げの例はたくさんあります。TTSは、ドキュメントに書かれているテキストを読み上げるように設定したMicrosoftWordで見つけることもできます。
今日のこのチュートリアルでは、Arduinoを使用してテキスト読み上げコンバーターを作成する方法を学習します。以前は、目覚まし時計を話す際にRaspberry piでTTSを使用し、Googleボイスキーボードを使用して音声をRaspberrypiでテキストに変換しました。
TTSの最初のステップは、前処理または正規化です。このステップでは、記号、数字、および略語を、「?」のようなマシンで読み取れる単語に変換します。「疑問符」に変換されます。
第二のステップは、音素または音素転写物に正規化されたテキストの変換を含みます。音素は話し言葉の小さな部分です。つまり、これらは文を作る音です。機械が人間のように言葉を話すことができるように、このステップは本当に不可欠です。
最後のステップは、発話音声に音素の合成です。このステップは、さまざまな単語/フレーズの人間の声を録音する、基本的な音の周波数を生成して音素として積み上げる、人間の話し方のメカニズムをコピーするなど、さまざまな方法で実現できます。
必要なコンポーネント
- Arduinoボード
- スピーカー
- アンプ回路
- 安定化電源
- 接続線
回路図
このテキスト読み上げコンバーターでは、アンプ回路を使用してノイズを低減し、クリアなサウンドを実現しています。増幅回路は、IC LM386を使用して行われます。その回路図を以下に示します。
音の調整には100Kポットを使用しています。クリアな音になるように調整してください。この回路について混乱がある場合は、LM386ベースのオーディオアンプ回路を確認してください。抵抗とコンデンサの正確な値がわからない場合は、近い値のものを使用してください。
スピーカーをArduinoに接続する
アンプ回路を作れば接続はとても簡単です。
電源をアンプ回路に接続し、Arduinoのデジタルピン3を10K抵抗に接続し、Arduinoのアースを回路のアースに接続します。次に、スピーカーのマイナス端子をアースに接続し、プラス端子を220µFコンデンサに接続してスピーカーを接続し、電源を接続します。
TTS用のArduinoのプログラミング(テキスト読み上げ)
このArduinoベースのTTSのプログラムも、ライブラリが利用できるので非常に簡単です。このライブラリはトーキーと呼ばれ、ライブラリマネージャによって追加できます。ライブラリを追加するには、 [スケッチ]-> [ライブラリを含める]-> [ライブラリの管理]に移動し ます 。
これで、ライブラリマネージャーが画面に表示されます。検索バーに「トーキー」と入力し、インストールボタンをクリックします。ライブラリがインストールされます。
このライブラリは非常に便利で、1000を超える単語とコマンドがあります。いくつかの例があり、それらすべてを試すことができますが、ここでは簡単なコードを使用して動作を説明しています。
ライブラリにある他のコマンドを試すこともできます。これらのコマンドを取得するには、 Documents \ Arduino \ libraries \ Talkie \ srcに移動 し、ヘッダーファイルを開いて、さまざまなアラートに使用できるいくつかのコマンドを取得します。jscrane TTSライブラリ、googleTTSライブラリなどの他の多くのTTSライブラリがあります。それらを試すこともできます。
それでは、コーディングを始めましょう。まず、いくつかのヘッダーファイルをインクルードします。 Talkie.h は、このライブラリを初期化し、Arduinoのデジタルピン3を出力ピンとして設定するために使用されます。 Vocab_US_Large.hは、 私たちが使用しているアラートを使用するために使用され、 Vocab_Special.hは、 我々が使用している一時停止を使用するために使用されます。
#include "Talkie.h" #include "Vocab_US_Large.h" #include "Vocab_Special.h"
次に、コマンドを使用するオブジェクト「値」を定義します。
トーキーの声;
ここでは同じメッセージがスピーカーで繰り返されるので、 セットアップ 機能を空のままにして、コマンドをループ機能に入れます。最初のコマンド voice.say(spPAUSE2) は、アラートメッセージを繰り返している間、少し休止することです。そして、次のコマンドは、次のことを意味する単純な単語です。DANGERDANGER STORM IN THENORTH。
void setup(){ } void loop(){ voice.say(spPAUSE2); voice.say(sp2_DANGER); voice.say(sp2_DANGER); voice.say(sp3_STORM); voice.say(sp3_IN); voice.say(sp3_THE); voice.say(sp3_NORTH); }
最後に、Arduinoにコードをアップロードし、電源を接続します。回路の電源を入れるとすぐに、アラートが聞こえ始めます!クリアな音が出ない場合は、ポットのノブを調整するか、Arduinoに適切な電源が供給されているかどうかを確認し、ArduinoのGNDが回路のアースに接続されていることを確認してください。
デモビデオで完全なコードを確認してください。