n_shinichi’s blog

★記事一覧★から見てください...(すみません、メニュー、リンク、カテゴリー分けがうまくできてません) 日々の備忘録、誤記多し... 名古屋大学:非常勤講師、小学5年生:電磁石単元理科講師、学生フォーミュラ:EV技術指導員、魔改造の夜:Dンソーアドバイザ、CQ出版_Interface:制御技術関連執筆

MENU

M5stickC に 声をさずける~ その2 MemoryTalk

先回のAquestalkはメモリー少しで動いてすごく良くできてるんですが

その分音声合成で演算負荷はそこそこある。

 

 

リアルタイムでいろいろやりたいことがある時は演算能力の高い

ESP32でも

 それなりに気を遣ってやらないと音声ってちゃんと声として

 聞こえなくなります。

 

特に。。。自分がよくやるLoopで割込み使わずに

 疑似TSSっぽい使い方でマイコン使うと

先回、紹介したみたいにだんだん面倒なことしないといけなくなる。

 

で・・・M5Stack、ESP32はそういえばフツーの工作ではメモリーが

 たっぷり余ってるの思い出した。

 

AIでいろいろ自由なおしゃべりさせるなら音声合成が便利かと思うけど

 自分が使う工作レベルだと100個程度の言葉があればそれの組合せで

 十分足りるんでした。

 

なら、、、音声合成をわざわざリアルタイム的にやる必要はないな・・・

 予め作って音声合成してメモリーに置いとけばいいじゃん。です。

 

それなら、演算負荷ゼロなのでサンプリングはもっと上げれるし、

 分解能も上げれる。 

Aquestalkだと声質とか口調とかは自由には変えられないけど

 事前合成なら自由自在。。。^^;

 

すごく自然な音声の VOICEPEAK や 音読さん の音声が使える。

 それらでwavデータは簡単に作れるので

 

その後は、C言語用のヘッダーファイルに変換すれば

 コンパイルする時に読み込んでやるだけ。

 

C言語用のヘッダーファイルに変換はいろいろあるけど 

 自分はこちらのWEBベースで使える簡単なbitluniを使った。

https://bitluni.net/wp-content/uploads/2018/01/Audio2Header.html

8bitデータ生成で

凝ったことはできないけど、使い方は何も説明いらん。。。簡単。

WAVデータ選択して、サンプリング周波数入れるだけ。

 たとえば1秒の音声で8kB。

ESP32なら ロボ声でいいなら

 50音、他濁音等々作っておいて組合わせで使うのも、

 短文数十パターン作っておいて組合わせでもメモリーは十分余裕です。