まとめ記事(コンテンツ)

2026/08/01

ラズパイDSP化計画(実用化編もーいっかい)

前回製作したHQPlayer EmbeddedによるラズパイDSP。「USBで入出力できるFIR演算対応DSP」とは素晴らしい!と一人盛り上がったのですが、「実用化編」として作ったのに実用的でなかったのでやり直し。










前回のシステム

alt
HQPlayerは特定のハードウェアでUSBオーディオを「入力」できます。ただし入出力2本を同時処理するとサンプリング周波数の切り替え時に不具合が起きやすく、入力と出力のハードウェアを分ける分散構成が推奨されています。
入力のサンプリング周波数を固定すれば1台で安定動作しますが、それは自分の求めるものではなく。愚直に推奨通りの構成を作って車載運用したら…やはり面倒過ぎましたw
何とか1台で実行できないかと設定を詰めてみましたが納得できる完成度にはならず。USB入力はあきらめ、普通にネットワークプレーヤー(ローカル再生も可)として使うことにします。
(追記)1台のラズパイ5でUSB入力を利用する設定を末尾に記載しました。

USBデバイスモードについては対応機種が少ないためかLinuxのサポートも薄く、HQPlayer開発者のJussiさん曰く「楽観視はしていない」との見立てですが、便利なのでもっと対応ハードやアプリが増えると良いですね…


DSP用プリプロセッサーという考え方

alt

車載DSPを使っていてずっと気になっているのが、DSPの処理周波数は入力ソースによらず常に一定であること。ハイエンド機で処理周波数やビット数こそ上がってもこの仕組みは変わりません。そんなんでいいのか?

自分のDSPアンプの場合、96kHzでUSB入力時のみ内部のASRC(非同期サンプルレート変換)がバイパスされ、他の周波数・ソースでは必ず変換が入ります。ならばDSPの前段で内蔵ASRCを超える精度で96kHzに揃えてやれば音質的に有利なのでは、という発想です。
ソフトウェアによるアップサンプリングにはAudirvānaで手応えを感じたので、本格的にDSPのための「プリプロセッサー」として使えるものを目指します。

リゾルトの本国サポートに質問してみたところ
「うちのASRC優秀なんで。下手な外部変換休むに似たり」
との回答(意訳)でした。その返し、分かってるねー!と感心したのと、じゃあHQPlayerならどうだと。

なお、DSPの処理周波数と揃えて入力することがベストかどうかはケースバイケースです。ASRCをバイパスしない機種などは、88.2kHzや176.4kHzで入れた方が良い結果となる可能性もあるので試してみてください。


使用ハードウェア

alt
Raspberry Pi 5 (4GB)

HQPlayerは演算リッチなアルゴリズムを多数搭載しており、複雑なDSD変換などは最新のデスクトップPCでも処理し切れずGPUオフロードを必要とする重量級アプリです。
とはいえ、それはPCM1536kHzとかDSD1024といった高レートへの変換を行う場合のこと。192kHzあたりまでのPCM限定でアルゴリズムを選べばラズパイ5でも動作可能であることがわかりました。音響補正用のFIR演算も行いながらHQPlayerらしい高音質なフィルターもある程度選択可能、というラインを狙えます。

・入力:PCM44.1kHz〜192kHz
・出力:PCM96kHz(または88.2kHz)固定

カーオーディオなら問題ない制約でしょう。でもHQPlayerでこんなもったいない使い方をする人はいないかも。

alt
インストール時の構成です。今回はコンソール操作も排除したので、キーボードやモニターは無くてもなんとかなります。


HQPlayer OSのインストール

alt
HQPlayerにはGUIありのDesktop版とヘッドレスで使うEmbedded版があり、EmbeddedはOS込みのイメージ(HQPlayer OS)としても配布されています。公式サイトからイメージ版をダウンロード。最新のHQPlayer6のハードウェアからはSSE4.2対応x64やラズパイ4が落とされ少し厳しくなりました。

alt
7z圧縮を展開して取り出したimgファイルをmicroSDカードに書き込んで起動用ディスクを作成します。imgファイルのサイズは3GBほどだったので、microSDカードは4GBあれば十分。といっても今どき4GBなんて産業用の高耐久性モデルでも見かけなくなりました。大き過ぎても問題がありSDHC規格の32GB以下が無難です。


初期設定

ここから先はネットワーク経由での操作になります。
最初にラズパイに割り当てられたIPアドレスを確認します。FingやWiFimanのようなアプリが便利です。
(コンソールにrootでログインしifconfigコマンドでも確認可能)

alt
Fingはこんな風に情報量が多く探しやすいのですが有料。WiFimanは無料の代わりにIPアドレス位しか表示されないので、起動前後のアドレスを見比べて増えたものを探します。

alt
ネットワーク上のPCでWebブラウザを開き、IPアドレス:8088にアクセスすると操作画面(WebUI)が現れます。

