2016年11月13日日曜日

音声合成IC(ATP3011)をArduinoで制御する方法


Arduinoから日本語の読み上げを行うために、音声合成ICを利用してみました。
シリアル通信(UART)で制御する方法が見当たらなかったので、備忘録を兼ねてメモを残します。

使ったもの

  • ATP3011M6-PU
    男性の声のバージョンです。
  • Arduino NANO
  • ブレッドボード
  • 圧電スピーカー
  • ジャンパワイヤ

回路

ATP3011の各ピンをこのように接続しました。
GNDとVCCは2ピンずつありますが、どちらかが接続されていれば良いようです。
スピーカーのマイナスはGNDに接続しました。

2: RX <-> Arduino D7(SoftwareSerial TX)
3: TX <-> Arduino D6(SoftwareSerial RX)
7: VCC <-> 5V
8: GND <-> GND
12: AOUT <-> スピーカーのプラス


プログラム

ソフトウェアシリアルを利用しています。

ATP3011はやり取り開始時に「?」を送信する必要があります。
これによって、自動的に2400~76800の通信速度を設定してくれるようです。

文字列を送信後に"\r"を送信すると読み上げが始まります。

sount_ic_test
#include <SoftwareSerial.h>

SoftwareSerial softSerial(6,7); //RX, TX

void setup() {
  softSerial.begin(9600);
  softSerial.print("?");
}

void loop() {
  softSerial.print("ie'----i\r");
  delay(2000);
}

成功すると、2秒ごとに落ち着いて「イエーイ」と言います。
今回の装置だと音が小さいので、大きな音を出したい場合はアンプを挟み、大きなスピーカーを使う必要がありそうです。

以上です。

参考

Data Sheet Data Sheet 音声合成 LSI 「AquesTalk pico LSI AquesTalk pico LSI AquesTalk pico LSI」 ATP3011 ATP3011

0 件のコメント :