戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2021年 春期 午後07


デジタル補聴器の設計に関する次の記述を読んで、設問1~3に答えよ。

 H社は、デジタル補聴器を開発している会社である。開発するデジタル補聴器(以下、新補聴器という)は、ソフトウェアでの信号処理によって、入力された音を八つの周波数帯(以下、それぞれを帯域という)に分割し、帯域ごとの音量設定ができる。さらに、入力された音の大きさに応じて自動的に音量の調節を行う自動音量調節(以下、AVCという)の機能がある。想定される利用者は、特定の帯域の音が聞き取りにくい人などである。入力された音の帯域への分割を図1に示す。
応用情報技術者試験(令和3年度 午後 問07 図01)
 利用者は、スマートフォンのアプリケーションプログラム(以下、スマホアプリという)を使用して、帯域ごとの音量設定に必要な各種パラメタ(音量パラメタなど)を変更する。   〔ハードウェア構成〕  新補聴器のハードウェア構成を図2に示す。
応用情報技術者試験(令和3年度 午後 問07 図02)
 ・BTモジュールは、Bluetoothを介してスマホアプリと通信する。  ・ADCは、マイクから入力されたアナログ信号を、1秒間に24,000回サンプリングし、16ビットの符号付き整数のデータに変換して入力バッファに書き込む。64サンプルのデータを1フレームとして書き込み、書込みが完了したことを制御部に通知する。この通知を受信完了通知という。  ・制御部は、受信完了通知を受けると1フレーム分のデータを処理して出力バッファに書き込む。演算は全て整数演算であり、浮動小数点演算は使用しない。  ・DACは、出力バッファに書き込まれた16ビットの符号付き整数のデータをアナログ信号に変換する。  ・低速クロック部は、ADC及びDACに24 kHzのサンプリングクロックを供給する。  ・高速クロック部は、制御部に高速クロックを供給する。高速クロックの周波数は f0 又はその整数倍で、ソフトウェアによって決定することができる。   〔入力バッファ及び出力バッファ〕  入力バッファ及び出力バッファは、それぞれ三つのブロックで構成されている。一つのブロックには1フレーム分のデータを格納できる。入力バッファ及び出力バッファのサイズはともにaバイトである。  ADC及びDACは、入力バッファ及び出力バッファの同じブロック番号のブロックにアクセスする。制御部は、ADCによるデータの書込みが完了したブロックにアクセスする。ADC、DAC及び制御部は、ブロック3にアクセスし終わった後、ブロック1のアクセスに戻る。  バッファの使用例を図3に示す。(1) ADC及びDACがブロック1にアクセスしているとき、制御部はブロック3にアクセスする。次に、(2) ADC及びDACがブロック2にアクセスしているとき、制御部はブロック1にアクセスする。
応用情報技術者試験(令和3年度 午後 問07 図03)
 マイクからのアナログ信号がADCで処理されてから、イヤホンから出力されるまでの時間はbミリ秒になる。   〔新補聴器のソフトウェア〕  制御部のソフトウェアの主な処理内容は、①信号処理、②合成、③AVC である。  制御部が受信完了通知を受けると、次に示すように処理を行う。  ① サンプリングしたデータから一つの帯域を抽出し、帯域に割り当てられた音量パラメタを乗じる。これを八つの帯域に対して行う。  ② ①で得られたそれぞれの帯域のデジタル信号を合成して一つのデジタル信号 にする。  ③ 合成されたデジタル信号について、AVC で音量を調節して、出力バッファに書き込む。    新補聴器の消費電力をできるだけ抑えたい。新補聴器では、消費電力は供給される高速クロックの周波数に比例し、ソフトウェアの実行時間(以下、実行時間という) は高速クロックの周波数に反比例することが分かっている。  最適なクロック周波数を決定するために、高速クロックの周波数を用いて、①~③の実行時間を計測した。  1フレーム分のデータを処理するとき、①の一つの帯域の最大実行時間を, ②の最大実行時間を, ③の最大実行時間をとしたとき、1フレーム分のデータを処理する最大実行時間は、8 × c + d + e で表すことができる。  受信完了通知から次の受信完了通知までの時間を Tframe とし、高速クロックとして周波数を供給したときの各処理の実行時間を表1に示す。①~③の全ての処理がTframe 内に完了し、かつ、消費電力が最も抑えられる周波数について、表1を基に決定する。
