喋る音声合成 | Scrachとロボットプログラミング
クムクムロボットには日本語や数字などをしゃべらせるための仕組みとして「音声合成」を持っています。この「音声合成」の機能をスクラッチ(Scratch)やPythonやArduinoからプログラミングすることで、好きな言葉を簡単に好きなタイミングで喋らせることができるのがクムクムロボットの特徴の一つです。
ロボットが喋る音声合成とは….
そもそも音声合成とは、人が喋る機能を機械・電気で再現しようとするもので、コンピュータテエクノロジーの発達によりどんどん進化してきています。
音声合成のおしゃべりは今やいたるところで使われています。例えばバスの中のアナウンス、電車・駅でのアナウンス・エレベータ・車….様々なところで機械や装置が喋っています。
これらのほとんどは音声合成の技術を使っていて、すべてプログラミングによってコントロールされています。
一昔前は、決まった言葉をデータとして持って置き、そのシーンシーンでその決まった言葉をコンピュータからの指令によってしゃべらせていましたが、最近は、あいうえおなどひとつひとつの言葉のデータをデジタルで持って置き、コンピューターのプログラムからしゃべりたい言葉のテキストを与えるだけでしゃべってくれます。
そして、より人間に近づけるようにアクセントまでプログラミングによってコントロールできるようになりました。
クムクムロボットでの音声合成
クムクムの中にも、この、テキストを与えるだけで自由にしゃべることができる仕組みを持っています。
この機能をTTS(Text To Speach)と言って、クムクムロボットでは、AquesTalkというものを使って実現しています。
AuesTalkのホームページより特徴を抜粋させていただきました。
- テキストからの音声合成
テキスト情報からリアルタイムに音声を生成します。録音タイプの音声合成と違い、その都度ナレーターの声を収録する必要がありません。- 超小型・最軽量
他に類を見ない小ささの音声合成エンジン。8bit CPU, RAM 500byte, ROM 23KB から動作します。- 耳なじみの良い声
聴きやすさや明瞭性を重視し、人の声にこだわらない高品質な音声を合成します。- 実装が簡単
ANSI C言語準拠のコードで記述されています。外部ライブラリやファイルシステムを使わないため、OSを持たない環境へも簡単に移植・実装できます。
クムクムロボットでは2種類の方法で実現しています
クムクムエントリーモデル(R3J)では、音声合成部分(AqusTalk)をひとつのLSIで実現しています。
ちょうど右胸の下、メインCPUの横にある小さなLSIがそれで、メインCPUからこのLSIにお喋りデータをテキストで指定することでいろいろなおしゃべりができます。
下の写真では左下、「日本語発話LSI」と表記した部分です。
一方、クムクムPRO、クムクムSEでは、メインCPU(ESP32)の中にソフトウエアーとして音声合成を組み込んでいます。
このソフトウェアーは、ライセンス形式で、使用しているCPUと1:1で動くようになっているため購入したカードにはそのライセンス番号が記述されており、クムクムのファームウェアを書き込むときにはこの番号を入力するような仕組みになっています。
クムクムロボット喋らせるプログラミング
クムクムロボットではこのロボットの音声合成を使ってしゃべらせるために、スクラッチ・Pythonともに命令を用意してあります。
なので、この命令を使うだけで音声合成を意識せずに簡単にいろいな面白いおしゃべりをさせることができます。
スクラッチ(Scratch)によるお喋り
クムクムロボットのおしゃべり機能は下記のようにいくつかあり、これはスクラッチもPythonも同じ機能を持っています。
- ①…しゃべる速度を1~10までで指定してしゃべらせたい言葉をローマ字で指定します。(指定できる文字数は40文字で、アクセント記号なども使用することができます。)
- ②…しゃべる速度だけを1~10まで指定できます。
- ③…16桁までの数字を入力し左から一桁ずつ数字を読み上げます。このコマンドでは「いち に さん」としゃべります。
- ④…ローマ字や記号を含んだ数字をしゃべります。この例では「エイ いち に さん」としゃべります。もちろん123B-222など途中に記号やローマ字を挟んでも構いません。
- ⑤…16桁までの数字を日本語の桁をつけてしゃべります。この例では「ひゃくにじゅうさん」と読みます。
- ⑥…日本語では時間の分をよむとき、「ふん」「ぷん」などと変えて読みます。また小さなツを入れて読み上げることもあります。この例では「にじゅっぷん」としゃべります。
- ⑦…日本語で本数を数えるときに本は「ほん」「ぽん」「ぼん」と数字によって変化します。このコマンドは数字によって日本語のおしゃべりの通りに数えてくれます。この例では「さんぼん」とおしゃべりをします。
スクラッチでクムクムロボットお喋りさせる
スクラッチで音声合成お喋りブロックを使ってお喋りをさせてみました。
3Dロボットでは音声合成が変わります
パソコンの画面の中で動く3Dロボットでは、パソコンの中にある音声合成の機能を使ってお喋りをしますので、クムクムロボットのおしゃべりとは少し異なります。
WindowsとMacでもお喋りは変わりますので、コマンド通りにお喋りできないこともあります。
このコマンドはすべてクムクムロボット専用に作られていますのでお気つけください。
また、スクラッチの拡張機能にある音声合成機能はまったく別のものですので、スクラッチの音声合成機能を使用する場合には、その仕様にあわせて入力指定をします。