回路図によれば、Raspberry Piのヘッドフォン出力は、ΔΣ方式のDACではなくて、PWMとRCローパスフィルタ(R=270Ω C=0.033uF fc=17.9KHz)によるシンプルなDA回路だ。このため、ヘッドフォン出力にはPWMに伴うノイズが重畳するはずだ。そこで、このノイズがどの程度なのか調べてみた。
サウンドを再生し、イヤフォンジャックから出力される信号をオシロで記録するとともに、実際に聴いてみた。サウンドファイルの再生にはaplayを使った。
aplay サウンドファイル名用意したサウンドファイルの仕様は次の通り。
サンプル周波数:44.1kHz
チャネル数:モノラル
量子化ビット数:16ビット
ファイル形式:WAV
サンプル:正弦波
| 正弦波周波数 | 44Hz | 192Hz | 1.1kHz | 9.6kHz |
|---|---|---|---|---|
| サウンドファイル | sine44.WAV | sine192.WAV | sine1k1.WAV | sine9k6.WAV |
結果、下記の通りオシロの波形としては、スパイクノイズがあり、1kHあたりからステップ状の波形となる。ただ、後でわかったことだが、このステップ状の波形は、幅が約20μsであり48kHzのサンプリングによるものと考えられる。実際に聴いてみると、1kHzぐらいからノイズが耳についた。予想以上にひどい音質だった。なお、サンプル周波数が96kHzのサウンドファイルについても調べてみたが44.1kHzとほとんど変わらない結果だった。
44Hz
![]()
192Hz
![]()
1.1kHz
![]()
1.1kHz (拡大)
![]()
1.1kHz (更に拡大)
![]()
9.6kHz
![]()
比較のために、PCのオンボードサウンド(安物だと思うが)のイヤフォンジャックからの出力も同じ条件で調べてみたが、9.6kHzでもこの通り、さすがにRaspberry Piに比べれば優れている。
9.6kHz
![]()
どうも、設計では48kHzで再サンプルし、11ビット、100MHz(48kHz * 2^11 => 100MHz)という仕様のPWMだったが、バグで10ビットになってたらしい。
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=10538&start=25
ファームウェアを更新すれば治るということなので、早速試してみた。ダウンロード
$ sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update認証エラーが出た場合、ca-certificatesパッケージが必要
$ sudo apt-get install ca-certificates更新前に現在のバージョンを確認しておく
$ sudo /opt/vc/bin/vcgencmd versionAug 10 2012 17:20:18Copyright (c) 2012 Broadcomversion 330751 (release)ファームウェアの更新(4,5分かかる)
$ sudo rpi-updateRaspberry Pi firmware updater by Hexxeh, enhanced by AndrewSPerforming self-updateARM/GPU split is now defined in /boot/config.txt using the gpu_mem option!We're running for the first timeSetting up firmware (this will take a few minutes)Using HardFP librariesIf no errors appeared, your firmware was successfully setupA reboot is needed to activate the new firmwareエラーが表示されなければ更新は成功新しいファームウェアをアクティべートするためにリブート
$ sudo reboot更新後のバージョンを確認、確かに新しくなった。4日前(^^;
$ sudo /opt/vc/bin/vcgencmd versionNov 8 2012 00:43:49Copyright (c) 2012 Broadcomversion 349058 (release)この結果、音質は劇的に改善し、何とかまともな音が聞こえるようになった。なお、再生の開始と終了時に発生するポップノイズは、10月22日現在「既知の問題」だそうだ。
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=28&t=20689
関連記事