2017/06/29(木) [n年前の日記]
#1 [raspberrypi] Raspberry Pi3でサウンドを再生
Raspberry Pi3 のヘッドフォンジャックについて調べてるうちに、今まで Raspberry Pi3 から音を出したことがないなと気がついて。せっかくだから音が出るかどうか試しみようかなと。
◎ HDMI出力を確認。 :
まずは HDMI接続したTV(ディスプレイ)から音が出るか確認してみる。接続先のディスプレイは、MITSUBISHI MDT243WG。
ググったところ、/boot/config.txt を編集して #hdmi_drive=2 の先頭の#を消してコメントアウトを外すと、HDMI接続されたTVに音声信号が送れる状態になる、という話を見かけたので試したり。
音楽ファイル(wav,mp3等)を再生できるか確認するために、以下を入れる。
デスクトップ上で vlc を起動して wav や mp3 を再生してみたが、音が出なかった。と思ったら、ディスプレイの音声入力がHDMIじゃないものになってた。何やってんだ自分。トホ。ディスプレイ側の音声入力をHDMIに切り替えたらちゃんと音が出た。
が、音の最初のあたりが聞こえてこない。おそらく、以下で推測されてるように、デジタル変換が間に合ってない予感…。 *1
_Raspberry Pi | aplayコマンドで音声の冒頭が再生されない問題→アナログスピーカーで解決! - たぷん日記
さておき、ターミナルを起動して、以下でも一応再生できることを確認。ただ、こちらも最初のあたりの音が聞こえてこなかった。
ググったところ、/boot/config.txt を編集して #hdmi_drive=2 の先頭の#を消してコメントアウトを外すと、HDMI接続されたTVに音声信号が送れる状態になる、という話を見かけたので試したり。
sudo vi /boot/config.txt sudo reboot
音楽ファイル(wav,mp3等)を再生できるか確認するために、以下を入れる。
sudo apt install vlc mpg321
- デスクトップ上で確認したいだけなら vlc だけ入れとけばヨサゲ。
- mpg321 はコマンドラインからmp3を再生するためのプログラム。
- 更に、コマンドラインから wav を再生できる aplay というプログラムも、Raspberry Pi には最初から入ってるらしい。
デスクトップ上で vlc を起動して wav や mp3 を再生してみたが、音が出なかった。と思ったら、ディスプレイの音声入力がHDMIじゃないものになってた。何やってんだ自分。トホ。ディスプレイ側の音声入力をHDMIに切り替えたらちゃんと音が出た。
が、音の最初のあたりが聞こえてこない。おそらく、以下で推測されてるように、デジタル変換が間に合ってない予感…。 *1
_Raspberry Pi | aplayコマンドで音声の冒頭が再生されない問題→アナログスピーカーで解決! - たぷん日記
さておき、ターミナルを起動して、以下でも一応再生できることを確認。ただ、こちらも最初のあたりの音が聞こえてこなかった。
aplay hoge.wav mpg321 hoge.mp3
◎ ヘッドフォンジャックから出力。 :
HDMIとヘッドフォンジャックを切り替えて出力してみた。
ヘッドフォンジャックから一応音は聞こえてきた。HDMI出力時には聞こえてこなかった、音声の最初のあたりもちゃんと流れてくる。
しかし予想通り、フツーの3極プラグのヘッドフォンを繋いだらノイズだらけで、とても聞けたものではなかった。
自動判別 $ sudo amixer cset numid=3 0 ヘッドフォンジャック $ sudo amixer cset numid=3 1 HDMI出力 $ sudo amixer cset numid=3 2
ヘッドフォンジャックから一応音は聞こえてきた。HDMI出力時には聞こえてこなかった、音声の最初のあたりもちゃんと流れてくる。
しかし予想通り、フツーの3極プラグのヘッドフォンを繋いだらノイズだらけで、とても聞けたものではなかった。
◎ ノイズ対策を試してみるも失敗。 :
Raspberry Piは4極ジャック(先端から L/R/GND/VIDEO)なので、そこに3極プラグ(先端から L/R/GND)を差すと、VIDEO信号とGNDが混ざってしまってノイズになる、という説が巷にはあって。
であれば、それぞれの信号を分離すればノイズが減る・改善する可能性があるのでは。てなわけで、昨日、犬の散歩のついでに買ってきた新兵器(?)を試してみたり。
しかし、試してみたが結果は変わらなかった。どちらを使っても、やっぱりノイズが乗る。聞けたものではない。
100円ショップで購入したヘッドフォンはともかく、800円前後の AV-35AD02BK が初期不良品 or 設計ミスだったら嫌だなと不安になってきたので、テスター+手持ちの3.5mm・3極ジャックで測ってみたが、たしかに L/R/GND/VIDEO(MIC) は分離されていた。
ということは、Raspberry Pi3のジャックに差した段階でジャックとプラグの位置がずれて、GND と VIDEO が結局混ざっているのだろうか。でも、LとRは分離できてるように聞こえるし…。位置がずれてるとしたら、L/Rも分離できてない状態になりそうな。
もしかして、自分の場合、GPIO経由で繋いでる圧電ブザーと絡んでないか…。というのも、起動時に、GPIO経由で圧電ブザーを「ピポ」と鳴らすスクリプトを動かしてるけど、繋いだヘッドフォンからも何故か「ピポ」と鼓膜が破れそうなほどの大きい音が聞こえてきたわけで。GPIOとヘッドフォンジャックが繋がっちゃってるんじゃないか。
ていうかヘッドフォンジャックを外して、HDMI接続したディスプレイ側も音声をミュートにしたのに、aplay でwavを再生してみると、何故かRaspberry Pi3の周辺から、極めてかすかに音が聞こえる。本体にはスピーカがついてないのに、おかしい…。圧電ブザーがつられて鳴ってるんじゃないか…。
であれば、それぞれの信号を分離すればノイズが減る・改善する可能性があるのでは。てなわけで、昨日、犬の散歩のついでに買ってきた新兵器(?)を試してみたり。
- 100円ショップ Seria で購入した、スマートフォン用ステレオイヤホンマイク XYZ-13B。4極プラグ。マイク付き。コード長1.0m。
- ケーズデンキで購入した、ELECOM AV-35AD02BK 。4極プラグ → 3極ジャック x 2。800円前後。
しかし、試してみたが結果は変わらなかった。どちらを使っても、やっぱりノイズが乗る。聞けたものではない。
100円ショップで購入したヘッドフォンはともかく、800円前後の AV-35AD02BK が初期不良品 or 設計ミスだったら嫌だなと不安になってきたので、テスター+手持ちの3.5mm・3極ジャックで測ってみたが、たしかに L/R/GND/VIDEO(MIC) は分離されていた。
ということは、Raspberry Pi3のジャックに差した段階でジャックとプラグの位置がずれて、GND と VIDEO が結局混ざっているのだろうか。でも、LとRは分離できてるように聞こえるし…。位置がずれてるとしたら、L/Rも分離できてない状態になりそうな。
もしかして、自分の場合、GPIO経由で繋いでる圧電ブザーと絡んでないか…。というのも、起動時に、GPIO経由で圧電ブザーを「ピポ」と鳴らすスクリプトを動かしてるけど、繋いだヘッドフォンからも何故か「ピポ」と鼓膜が破れそうなほどの大きい音が聞こえてきたわけで。GPIOとヘッドフォンジャックが繋がっちゃってるんじゃないか。
ていうかヘッドフォンジャックを外して、HDMI接続したディスプレイ側も音声をミュートにしたのに、aplay でwavを再生してみると、何故かRaspberry Pi3の周辺から、極めてかすかに音が聞こえる。本体にはスピーカがついてないのに、おかしい…。圧電ブザーがつられて鳴ってるんじゃないか…。
◎ そもそもヘッドフォンを差す端子じゃないらしい。 :
以下の記事で気になる話が。
_ラズペリーパイのオーディオ・ジャックはライン出力 - 飽きたらそこでオシマイだよ!
Raspberry Pi のソレは、ライン出力用であって、ヘッドフォン端子じゃないという話。ギャフン。
_ラズペリーパイのオーディオ・ジャックはライン出力 - 飽きたらそこでオシマイだよ!
Raspberry Pi のソレは、ライン出力用であって、ヘッドフォン端子じゃないという話。ギャフン。
◎ dither云々の指定もしてみたけど。 :
/boot/config.txt に以下を書くと改善するという話も見かけたけど、試しても効果は感じられなかった。
disable_audio_dither=1おそらく昔は効果があった記述なのではあるまいか…。分からんけど。
◎ 参考ページ。 :
_Raspberry Piでwav/mp3ファイルを再生する方法(python編) - Qiita
_Raspbian(Jessie) のサウンド設定 - Qiita
_Raspberry Piで音遊び! | Device Plus - デバプラ
_Raspberry Pi | 合成音声をUSBスピーカーから出力したい!(ハマったポイント) ・ たぷん日記
_Raspberry Pi | aplayコマンドで音声の冒頭が再生されない問題→アナログスピーカーで解決! ・ たぷん日記
_RASPBIAN JESSIE WITH PIXEL でUSBオーディオアダプタを使う | KDL Tech Blog
_Raspberry Piの3.5mmジャックのアナログ音声出力の高音質化チャレンジしたけどダメでした - karaage. [からあげ]
_Raspberry Pi 3.5mm Audio Jack サウンドノイズ - Raspberry Pi - Ficus Online Forum
_Raspberry Pi - View topic - Rpi 2 - Background noises
_Raspbian(Jessie) のサウンド設定 - Qiita
_Raspberry Piで音遊び! | Device Plus - デバプラ
_Raspberry Pi | 合成音声をUSBスピーカーから出力したい!(ハマったポイント) ・ たぷん日記
_Raspberry Pi | aplayコマンドで音声の冒頭が再生されない問題→アナログスピーカーで解決! ・ たぷん日記
_RASPBIAN JESSIE WITH PIXEL でUSBオーディオアダプタを使う | KDL Tech Blog
_Raspberry Piの3.5mmジャックのアナログ音声出力の高音質化チャレンジしたけどダメでした - karaage. [からあげ]
_Raspberry Pi 3.5mm Audio Jack サウンドノイズ - Raspberry Pi - Ficus Online Forum
_Raspberry Pi - View topic - Rpi 2 - Background noises
*1: 英語圏の記事の中では、「音声の流れ始めと終わる時に勝手にフェードアウトをかけてくるTVも存在する」という話もあるので、それが正しければそのせいかもしれないけど…。
[ ツッコむ ]
#2 [raspberrypi] Raspberry Pi3のオーディオノイズが気になるならUSBオーディオを追加すべきかも
色々な記事を眺めてるうちに、Raspberry Pi3本体のサウンドデバイスのノイズ対策を試みてもあまり意味はないのかもと思えてきたり。
というのも、効果が無かった AV-35AD02BK の値段を考えると…千円前後のUSBオーディオだって買えちゃうよなと。似たような出費額なら、USBオーディオを入手してつけてしまったほうが、効果が期待できるし、話が早いのかもしれないなと。
_Raspberry Pi 3 で録音する
_Raspberry Pi のオーディオ・デバイスを指定して音を再生する。 - それマグで!
_Raspberry Pi で Plugalbe USB オーディオ変換アダプタを使用する方法 | Plugable
_高感度マイク&アンプ〜離れた場所の音も拾いたい | Raspberry Pi 研究室 | Feijoa.jp
色々眺めた感じでは、どうやら CM108 が載ってるUSBオーディオなら Raspberry Pi から使えそう。CM108 搭載品はお値段も結構安いらしいし、なんだかヨサゲ。
というのも、効果が無かった AV-35AD02BK の値段を考えると…千円前後のUSBオーディオだって買えちゃうよなと。似たような出費額なら、USBオーディオを入手してつけてしまったほうが、効果が期待できるし、話が早いのかもしれないなと。
_Raspberry Pi 3 で録音する
_Raspberry Pi のオーディオ・デバイスを指定して音を再生する。 - それマグで!
_Raspberry Pi で Plugalbe USB オーディオ変換アダプタを使用する方法 | Plugable
_高感度マイク&アンプ〜離れた場所の音も拾いたい | Raspberry Pi 研究室 | Feijoa.jp
色々眺めた感じでは、どうやら CM108 が載ってるUSBオーディオなら Raspberry Pi から使えそう。CM108 搭載品はお値段も結構安いらしいし、なんだかヨサゲ。
◎ BEHRINGER UCA202を繋いで試してみる。 :
そういえば、手元に BEHRINGER UCA202 というUSBオーディオがあることを思い出した。比較的低価格なのに ASIO が使えるということで結構昔に購入したのだけど…。ちょっと試しにコレを繋いで鳴らしてみようかと。
とりあえず、Raspberry Pi3 のUSB端子に、UCA202 を差して起動してみた。電源不足で落ちるかなと不安だったけど、フツーに起動した。電源不足を示す虹色マークも出てこなかったような気がする。
USB接続されてるデバイスの一覧を表示して確認。
続いて、サウンドデバイスの優先順位を確認。
aplay を使っても、認識してるか確認できるらしい。
aplay で、USBオーディオを指定して再生してみる。
すんなりwavが鳴ってしまった。なんと簡単な…。
そして、USBオーディオから聞く分には、全然ノイズが無かった。なんとあっけない…。
ということで、4極ジャックがどうとか変換ケーブルがどうとか試すよりも、比較的安いUSBオーディオでも買ってきて、ソレを繋いでそっちで聞いたほうがノイズ対策で苦しまなくて済みそう。
とりあえず、Raspberry Pi3 のUSB端子に、UCA202 を差して起動してみた。電源不足で落ちるかなと不安だったけど、フツーに起動した。電源不足を示す虹色マークも出てこなかったような気がする。
USB接続されてるデバイスの一覧を表示して確認。
$ lsusb Bus 001 Device 005: ID 046d:c52b Logitech, Inc. Unifying Receiver Bus 001 Device 004: ID 08bb:2902 Texas Instruments PCM2902 Audio Codec Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub「Texas Instruments PCM2902 Audio Codec」てのがUCA202に載ってるチップなのだろう。ここで一覧に出てきたということは、おそらく認識されてる。
続いて、サウンドデバイスの優先順位を確認。
$ cat /proc/asound/modules 0 snd_bcm2835 1 snd_usb_audioRaspberry Pi3本体に載ってるサウンドデバイス、bcm2835のほうが、USBオーディオより優先順位が高い。
aplay を使っても、認識してるか確認できるらしい。
$ aplay -l **** ハードウェアデバイス PLAYBACK のリスト **** カード 0: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA] サブデバイス: 8/8 サブデバイス #0: subdevice #0 サブデバイス #1: subdevice #1 サブデバイス #2: subdevice #2 サブデバイス #3: subdevice #3 サブデバイス #4: subdevice #4 サブデバイス #5: subdevice #5 サブデバイス #6: subdevice #6 サブデバイス #7: subdevice #7 カード 0: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 1: CODEC [USB Audio CODEC], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0カード1、デバイス0として、USBオーディオが認識されてることが分かる。
aplay で、USBオーディオを指定して再生してみる。
aplay -D plughw:1,0 hoge.wavおそらくは、-D plughw:1,0 というオプションで、カード1、デバイス0、つまりUSBオーディオを指定してるのではないかと。
すんなりwavが鳴ってしまった。なんと簡単な…。
そして、USBオーディオから聞く分には、全然ノイズが無かった。なんとあっけない…。
ということで、4極ジャックがどうとか変換ケーブルがどうとか試すよりも、比較的安いUSBオーディオでも買ってきて、ソレを繋いでそっちで聞いたほうがノイズ対策で苦しまなくて済みそう。
[ ツッコむ ]
以上、1 日分です。