話速変換や音域拡張,バーチャル・サラウンド,自動音場補正など(後編) ―― DSPによる音声信号処理の動向と実現法

米本 明弘,桜井 淳宏,岩田 佳英,伊藤 裕二

前編では,音声信号処理の歴史,話速変換の基礎技術,圧縮オーディオを高音質化する技術などについて解説した.今回は,小型スピーカの低音再生やバーチャル・サラウンド,自動音場補正の技術と,それらの実装方法について解説する. (編集部)


 

>>> 前編の記事はこちら


 

4. 小型スピーカでも低音再生を可能にする低音域拡張

 ここ数年,テレビの薄型化が急速に進んできました.見た目にもデザイン性の高い薄型テレビですが,内蔵スピーカに関していえば,その形状やサイズに対する制約がますます大きくなっています.薄型テレビでは,従来のブラウン管テレビのように側面に大きなスピーカを配置できないため,より小型のスピーカがパネルの横側や下側に沿うように配置されているのが一般的です.また,携帯プレーヤのヘッドホンや携帯電話,ノート・パソコンなどでは,さらに小さなスピーカが用いられます.

 しかし,このような口径の小さなスピーカでは物理的に波長の長い低音を再現することが困難です.例えば,デスクトップ・パソコンで用いられるような典型的な小型スピーカでは,再生可能帯域の下限が200Hz前後にあります(図10).実際に,これより下の帯域に入るようなドラムや太鼓,ベースなどの低音が再生できず,物足りなさを感じることが多いと思います.そこで,こうした小型スピーカでも低域を再現する手段として,人間の錯覚を利用した方法(7)が知られています.



図10  小型スピーカの典型的な周波数特性
スピーカの口径は5cmほどで,帯域の加減は200Hz程度.

 

● 錯覚を用いた低域拡張の原理

 錯覚というと目の錯覚が一般的で,同じ長さの線に長短を感じたり,存在しない模様が見えたりする効果がよく知られています.人間の脳は耳に関しても錯覚を起こします.

 低域拡張アルゴリズムで用いられる耳の錯覚とは,「ある基音の整数倍の周波数の音を同時に聴くと,その基音が実際には鳴っていなくても聴こえるように知覚する」というものです(図11).



図11 人間の脳による耳の錯覚
ある基音(100Hz)の整数倍の周波数(200Hz,300Hz,400Hz,500Hz)の音を同時に聴くと,その基音が実際には鳴っていなくても聴こえるように錯覚する.


 例えば図10の特性を持つスピーカで100Hzの音を出そうとしても,小さな音しか出ません.また,イコライザなどで周波数特性を持ち上げられるのも,たかだか200Hz近辺まででしょう.そこで,代わりに100Hzの整数倍の高調波である200Hz,300Hz,400Hzなどの音を発生すると,耳の錯覚によってあたかも100Hzの基音が鳴っているように感じられるのです.

 ここでのポイントは,100Hzの代わりに発生された高調波は図10のスピーカでも十分に再現可能な点です.このように耳の錯覚を利用することで,スピーカの見かけ上の帯域を拡張できます.実際に錯覚の効果を検証してみると,2次,3次,4次の高調波が最も影響が大きく,このうちのどれが欠けても効果が弱まることが分かります.

● 低域拡張のための高調波の生成法

 低域拡張のアルゴリズムは,薄型テレビや携帯機器で用いられるような固定小数点DSPを対象に開発されました.こうした固定小数点DSPでの開発で常に気を遣うのは,各計算におけるオーバフローです.オーバフローを避けるには,ある範囲の入力信号を与えたときに,計算途中および出力信号がどの範囲に収まるかをあらかじめ知っておく必要があります.FIRやIIRなどのフィルタ処理においては,インパルス応答の1ノルム(FIRではフィルタ係数の絶対値和)を考えることによってこの範囲を知ることができます.

 さて,低域拡張に用いられる高調波生成法の一つに,入力信号の絶対値とクリッピングを用いた方法があります.この方法はフーリエ変換の文脈では広く知られた事実に基づいています.単一周波数の正弦波を入力した場合,その絶対値をとることで偶数倍の高調波が発生し,また,ある任意のレベルでクリッピングを行うことで奇数次の高調波が発生することを利用しています(図12).



図12 単一周波数の正弦波入力に対する絶対値とクリッピング
それぞれ偶数次,基数次の高調波が発生する.クリッピング・レベルを適切に設定することによって両者のレベルをそろえる.


 ただし,絶対値処理は非常に単純ですが,クリッピングについてはそれを行うレベルによって発生する各高調波のレベルが変動します.そのためクリッピング・レベルを入力信号に合わせて適切に設定し,所望の高調波レベルを得る必要があります.この点さえ工夫すれば,これらの絶対値とクリッピングは処理が単純であるだけでなく,その出力範囲が入力範囲を超えることはありません.あらかじめ出力信号の範囲を知ることができるという点で,固定小数点DSPに適した方法といえます.

● 低音域拡張をDSPに実装するためのヒント

 図13に今回の低域拡張アルゴリズムのブロック図を示します.このアルゴリズムは音声信号処理用の高精度固定小数点DSPであるTI社製「TAS3108」(図14)に実装されています.図13のブロック図で最初の二つのフィルタ(HPFおよびLPF1)は,高調波生成の対象となる低域信号成分を抽出するためのものです.しかし,これらフィルタのカットオフ周波数は,対象となるスピーカによっては50Hzなどとかなり低域になり,フィルタ係数やフィルタ計算自体に高い精度が求められます.



図13 低域拡張アルゴリズムのブロック図
前段のHPFでは今回のアルゴリズムを用いても再現できない低周波成分を取り除く.次段のLPF1で対象となる低域周波数成分を抽出し,倍音発生器で錯覚を誘導する倍音を生成する.ここでの出力はまだノイズのような音になってお,り続くLPF2で整形することにより低音に知覚する信号となる.最後にEQフィルタで低域を強調し,スピーカに出力する.


 一方,TAS3108はアキュムレータ型のDSPで,アキュムレータに76ビット,データに48ビット,係数に28ビットの幅を持っています.このビット幅によって超低域にカットオフ周波数を持つフィルタであっても,精度を損なうことなく演算が可能です.また,このDSPは135MHz動作で,48kHz/2チャネルの場合,1入力サンプルに対して1400クロックの処理を行えます.これに対し今回の低域拡張アルゴリズムは74サイクルの演算量で動作します.図15に100Hz正弦波入力時の出力例を示します.



図14 TAS3108のDSPコアの簡略ブロック図
TAS3xxxはアキュムレータ型のDSPコアを内蔵する.アキュムレータ,データ,係数のビット幅はそれぞれ76,48.28ビットで,音声信号処理に十分な精度を提供する.また,乗算器は48ビット×28ビットの乗算を1クロックで実行する.実際のDSPコアにはシフタ,絶対値,対数などの算術演算のほk,6k程度のディレイ・ラインなども持つ.

 




図15 100Hzの正弦波を入力したときの出力
TAS3108に100Hzの正弦波を入力したときの実際の出力スペクトル.100zの整数倍の高調波が出ていることが分かる.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日