アーカイブ
Juliusで音声認識したのだが、精度が低い
Julius動かしてみたけど、なんだか認識精度が低くてどうしょうもないのですが、何か間違っているのでしょうか・・?
■まずMacにインストールした
sudo port install juliushomebrewにはパッケージはない。
http://julius.sourceforge.jp/からソース持ってきてコンパイルしても使えるらしいが、juliusは32bitでしか動かないし、Lionではcoreaudioではなくportaudioを使わなければならないらしいのでportaudioも32bitでインストールして・・と色々面倒だ。
homebrewのportaudioをuniversal binaryでインストールできなかったので、自分でjuliusをビルドしてインストールはあきらめた。
音声認識する
which julius_demoでしばらく待つと、
julius_demo
<<< please speak >>>となってMacのマイクから音声認識できる。
でも大体間違ってる。
wavファイルから認識してみる。
QuickTimePlayerで[ファイル]→[新規オーディオ収録]で録音できる。
m4aで保存されるので、juliusが認識できるフォーマット(モノラル16kHzのwav)にffmpegで変換した。
ffmpeg -i test.m4a -ac 1 -ar 16000 test.wav
julius_demo -input stdin < test.wavwav入れたらテキストになってでてきた。でもやっぱりあまりうまく認識してくれない・・
julius_demoの中身はshell scriptだった。
#!/bin/sh
/opt/local/bin/julius -C /opt/local/lib/julius/fast.jconf "$@"
■Ubuntuにもインストールした
sudo apt-get install julius libjulius-dev
ディクテーションキットが別に必要になる。
ダウンロードする。
mkdir ~/tmp
cd ~/tmp
wget "http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fjulius%2F51158%2Fdictation-kit-v4.1.tar.gz"
tar -zxvf dictation-kit-v4.1.tar.gz
さっき録音したファイルを認識させる
julius -C ~/tmp/dictation-kit-v4.1/fast.jconf -charconv EUC-JP UTF-8 -input stdin < test.wavやっぱり精度が悪い・・どうすれば・・・
-moduleを付けて起動するとTCP port 10050でサーバーが起動する。
UbuntuにMySQL5.1.62インストールした
sudo apt-get install mysql-server-5.1
rootパスワード設定した
localhostからしかrootでログインできないようになってた
ユーザー追加した
mysql -uroot -p
GRANT ALL on *.* TO shokai@"localhost" IDENTIFIED BY "password";
FLUSH PRIVILEGES;
SFCにVPSがやってきた
大学で仮想サーバーが無料で借りれる時代が来てしまった。
電源とか配線とか置き場所の問題をクリアして、グローバルIPありport全開root権限ありのサーバーが手に入る。
最近はすごい重い計算をさせるとかはあんまり無くて、単にどこからでも参照できるwebサーバーが必要だったり、node.js使うのにportがたくさん必要だったり、webサイトをクロールするためにずっと起動しているマシンが必要だったりするわけで実に研究設備として有益ですばらしい。ERNSの人ありがとう。
SFCの大学院生はVPS (個人用仮想サーバ)サービスの試験運用開始について — Erns web siteの要項を埋めてメールで申し込める。学内からしか見れないページだけど。
ちょうどサーバーが2台必要だったので申し込んだ。
スペックはこれ。
- CPU : 2.67GHz 1コア
- メインメモリ:512MB
- ネットワーク:動的IPv4アドレス 1アドレス
- ストレージ:20GB
- OSもLinux系から選べる。UbuntuやDebianやFedoraCoreやCentOSなど
コントロールパネルからサーバー起動できる。

起動して、右のTerminalのアイコンを押したらJavaのVNCコンソールが起動して、Ubuntuのインストール画面が出た。ハイテク!!

