オーディオコーデックを使用して、組み込みシステムのオーディオパフォーマンスをより簡単に最適化する方法

更新日: 8 年 2023 月 XNUMX 日

多くの設計者は、忠実度の高いオーディオを追加するために、マイクロコントローラーベースの組み込みシステム設計にオーディオコーデックを組み込んでいます。 そうすることで、彼らは彼らのアプリケーションのためにオーディオコーデックを調整する方法を理解しなければなりません。 チューニングを行わないと、優れたコーデックとスピーカーを使用しても、アプリケーションのサウンドがフラットになったり、品質が低下したりする可能性があります。 問題は、すべてのスピーカーが独自の周波数応答を持っているため、再生されるオーディオの種類と必要な応答を考慮しながら、コーデックをスピーカーの特性に合わせて調整する必要があることです。

オーディオ再生システムを調整するための解決策は、ハードウェアフィルタリングを使用するのではなく、オーディオコーデック独自のデジタルフィルタリングブロックを活用することです。 すべてのコーデックにはこのブロックがあり、開発者はハイパス、ローパス、およびバンドパスフィルターを使用して出力をフィルター処理できます。 これにより、スピーカーの応答を注意深く調整し、必要に応じて調整することもできます。

この記事では、AKMのコーデックを使用して、コーデックに含まれる内部デジタルオーディオブロックについて説明します。 半導体 例として。 また、開発者がシステムの音質を向上させながらオーディオ再生の開発を加速するのに役立つコーデックを調整する方法に関するいくつかのヒントとコツについても説明します。

スピーカーの周波数応答特性を理解する

記事「埋め込みオーディオフィードバックファイル用のオーディオコーデックとマイクロコントローラーを選択して使用する方法」では、コーデックを選択してシステムに追加するための基本について説明しました。 次のステップは、そのコーデックを使用して、可能な限り最高のオーディオ出力を取得することです。

システムから出てくるオーディオがどのように聞こえるかに寄与するいくつかの異なる要因があります。 これらの要因は次のとおりです。

  • スピーカーのエンクロージャー
  • スピーカーの取り付け方法
  • 再生されているオーディオ周波数
  • スピーカーの周波数応答

これらの要素を注意深く検討した後、開発者は、オーディオシステムのチューニングが最終的な製品状態にある場合にのみ役立つことにすぐに気付くでしょう。 確かに、システムはプリント回路基板(pcボード)とハウジングの外側のスピーカーで調整できますが、スピーカーが取り付けられてエンクロージャー内にあるときに同じ調整パラメーターが適用されることを期待するべきではありません。

機械チームがシステムエンクロージャーとマウントを適切に設計した場合、開発者が注意深く監視する必要がある主な特性は、スピーカーの周波数応答です。 スピーカーごとに特性と応答曲線が異なります。 同じ部品番号のスピーカーでも、周波数応答にわずかなばらつきがあることがよくありますが、通常、メーカーは一般的な周波数応答曲線を提供しています。 たとえば、図1は、CUIデバイスGC0401K 8オーム(Ω)、1ワットスピーカーの周波数応答曲線を示しています。 GC0401Kの定格周波数は、390ヘルツ(Hz)〜20キロヘルツ(kHz)です。

図1:CUIデバイスのGC0401K8Ω、1ワットのスピーカーは、390 Hz〜20kHzの周波数で定格が定められています。 (画像ソース:CUIデバイス)

スピーカーは通常、応答が比較的平坦な応答曲線の領域で評価されます。 図1をよく見ると、GC0401Kの周波数応答は約350 Hzで平坦になり始め、少なくとも9kHzまでは比較的平坦なままであることがわかります。 ハイエンド周波数には多少の低下がありますが、20kHzまでは安定しています。

異なるスピーカー周波数応答は、CUIデバイスのGF0668で確認できます(図2)。 このスピーカーは少し大きく、3ワットを出力できます。 周波数応答定格は240Hz〜20kHzです。 このスピーカーはGC0401Kよりもわずかに低い周波数に到達する可能性がありますが、指定された範囲内では曲線が比較的平坦で、全体にいくつかの谷と山があることに注意してください。