応用情報技術者試験(令和3年度 午後 問07 表01)
〔AVC 処理〕  〔新補聴器のソフトウェア〕の③の処理は、1フレームごとに実行し、適切な音声を出力するように音量を調節する。合成されたデジタル信号の大きさを確認して所定の大きさよりも大きいときは音量を小さくし、所定の大きさよりも小さいときは音量を大きくする。  音量を変更するとは1フレームごとに音量を変化させ、M又はM+1フレーム間で徐々に目標の音量にする。Mは2以上の値でシステムの定数である。目標の音量に到達したら、その次のフレームの合成された信号について目標の音量を決定し、同様の音量調節を行う。   〔AVC 処理のソフトウェア〕  AVCの処理フローで使用する変数、関数、定数を表2に、AVCの処理フローを図4に示す。特定の条件では、目標の音量を決定したとき、直ちに音量を目標の音量にする。そのための判定を網掛けした判定部で行っている。演算は全て整数演算である。
応用情報技術者試験(令和3年度 午後 問07 表02)
応用情報技術者試験(令和3年度 午後 問07 図04)

設問1入力バッファ及び出力バッファについて、〔1〕、〔2〕に答えよ。

(1)本文中のaに入れる適切な数値を答えよ。

模範解答

a:384

解説

解答の論理構成

  1. フレームのデータ量を確認
    • 【問題文】「64サンプルのデータを1フレームとして書き込み」
    • 【問題文】「16ビットの符号付き整数のデータに変換して入力バッファに書き込む」
      16ビット=2バイトなので、1フレーム当たりの容量は
  2. ブロック数を確認
    • 【問題文】「入力バッファ及び出力バッファは、それぞれ三つのブロックで構成」
      1ブロック=1フレーム分なので、バッファ全体は
  3. 結論
    • よって、【問題文】中の「aバイト」に入る数値は 384 である。

誤りやすいポイント

  • 「16ビット」を「16バイト」と読み間違える。ビット/バイト換算を必ず確認しましょう。
  • 「三つのブロック」を見落とし、1フレーム(128バイト)のまま答えてしまう。
  • サンプル数「64」を「65,536(2の16乗)」など他の典型値と混同するミス。

FAQ

Q: 1フレームは“64サンプル”固定ですか?
A: はい。【問題文】で 1フレーム=64サンプルと明記されているため、設計時点では可変ではありません。
Q: 2バイト換算は常に と考えれば良いですか?
A: そのとおりです。1バイト=8ビットなので、16ビットは バイトになります。
Q: 出力バッファも同じサイズで良いのですか?
A: はい。入力・出力とも同じ三つのブロック構成で、1ブロック=1フレーム(128バイト)ですから、両方とも 384バイトです。

関連キーワード: バッファサイズ, サンプル数, ビット換算, メモリ計算

設問1入力バッファ及び出力バッファについて、〔1〕、〔2〕に答えよ。

(2)本文中のbに入れる適切な数値を答えよ。答えは小数第2位を四捨五入して、小数第1位まで求めよ。ここで、ADCの変換時間及びDACの変換時間は無視できるものとする。

模範解答

b:8.0

解説