ふつうにUbuntuをセットアップして、sshdを起動して
sudo apt-get install sshdでIP確認して、sshで外から接続できるようにした。
sudo ifconfig
あとは自分のMacから
ssh yourname@133.27.xx.xxxで接続できる。
BeagleBoard上でmoxaを開発する
Ubuntu 9.04をインストールしたBeagle Boardの上でtalkticのコンパイルとmoxaへ書き込みを行う。刺しっぱなしで開発できるようになるのでとても便利。
xtel technical information > download> ダウンロードから「開発用エクリプスパッケージ for Mac」をダウンロードしてくる。
xtel-eclipseの中の
- jsc/jsc.jar
talkticコンパイラ - avrdude/bin/avrdude
avrdude実行ファイル。mac portsでインストールできるavrdudeだと書き込みが怪しい。
Ubuntu9.04のaptでインストールできるavrdudeは普通に動くのでこれは必要ない。 - avrdude/etc/avrdude.conf
avrdudeの設定ファイル
■talkticのコンパイル
javaをインストールする
sudo apt-get install default-jre
which java
コンパイル。source.jsからsource.binを作る
java -jar path/to/jsc.jar -Bsource.bin source.jsmacでも同じようにバイナリを作れる。
■moxaへの書き込み
avrdudeをインストールしておく。Macはeclipseについてるavrdudeを使う。
sudo apt-get install avrdude
which avrdude
BeagleBoardではUSBデバイス名を書き込んであっても /dev/ttyUSB0 になってしまい、しかもrootしかアクセスできないのでsudoを使って書き込む。
sudo avrdude -C path/to/avrdude.conf -p m128 -c stk500v1 -b 9600 -P /dev/ttyUSB0 -F -U eeprom:w:source.bin:r
Macだとsudoが必要なくて、デバイス名が認識されてるのでこうなる。
avrdude -C path/to/avrdude.conf -p m128 -c stk500v1 -b 9600 -P /dev/tty.usbserial-gemsbok -F -U eeprom:w:source.bin:r
こんな風に書き込んだりプログラム書いたりしてる


Beagle Board rev.BにUbuntu9.04 ARM版をインストール
既に9.04を動かしてたんだけど、Arduinoにつないだセンサーの値をずっと読ませていたらkernel panicになってブート不能になっていたので再インストールした。大量のセクタエラーが出ていたので、SDカードに何度も書き込みすぎて壊れた気がする。
前回のインストール方法はメモを取っておいたんだけど、公開されていたrootfsが削除されていてインストール方法も変わっていたのでメモしなおしておく。
同じ9.04なのにUSBシリアル変換チップのFT232RLやemobileや、300GBのUSB外付けHDDが接続できた。ファームウェアをアップデートしたからか、Ubuntuのせいかは不明。
USBメモリとemobileを接続して動いているところ

WiFiとmoxaとUSBメモリ

