3. 開発方針とマイクアンプの製作

 Teensyがどんなチップか、SGTL5000がどれだけオーディオ処理にパワーを発揮するかが明らかになってきました。これで新しい聴覚補助ツール(Hearing Aid Tool) HAT24の基本構想を練ることができそうです。ただ、まだ疑問が残っていることもあり、それは開発を進めながら随時調整していくことにします。
 そして最後の節では、今回のプロジェクトで唯一のボード製作に取り組み、Teensyにもちょっと手を加えて HAT24のハードウェアを完成させます。



1.HAT24に必要な機能

 着手する前に、新しい聴覚補助ツールに必要な機能と、それを Teensyでどのように実現できるかを明確にしておく必要があります。
①ステレオマイク入力をどうするか

 オーディオ・アダプタには、音声録音用のモノラル ECM(エレクトレット・コンデンサー・マイク)を接続できる端子(バイアス付き)があります。安価な ECMでもかなり明瞭に音声を入力できますが、今回はステレオマイクを使いたいのでこれは対象外です。
 そこで、ステレオ入力が可能なライン入力を使用します。ただしそうするためには、ステレオ ECMにバイアス電圧を供給できるマイクアンプが必要になります。これはトランジスタを用いた簡単なアンプを自作することにします。

②イヤフォン出力をどうするか

 オーディオ出力には、ヘッドフォン出力用の 3.5mmオーディオジャックが装備されており、他にライン出力することもできます。どちらもステレオ対応なのですが、イヤフォンで聞き比べると、内蔵アンプを経由したヘッドフォン出力の方が音量・音質共に良いように感じられるので、これを使用することにします。

③イコライザーをどのように実現するか

 複雑なイコライザーをどうするかは大きなテーマです。バンド数や方式、フィルターの種類などを詰める必要があります。これについては次節で検討します。

④オーディオ処理要素の調整をどうするか

  ・音量
  ・左右の音量バランス
  ・入出力ゲイン
  ・PEQのパラメータ(Fc, Q, Gain)の値
  ・ミュート
  ・オートボリューム機能 など
 これらをスイッチや可変抵抗器で調整できるようにするには、物理的なサイズや配置などの制約を伴うため、当面は、すべてシリアルモニターのメッセージボックスからキー入力で指示できるようにします。この点については、最終的なケースへの収納までに検討して、どうしても必要な機能は部品類で対応することにしましょう。

⑤音量の自動調整をどうするか

 次の二点はどうしても考慮しておく必要があります。
  ・自動ボリューム・コントロール
    弱い音をある程度の大きさに、大きすぎる音を抑えて聞き取りやすい音量に制御する機能。
  ・強烈なサウンドの処理
    強烈な破裂音など、突然の大音量を抑制する方法。
 自動ボリューム・コントロールについては、SGTL5000の autoVolumeControl機能を利用します。コンサートなどでは逆効果になる場合もあるので、この機能をどう ON/OFFするかが課題です。
 強烈なサウンドは耳を傷める恐れがあるので、何か方法を考えて対応する必要があり、今回の重要な課題です。

⑥動作状態の維持

 電源を切っても、現在の音量や PEQパラメータなどの状態が失われないようにする方法です。これは SDカードに記録することにします。記録はコマンドによってできるようにします。また、システムの初期値に戻す機能も必要になりそうです。

⑦最終完成時のアナログ制御

 ④で述べたスイッチや可変抵抗器をどうするかという課題です。自動ボリューム・コントロールを採用するのであれば、その ON/OFFができるスイッチは必須になりそうです。また、音量制御用のボリュームも必要かも知れません。ただ、強烈なサウンドへの対応については、ドラムなどパーカッションや電子楽器のパンチの効いた音色を犠牲にしても、この機能を OFFにすることはやめた方がよいように思われます。