alt
HQPlayerの心臓部。信号処理で必須の設定は「Configuration」画面にまとめられています。出力モードをPCM、サンプリング周波数を固定します。
処理のアルゴリズムも負荷の軽いものに変更。再生画面に表示される処理レートが2倍を下回るようだと不安定になります。またフィルターによっては非整数倍の設定(44.1kHz/96kHzなど)では出力できないものがあり、不適切な設定を行うと割と簡単に無応答・起動不能になるので注意。画面右上「Auto Rate Family」をONにするとCD音源やDSDは44.1kHzの整数倍で出力します。
フィルター選択は再生画面にもあり、そちらは電源OFFで元に戻る一時的なものとなるので、動作確認に利用できます。
アルゴリズムについてはこことかこことかこことかここが詳しく参考にさせてもらっています。ありがとうございます!

alt
「Speakers」画面。タイムアライメントを設定可能。

以前のブログの通り、HQPlayerはFIR演算による音響補正に対応しています。インパルス応答ファイルを指定する方法は2つあり、
alt
「Convolution」画面と
alt
「Matrix」画面です。
通常は「Convolution」、チャンネルマッピングを変更する場合は「Matrix」のどちらか一方を使用せよとなっていますが、Convolutionは出力ステージ、Matrixは入力ステージでの処理となり動作周波数(=CPUの負荷)に違いがあります。以前作成した位相補正用のIRファイルを設定しました。
DSPの位相回転をFIRフィルターで補正してみる


アプリ選択

ご覧の通りWebUIはまぁアレなんで設定専用と考えて、普段の再生操作は別のアプリを使います。ホームオーディオではRoonやAudirvānaの出力先とする事例が多いようです。
対応するコントロールアプリの一覧が公式サイトにあり、クルマで使えそうなものをピックアップしてみました。

BubbleUPnP mconnect
Player
HQPDcontrol
v4
JPLAY
対応OS Android Android
iOS
Android
iOS
iOS
UPnPコントロール
UPnPサーバー
HQPlayerローカル再生
HQPlayerフィルター選択
ストリーミング Qobuz
TIDAL
Qobuz
TIDAL
HRA Qobuz
TIDAL
HRA
CarPlay/
Android Auto
CarPlay

前2つは汎用UPnPアプリ、後2つはUPnPにも対応するHQPlayerネイティブアプリといった感じ。機能が違うので、やりたい事で選択できると思います。

QobuzとHQPlayerローカル再生ができてCarPlayにも対応する(!)JPLAY for iOS。もちろんHQPlayer使用中ディスプレイオーディオから音声は出ませんが表示はこの通り可能でした。
HQPlayerとJPLAYなんて、PC版を知っている人から見れば気難しいアプリ頂上決戦みたいな組み合わせが意外にも安定しており操作性も優れています。

alt
「どこの音源を」「どこから出力させる」か自在にコントロールできるのはネットワークオーディオの醍醐味です。あまり見かけないIPアドレスはiOSのテザリングによるもの(後述)。


再生方法1(UPnP)

UPnPレンダラーとしての使い方。MinimServerなどから再生させたり、UPnPサーバー機能をもつアプリなら楽曲をスマホ内に置くことも可能です。Qobuzの再生もこの仕組みを利用します。
ただし車載で利用可能な2.4GHz帯のWi-Fiでは帯域上、ハイレゾロスレス音源の安定再生は難易度が高くなります。


再生方法2(ローカル再生)

HQPlayerはローカル再生にも対応します。
楽曲ファイルを保存したUSBメモリー(exFAT形式)をラズパイに接続すると自動で/run/mediaにマウントしてくれました。ro属性ではないので再生中の電源OFFは避けた方が良いかもしれません。

alt
最初に「Library」画面でスキャンを行います。1TB弱のライブラリを登録するのに丸2日以上かかりました…まあ最初だけなので良しとしましょう。「Backup」画面で実行できるデータベースのバックアップは必須。
次回からは差分だけ登録できます。


電源OFFについて

HQPlayer OSはWebUIでの設定変更(Applyボタンを押した時)と楽曲データベース更新時以外は基本的にSDカードへの書き込みを行わず電源断にはある程度耐性があるものの、完全なシャットダウンフリーではありません。
乱暴にエンジンOFFで落としても今のところ問題は起きていませんが、不安ならWebUIにあるシャットダウンか、ラズパイ5の電源ボタンを使えば万全です。

電源断対策としてoverlayrootを組み込んだりUSBストレージをroでマウントするなら、HQPlayer OSでなくパッケージ版のHQPlayer Embeddedを使いOSを自分で設定する必要があります。
OS込みのイメージはそのような設定が出来ない代わり焼き直すのは簡単、加えてOSの音質的なチューニングもされているようなので、今回はバックアップのカードを作っておくだけにしました。


ライセンス購入

一通り動作を確認できたら、公式サイトでライセンスを購入して30分の利用制限を解除します。
購入にはインストールしたHQPlayerのID情報が必要です。「About」画面にある「Fingerprint」の文字列をコピー、購入ページに入力して支払います。後日メールで送られてくるキーファイルを「Key」画面でアップロードすると登録完了。

