Raspberry Piでゆっくり声

知り合いのところに某部材販売サイトからRaspberry Pi入荷のお知らせが届いたと聞きまして、便乗して自分の分も頼んでみました。

手元にDE0で使った音声合成LSIがあったので、とりあえずI2Cでつないでしゃべらせてみることに。

i2cの送信に関しては、検索で出てきたi2c-toolsを使っております。インストールは、下記のサイトの手順に従って行いました。

Raspberry Pi I2C How-To ガイド by @azarashi55

ちょっとはまったのが、

$ sudo i2cdetect 0

これが、現行の基板だと末尾に1を指定するように変わっており、なんで認識されないのだろうと…。わかれば簡単なことでした。ちなみに、音声合成LSIのI2Cアドレスは0x2eのようです。

実際にしゃべらせるときは、i2c-toolsのi2csetコマンドで文字列を送信するのですが、1バイトずつ16進に変換する必要がありまして、シェルスクリプトを書いてみました。

(経験少ないので変なところあるかと思いますが…)

#!/bin/bash

send=' -y 1 0x2e 0x00 '
str=$1
slen=${#str}
i=1

while [ $i -le $slen ]
do
        ch=`echo $1 | cut -c $i`
        chex=`perl -e "print unpack(\"H2\", \"$ch\")"`
        chex="0x${chex} "
        send="${send}${chex}"
        i=`expr $i + 1`
done

send="${send}0x0d i"

i2cset ${send}
talk.sh ohayo-.

みたいな感じで実行させると、「おはよう」としゃべります。