Raspberry Pi ヘッドフォンの音質→改善

回路図によれば、Raspberry Piのヘッドフォン出力は、ΔΣ方式のDACではなくて、PWMとRCローパスフィルタ(R=270Ω C=0.033uF fc=17.9KHz)によるシンプルなDA回路だ。このため、ヘッドフォン出力にはPWMに伴うノイズが重畳するはずだ。そこで、このノイズがどの程度なのか調べてみた。

サウンドを再生し、イヤフォンジャックから出力される信号をオシロで記録するとともに、実際に聴いてみた。サウンドファイルの再生にはaplayを使った。

  1. aplay サウンドファイル名

用意したサウンドファイルの仕様は次の通り。

サンプル周波数:44.1kHz

チャネル数:モノラル

量子化ビット数:16ビット

ファイル形式:WAV

サンプル:正弦波

正弦波周波数44Hz192Hz1.1kHz9.6kHz
サウンドファイルsine44.WAVsine192.WAVsine1k1.WAVsine9k6.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

ファームウェアを更新すれば治るということなので、早速試してみた。ダウンロード

  1. $ sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update

認証エラーが出た場合、ca-certificatesパッケージが必要

  1. $ sudo apt-get install ca-certificates

更新前に現在のバージョンを確認しておく

  1. $ sudo /opt/vc/bin/vcgencmd version
  2. Aug 10 2012 17:20:18
  3. Copyright (c) 2012 Broadcom
  4. version 330751 (release)

ファームウェアの更新(4,5分かかる)

  1. $ sudo rpi-update
  2. Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS
  3. Performing self-update
  4. ARM/GPU split is now defined in /boot/config.txt using the gpu_mem option!
  5. We're running for the first time
  6. Setting up firmware (this will take a few minutes)
  7. Using HardFP libraries
  8. If no errors appeared, your firmware was successfully setup
  9. A reboot is needed to activate the new firmware

エラーが表示されなければ更新は成功新しいファームウェアをアクティべートするためにリブート

  1. $ sudo reboot

更新後のバージョンを確認、確かに新しくなった。4日前(^^;

  1. $ sudo /opt/vc/bin/vcgencmd version
  2. Nov 8 2012 00:43:49
  3. Copyright (c) 2012 Broadcom
  4. version 349058 (release)

この結果、音質は劇的に改善し、何とかまともな音が聞こえるようになった。なお、再生の開始と終了時に発生するポップノイズは、10月22日現在「既知の問題」だそうだ。

http://www.raspberrypi.org/phpBB3/viewtopic.php?f=28&t=20689

関連記事

Raspberry Piでテキスト読み上げ

2012年11月12日