手元に USBスピーカー(iBUFFALO BSSP25U)があったので、それを接続し Raspberry Pi から音を出してみたいと思います。

◆Raspberry Pi にUSBスピーカーを接続
まずUSBスピーカーを接続し、認識しているか確認します。
$ cat /proc/asound/cards
 0 [ALSA           ]: bcm2835 - bcm2835 ALSA
                      bcm2835 ALSA
 1 [MicroII        ]: USB-Audio - Audio Advantage MicroII
                      C-Media INC. Audio Advantage MicroII at usb-bcm2708_usb-1.3, full speed

ちゃんと認識しています。
が、USB-Audio が二つ目になっているので、このままではUSBスピーカーからは音は出ません。

/etc/modprobe.d/alsa-base.conf の snd-usb-audio の行をコメントアウトします。
#options snd-usb-audio index=-2

いったん、モジュールをアンロードし、再ロードします。
$ sudo alsa unload
$ sudo modprobe snd_usb_audio
$ sudo modprobe snd_bcm2835

USB-Audio が一つ目になっているのを確認します。
$ cat /proc/asound/cards
 0 [MicroII        ]: USB-Audio - Audio Advantage MicroII
                      C-Media INC. Audio Advantage MicroII at usb-bcm2708_usb-1.3, full speed
 1 [ALSA           ]: bcm2835 - bcm2835 ALSA
                      bcm2835 ALSA

◆Raspberry Pi にしゃべってもらう

まずは、AquesTalk Pi (http://www.a-quest.com/products/aquestalkpi.html) から aquestalkpi-20130827.tar.gz をダウンロードしてきます。

それを raspberry pi 上で展開します。
$ mkdir /home/pi/local/
$ cd /home/pi/local/
$ tar xvzf aquestalkpi-20130827.tar.gz
下記を実行。
$ aquestalkpi/AquesTalkPi hello | aplay
しゃべったー!!

$ mkdir /home/pi/local/bin/
$ cd /home/pi/local/bin/
talk.sh という名前のシェルスクリプトを書いてみました。
#!/bin/sh

TALK=/home/pi/local/aquestalkpi/AquesTalkPi

${TALK} -s 120 "$*" | aplay 2> /dev/null

上記をコピペするなり、curl コマンドで取るなりします。
$ curl -O http://sstea.blog.jp/raspi/script/talk.sh
実行権限を付与します。
$ chmod 755 talk.sh
引数で渡した言葉をしゃべってくれるという簡単なシェルスクリプトです。ちゃんと動いてます。
$ ./talk.sh hello

今度は、時間をお知らせしてくれるシェルスクリプトを書いてみます。

jihou.sh
#!/bin/sh

time=`date "+%-H時、%-M分、%-S秒になりました"`

/home/pi/local/bin/talk.sh ${time}

上記をコピペするなり、curl コマンドで取るなりします。
$ curl -O http://sstea.blog.jp/raspi/script/jihou.sh
実行権限を付与します。
$ chmod 755 jihou.sh
今の時間を知らせてくれます。
$ ./jihou.sh

これで、毎時間の5分前にお知らせ、というような事も cron に登録すれば出来るようになりました。
$ crontab -e
とし、末尾に下記を追加して終了します。
  55 * * * * /home/pi/local/bin/jihou.sh

◆Raspberry Pi で音楽を鳴らす
Music Player Daemon (MPD) をインストールします。
$ sudo apt-get install mpd mpc

以前に作成した /etc/init.d/init-ramdisk に追記しておきます。
#!/bin/sh
### BEGIN INIT INFO
# Provides:       init-ramdisk
# Required-Start: $local_fs
# Required-Stop:  $local_fs
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
### END INIT INFO

chmod 775 /var/log
mkdir -p /var/log/ConsoleKit/
mkdir -p /var/log/fsck/
mkdir -p /var/log/apt/
mkdir -p /var/log/ntpstats/
mkdir -p /var/log/samba/
mkdir -p /var/log/mpd/
chown root.ntp /var/log/ntpstats/
chown root.adm /var/log/samba/
touch /var/log/lastlog
touch /var/log/wtmp
touch /var/log/btmp
touch /var/log/mpd/mpd.log
chown root.utmp /var/log/lastlog
chown root.utmp /var/log/wtmp
chown root.utmp /var/log/btmp

music ディレクトリに適当な音楽ファイルを放り込む。
(デフォルトだと /var/lib/mpd/music/)

曲登録。
$ mpc update
$ mpc ls | mpc add
再生。おぉー、音楽、鳴りました。
$ mpc play
次の曲。
$ mpc next
設定とかもいろいろあります。詳細は "mpc help" で。
$ mpc volume 80
$ mpc repeat on

ここで一つ問題が。
mpd で音楽再生中に AquesTalk Pi でおしゃべりさせようとしても、しゃべってくれません。。。

/etc/mpd.conf の下記をコメントアウトすると音楽再生中でもおしゃべりしてくれました。声、少し小さい気がしますが。
audio_output {
    type        "alsa"
    name        "My ALSA Device"
#    device        "hw:0,0"    # optional
    format        "44100:16:2"    # optional
    mixer_device    "default"    # optional
    mixer_control    "PCM"        # optional
    mixer_index    "0"        # optional
}
ついでに下記をコメントアウトすることで、ベロベロ出てたエラーもなくなりました。
#bind_to_address   "localhost"


    次回は、ジョイスティックを繋いで操作出来るようにしてみたいと思います。


◆おまけ1
MPD にはスマホからでもアクセスできます。
世の中では MPD クライアントソフトがたくさん作られていて、スマホ用のアプリも例外なくあります。

自分もいくつか試してみて、Droid MPD Client が自分には合ってそうだったので、Xperia Z3 に入れています。

◆おまけ2
USBスピーカーを接続したまま電源入れると、起動時にプツプツ言って、立ち上がらない時がありました。

何でか結構悩みましたが、電力足りてないのか
/boot/config.txt の末尾に下記を追加したら安定しました。
safe_mode_gpio=4
max_usb_current=1