follow me

Codama ベース板準備、レーザーカット試してみる

Codamaの本来の性能を出すために、固定する板を用意しました。
考えたら初めてレーザーカット頼んでみた。(工房Emerge+さんに依頼してみました。)
別にたいしたカットもしてないがな。

マイクボードがぷらぷらしていると性能が落ちるので、固定が必要です。
どこまで固定するかというのは様々な意見がでるかと思いますが、とりあえずベースボードで良い気はします。
follow me

Codama ベース板準備

Codamaの本来の性能を出すために、固定する板を用意しました。
とりあえず加工しやすい板で準備しました。
年も明けたので、何処かでアクリルカットで作る予定です。
せっかくなので数枚作ってしまう予定。

マイクボードがぷらぷらしていると性能が落ちるので、固定が必要です。
どこまで固定するかというのは様々な意見がでるかと思いますが、とりあえずベースボードで良い気はします。
follow me

Codama ウェイク・アップ・ワードを試す。


音を聞かないと何もワカラナイ動画ですみません。
"Hello Underworld"でピロピロ鳴るだけです。

ウェイク・アップ・ワード(トリガーワード)が自由につけれると云われたらやりたくなりますよね?
"Hello Underworld" とか "ルルーシュ・ヴィ・ブリタニアが命じる" とかを試したくなりますよね?
それができるんです。


Codama (こだま) 発売になりました。
Raspberry Piに挿して使用する音声対話開発キット な訳ですが、AIスピーカーっぽいのを作るキットと云われています。
何が出来るかは、Codamaのサイトをみつつ、搭載されているDSP XMOS XVF3100を見ていただくのが良いでしょう。

ビームフォーミング、ノイズキャンセル、エコーキャンセルは、搭載しているのが当たり前になってきているので、性能差がどうかという事が数字で各社競い合っている訳ですが、各社DSPの表を見ると良い感じに自分のところが良い数字を目立つようにしてる訳でして。。。
ウェイク・アップ・ワード(トリガーワード)をユーザが自由に設定できる点がCodamaの売りなんですよね。
この手の評価キット買っても "Alexa" や他の幾つかのワードでしかウェイク・アップ・ワード(トリガーワード)を試せないのが多かったり、LinuxやAndroidが動いたメインSoCでソフトウェア処理でぶん回して実現したりがほとんど。
ソフトウェアで実現するものでは、Snowboy Hotword Detection KITT.AI等が存在しています。
ソフトウェアの場合、自由度は高いのでプログラムで頑張りたい人には向いているかもしれません。
しかし、リアルタイム性は個人的には鈍いと感じています。(XMOSでSensory社のTrulyHandsfree™キーワード・トリガー・テクノロジーを動かした際の反応を体験してしまうと)

Codamaでは、ウェイク・アップ・ワード(トリガーワード)の処理は、XMOS XVF3100で処理する訳ですが、自由に設定できるといっているのは、ウェイク・アップ・ワード(トリガーワード)を埋め込んだファームウェアを生成するWebサイトが提供されているからです。
codama ウェイク・アップ・ワード作成ツール
PCのマイク、またはCodamaのマイクを利用して録音した音声を元にファームウェアを生成します。
このWebサイトで生成されたファームウェアを書き込むことで、自分の使いたいウェイク・アップ・ワード(トリガーワード)が使えるようになります。
部屋の状態、録音に使用したマイク特性にも影響するので、PCのマイクや、イヤホンマイクや、Codamaのマイク等、複数マイクで試したり、部屋を変えてみたりすると認識精度も変化したりします。
うまくいかないときは、環境を少し変えてみると改善したりするのであきらめずに試してみるのが良いかも知れません。
Raspbianであればブラウザは、Chromiumで動作します。(他のブラウザでは、オーディオデバイスにアクセスできない等もあるので注意が必要です。)


僕に連休が何時来るのか解りませんが、連休に遊んでみてはいかがでしょうか?
Codamaのgithubのセットアップが完了していれば、動画程度のことは数分で実現できてしまいます。
適当にウェイク・アップ・ワード(トリガーワード)検出時に再生するwavファイルを配置して、以下の様なスクリプトで動いてしまいます。
#!/bin/sh

if [ ! -f /sys/class/gpio/gpio27/value ]; then
  echo 27 > /sys/class/gpio/export
fi

TRGWORD=0
while true
do
  if [ "`cat /sys/class/gpio/gpio27/value`" = 1 ] ; then
    if [ $TRGWORD = 0 ] ; then
      aplay -c1 -r16000 -fS16_LE part5.wav &
      TRGWORD=1
    fi
  else
    if [ $TRGWORD = 1 ] ; then
      TRGWORD=0
    fi
  fi
  sleep 0.2
done