ハードウェア変更を行うとフィンガープリントが変わるため、メールでのライセンス更新手続きが必要です。(同一メジャーバージョンなら無料)
都度手続きするのが面倒・または変更回数が多いなら、キーファイルを物理的なUSBドングルとして購入することもできます。この場合はハードウェアが変わってもドングルを挿し替えれば利用可能となります。


車載!

タイマーリレーによる遅延起動回路を使用し、イグニッションが終了してから電源ONとなるようにしています。そういえば今どきの電動車やハイブリッド車ならこんな工夫は不要になったのでしょうか。
alt
シガーソケットからの12Vをタイマーリレーに接続、DC/DCコンバータで約6Vに落としリニア電源に入力。クリーンな5Vをラズパイに供給しています。
この使い方のラズパイ5は思った以上に低消費電力で、2Aのリニア電源で動きました。

ネットワーク接続はスマホのテザリングとイーサネットコンバーターを使いました。今回はLAN接続が1台なのでコンバーターをMACアドレス透過モードで使うことができ、UPnPが通ります。
alt
WI-UG-AC866(バッファロー)
USB端子はデータ用ではなく電源供給専用です。

エンジン始動後、次の順序で立ち上がるよう調整しました。
→スマホとDAをワイヤレスCarPlayで接続(自動)
→スマホのテザリングON(iOSのショートカット)
→イーサネットコンバーター接続(自動)
→ラズパイ起動(12Vタイマーリレー)




以上、今回は常用可能なものになったかな。

欲を言えば、もう少し演算能力の高いインテル系CPUを使ってHQPlayerの高コストなフィルターも試してみたいのですが、調子に乗ってライセンスを何回も更新していたら年間の変更回数が上限に達したと言われてしまったので今年はここまで。
alt
UP squared Pro 7000 edge(AAEON)
Core i3-N305搭載。

alt
LattePanda Sigma(LattePanda)
Core i5-1340P搭載。




(2026/8/15追記)
以下の設定でPCM192kHzまで/DSD128まで/出力96kHzの安定再生を確認できました。96kHz/16384タップのFIR演算も併用できています。
 ・PCM (1x):poly-sinc-gauss-long ※44.1/48kHzの音源に適用
 ・PCM (Nx):poly-sinc-gauss-hires-mp/lp/ip ※88.2kHz以上の音源に適用
 ・Dither:TPDF
 ・DSD-PCM変換:poly-short-mp/lp
PCM系はまだ余力があり、DSD-PCM変換は限界が近い感じです。
これ以上の極厚フィルターで非整数倍の周波数比に対応するものは多くないので、今回の用途にはラズパイ5で必要十分かもしれません。




(追記)USB入力も使う

入力のサンプリング周波数が固定であれば、1台のラズパイ5でもUSBオーディオ入力を安定して利用可能です。HQPlayerでは再生できないSoundCloudやらじるらじるなどを聴きたいこともあるので、使えるようにしました。

電源分岐アダプター
ラズパイでデバイスモードになるUSBポートは普段ACアダプターを接続するUSB-Cです。ここにスマホやPCをつなぐと電流が足りず起動できないため、このような分岐アダプターを使います。
alt
Type-C Power And Signal Splitter(Waveshare)

「デバイス」ポートにラズパイ、「Power」ポートに電源、「PC」ポートにスマホなど再生機器を接続します。「PC」ポートは電流を吸わないはずですが、カメラアダプター経由でiPhoneを接続すると電力不足のエラーが出たのでセルフパワーのUSBハブを挟みました。

USBデバイスモードの有効化
ラズパイ5のUSB-Cポートをデバイスモードに設定します。
ローカルコンソールに管理者rootでログイン(初期パスワード無し)。設定ファイルconfig.txtを編集します。
# nano /boot/config.txt 

USB-Cポートがホストモードに設定されているのを
dtoverlay=dwc2,dr_mode=host
#dtoverlay=dwc2,dr_mode=peripheral


1行目の頭に#を付けてコメントアウト、2行目の#を削除して有効化するとデバイスモードになります。
#dtoverlay=dwc2,dr_mode=host
dtoverlay=dwc2,dr_mode=peripheral


Ctrl-O、ENTERで上書き保存、Ctrl-Xで終了してから再起動
# reboot 

USB再生設定
WebUIの「Input」画面で「USB Audio(RPi5)」を選択すると「Playing」状態となり、スマホなどで再生すれば音がでます。「Stop」操作でUSB入力が終了しネットワークプレーヤーに戻ります。
Posted at 2026/08/01 20:59:51

イイね!0件

はてブに送る
はてブに送る

オススメ関連まとめ

マイページでカーライフを便利に楽しく!!

ログインするとお気に入りの保存や燃費記録など様々な管理が出来るようになります

まずは会員登録をしてはじめよう

ニュース