図2:CUIデバイスのGF0668Ω、8ワットスピーカーの周波数応答は、3 Hz〜240kHzの範囲で定格が定められている理由を示しています。 (画像ソース:CUIデバイス)

注目に値する最後のスピーカー応答は、Soberton Inc.のSP-2804Yです(図3)。 SP-2804Yは、周波数応答範囲が500 Hz〜600 kHzの8ミリワット(mW)スピーカーです。 物理法則により、スピーカーが小さいほど、低周波数に応答する時間が長くなります。 これは、開発者が低周波数をフィルターで除去せず、代わりにそれらの周波数でスピーカーを駆動しようとすると、不快な音のオーディオやトーンの欠陥が発生する可能性があることを意味します。

10kHz付近の周波数応答にも大幅な落ち込みがあることに注意してください。 したがって、一部のアプリケーションでは最大8 kHzまで使用できる可能性がありますが、スピーカーの定格は20kHzのみです。

図3:Soberton Inc.のSP-2804Y8Ω、0.5ワットスピーカーの周波数応答は、600 Hz〜8kHzの周波数に適していることを示しています。 10 kHzを超えるとディップが発生しますが、一部のアプリケーションでは20kHzまで使用できます。 (画像ソース:CUIデバイス)

各スピーカーの周波数応答を見ると、スピーカーを駆動してはならない周波数がいくつかあるため、何らかのフィルタリングとチューニングを行う必要があることは明らかです。 たとえば、これらのスピーカーで4 Hzの低音を駆動しようとすると、振動が長続きし、高周波数が注入されて、多くの音の歪みが発生する可能性があります。

オーディオデジタルフィルターブロックの分析

不要な周波数を調整するために過去に使用された500つの方法は、スピーカーにつながるハードウェアフィルターを構築することです。 たとえば、500 Hzのハイパスフィルターは、15Hz未満の周波数がスピーカーに到達するのを防ぐことができます。 もう一方の端では、ローパスフィルターを使用して、XNUMXkHzを超えるオーディオトーンを削除できます。 個人的な経験によれば、女性の声がより高い周波数で効率的な小さなスピーカーで使用されている場合、スピーカーは甲高い音を出すことがあります。 周波数を注意深く選択すると、これらの歪みを取り除き、よりクリーンなサウンドのオーディオを作成できます。

外部ハードウェアフィルターはその仕事をすることができますが、それらはコストを追加し、追加のスペースを占有します。 これらの理由から、オーディオコーデックに組み込まれているデジタルフィルターブロックを使用してオーディオを調整する方が実用的で効率的です。

たとえば、AKM のブロック図は次のとおりです。 半導体 AK4637 24 ビット オーディオ コーデックには、デジタル フィルター ブロックが強調表示されています (図 4)。

図4:AK4637は、オーディオの再生および録音機能を備えたモノラルスピーカー出力を備えたオーディオコーデックです。 また、オーディオの忠実度を向上させるために、着信および発信オーディオをフィルタリングするために使用できる内部オーディオブロックも含まれています。 (画像出典:AKMセミコンダクタ)

この場合のデジタルフィルタブロックには、次のようないくつかの異なるフィルタリング機能が含まれています。

  • ハイパスフィルター(HPF2)
  • ローパスフィルター(LPF)
  • 4バンドイコライザー(XNUMXバンドEQ)
  • 自動レベリング制御(ALC)
  • 1バンドイコライザー(XNUMXバンドEQ)

これらの機能をすべて有効にする必要はありません。 開発者は、必要な機能を選択し、マイクのブロックまたはルーティング、またはそれらを介したオーディオの再生を有効または無効にすることができます。 この時点での本当の問題は、オーディオコーデックをどのように計算してプログラムするかです。

デジタルフィルターパラメータを計算およびプログラムする方法

ほとんどのオーディオアプリケーションでは、ハイパスフィルターを使用して低周波数を除去し、ローパスフィルターを使用して高周波数を除外します。 イコライザーを使用して、周波数応答曲線を滑らかにしたり、特定のトーンを強調したりできます。 これらの設定をどの程度正確に選択するかは、この記事の範囲を超えています。 代わりに、AKM AK4637を例として使用して、これらのパラメーターに関連付けられている値を計算およびプログラムする方法について説明します。

