ラズパイで音がつづめられる問題。12GBでは足りない!



ラズパイ(Raspberry Pi 3B+)で音声ファイルを再生すると、最後に1.3秒ほどが再生されないという問題がある。

しかたなく、vtsay(VoiceText API を利用した読み上げプログラム)では sox で 1秒の無音WAVファイルを連結してから aplay に再生させるというワークアラウンドを実装した。

そんな中、このフォーラム・スレッド(Audio playback truncation with kernel packages 1.20190517-1 - Raspberry Pi Forums)を発見した。これによれば今年の5月にファームウェア*1が壊れたらしい。

さっそく、`sudo rpi-update a08ece3d48c3c40bf1b501772af9933249c11c5b` を実行してカーネル(?)のダウングレードを実行したが…。

最初の試行では、Pi が無反応*2になったので電源を切って再起動した。ブート不可にはならず、カーネルのバージョンは変わっていなかった。

f:id:plonk123:20190902024502j:plain

rpi-updateで固まっているところ

f:id:plonk123:20190902024511j:plain

アクティビティランプは点いていた

もういちどやるとカーネルがバージョン 4.19 から 4.15 にダウングレードされていて、サウンドの不具合は直っていた。

しかし、Chromiumの起動ができなくなる副作用があった。Chromium は Pi のビデオ・アクセラレーションを利用する(したがって唯一まともに使えるモダンな)ブラウザなのだ。

pi@raspberrypi:~ $ chromium-browser
--disable-quic --enable-tcp-fast-open --ppapi-flash-path=/usr/lib/chromium-browser/libpepflashplayer.so --ppapi-flash-args=enable_stagevideo_auto=0 --ppapi-flash-version=
/usr/lib/chromium-browser/chromium-browser-v7: symbol lookup error: /usr/lib/chromium-browser/chromium-browser-v7: undefined symbol: vcsm_init_ex

Chromium は 4.15 よりもあたらしいSDKに合わせてビルドされていたということだろう。

ひょっとしたら Chromium をソース・パッケージから自前でビルドしたら動くかもしれないのとおもって、apt source chromium-browser からの dpkg-rebuildpackage を試みたが、法外な「ディスク容量」を要求するらしく空き容量 12GB の手持ちの環境ではビルド操作を走らせることができなかった。

Chromiumとまともな音再生。そのどちらかを選ばなければならないのだろうか?

*1:このコンテキストでファームウェアというのはどういうものだろう?理解できない。カーネルや、ドライバを実装するカーネルモジュールの話ではないのだろうか?

*2:完全な無反応ではなく、ビデオメモリが確保できないエラーらしい。ウィンドウを移動させることはできるが、ウィンドウの中身は更新されない。