N.Yamazaki's blog

主に音声合成について思ったことを書いてみようと思います。
<< AquesTalk pico LSI 販売開始 | main | [Arduino] AquesTalk pico LSI を SPI で制御する >>
[Arduino] AquesTalk pico LSI を I2C で制御する
音声合成LSI 「AquesTalk pico LSI」 (ATP3010F4/ATP3011F4)は、UARTの他にI2CやSPIのインターフェースを持っています。
一方、Arduino側のUARTは、PCとの通信で既に使われているので、ArduinoとAquesTalk pico LSI間の通信には、I2CやSPIを利用するのが便利です。

今回は、I2Cを使ってAquesTalk pico LSIを動かす方法を示します。
(SPIを使う場合はこちら

配線



通信モードをI2CにするためSMOD0(4pin)をGNDに接続、
I2C通信のSCL(28pin)をArduinoのA5に、SDA(27pin)をA4に接続します。
また、このSCLとSDAは、4.7KΩ程度でプルアップ(VCCに接続)します。

サンプルスケッチ

このスケッチは、予めプログラムに用意した複数のメッセージを順番に読み上げるものです。

注意点は、ArduinoのWireライブラリが1度に32byteまでしか送信できない制限があるようです(arduino-022)。
また、I2Cでは発声の完了が通知されないので、ポーリングで確認する必要があります。
そして、ATP3010F4の制限によりポーリングの間隔は10ms以上あけて行います。

実際の応用では、動的にメッセージの単語を入れ替えたり、さまざまな数値を読ませるのも良いと思います。
特に数値に関しては、単位(助数詞)を指定することで「一本、二本、三本」を「いっぽん、にほん、さんぼん」などと、読みやアクセントを正しく読む機能を持っていますので、是非ご利用ください。このあたりの詳しくは、データシートの音声記号列仕様に書いてあります。

aqtkpico_i2c.ino ダウンロード
(コピペは"¥”にゴミが入ることがあるのでソースはダウンロードがおすすめ)
/////////////////////////////////
// aqtkpico_i2c - I2C通信で AquesTalk Pico LSIを操作するArdionoスケッチ
//   
// by N.Yamazaki AQUEST Corp.  

#include 
#define I2C_ADDR_PICO 0x2E // PicoのデフォルトのI2Cアドレス

// ローマ字音声記号列
//   コマンドの最後のCR('¥r')を忘れずに
const char *TblKoe[] = {
"konnnichiwa¥r",
"yukkurisiteittene¥r",
"akuesuto-ku/pi'ko ba-jyonn .¥r",
"dennwaba'nngo-wa desu.¥r",
";/desu.¥r",
"#J¥r", // チャイム音J
"#K¥r", // チャイム音K
};

void setup()
{
	Wire.begin();  // Arduino側をI2C Masterとして初期化
}

void loop()
{
	for(int iMsg=0; iMsg0){
			byte c = Wire.read();
			if(c=='*' || c==0xFF) delay(10); // Busy応答は10msec以上待つ必要がある
			else if(c=='>')	break;	// Ready応答
		}
		else { // NOACK または応答がなかった時
			// Picoが動いていない可能性が高い
			return 1; //ERR
		}
	}
	return 0;  // OK
}


2012/11/15 追記 AquesTalk pico LSI をArduinoで制御するためのライブラリができました。これを使うとより簡単に使えるようになります。 [Arduino] AquesTalk ライブラリ
| AquesTalk pico LSI | 12:38 | - | - |
PROFILE
Follow
CATEGORIES
LATEST ENTRIES
SEARCH THIS SITE
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
SONY MDR-CD900ST
SONY MDR-CD900ST (JUGEMレビュー »)

普段これで開発しています。
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND