avs-device-sdkをRaspberryPiで動かすときUSBのスピーカーを使えるようにする設定
3月はじめのRaspberry Jam Big Birthday Weekend 2018 in TOKYOでAlexa Voice SDKのインストールハンズオンをしたとき、質問でいちばん多かったのは…
『USB接続のスピーカー、使えませんか?』でした。
ちょうど向かいがラズパイオーディオの会とDigiFiの物販ブースで、DigiFi付録のUSB接続できる性能のよいスピーカーを売ってたからでしょうか?
digifi.theshop.jpそのときは、まだ動作確認取れてなかったので答えられなかったのですが、確認できたので、USBスピーカーを接続するように設定する方法を書いておきます。セットアップするときに指定する方法を書きました。すでに構築済みの方は、この記事の最後だけ読んでいただければ十分です。
現在最新版の2018-03-13-raspbian-stretch.imgだとAlexa Voice SDKは正しく音声が再生できません。ここに書いてある方法も、有効になりません。
試したい場合には、2017-11-29-raspbian-stretch.imgを利用してください。
https://www.raspbian.org/にミラーサイトが掲載されています。ミラーサイトには旧Raspbianも置いてありますので、そこからダウンロードしてください。
今回は、以下のヘッドセットで、マイク&スピーカーとしてみました。
エレコム ヘッドセット マイク PS4対応 USB 片耳 イヤフック 1.8m HS-EP13USV
- 出版社/メーカー: エレコム
- 発売日: 2014/08/23
- メディア: Personal Computers
- この商品を含むブログを見る
他のUSB機器も同じ設定方法でOKだと思います。
最初に、使いたいUSBスピーカーをraspberryPiにつないで、機器のカード番号とデバイス番号を調べます。コマンドはaplay -lです。
[USB Audio]と書いてあるデバイスが出るはずです。これが今回利用したいスピーカーとなります。ここの先頭に「card 1」真ん中あたりに「device 0」あるので、それを次の設定に使います。(それぞれの環境で出た値を使ってください。)
次は設定です。
avs-device-sdkをRaspberryPiにインストールする方法は、概ね公開されている通りですが、1か所だけ、用意されているpy.shを書き換えます。
https://github.com/alexa/avs-device-sdk/wiki/Raspberry-Pi-Quick-Start-Guide-with-Script
「1. Download the install script and configuration file.........」でダウンロードされてくるファイルに「py.sh」があるはずです。
(2018.3.23現在は、そうなってます。3月始めの頃は、setup.shだけでした。そのときはsetup.shに設定がありました。)
py.shの中にあるpcm.!defaultのplayback.pcmにあるslave.pcmの値を、調べたカード番号とデバイス番号に書き換えます。(掲載の画像は、変更前です。)
私の場合には、カード番号1でデバイス番号が0だったので「"hw:1,0"」に変更します。
あとはQuick Start Guideの通りにインストールを進めれば大丈夫です。
すでに構築済みのavsがある方へ。
最初、単純にローカルの.asoundrcファイルを書き換えればOKでしょ!って思ったのですが、ダメでした。なので、py.shを書き変えてavsが使う設定ファイルに確実に反映されるように…と、上に書いた方法を使ったのですが、よく考えれば、setup.shが書き込んでいるのは、/rootの.asoundrcなので、そっちを直接書き換えればOKだったのでした…w
なので、もうavs構築しちゃってるなら、/rootの.asoundrcにあるpcm.!defaultのplayback.pcmを書き換えてね!(オチはそれか!)