2.イコライザーの簡素化

 聴覚補助ツールが集音器や拡声器と異なるのは、音域毎の音量や音質を細かく調整できるイコライザーがあることでしょう。しかし、イコライザーの機能を組み込むためには、デジタル処理では複雑なコードの記述が必要になり、アナログ版では複雑な回路の配線とハンダ付けが必要になります。これらをいかに正確に記述または配線して、安定した装置とするかは簡単ではありません。
 一方、イコライザーの調整はどうかというと、音域の分割(バンド)数が多いと個々のバンドの調整結果がなかなか判別しにくい。各人が自分の聴力に応じた調整をしなければならないわけで、これが左右の耳で別々に行うとなるとますます大変になります。実はいちばん難しいのは、完成したイコライザーの調整作業ではないかと思います。
 そこで、今回は思い切って両チャンネルの区別をなくして、ある音域の調整は左右両方に反映される方式にします。これにはもう一つ理由があって、Teensyの基本機能を利用することでコードの大幅な簡素化をはかることができるからです。

「Teensyの基本機能を利用する」

 すでに述べたように、SGTL5000の DAPには音質制御のサブブロックがあり、次の3種類からどれかひとつを選択することができます(下図は『SGTL5000 Data Sheet』より)。
  ○ 7バンドのパラメトリック・イコライザー
  ○ 5バンドのグラフィック・イコライザー
  ○ トーン・コントロール

 HAT24では 7バンドのパラメトリック・イコライザーを使用します。これは 7つのカスケード接続された 2次 IIRフィルターから構成され、すべてバイクワッドフィルター(Biquad Filter)によって実装します。
 Biquadでは 7つのバンド毎に次の 7種類のフィルターを指定できます。なお、サンプリングレートは 44.1kHzです。また、各フィルターの引数で指定している stageはバンドのことです。
 frequencyは周波数、gainはゲイン、Qは Q値、slopeはゲイン遷移の急峻さを表します。パラメトリック・フィルターの array[5]は、サンプリングレート、frequency、Q、gainから算定したバイクワッドフィルターのフィルター係数配列です。
  ・ローパスフィルター
     setLowpass(stage, frequency, Q)
  ・ハイパスフィルター
     setHighpass(stage, frequency, Q)
  ・バンドパスフィルター
     setBandpass(stage, frequency, Q)
  ・ノッチフィルター
     setNotch(stage, frequency, Q)
  ・ローシェルフフィルター
     setLowShelf(stage, frequency, gain, slope)
  ・ハイシェルフフィルター
     setHighShelf(stage, frequency, gain, slope)
  ・パラメトリックフィルター
     setCoefficients(stage, array[5])
 ついでながら、『SGTL5000 Data Sheet』では、これらの設定によってロック、スピーチ、クラシックなどのプリセットが可能であると説明されています。ただ、そのためにどのフィルターをどのように設定すればよいかは不明です。


3.HAT24の製作要件

 以上の検討を通して HAT24の製作要件が明確になってきました。これらを整理して製作に移ることにしましょう。
①オーディオ・オブジェクトと音声の流れ

 オーディオ・システム設計ツールで描いた HAT24の全体構成はとてもシンプルです。
 i2s1はステレオライン入力で、音声は左右チャンネルそれぞれのアンプ amp1, amp2を通してヘッドフォン出力 i2s2に流れます。amp1, 2は、左右の音量バランスを調整するためのものです。バランス調整が不要であれば amp1, amp2は省いて i2s1を i2s2に直結するだけです。peak1, 2は強烈な破裂音などのピーク音量レベルを取得します。sgtl5000_1はどこにも接続されていませんが、SGTL5000オーディオ・シールドそのものであり、これによってイコライザーの設定や全体の音量調整などを行うのでこのような配置になります。

②音声入力

 ステレオマイクアンプを製作してライン入力から受け入れます。マイクアンプは、次節で簡易トランジスタ版の製作を取り上げます。

③オーディオ出力

 オーディオ・アダプタボードに設置されているヘッドフォン・ジャックから、ハンダ付けでイヤフォン用の 3.5mmオーディオ・ジャックに配線します。

④イコライザー

 SGTL5000の 7バンドのパラメトリック・イコライザーを使用します。各バンドのフィルターは、既定のフィルター係数計算関数 calcBiquadを利用して設定します。

⑤オーディオ処理要素の調整

 すべての要素の調整をシリアルモニターからのキー入力で行えるようにします。調整結果はグローバル変数に反映させ、コマンドでシリアルモニターに内容を表示できるようにします。自動ボリューム・コントロールの ON/OFF、電源 ON/OFF、音量調整などの部品搭載については、今後の検討を待ちます。