まず、データシートを確認することをお勧めします。 この場合の7ページと8ページは、コーデックの最も重要なレジスタマップを示しています。 パーツに63個のレジスタがあることを考えると、一見すると恐ろしいかもしれません。 ただし、これらのレジスタの多くはデジタルオーディオブロックを制御します。 たとえば、レジ​​スタ0x22から0x3Fはイコライザを制御します。 レジスタ0x19から0x1Cはハイパスフィルタを制御し、0x1Dから0x20はローパスフィルタを制御します。

開発者は通常、コーデックに入力する周波数を指定することはできません。 代わりに、フィルター係数を計算するために使用されるフィルター方程式があります。これは、コーデックレジスタにプログラムされて、目的の周波数でフィルターを作成します。 たとえば、デジタルフィルターブロックを使用して600 Hzでハイパスフィルターを作成するには、式1を使用します。

図5:AK4637デジタルフィルターブロックのハイパスフィルターの係数を計算するために必要な式を示します。 (画像出典:AKMセミコンダクタ)

開発者は、目的のカットオフ周波数fc(この場合は600 Hz)を特定します。 オーディオサンプリング周波数fsは通常48kHzですが、アプリケーションによって異なる場合があります。 これらの値は、係数AおよびBを計算するための式に配置されます。これらの値は、起動時にI2Cを介してコーデックレジスタに書き込まれます。 ローパスフィルターやその他のデジタルブロック機能にも同じプロセスが使用されますが、伝達関数は異なることが多く、独自の方程式のセットを使用する必要があります(データシートを参照)。

オーディオコーデックを調整するためのヒントとコツ

オーディオコーデックに含まれるデジタルフィルタブロックは、多くの場合、非常に柔軟で強力です。 低コストのオーディオコーデックでさえ、開発者に忠実度の高いオーディオを生成するために必要なツールを提供します。 しかし、結局のところ、オーディオコーデックはパズルのほんの一部にすぎません。 オーディオコーデックを正常に調整するには、開発者が次のようないくつかの「ヒントとコツ」を覚えておく必要があります。

  • スピーカーがアプリケーションに適したエンクロージャーに取り付けられていることを確認してください。 不適切に設計されたスピーカーボックスは、他の点では完璧な再生システムを簡単に台無しにする可能性があります。
  • システムが本番インテント構成で完全に組み立てられるまで、コーデックオーディオフィルターブロックを調整しないでください。 そうしないと、チューニングパラメータが変更される可能性があります。
  • 再生されるオーディオに基づいて周波数範囲を選択します。 たとえば、ギター、ピアノ、または話している人の音楽の周波数設定はすべて異なります。
  • デジタルバランスブロックを使用して、スピーカーの周波数応答を補正します。 一部の周波数は自然に大きくクリアに聞こえ、減衰する必要がある場合がありますが、他の周波数は増幅する必要がある場合があります。
  • テストトーンを使用して、システムの周波数応答を評価します。 簡単なインターネット検索により、オーディオ再生システムの周波数応答とデジタルフィルターブロックがどのように機能しているかを理解するために使用できる、さまざまなオーディオトーンのmp3ファイルが提供されます。
  • フィルタブロックの構成設定をフラッシュまたはEEPROMに保存して、製造時にシステム間のばらつきを考慮して設定できるようにします(懸念がある場合)。

これらの「ヒントとコツ」に従う開発者は、オーディオ再生システムを調整しようとするときにかなりの時間と悲しみを節約し、意図したオーディオ特性で市場に投入できるようにすることに気付くでしょう。

まとめ

組み込みシステムにオーディオコーデックを追加しても、エンドユーザーにとって良いサウンドになるとは限りません。 すべてのオーディオ再生システムは注意深く調整する必要があります。 このチューニングを実現するために外部フィルターを使用することは可能ですが、オーディオコーデックにはデジタルフィルタリングとバランス機能が組み込まれています。示されているように、これらを使用して、スピーカーに最適な周波数のみを供給することができます。 フィルター設定を注意深く分析して適用することで、開発者はエンドユーザーがデバイスに期待するようになったクリーンなサウンドのオーディオを作成できます。