Arduinoで人間の音声を人工的に作り出す音声合成/Speech Synthesis(スピーカーやヘッドホン、圧電ブザーなどを介して、しゃべるArduino)のデモンストレーションをしてみるページ。
音声合成の歴史を遡ると実に1000年以上前から試みられている模様ですが、近年で言えば、初音ミクなる音声合成ボーカル音源・キャラクターが有名だった模様も、なぜ、そこまで盛り上がることができるのかよくわかりませんでした。
そんな自身が、遅まきながら、今回、音声合成に興味を持つに至ったのは、先程、ふと普段ほとんど見ることのないFirefoxの拡張機能を眺めてみたことでした。
そこで[Read Aloud: A Text to Speech Voice Reader]なる音声読み上げ機能に目が止まり、インストールしてみたものの、機能させることができず、Windowsには、より簡単なソフトがある模様も、自身のメインOS Debian(Linux)でも使えるパッケージソフトウェアがあるはずと探した結果、espeak、open-jtalkなどにたどり着き、後者にmei(女性の音声)も追加するなどして音声再生してみたところ、前者は英語含む、複数の言語、後者は日本語で単語だけでなく、テキストファイルなどの各種ファイルをも男性や女性の声で、しかも、かなり自然に読み上げてくれ、かなり感動...、その感動冷めやらぬまま、もしかしたらこれってArduinoやESP8266でもできるんじゃ?と思った次第。
今回は、adafruit/Talkieライブラリを使わせて頂き、そのサンプルを実行してみただけ。
ArduinoやESPモジュールだとTalkieライブラリなるものが、音声合成ライブラリにあたるらしいことがわかり、当初、違うTalkieライブラリで試したものの、古かった為、その後のArduino IDEの仕様とのミスマッチがあり、FMmelodyの時と同様の修正で良いのでしょうが、面倒だなと思った矢先、これを発見、あっさり、スムースに実行できたという経緯があります。
日本語再生までいけるのかについては、探求していませんが、自身でオリジナルの音声データを作るということについては、Arduinoにしゃべらせてみたトレース&PCMデータの作り方を始め、情報は豊富なようです。
=> [追記]ArduinoでWAV/MP3オリジナル日本語音声の発話も簡単にできました。
今回使ったスピーカーは、100均セリアで買った1つでモノラル、2つでステレオになるというもの、USBケーブルもセリア、Nano互換機は、Amazonマーケットプレイス直で買ったもので全部で500〜600円といったところかと。
スピーカーを使う場合、スピーカーにつながっているステレオ(ミニ)プラグの根元にマイナス、他の極にプラスをつなげば、音を出す準備は完了。(電源を要するものは電源も入れる。)
出力については、スピーカーでなくとも、ヘッドフォンやパッシブブザーでもいけますが、圧電ブザーを使う場合は、ワニグチクリップは不要な代わりに別途ブレッドボードが必要となったり、スケッチに該当するプログラム行の追記が必要になります。
また、ヘッドホンだと聴こえすぎるほど大きく、スピーカーは、少し小さいが聴こえるには聴こえる、一方、ブザーだと耳を当てないと聴こえないほど、ちょっと音が小さいのでトランジスタを噛ませた方がよいかもしれません。
スケッチは、Talkieライブラリのサンプル、自身は、とりあえず、Vocab_US_Clockを試してみたところ、女性らしい声で[Good Morning, the time is eleven thirty six AM.]と再生されました。
回路というほどでもありませんが、配線は、ArduinoボードのD3/GNDをスピーカーやパッシブブザーのプラス/マイナスにそれぞれ繋ぐだけです。
ざっと見たところ、GPIOピンの指定はないのですが、理由までは確認しなかったものの、D3でないと機能しないという情報があり、それに沿ってみました。
接続後、音が出ない場合や再度聴きたい場合には、Arduinoボードのリセットボタンを押せば、再生されます。
とにもかくにもArduinoとスピーカー(や圧電ブザー)だけでしゃべらせることができるとは驚き。