⑥音量の自動調整

 自動ボリューム・コントロールについては、SGTL5000が備えている autoVolumeControlメソッドを利用します。強烈な破裂音などの処理は、リアルタイムで音量のピークを測定して、所定の音量レベルを超えると所定のレベルに治まるまで瞬間的なミュートをかける方法を試す予定です。

⑦動作状態の維持

 最初の1回だけ動作条件の初期値をグローバル変数に設定し、同時にその内容を SDカードに記録します。グローバル変数に保持している動作状態は、記録コマンドによって SDカードに書き出せるようにします。2回目以降の電源投入時には、SDカードから以前の動作状態をグローバル変数に読み込みます。

⑧完成時の姿

 W x H x Dのサイズが 90mm x 20mm x 60mm程度の金属ケースへの収納を予定しています。今後の検討を待つことになりますが、次の部品の取り付けを考えています。
 ・ステレオマイク用 3.5mmオーディオジャック
 ・イヤフォン用 3.5mmオーディオジャック
 ・ダイヤル式音量調整用ボリューム(スイッチ付き)
 ・スライドスイッチ(自動ボリューム・コントロール ON/OFF用)


4.マイクアンプの製作

 トランジスターを使った簡単なマイクアンプを製作します。 前述のようにモノラル ECMなら、オーディオ・アダプタボードのバイアス付きマイク入力(MIC_IN)に接続するだけで使用できますが、ステレオマイクはステレオ・ライン入力(LINE_IN)に接続することになります。
 ライン入力は単純に音声信号を受け入れるだけなので、前段に ECMへバイアス電圧を供給する仕組みが必要になります。マイクアンプはそのためのもので、音声信号をラインレベルに増幅するだけなので、トランジスタ1石の簡単なアンプで十分対応できます。信号の強度は、SGTL5000のシグナル・レベル調整関数 lineInLevel()で設定できるので、マイクアンプに可変抵抗器は不要です。

(回 路)

 左が 1チャンネルの回路図です。右は実際の配線をする場合の参考図です。ステレオマイクなので、同じ回路を2組作ります。


(サンプル)

 できるだけ小さくするようにカーボン抵抗を縦方向に配置して配線しています。もう少し余裕を持たせるほうがよいかも知れません。外部との接続部は「分割ロングピンソケット」を取り付けた端子とし、ここにピンヘッダやジャンパーワイヤを差し込んで接続します。
 簡単な回路なので、基盤の切れ端を利用して裏面に線材でハンダ付けしています。あまりにゴテゴテした配線なので裏面の写真は省略します。ボードの四隅の透明なものは、脚代わりに取り付けたプラスチック・ネジです。

(必要な部品部材)
  部品類は秋月電子などで購入できます。規格・形状などは各行のリンクで確認してください。

No.名    称数量参考単価備  考
1トランジスタ 2SC18152\51パック20個入 ¥100
2オーディオ用電解コンデンサー 1μF 50V2\10
3オーディオ用電解コンデンサー 10μF 50V2\10
4カーボン抵抗 33Ω 1/4W2\11袋100本入 ¥100
5カーボン抵抗 1KΩ 1/4W2\11袋100本入¥100
6カーボン抵抗 2.2kΩ 1/4W2\11袋100本入 ¥100
7カーボン抵抗 100kΩ 1/4W2\11袋100本入 ¥100
8分割ロングピンソケット 42P1\80
9ピンヘッダー 40P1\35
10両面スルーホールユニバーサル基板 3cm x 7cm1\40
11ピンヘッダー オスL型 40P1\50
12配線用ワイヤー少々


5.オーディオ・アダプタボードの加工

 最後に Teensyを使いやすくするために、ちょっとしたハンダ付けをしておきましょう。写真のように、分割ロングピンソケットを必要なサイズだけ切り離して、3個所に取り付けます。Line Inと Line Outの部分は、5つ毎に切り離したソケットを2列並べています。
 具体的な接続は章を改めて説明しますが、左下の 3.3Vと GNDからマイクアンプに電源を供給します。右列の方は、マイクアンプからの出力を Line Inの L/Rと GNDに繋ぐだけです。


 HAT24の製作要件が決まり、マイクアンプなど基本的なハードウェアも整いました。次回からいよいよプログラムの作成です。お楽しみに!