2018年春版Raspberry Pi 3の3.5mmジャックからAlexaを出した
こんばんは、長男が回復したと思ったら、今度は次男がまたまた発熱で実家に次男と二人出来ている@kjunichiです。
背景
2017年末ごろから、サンプルアプリが、JavaからC++実装のモノに切り替わっていたりして、 軽くググると出てくる情報とは異なる今日この頃。
次男にraspberry pi 3にアレクサが来るかもよ、と伝えたところ、メチャクチャ楽しみにしてしまってて、早いとこアレクサを連れてこないとなんだけど、今朝は、マイクの入力ストリームの呼び出しがタイムアウトしてるとログ出力されてる
— kjunichi (@kjunichi) 2018年3月8日
音声入力
WebCamのマイクだと駄目だった。
arecord -l
でALSAに認識されていてもAlexaから利用できなかった。
使えたマイク
以下のUSBマイクを購入した。
アレクサの声がしない
USBマイクを購入して
AbstractKeywordDetector:readFromStreamFailed:reason=readerTimeOut
のエラーが解消したが、「アレクサ」と呼んで、何か言っても、 ログ上はなんだか反応していることは分かるが、アレクサの声が全く聞こえない
もう、USBマイク購入という思わぬ出費を既にしており、お金がないから、追加投資は無理!
神ISSUE発見!
同やら、gstreamの出力先の指定が外部のUSBサウンドデバイスになっているのか、 以下の様にコードを修正することで、無事アレクサの声がスピーカーから聞こえるようになった。
MediaPlayer.cppを以下の様に修正。
-m_pipeline.audioSink = gst_element_factory_make("autoaudiosink", "audio_sink"); +m_pipeline.audioSink = gst_element_factory_make("alsasink", "audio_sink");
修正対象のソースのありか
cd ~ find . -name MediaPlayer.cpp
リビルド方法
cd ~ cd build sudo make SampleApp
後は、READMEとおり、
cd ~ sudo bash startsample.sh
まとめ
ようやく、アレクサをraspberry pi3に呼び出す事が出来、次男の期待に応えられた。マイクは、当初webカメラのc270のマイクを使おうとしたがダメ、別途600円台のUSBカメラを購入、スピーカーはAvsのMediaPlaerのソースをgithubのイシューのように書き換える事で出来た。
— kjunichi (@kjunichi) 2018年3月9日
関連記事
Raspberry Piつながり
- Raspberry Piの音を他のPCで再生する
- Raspberry Pi 3が届いた!
- Raspberry Pi3でTensorflowをビルドして動かした
- 陰関数の仮想3D空間へのプロットあるいは、ラズパイ版マインクラフトにたけのこの里を出す
- Raspberry Piの温度をgRPCを使ってElectronで作ったデスクトップマスコットに表示させた
- Juliaでゼータ関数を直接jupyterにプロットしたり、マインクラフト(MCPI)にプロットした