解答の論理構成

  1. フレーム時間を求める
    【問題文】に「ADCは、マイクから入力されたアナログ信号を、1秒間に24,000回サンプリングし、16ビットの符号付き整数のデータに変換して…64サンプルのデータを1フレームとして書き込み」とあります。
    フレーム時間
  2. バッファ構成から必要フレーム数を把握
    【問題文】には「入力バッファ及び出力バッファは、それぞれ三つのブロックで構成」「ADC及びDACは、…同じブロック番号のブロックにアクセスする」「制御部は、ADCによるデータの書込みが完了したブロックにアクセスする」とあります。
    図3の使用例を踏まえると、
    • フレーム1:ADCがブロック1を埋める
    • フレーム2:制御部が加工済みデータをブロック1に書き戻す
    • フレーム3:DACがブロック1を再生
    よって、あるサンプルがADCに取り込まれてからDACで出力されるまでに3フレーム分の遅延が生じます。
  3. 遅延時間の計算
    = 3 \times 2.666\dots\ \text{ms} = 8.000\dots\ \text{ms}$$
  4. 指示どおり「小数第2位を四捨五入して、小数第1位まで」求めると
したがって、b に入る数値は 8.0 となります。

誤りやすいポイント

  • 64 サンプルを “65 サンプル” と勘違いしフレーム時間を誤算する。
  • 三重バッファを「ADC と DAC の二重のみ」と捉え2フレーム分しか見積もらない。
  • ADC や DAC の変換時間を考慮してしまい、指示「変換時間は無視できる」を読み落とす。

FAQ

Q: 3フレーム分遅れるのは必ず最大値ですか?
A: はい。ADC・制御部・DAC が常に別ブロックを扱うパイプライン構成のため、最小でも 3 フレーム分の遅延が発生します。
Q: 制御部の処理時間が長い場合でも 3フレームで済みますか?
A: 各処理が Tframe 内に収まることが設計条件です。間に合わなければ周波数を上げて調整します。条件を満たす限り遅延フレーム数は変わりません。
Q: フレーム長を秒で求めたまま計算しても良いですか?
A: 可能ですが、最終答案はミリ秒表記・小数第1位までに丸める必要があります。

関連キーワード: サンプリング周波数, フレーム長, 三重バッファリング, レイテンシ, デジタル信号処理

設問2新補聴器のソフトウエアについて、〔1〕、〔2〕に答えよ。

(1)本文中のceに入れる適切な字句を答えよ(dとeは順不同)。

模範解答

c:Tf d:Ts e:Ta

解説

解答の論理構成

  1. 【問題文】には次の記載があります。
    • 「① サンプリングしたデータから一つの帯域を抽出し…これを八つの帯域に対して行う。」
    • 「② ①で得られたそれぞれの帯域のデジタル信号を合成して…」
    • 「③ 合成されたデジタル信号について、AVC で音量を調節して…」
    • 「①の一つの帯域の最大実行時間を , ②の最大実行時間を , ③の最大実行時間を としたとき、1フレーム分のデータを処理する最大実行時間 は、8 × c + d + e で表すことができる。」
  2. ①は「八つの帯域すべて」に対して同じ処理を行います。したがって実行時間は
    になります。よって c です。
  3. ②は合成処理が1回だけ行われるので d(またはe)が になります。
  4. ③も1フレームにつき1回だけなので残りの空欄が です。
  5. 以上より
    c=「Tf」、d=「Ts」、e=「Ta」
    (ただし【問題文】が示すように「dとeは順不同」です)。

誤りやすいポイント

  • 「八つの帯域」を見落とし、 を8倍し忘れる。
  • ②と③は1フレーム当たり1回だけなのに、8倍してしまう。
  • のどちらを [ d ]、[ e ] に入れるかで迷うが、順不同の指示を読み落として固定だと思い込む。

FAQ

Q: ②と③のどちらを [ d ]、[ e ] に入れても正解になるのですか?
A: はい。【問題文】に「dとeは順不同」とあるため、 が入れ替わっていても減点対象になりません。
Q: なぜ①だけ8倍するのですか?
A: ①の処理は「八つの帯域に対して行う」と明示されており、1帯域当たりの最大実行時間が と定義されているため、1フレームでは になります。
Q: ブロックバッファが三つあることは本設問に関係しますか?
A: 本小問は実行時間の定義式に関する設問なので、バッファ数は直接の解答要素にはなりません。

関連キーワード: サンプリング, 逐次処理, 実行時間, 周波数帯分割, 自動音量調節

