家に使ってないAndroid端末があったんで、
Debian化してpython入れて音出せるかどうか試してみました。
結論から言うと全然うまくいかないんですが。

対象端末:
・Galaxy Tab(SC-01C)
→ 中古で購入した時点ですでに JK2 FroyoのRoot化ROMが焼いてあったっぽい
 → バージョンは2.2 Froyo

Debianのinstall

この記事を参考に、Debian kitを使ってDebianを入れます
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0256?page=3

Debian入れると言っても完全にOS焼きなおすんじゃなくて、
chrootな環境が出来上がるだけってもののようです。

基本的にはAndroid端末にDebian kitと何か端末シミュレータをいれて上記の記事にそってインストールしていっただけ。

OSが入って、debコマンドで環境起動したら、その後の作業が楽になるようにssh serverを入れておきます

[bash]
apt-get install openssh-server
[/bash]

その後の作業は外部からこの端末にsshして色々いじっていく

pythonとかpyenvとか

pyenv入れる前に以下をapt-get installしておく
参考:https://github.com/yyuu/pyenv/wiki/Common-build-problems

[bash]
git
make
build-essential
libssl-dev
zlib1g-dev
libbz2-dev
libreadline-dev
libsqlite3-dev
wget
curl
llvm
[/bash]

pyenvをレポジトリのREADMEに沿ってインストール
https://github.com/yyuu/pyenv

pythonのインストールと環境設定
[bash]
pyenv install 2.7.6
pyenv local 2.7.6
[/bash]

PyAudioとportaudio

PyAudioはportaudioのpython wrapper版
http://people.csail.mit.edu/hubert/pyaudio/

portaudioは各OSのaudio apiをwrapしたAPI
http://portaudio.com/docs/v19-doxydocs/api_overview.html

PyAudio入れる前に、aptでportaudio v19を入れておく
[bash]
portaudio19-dev
libportaudio-dev
[/bash]

PyAudioのインストール
[bash]
pip install --allow-external PyAudio --allow-unverified PyAudio PyAudio
[/bash]
この長ったらしいオプション指定なんとかならんのか。。

動作チェック

PyAudio本家のサンプルをそのままコピって動かしてみる
http://people.csail.mit.edu/hubert/pyaudio/

[python]
"""PyAudio Example: Play a WAVE file."""

import pyaudio
import wave
import sys

CHUNK = 1024

if len(sys.argv) \< 2:
print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
sys.exit(-1)

wf = wave.open(sys.argv[1], 'rb')

p = pyaudio.PyAudio()

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)

data = wf.readframes(CHUNK)

while data != '':
stream.write(data)
data = wf.readframes(CHUNK)

stream.stop_stream()
stream.close()

p.terminate()
[/python]

実行
[bash]
\$ python ./soundtest.py amen.wav
Traceback (most recent call last):
File "./soundtest.py", line 22, in \<module>
output=True)
File "/home/ca5/.pyenv/versions/2.7.6/lib/python2.7/site-packages/pyaudio.py", line 747, in open
stream = Stream(self, *args, **kwargs)
File "/home/ca5/.pyenv/versions/2.7.6/lib/python2.7/site-packages/pyaudio.py", line 442, in __init__
self._stream = pa.open(**arguments)
IOError: [Errno Invalid output device (no default output device)] -9996
[/bash]

わー デバイスが認識されてねー

別途、portaudioのサンプルも動かしてみたんですがやっぱりダメ
portaudioが使うaudioAPIが対応してないと思われる。

Android側のバージョンあげたらportaudioが使えるってどこかの記事で見かけたんで
次はOS上げて再チャレンジか

参考

http://stackoverflow.com/questions/5921947/pyaudio-installation-error-command-gcc-failed-with-exit-status-1

ここ見るとportaudioでOpenSL使えそう?
http://www.gizmodo.jp/2012/07/android_osjelly_bean.html

http://stackoverflow.com/questions/4672155/pyaudio-ioerror-no-default-input-device-available