手順
- Beagle Boardのファームウェアをアップデート
- SDカードにパーティションを切る
- Ubuntu9.04 ARM版のrootfsを作る
- uImageを作る
- boot.scrを作る
- UbuntuをSDカードに書き込む
- 起動する
- emobileやWiFi、Arduino、USB外付けHDDとかを接続してみる
■Beagle Boardの起動手順おさらい
まずボード自体のファームウェアがあって、専用シリアルケーブルで接続して設定できる。ファームウェアはSDカードにu-boot.binという名前にして入れておくとアップデートできる。色々改善されてるみたいなので今回は最初にアップデートしておいた。
起動は、まずボードのファームウェア→第1パーティションのboot.scr→第1パーティションのuImage→第2パーティションのLinux OS
の順で行われる。
uImageはOS毎に違う物を使う。第2パーティションのOSは自分でビルドして作る物で、rootfsとも呼ばれる。
つまりboot.scrとuImageとrootfsを用意して、SDカードに書き込まなければならない。
ARM用イメージをビルドするツールはLinuxでしか動かないのと、ファイルシステムの関係でここから先の作業は全てUbuntuデスクトップマシンで行った。でもVMWareのUbuntでも問題なくできる。
■Beagle Boardのファームウェアをアップデート
新しいSDカードを用意して、先頭に50MB程度のFAT32パーティションを切る。
SDカードのフォーマットはUbuntuのgpartedでやった。
http://elinux.org/BeagleBoardUbuntu#Upgrade_U-Bootに書いてあるとおりにやればいい
SDカードは/media/boot に自動的にマウントされた。
されなかったら
sudo mkdir /media/bootでマウントする。
sudo mount /dev/sdb1 /media/boot
アップグレード用のu-boot.binをSDカードの第1パーティションに置く。
wget http://rcn-ee.net/deb/tools/u-boot-beagleboard-2009.08+r37+gitr1590f84007e2b50ad346a482fff89195cb04ff4e-r37.bin
sudo mv u-boot-beagleboard-2009.08+r37+gitr1590f84007e2b50ad346a482fff89195cb04ff4e-r37.bin /media/boot/u-boot.bin
sudo umount /media/boot
Beagle Boardの基板上のシリアルポートピンに専用のケーブルで接続してから、電源を入れる。
WindowsならTeraterm、MacならZTerm、Linuxならminicomで接続するといい。
で、u-boot.binを読ませてファームをアップグレードするのだけど俺の使ってるのはrev.Bなので、命令名がwikiに掲載されているのとはちょっと違った。helpコマンドで出てくるのを参考にしてこう打ち込んだ
U-Bootのアップグレード – 橋本詳解より
mmcinit
fatload mmc 0:1 0x80300000 u-boot.bin
nand unlock
nand ecc sw
nand erase 80000 160000
nand write 0x80300000 80000 160000
nand erase 260000 20000
reset
■SDカードにパーティションを切る
Ubuntuマシンを持ってるので、gpartedでSDカードを3つのパーティションに分けた。4GBのSDカードを使った。あんまり怪しいメーカーのは使わない方がよさそう。
先頭から順に
- FAT32で100MB程度、名前はboot
- ext3で3GBちょっと、名前はubuntu
- swapで700MBぐらい
■Ubuntu9.04 ARM版のrootfsを作る
http://elinux.org/BeagleBoardUbuntuを参考にビルドする。
rootstockの最新版をダウンロードしてきて、rootstockのバイナリを手に入れる。
sudo apt-get install qemu
wget http://ports.ubuntu.com/pool/main/d/debootstrap/debootstrap_1.0.20~jaunty1_all.deb
sudo dpkg -i debootstrap_1.0.20~jaunty1_all.deb
wget http://launchpad.net/project-rootstock/trunk/0.1/+download/rootstock-0.1.3.tar.gz
tar -zxvf rootstock-0.1.3.tar.gz
cd rootstock-0.1.3
ARM用ubuntu9.04(jaunty)のビルド。4GBのSDカードに作った3GBのパーティションに入れるのでimagesizeで指定している。
sudo ./rootstock --fqdn beagleboard --login ubuntu --password ubuntu --imagesize 3G --seed gcc,make,linux-firmware,wireless-tools,usbutils --dist jaunty --serial ttyS2 --kernel-image http://rcn-ee.net/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer44.1/linux-image-2.6.29-oer44.1_1.0jaunty_armel.debデスクトップ環境が欲しければ、–seedにubuntu-desktopやxfce4を追加指定する。
それなりに時間がかかる。CPU2.7GHzの環境で2時間ぐらいかかった。
これでarmel-rootfs-[日付].tgzとvmlinuz-2.6.29-oer44.1できる。vmlinuz-*はuImageを作るのに使う。
■uImageを作る
vmlinuz-*からuImageを作る。
sudo apt-get install uboot-mkimageできた。
which mkimage
mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux" -d ./vmlinuz-* ./uImage
■boot.scrを作る
ブートスクリプトを作る。
ubuntu.cmd というテキストファイルを作る
setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000'dvi:の所の解像度は自分の画面環境に合わせないと出ない。
setenv bootargs 'console=ttyS2,115200n8 console=tty0 root=/dev/mmcblk0p2 rootwait rootfstype=ext3 ro vram=12M omapfb.mode=dvi:1024x767MR-16@60'
boot
beagle boardのbootパーティションに書き込むバイナリ形式にする
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Ubuntu 9.04" -d ./ubuntu.cmd ./ubuntu.scr
■UbuntuをSDカードに書き込む
SDカードを刺したらマウントされると思うけど、手動マウントの場合
sudo mkdir /media/bootでマウント。
sudo mkidr /media/ubuntu
sudo mount /dev/sdb1 /media/boot
sudo mount /dev/sdb2 /media/ubuntu
uImage, ubuntu.scr, rootfsの3つを書き込む
sudo cp uImage /media/boot/
sudo cp ubuntu.scr /media/boot/boot.scr
sudo tar xfp armel-rootfs-*.tgz -C /media/ubuntu
最初からキーボードは認識するが、ネットワークに接続できないとemacsがインストールできないので、SDカード上でUbuntuの設定をいじっておく。
/media/ubuntu/etc/netowrk/interfaces を編集
auto loこれでUSBイーサネットアダプタが認識する。
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
/media/ubuntu/etc/fstab を編集。swapを有効にする
proc /proc proc defaults 0 0
/dev/mmcblk0p3 swap swap defaults 0 0
取り外す
cd /media/bootうちのSDカードリーダだと手動でsyncしないとなかなか書き込んでくれなかった
sync
cd /media
sudo umount /media/boot
cd /media/ubuntu
sync
cd /media
sudo umount /media/ubuntu
■起動する
USBにハブ経由でLANとキーボードを接続、HDMIで画面も起動、SDカードを入れてbeagle boardを起動する。
念のためにシリアルケーブルを接続しておいて見ておいた方がいい。カウントダウンを10秒待つか自分でbootって打ちこんでUbuntu9.04を起動させる。
rootstockでイメージ作った時に指定したusername,passwordでログインする。
パスワードを変更してsshdを起動すれば、あとは普通のLinuxとして使える。
■emobileやWiFi、Arduino、USB外付けHDDとかを接続してみる
USBデバイスがちゃんと認識するようになったのでいろいろできる。特にHDDかUSBメモリを付けてそっちに作業領域とswapを置くと、SDカードが壊れる事が少なくなってよいかもしれない。

最近のコメント