設問2新補聴器のソフトウエアについて、〔1〕、〔2〕に答えよ。

(2)決定した高速クロックの周波数はf0の何倍か。適切な数値を整数で答えよ。

模範解答

3

解説

解答の論理構成

  1. 各処理のフレーム当たり最大実行時間を整理
    【問題文】の表1より
    ・①の一つの帯域の処理時間は「Tf = 0.30 × Tframe」
    ・②の処理時間は「Ts = 0.05 × Tframe」
    ・③の処理時間は「Ta = 0.20 × Tframe」
  2. フレーム全体で必要な処理時間 Td を算出
    【問題文】に「1フレーム分のデータを処理する最大実行時間Tdは、8 × c + d + e」とある。
    ここで
    [c]=Tf、[d]=Ts、[e]=Ta なので
    Td = 8 × 0.30 Tframe + 0.05 Tframe + 0.20 Tframe
    = 2.40 Tframe + 0.05 Tframe + 0.20 Tframe
    = 2.65 Tframe
  3. クロック周波数と実行時間の関係
    【問題文】に「実行時間は高速クロックの周波数に反比例する」とある。
    周波数を f0 の k 倍にすると所要時間は 1/k 倍になる。
    ⇒ 各フレームで必要な時間は Td/k
  4. 処理が収まるための条件
    Td/k ≤ Tframe
    2.65 Tframe / k ≤ Tframe
    2.65 / k ≤ 1
    k ≥ 2.65
  5. 消費電力最小の整数倍を選ぶ
    【問題文】に「消費電力は供給される高速クロックの周波数に比例」とある。
    周波数を必要最小限にとどめるため k を 2.65 以上の最小整数とする。
    ⇒ k = 3
  6. よって、決定した高速クロックの周波数は f0 の「3」倍である。

誤りやすいポイント

  • ①の処理時間を 0.30 Tframe のまま用い、8 倍し忘れる。
  • 3 重バッファを理由に「3 フレーム分の時間が使える」と誤解し、k=1 や 2 で足りると判断する。
  • 逆比例の関係を取り違え、「周波数が上がると実行時間も増える」と錯覚してしまう。
  • 「整数倍」の指示を読み落とし、k=2.65 のような実数値を答えてしまう。

FAQ

Q: 8 倍するのはなぜですか?
A: ①の処理は「一つの帯域」の時間が「0.30 × Tframe」と示されているため、八つの帯域分で 8 倍が必要です。
Q: 3 重バッファがあるから余裕ができるのでは?
A: バッファは ADC/DAC と制御部の同時アクセスを防ぐためで、フレームごとの処理完了期限(Tframe)自体は変わりません。よって 1 フレーム内で計算を終える必要があります。
Q: k=4 でも良いのでは?
A: 条件を満たす最小の整数倍を選ぶことで消費電力を最小化できます。k=3 が最小なので 4 を選ぶ必要はありません。

関連キーワード: 整数倍クロック, フレーム処理時間, 逆比例関係, 電力最適化, デジタル信号処理

設問3AVC処理のソフトウエアについて、〔1〕、〔2〕に答えよ。

(1)図4中のに入れる適切な字句を答えよ。

模範解答

ア:dv > 0 and v≧ vt イ:vt ウ:0

解説

解答の論理構成

  1. “音量を変更するとは1フレームごとに音量を変化させ、M又はM+1フレーム間で徐々に目標の音量にする。…目標の音量に到達したら、その次のフレーム…同様の音量調節を行う。”
    ─ 利用者が設定した現在の音量 v が目標音量 vt に到達した瞬間、変化量 dv は以後 0 にし、v をぴったり vt に合わせる必要があります。
  2. 表2より
    ・dv … “音量のフレームごとの変化分であり、初期値は0”
    ・v … “現在の音量”
    ・vt … “AVCの目標の音量”
    ─ したがって「現在の音量が目標を行き過ぎたか到達したか」を判定する条件式が必要です。
  3. フロー図では
    ・負方向に調整中(dv < 0)の場合は “v ≦ vt” でオーバーシュートを判定。
    ・正方向に調整中(dv > 0)の場合は対称性より “v ≧ vt” が必要。
    よって には “dv > 0 and v≧ vt” が入ります。
  4. オーバーシュートが起きたら
    ・v を強制的に目標値に合わせる → = vt
    ・これ以上変化させないようにする → dv を 0 にリセット → = 0
