Raspberry Pi | 合成音声をUSBスピーカーから出力したい!(ハマったポイント)
こんにちは、tapunです。
Open Jtalkで天気予報を喋ってもらうにあたり、スピーカーを充電したり電源をとってくるのがだるいので、AmazonでUSBスピーカーを購入しました!
過去記事:ラズパイに喋ってもらう作戦(Open JTalk1.08)
過去記事:毎朝、東京の天気予報を喋ってもらう(お天気Webサービス)
目次 [hide]
購入したスピーカー
音源と電源のどっちもUSBケーブル1本で供給できるのでコンパクト!といううたい文句に惹かれて購入しました。
結果的には音は出ているのですが、結構ハマったので回避策を記載しておきます。
やったこと
USB1本なのでそのままRaspberry Pi のUSBポートにさしました。
- きちんと認識しているか確認
- $ cat /proc/asound/cards
- 0 [ALSA ]: bcm2835 - bcm2835 ALSA
- bcm2835 ALSA
- 1 [Device ]: USB-Audio - USB Sound Device
- C-Media INC. USB Sound Device at sb-3f980000.usb-1.3, full speed
認識していますが、USBスピーカーは上から2番目になっているので、このままでは音が出ません。
- USBスピーカーの優先度を上げる ・・・・できない。ファイルがない。
ここからがハマりました。
ググっても古いOSの情報しか出てこず、設定ファイルがないんですよね~
よくある情報だと、/etc/modprobe.d/alsa-base.conf の中身を書き換える方法が一般的なんですが、私が使ってるRapsbianではこのファイルが存在しません。私のPiのバージョンはこちらです
- $ uname -a
- Linux raspberrypi 4.1.11-v7+ #822 SMP PREEMPT Fri Oct 23 16:22:18 BST 2015 armv7l GNU/Linux
試したこと(2つ)
海外のフォーラムを検索して、下記の情報を見つけました。
The file your looking for is located in
/usr/share/alsa/alsa.conf
. Its not calledalsa-base.conf
justalsa.conf
All the relevent text is in that file just run
sudo nano /usr/share/alsa/alsa.conf
change the default sound card to 1 or whatever one you prefer obviously 0 is default so not that one i also deleted the # from the line that says…load card-specific configuration files
(on request) and now i have the sound coming from my cirrus audio card running debian 8 jessie on ras pi2
引用:http://superuser.com/questions/989385/alsa-base-conf-missing-in-new-raspberry-pi-raspbian-jesse
設定手順
- alsa.confを開きます。
- $ sudo nano /usr/share/alsa/alsa.conf
- 下記の設定箇所を変更します。
- ★変更前
- defaults.ctl.card 0
- defaults.pcm.card 0
- ★変更後
- defaults.ctl.card 1
- defaults.pcm.card 1
これで完璧かな~!と思ってjsayコマンドを実行したところ・・・
まだ音が鳴りません!
なのでまた海外フォーラムの情報を検索していたところ、また有益な情報が見つかりました!
~/.asoundrcを読み込まないように設定する
同じような悩みをもつ外国の方のポストです。
I found a quick, dirty workaround for this problem. The .asoundrc file is called from /usr/share/alsa/alsa.conf, the first lines of which are below:
- #
- # ALSA library configuration file
- #
- # pre-load the configuration files
- @hooks [
- {
- func load
- files [
- {
- @func concat
- strings [
- { @func datadir }
- "/alsa.conf.d/"
- ]
- }
- "/etc/asound.conf"
- "~/.asoundrc"
- ]
- errors false
- }
- ]
By commenting out the “~/.asoundrc” line it tells ALSA to ignore the file.
- #
- # ALSA library configuration file
- #
- # pre-load the configuration files
- @hooks [
- {
- func load
- files [
- {
- @func concat
- strings [
- { @func datadir }
- "/alsa.conf.d/"
- ]
- }
- "/etc/asound.conf"
- # "~/.asoundrc"
- ]
- errors false
- }
- ]
引用:https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=119755
設定手順
- alsa.confを開きます。
- $ sudo nano /usr/share/alsa/alsa.conf
-
- ★変更前
- #
- # ALSA library configuration file
- #
- # pre-load the configuration files
- @hooks [
- {
- func load
- files [
- {
- @func concat
- strings [
- { @func datadir }
- "/alsa.conf.d/"
- ]
- }
- "/etc/asound.conf"
- "~/.asoundrc"
- ]
- errors false
- }
- ]
- ★変更後
- #
- # ALSA library configuration file
- #
- # pre-load the configuration files
- @hooks [
- {
- func load
- files [
- {
- @func concat
- strings [
- { @func datadir }
- "/alsa.conf.d/"
- ]
- }
- "/etc/asound.conf"
- # "~/.asoundrc"
- ]
- errors false
- }
- ]
- Raspberry Pi を再起動します
- $ sudo reboot
これでやっとUSBケーブルから音が出るようになりました!!!
せっかく購入したスピーカーが無駄にならなくて良かった・・・!
まとめ
USBスピーカーから音を出すのに四苦八苦しましたが、海外フォーラムの情報を見て解決することが出来ました。
海外の情報は探すのが大変だったけどとりあえず解決できてよかったです
やっぱり日本語だと情報が限られますね・・・。
この記事が同じく音が出ない方の参考になったら幸いです。
最後まで読んでいただいて、ありがとうございました!
よかったらshareやコメントお願いします。
たすかりました。ありがとう。
できました!
ありがとうございます。