2021年 春期 応用情報技術者試験 問7
ディジタル補聴器の設計
H社は、ディジタル補聴器を開発している会社である。開発するディジタル補聴器(以下、新補聴器という)は、ソフトウェアでの信号処理によって、入力された音を八つの周波数帯(以下、それぞれを帯域という)に分割し、帯域ごとの音量設定ができる。さらに、入力された音の大きさに応じて自動的に音量の調節を行う自動音量調節(以下、AVCという)の機能がある。想定される利用者は、特定の帯域の音が聞き取りにくい人などである。入力された音の帯域への分割を図1に示す。
帯域1 | 帯域2 | 帯域3 | 帯域4 | 帯域5 | 帯域6 | 帯域7 | 帯域8 |
利用者は、スマートフォンのアプリケーションプログラム(以下、スマホアプリという)を使用して、帯域ごとの音量設定に必要な各種パラメタ(音量パラメタなど)を変更する。
ハードウェア構成
新補聴器のハードウェア構成を図2に示す。
- BTモジュールは、Bluetoothを介してスマホアプリと通信する。
- ADCは、マイクから入力されたアナログ信号を、1秒間に24,000回サンプリングし、16ビットの符号付き整数のデータに変換して入力バッファに書き込む。64サンプルのデータを1フレームとして書き込み、書き込みが完了したことを制御部に通知する。この通知を受信完了通知という。
- 制御部は、受信完了通知を受けると1フレーム分のデータを処理して出力バッファに書き込む。演算は全て整数演算であり、浮動小数点演算は使用しない。
- DACは、出力バッファに書き込まれた16ビットの符号付き整数のデータをアナログ信号に変換する。
- 低速クロック部は、ADC及びDACに24kHzのサンプリングクロックを供給する。
- 高速クロック部は、制御部に高速クロックを供給する。高速クロックの周波数はf₀又はその整数倍で、ソフトウェアによって決定することができる。
入力バッファ及び出力バッファ
入力バッファ及び出力バッファは、それぞれ三つのブロックで構成されている。一つのブロックには1フレーム分のデータを格納できる。入力バッファ及び出力バッファのサイズはともにaバイトである。
ADC及びDACは、入力バッファ及び出力バッファの同じブロック番号のブロックにアクセスする。制御部は、ADCによるデータの書き込みが完了したブロックにアクセスする。ADC、DAC及び制御部は、ブロック3にアクセスした後、ブロック1のアクセスに戻る。
バッファの使用例を図3に示す。(1)ADC及びDACがブロック1にアクセスしているとき、制御部はブロック3にアクセスする。次に、(2)ADC及びDACがブロック2にアクセスしているとき、制御部はブロック1にアクセスする。

マイクからのアナログ信号がADCで処理されてから、イヤホンから出力されるまでの時間はbミリ秒になる。
新補聴器のソフトウェア
制御部のソフトウェアの主な処理内容は、①信号処理、②合成、③AVCである。
制御部が受信完了通知を受けると、次に示すように処理を行う。
① サンプリングしたデータから一つの帯域を抽出し、帯域に割り当てられた音量パラメタを乗じる。これを八つの帯域に対して行う。
② ①で得られたそれぞれの帯域のディジタル信号を合成して一つのディジタル信号にする。
③ 合成されたディジタル信号について、AVCで音量を調節して、出力バッファに書き込む。
新補聴器の消費電力をできるだけ抑えたい。新補聴器では、消費電力は供給される高速クロックの周波数に比例し、ソフトウェアの実行時間(以下、実行時間という)は高速クロックの周波数に反比例することが分かっている。
最適なクロック周波数を決定するために、高速クロックの周波数を用いて、①~③の実行時間を計測した。
1フレーム分のデータを処理するとき、①の一つの帯域の最大実行時間をTf、②の最大実行時間をTs、③の最大実行時間をTaとしたとき、1フレーム分のデータを処理する最大実行時間Tdは、8×c+d+eで表すことができる。
受信完了通知から次の受信完了通知までの時間をTframeとし、高速クロックとして周波数f₀を供給したときの各処理の実行時間を表1に示す。①~③の全ての処理がTframe内に完了し、かつ、消費電力が最も抑えられる周波数について、表1を基に決定する。
処理 | 実行時間 |
---|---|
①の一つの帯域の処理 | Tf = 0.30 × Tframe |
②の処理 | Ts = 0.05 × Tframe |
③の処理 | Ta = 0.20 × Tframe |
AVC処理
〔新補聴器のソフトウェア〕の③の処理は、1フレームごとに実行し、適切な音声を出力するように音量を調節する。合成されたディジタル信号の大きさを確認して所定の大きさよりも大きいときは音量を小さくし、所定の大きさよりも小さいときは音量を大きくする。
音量を変更するときは1フレームごとに音量を変化させ、M又はM+1フレーム間で徐々に目標の音量にする。Mは2以上の値でシステムの定数である。目標の音量に到達したら、その次のフレームの合成された信号について目標の音量を決定し、同様の音量調節を行う。
AVC処理のソフトウェア
AVCの処理フローで使用する変数、関数、定数を表2に、AVCの処理フローを図4に示す。特定の条件では、目標の音量を決定したとき、直ちに音量を目標の音量にする。そのための判定を細掛けした判定部で行っている。演算は全て整数演算である。
変数・関数・定数 | 形式 | 機能など |
---|---|---|
dv | 静的変数 | 音量のフレームごとの変化分であり、初期値は0 |
v | 静的変数 | 現在の音量であり、初期値は利用者の設定した値 |
vt | 静的変数 | AVCの目標の音量 |
p | 動的変数 | 合成されたディジタル信号の大きさ |
getPower() | 関数 | 合成されたディジタル信号の大きさを算出 |
getTarget(p) | 関数 | 合成されたディジタル信号の大きさ(p)から目標の音量を算出 |
M | 定数 | 目標の音量に変化させるフレーム数であり、2以上の値の定数 |