以上より
[ア] dv > 0 and v≧ vt
[イ] vt
[ウ] 0

誤りやすいポイント

  • “dv > 0” と “dv < 0” の対称性を見落とし、v ≧ vt ではなく v > vt としてしまう。
  • オーバーシュート後に dv を ±1 など微小値にしてしまい、次フレームで再び判定が走り続ける実装にしてしまう。
  • [イ] に現在値 v をそのまま入れる誤答。目標ぴったりに合わせるためには vt を代入する。

FAQ

Q: “dv = 0 and v ≠ vt” の判定は何のためですか?
A: 目標音量が変わった直後は dv がまだ 0 で v が追いついていません。この判定で新しい dv を再計算し、追従開始します。
Q: なぜ整数演算なのに割り算 “(vt − v) ÷ M” が使えるのですか?
A: 仕様上 “演算は全て整数演算” なので、商の整数部だけを取り、フレームごとの変化量を決めています。端数は次フレーム以降の再計算で吸収されます。
Q: M+1 フレームになるケースはどこで決まりますか?
A: 端数処理の結果、最終フレームで dv が 0 にならない場合はもう1フレーム追加されるため、実質 M か M+1 フレームになります。

関連キーワード: 音量制御, オーバーシュート, フィードバック, 整数演算, 条件分岐

設問3AVC処理のソフトウエアについて、〔1〕、〔2〕に答えよ。

(2)図4中の網掛けした判定部において、判定結果が“Yes”となるのは、音量がどのような場合か。40字以内で述べよ。

模範解答

現在の音量が目標値に近く、変化量が0となり音量を変更する必要がない場合

解説

解答の論理構成

  1. 網掛け判定部の条件は【問題文】図4より
    • dv = 0
    • v ≠ vt
      の論理積です。
  2. dv は「音量のフレームごとの変化分であり、初期値は0」【問題文】表2。
  3. dv が 0 になるのは、dv ← (vt − v) ÷ M の結果が 0 となったとき、すなわち (vt − v) の絶対値が 未満で丸められた場合です。
  4. それでも v ≠ vt が成立しているため「現在の音量 v は目標音量 vt とわずかにずれている」が「変化量 dv が 0 のため次フレームで変える手段がない」という状況となります。
  5. よって、“Yes” になるのは「音量が目標に極めて近く、これ以上の自動調整が不要なとき」という結論になります。

誤りやすいポイント

  • dv = 0 だけで判断し、“目標音量に到達した” と早合点する。実際には v ≠ vt も同時にチェックしている。
  • (vt − v) ÷ M を浮動小数点で考え、小数部が出るケースを想定してしまう。演算は「全て整数演算」【問題文】であり小数部は切り捨て。
  • M の大小によって挙動が変わることを忘れ、常に同じタイミングで dv = 0 になると考えてしまう。

FAQ

Q: どうして v = vt になっていないのに調整を終えるのですか?
A: 整数演算ゆえ (vt − v) ÷ M が 0 になると変化量 dv を発生させられず、これ以上はハード的に細かい調整ができないためです。
Q: dv が 0 のまま放置するとズレが残りませんか?
A: 人間の聴覚では無視できる程度のズレであるため妥協しています。ズレが大きくなれば dv が再び非 0 になり補正されます。
Q: M を小さくした方が正確になりませんか?
A: 小さくすると追従性は上がりますが、フレームごとの音量変化が大きくなるため聞き心地が悪くなります。トレードオフとして設計値を決めます。

関連キーワード: 音量制御, 目標音量, フレーム処理, 整数演算
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について