JP2012095248A - 信号レベル調整装置、信号レベル調整方法、および、プログラム - Google Patents

信号レベル調整装置、信号レベル調整方法、および、プログラム Download PDF

Info

Publication number
JP2012095248A
JP2012095248A JP2010243014A JP2010243014A JP2012095248A JP 2012095248 A JP2012095248 A JP 2012095248A JP 2010243014 A JP2010243014 A JP 2010243014A JP 2010243014 A JP2010243014 A JP 2010243014A JP 2012095248 A JP2012095248 A JP 2012095248A
Authority
JP
Japan
Prior art keywords
signal level
signal
gain
reference value
acquired
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010243014A
Other languages
English (en)
Inventor
Hirohito Komata
博仁 小俣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
JVCKenwood Corp
Original Assignee
JVCKenwood Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by JVCKenwood Corp filed Critical JVCKenwood Corp
Priority to JP2010243014A priority Critical patent/JP2012095248A/ja
Publication of JP2012095248A publication Critical patent/JP2012095248A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Control Of Amplification And Gain Control (AREA)

Abstract

【課題】入力されるオーディオ信号の信号レベルに追従して、オーディオ信号の信号レベルを適切に調整する。
【解決手段】信号取得部11は、オーディオ信号を取得する。記憶部12には、取得されるオーディオ信号の信号レベルの基準値が記憶される。更新部13は、記憶されている基準値が、取得されたオーディオ信号の信号レベルに近づくように、当該基準値を更新する。ゲイン取得部14は、更新された基準値に基づいて、取得されたオーディオ信号の信号レベルが高いほどゲインに基づく調整後の信号レベルが高くなり、かつ、当該調整後の信号レベルが所定の信号レベルよりも小さくなるゲインを取得する。調整部15は、取得されたゲインに基づいて、取得されたオーディオ信号の信号レベルを調整する。
【選択図】図3

Description

本発明は、信号レベル調整装置、信号レベル調整方法、および、プログラムに関する。
オーディオ信号の信号レベルを、所定の信号レベルを超えないように調整することにより、クリップの発生を抑制する信号レベル調整装置が知られている。例えば、特許文献1には、電源電圧が変更されたことをトリガとして、スレッショルドレベルを所定の初期値から徐々に下げる音響装置が開示されている。
特開2009−159537号公報
しかしながら、特許文献1に開示された音響装置においては、一度下がったスレッショルドレベルは、新たなトリガが発生するまで上がらない。従って、特許文献1に開示された音響装置では、例えば、入力されるオーディオ信号の信号レベルが大きく変動する場合に、オーディオ信号の信号レベルを適切に調整することができなかった。このため、入力されるオーディオ信号の信号レベルに追従して、オーディオ信号の信号レベルを適切に調整することが可能な信号レベル調整装置が望まれている。
本発明は、このような状況に鑑みてなされたものであり、入力されるオーディオ信号の信号レベルに追従して、オーディオ信号の信号レベルを適切に調整するのに好適な信号レベル調整装置、信号レベル調整方法、および、プログラムを提供することを目的とする。
上記目的を達成するために、本発明の第1の観点に係る信号レベル調整装置は、
オーディオ信号を取得する信号取得部と、
前記取得されるオーディオ信号の信号レベルの基準値が記憶される記憶部と、
前記記憶されている基準値が、前記取得されたオーディオ信号の信号レベルに近づくように、当該基準値を更新する更新部と、
前記更新された基準値に基づいて、前記取得されたオーディオ信号の信号レベルが高いほどゲインに基づく調整後の信号レベルが高くなり、かつ、当該調整後の信号レベルが所定の信号レベルよりも小さくなるゲインを取得するゲイン取得部と、
前記取得されたゲインに基づいて、前記取得されたオーディオ信号の信号レベルを調整する調整部と、を備える、
ことを特徴とする。
前記ゲイン取得部は、前記取得されたオーディオ信号の信号レベルが高いほど低いゲインを取得してもよい。
前記ゲイン取得部は、前記取得されたオーディオ信号の信号レベルが前記記憶されている基準値に収束する場合に、ゲインに基づく調整後の信号レベルが前記所定の信号レベルに収束するゲインを取得してもよい。
前記更新部は、前記取得されたオーディオ信号の信号レベルが前記記憶されている基準値よりも大きい場合、当該オーディオ信号の信号レベルが当該基準値よりも小さい場合よりも、当該基準値の更新量を大きくしてもよい。
前記信号取得部は、複数のオーディオ信号を取得し、
前記更新部は、前記記憶されている基準値が、前記取得された複数のオーディオ信号の信号レベルのうち、最も大きな信号レベルに近づくように、当該基準値を更新し、
前記ゲイン取得部は、前記複数のオーディオ信号のそれぞれに対するゲインを取得し、
前記調整部は、前記取得された前記複数のオーディオ信号のそれぞれに対するゲインのうち、最も小さいゲインに基づいて、当該取得された複数のオーディオ信号の信号レベルのそれぞれを調整してもよい。
上記目的を達成するために、本発明の第2の観点に係る信号レベル調整方法は、
オーディオ信号を取得する信号取得工程と、
前記取得されるオーディオ信号の信号レベルの基準値が、前記取得されたオーディオ信号の信号レベルに近づくように、当該基準値を更新する更新工程と、
前記更新された基準値に基づいて、前記取得されたオーディオ信号の信号レベルが高いほどゲインに基づく調整後の信号レベルが高くなり、かつ、当該調整後の信号レベルが所定の信号レベルよりも小さくなるゲインを取得するゲイン取得工程と、
前記取得されたゲインに基づいて、前記取得されたオーディオ信号の信号レベルを調整する調整工程と、を備える、
ことを特徴とする。
上記目的を達成するために、本発明の第3の観点に係るプログラムは、
オーディオ信号を取得する信号取得部と、前記取得されるオーディオ信号の信号レベルの基準値が記憶される記憶部と、を備えるコンピュータを、
前記記憶されている基準値が、前記取得されたオーディオ信号の信号レベルに近づくように、当該基準値を更新する更新部、
前記更新された基準値に基づいて、前記取得されたオーディオ信号の信号レベルが高いほどゲインに基づく調整後の信号レベルが高くなり、かつ、当該調整後の信号レベルが所定の信号レベルよりも小さくなるゲインを取得するゲイン取得部、
前記取得されたゲインに基づいて、前記取得されたオーディオ信号の信号レベルを調整する調整部、として機能させる、
ことを特徴とする。
本発明によれば、入力されるオーディオ信号の信号レベルに追従して、オーディオ信号の信号レベルを適切に調整することができる。
本発明の第1実施形態に係る信号レベル調整装置が適用される信号処理システムを示すブロック図である。 本発明の第1実施形態に係る信号レベル調整装置の物理的な構成を示すブロック図である。 本発明の第1実施形態に係る信号レベル調整装置の機能を説明するためのブロック図である。 入力と出力との関係を示す第1の図である。 入力と出力との関係を示す第2の図である。 入力と出力との関係を示す第3の図である。 入力と出力との関係を示す第4の図である。 本発明の第1実施形態に係る信号レベル調整装置が実行する信号レベル調整処理を示すフローチャートである。 図6に示す基準値更新処理を示すフローチャートである。 図6に示すゲイン取得処理を示すフローチャートである。 図6に示すリミッタ解除処理を示すフローチャートである。
以下、図面を参照して、本発明の実施形態に係る信号レベル調整装置について説明する。
(第1実施形態)
まず、図1を参照して、本実施形態に係る信号レベル調整装置が適用される信号処理システムの構成について説明する。
図1に示すように、信号処理システム1000は、信号レベル調整装置100と、信号処理装置200と、D/A(Digital/Analog)コンバータ300と、ボリューム400と、増幅器500と、スピーカ600と、を備える。
信号レベル調整装置100は、信号処理装置200から供給されたオーディオ信号の信号レベルを調整する。具体的には、信号レベル調整装置100は、後段の装置(例えば、D/Aコンバータ300)への出力に歪みが発生しないように、信号処理装置200から供給されたオーディオ信号の信号レベルを、所定の信号レベルを超えないように制限する。つまり、信号レベル調整装置100は、リミッタ装置として機能する。なお、信号処理装置200から供給されるオーディオ信号は、PCM(Pulse Code Modulation)データなどである。PCMデータは、例えば、サンプリング周波数が44.1kHz、量子化ビット数が16ビットのディジタルデータにより表現される。なお、D/Aコンバータ300への出力が歪まないというのは、ディジタルデータの場合、[-2^k]<=ディジタルデータ<=[(2^k)-1](ただし、k:信号バッファのビット長−1。ビット長はD/Aコンバータ300とのオーディオ・インターフェースのフォーマットで決まる。)ということと等価である。
信号処理装置200は、図示しない外部装置から供給されたオーディオ信号に所定の信号処理を施して出力する。信号処理装置200は、種々の処理を実行する装置であり、例えば、入力されたオーディオ信号に所定の値を乗じて出力する増幅器である。この場合、信号処理装置200に入力されるオーディオ信号の信号レベルをx(n)、ゲインをg、信号処理装置200から出力されるオーディオ信号の信号レベルをy’(n)、とすると、y’(n)=gx(n)となる。ただし、nは、ディジタル信号のサンプル番号である。
x(n)<=0dBで、g>1.0のとき、y’(n)<=0dBが成立しなくなる。ここで、信号レベル調整装置100から出力されるオーディオ信号の信号レベルをy(n)とすると、信号レベル調整装置100が信号調整処理をしない場合(信号レベル調整装置100が存在せず、信号処理装置200から出力されるオーディオ信号が直接D/Aコンバータ300に供給される場合と同義)、y(n)=y’(n)となり、0dBを超えたオーディオ信号は、結果として歪みを発生させてしまう。従って、y(n)<=0dBが常に成立するように、信号レベルを調整することが信号レベル調整装置100の責務となる。ここでいう0dBとは、DACに対して出力したデータがこのレベルを超えると歪んでしまうレベルであることを示す。
なお、従来の信号レベル調整装置(リミッタ装置)は、リミッタ処理の結果、オーディオ信号の信号レベルが小さくなり、結果として音量が下がったように聞こえたり、若干の歪みが残ったりする問題があった。本実施形態に係る信号レベル調整装置100は、オーディオ信号の信号レベルが小さくなることを抑制しつつ、歪みが残らないように、オーディオ信号の信号レベルを調整する装置である。
D/Aコンバータ300は、信号レベル調整装置100から供給されたディジタルのオーディオ信号をアナログ信号に変換する。例えば、D/Aコンバータ300は、供給されたオーディオ信号により16ビット(実際はDACとのオーディオ・インターフェースのフォーマットに依存)で表される信号レベルに対応する電圧を出力する。
ボリューム400は、D/Aコンバータ300から供給されたアナログ信号の信号レベルを調整する。ボリューム400は、例えば、ユーザによって回転させられるつまみを有する可変抵抗器を備える。このつまみが回転させられると、可変抵抗器の抵抗値が変更され、ボリューム400から出力されるアナログ信号の信号レベル(電圧値)が調整される。
増幅器500は、ボリューム400から供給されたアナログ信号を増幅する。具体的には、増幅器500は、供給されたアナログ信号の信号レベルに所定のゲインを乗じることにより得られるアナログ信号を出力する。
スピーカ600は、増幅器500から供給されたアナログ信号を音声に変換して、出力する。
次に、図2を参照して、本実施形態に係る信号レベル調整装置の物理的な構成について説明する。
図1に示すように、信号レベル調整装置100は、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、入力装置104、出力装置105、を備える。信号レベル調整装置100が備えるこれらの構成要素は、バスにより相互に接続される。
CPU101は、信号レベル調整装置100の全体の動作を制御する。なお、CPU101は、ROM102に格納されているプログラムに従って動作し、RAM103をワークエリアとして使用する。CPU101は、入力装置104に供給されたオーディオ信号の信号レベルを調整するための演算処理などを実行する。
ROM102には、信号レベル調整装置100の全体の動作を制御するためのプログラムやデータが記憶される。
RAM103は、CPU101のワークエリアとして機能する。つまり、CPU101は、RAM103にプログラムやデータを一時的に書き込み、これらのプログラムやデータを適宜参照する。
入力装置104は、オーディオ信号の入力を受け付ける。入力装置104は、例えば、所定のサンプリング周波数で所定の量子化ビットにより表されるオーディオ信号が入力されるシリアルポートを備える。
出力装置105は、調整後のオーディオ信号を出力する。出力装置105は、例えば、所定のサンプリング周波数で所定の量子化ビットにより表されるオーディオ信号を出力するシリアルポートを備える。
次に、図3を参照して、信号レベル調整装置100が備える基本的な機能について説明する。
図3に示すように、信号レベル調整装置100は、信号取得部11、記憶部12、更新部13、ゲイン取得部14、調整部15、を備える。
信号取得部11は、オーディオ信号を取得する。取得されるオーディオ信号は、信号処理装置200から出力されるオーディオ信号であってもよいし、所定の記憶装置などに記憶されているオーディオ信号であってもよい。信号取得部11は、例えば、入力装置104により構成される。
記憶部12には、信号取得部11により取得されるオーディオ信号の信号レベルの基準値が記憶される。この基準値は、オーディオ信号の信号レベルを調整するためのゲインを求めるための値である。なお、後述するゲイン取得部14によって、この基準値からゲイン取得用係数が求められ、求められたゲイン取得用係数からゲインが求められる。この基準値は、例えば、近い将来に信号レベル調整装置100に供給されるオーディオ信号の信号レベルのピーク値として推定される値であってもよい。記憶部12は、例えば、RAM103により構成される。
更新部13は、記憶部12に記憶されている基準値が、信号取得部11により取得されたオーディオ信号の信号レベルに段階的に近づくように、この基準値を更新する。つまり、更新部13は、供給されたオーディオ信号の信号レベルに基づいて、オーディオ信号の信号レベルを調整するためのゲインを求めるための基準値を更新する。更新部13は、例えば、CPU11により構成される。
ゲイン取得部14は、更新部13により更新された基準値に基づいて、ゲインを取得する。ゲイン取得部14により取得されるゲインは、信号取得部11により取得されたオーディオ信号の信号レベルが高いほどゲインに基づく調整後の信号レベルが高くなり、かつ、この調整後の信号レベルが所定の信号レベルよりも小さくなるゲインである。ゲイン取得部14は、例えば、CPU11により構成される。
調整部15は、ゲイン取得部14により取得されたゲインに基づいて、信号取得部11により取得されたオーディオ信号の信号レベルを調整する。例えば、調整部15は、取得されたオーディオ信号の信号レベルに、取得されたゲインを乗じて得られる信号レベルのオーディオ信号を生成する。調整部15は、例えば、CPU11により構成される。
次に、図4A、4B、5A、5Bを参照して、信号レベル調整装置100に供給されるオーディオ信号(以下、適宜「入力信号」という。)の信号レベルと、信号レベル調整装置100から出力されるオーディオ信号(以下、適宜「出力信号」という。)の信号レベルと、の関係について説明する。
図4Aは、入力信号の信号レベルにかかわらず、ゲインを1に設定したとき(圧縮をかけないとき)の、入力信号の信号レベルと出力信号の信号レベルとの関係を示す図である。なお、ゲインは、圧縮率と同義である。また、図4A、4B、5A、5Bにおいては、横軸を入力信号の信号レベル(単位はdB)とし、縦軸を出力信号の信号レベル(単位はdB)としている。
ここで、線分41は、入力信号の信号レベルが0からCmpPeakInまでにある場合の、入力信号の信号レベルと出力信号の信号レベルとの関係を示す線分である。ここで、CmpPeakInは、入力信号の信号レベルのピーク値として設定される信号レベル(以下、適宜「基準値」という。)である。CmpPeakInは、入力信号の信号レベルに応じて、フレキシブルに変化する。これにより、随時、最適な圧縮が実現される。
このようにフレキシブルに変化させる理由は以下のとおりである。第1の理由は、入力信号のコンテンツによって、ピークレベルが異なるためである(例えば、ピークが−3dBの音楽コンテンツに合わせて圧縮してしまうと、ピークが−6dBしかない音楽コンテンツでは、余分に圧縮がかかってしまう)。第2の理由は、信号レベル調整装置100の前段の信号処理装置200がイコライザ等のレベルブースター機能を備えている場合、この機能がオン/オフされると、入力信号の信号レベルが変わってしまうためである。CmpPeakInには、典型的には、信号レベル調整装置100に供給されたオーディオ信号の信号レベルが設定される。これは、信号レベル調整装置100に実際に供給されたオーディオ信号の信号レベルは、近い将来に信号レベル調整装置100に供給されるオーディオ信号の信号レベルのピーク値に近い値と考えられるためである。ただし、CmpPeakInが急激に変化すると音のつながりが不自然になるなどの問題が生じる場合、CmpPeakInは、時定数に従って段階的に徐々に変化させてもよい。
一方、CmpPeakOutは、出力信号の信号レベルのピーク値として設定される信号レベル(以下、適宜「出力の上限値」という。)である。CmpPeakOutは、信号処理システム1000において、クリップせずに扱うことが可能な信号レベルの最大値である。本実施形態では、CmpPeakOutは1であるものとして説明する。
ここで、信号レベル調整装置100がリミッタ装置として適切に機能するためには、出力信号の信号レベルが出力の上限値を超えないように、ゲインが設定されることが望ましい。しかしながら、図4Aに示すように、ゲインを1固定とすると、入力信号の信号レベルがCmpPeakOutを超えた場合に、出力信号の信号レベルがCmpPeakOutを超えてしまう。かかる構成では、歪みが生じてしまう可能性がある。つまり、入力信号の信号レベルがどのような値であっても、出力信号の信号レベルがCmpPeakOutを超えないようにゲインが設定されることが望ましい。
そこで、図4Bに示すように、入力信号の信号レベルに圧縮をかける(リミットを設ける)ことが考えられる。図4Bにおいて、線分42は、入力信号の信号レベルが0からCmpThrshまでにある場合の、入力信号の信号レベルと出力信号の信号レベルとの関係を示す線分であり、線分43は、入力信号の信号レベルがCmpThrshからCmpPeakInまでにある場合の、入力信号の信号レベルと出力信号の信号レベルとの関係を示す線分である。
図4Bには、入力信号の信号レベルがCmpThrsh以下の場合、ゲインが1であり、入力信号の信号レベルがCmpThrshを超える場合、入力信号の信号レベルの増大に比例して出力信号の信号レベルが増大するように、1よりも小さいゲインが設定された例を示す。なお、入力信号の信号レベルがCmpThrshのとき出力信号の信号レベルがCmpThrshとなり、入力信号の信号レベルがCmpPeakInのとき出力信号の信号レベルがCmpPeakOutとなるように、ゲインが設定される。ここで、CmpThrshは、ゲインが1に設定される入力信号の信号レベルの最大値である。
つまり、CmpThrshを超えた入力信号に対してリミッタ処理が行われる。なお、CmpThrshの値を小さくすると、振幅が激しく変動する入力信号を調整する場合、クリップを検出したときの歪みが残りやすくなる。一方、CmpThrshの値を大きくすると、音量が下がりやすくなる。本実施形態では、歪みの発生や音量の低下が抑制されるように工夫がされている。
ここで、図4Bに示すように、入力信号の信号レベルがCmpThrshを超える場合に、入力信号の信号レベルの増大に比例して出力信号の信号レベルが増大するようにゲインが設定されると、CmpThrshとCmpPeakInとの中間位の信号レベルに対するゲインが小さすぎてしまい、ダイナミックレンジの効率が悪くなってしまう。従って、CmpThrshとCmpPeakInとの中間位の信号レベルに対するゲインが小さくなり過ぎないようにゲインが設定されることが望ましい。
そこで、図5Aに示すように、入力信号の信号レベルがCmpThrshを超える場合に、入力信号の信号レベルが増大するのに従って、出力信号の信号レベルが緩やかに増大するようにゲインを設定する。図5Aにおいて、線分42は、入力信号の信号レベルが0からCmpThrshまでにある場合の、入力信号の信号レベルと出力信号の信号レベルとの関係を示す線分であり、曲線44は、入力信号の信号レベルがCmpThrshからCmpPeakInまでにある場合の、入力信号の信号レベルと出力信号の信号レベルとの関係を示す曲線である。
ここで、曲線44は、入力信号の信号レベルをData、入力信号の信号レベルがDataのときのゲイン(圧縮率)をCmpRatio、として、式(1)のように表現される。なお、sqrtは平方根を表す関数であり、fabsは絶対値を表す関数である。ここで、CmpSlopeは、圧縮係数、つまり、曲線44の接線の傾きを表す関数であり、式(2)のように表現される。ここで、式(1)において、効率よく圧縮する(できる限り低圧縮とする。)ためには、CmpSlopeを工夫する必要がある。このため、式(2)に示すように、入力信号の信号レベルに応じてCmpSlopeをフレキシブルに変化させて、効率の良い圧縮を可能としている。
CmpRatio=(((sqrt(fabs(Data))−sqrt(CmpThrsh))*CmpSlope)+sqrt(CmpPeakIn))/fabs(Data) ・・・ (1)
CmpSlope=(sqrt(CmpPeakOut)−sqrt(CmpThrsh))/(sqrt(CmpPeakIn)−sqrt(CmpThrsh)) ・・・ (2)
式(1)、(2)においては、各値の平方根を使って演算されている。このため、CmpThrshを大きな値としてもパワー感が失われにくくなる。また、CmpThrshを大きな値とすることで、大きな振幅の信号が入力されても、自然な圧縮が実現される。
式(1)では、CmpSlopeの値が大きくなると、CmpRatioの値が大きくなり、CmpSlopeの値が小さくなると、CmpRatioの値が小さくなる。ここで、CmpRatioの値は、クリップが発生しない範囲でできる限り大きい方がよい。従って、CmpSlopeの値ができるだけ大きくなるように式(2)を採用している。
ここで、図5Aに示す例では、入力信号の信号レベルがCmpThrshからLinearInまでの間、ゲインが1よりも大きな値となっている。これは、線分41よりも曲線44の方が上側に表示されていることからも明らかである。ここで、ゲインが1よりも大きな値とならないようにするために、式(1)により求められたゲインが1よりも大きな値が得られた場合、強制的にゲインを1にする手法がある。なお、LinearInは、線分41と曲線44とが交差する入力信号の信号レベル(もしくは、出力信号の信号レベル)である。
図5Bには、入力信号の信号レベルがCmpThrshからLinearInまでの間のゲインが1に設定される例を示す。図5Bにおいて、線分45は、入力信号の信号レベルが0からLinearInまでにある場合の、入力信号の信号レベルと出力信号の信号レベルとの関係を示す線分であり、曲線46は、入力信号の信号レベルがLinearInからCmpPeakInまでにある場合の、入力信号の信号レベルと出力信号の信号レベルとの関係を示す曲線である。本実施形態では、入力信号の信号レベルと出力信号の信号レベルとの関係が図5Bに示す関係になるように、入力信号の信号レベルに基づいて、ゲインが調整される例を示す。
次に、図6に示すフローチャートを用いて、信号レベル調整装置100が実行する信号レベル調整処理について説明する。信号レベル調整装置100は、電源が投入されると、図6に示す信号レベル調整処理を実行する。
まず、CPU101は、入力装置104に供給されたオーディオ信号の信号レベルを取得する(ステップS101)。ここで、取得された信号レベルをDataとする。なお、CPU101は、オーディオ信号が取得できない場合、オーディオ信号が取得されるまで待機する。
CPU101は、ステップS101の処理を終了すると、基準値更新処理を実行する(ステップS102)。基準値更新処理については、図7に示すフローチャートを参照して詳細に説明する。
まず、CPU101は、暫定の基準値を取得する(ステップS201)。ここで、暫定の基準値を表すCmpPeakInNewは、取得された信号レベルを表すDataに基づいて求められる。本実施形態では、DataをCmpPeakInNewとする。なお、Dataに所定の係数を乗じた値をCmpPeakInNewとしてもよい。
CPU101は、ステップS201の処理を終了すると、暫定の基準値が現在の基準値以上であるか否かを判別する(ステップS202)。ここで、現在の基準値がCmpPeakInにより表されるものとすると、CmpPeakInNew≧CmpPeakInであるか否かが判別される。
CPU101は、暫定の基準値が現在の基準値以上であると判別すると(ステップS202:YES)、暫定の基準値に基づいて現在の基準値を上げる(ステップS203)。具体的には、式(3)に基づいて、現在の基準値であるCmpPeakInを求める。ここで、CmpPkAtkTmは、アタック時の時定数を表す。つまり、アタック時は、CmpPkAtkTmの値に応じて、CmpPeakInの値はCmpPeakInNewの値に段階的に近づけられる。なお、CmpPkAtkTm>=1とする。
CmpPeakIn=CmpPeakIn+(CmpPeakInNew−CmpPeakIn)/CmpPkAtkTm ・・・ (3)
CPU101は、ステップS203の処理を終了すると、現在の基準値が暫定の基準値以上であるか否かを判別する(ステップS204)。具体的には、CmpPeakIn≧CmpPeakInNewであるか否かが判別される。
CPU101は、現在の基準値が暫定の基準値以上であると判別すると(ステップS204:YES)、暫定の基準値を現在の基準値に設定する(ステップS205)。具体的には、CmpPeakInに、CmpPeakInNewが代入される。つまり、現在の基準値は、暫定の基準値以下の値に設定される。
一方、CPU101は、暫定の基準値が現在の基準値以上ではないと判別すると(ステップS202:NO)、暫定の基準値に基づいて現在の基準値を下げる(ステップS206)。具体的には、式(4)に基づいて、現在の基準値であるCmpPeakInを求める。ここで、CmpPkRlsTmは、リリース時の時定数を表す。つまり、リリース時は、CmpPkRlsTmの値に応じて、CmpPeakInの値はCmpPeakInNewの値に段階的に近づけられる。なお、CmpPkRlsTm>=1とする。
CmpPeakIn=CmpPeakIn−(CmpPeakIn−CmpPeakInNew)/CmpPkRlsTm ・・・ (4)
CPU101は、ステップS206の処理を終了すると、現在の基準値が暫定の基準値以下であるか否かを判別する(ステップS207)。具体的には、CmpPeakIn≦CmpPeakInNewであるか否かが判別される。
CPU101は、現在の基準値が暫定の基準値以下であると判別すると(ステップS207:YES)、暫定の基準値を現在の基準値に設定する(ステップS208)。具体的には、CmpPeakInに、CmpPeakInNewが代入される。つまり、現在の基準値は、暫定の基準値以上の値に設定される。
CPU101は、ステップS204においてNOと判別した場合、ステップS205の処理を完了した場合、ステップS207においてNOと判別した場合、もしくは、ステップS208の処理を完了した場合、基準値更新処理を終了する。
CPU101は、ステップS102の処理を終了すると、ゲイン取得用の係数を取得する(ステップS103)。ゲイン取得用の係数は、圧縮係数である。ゲイン取得用の係数は、CmpSlopeにより表され、式(2)により求められる。CmpSlopeは、入力信号のピークレベルに応じた係数である。
CPU101は、ステップS103の処理を終了すると、取得された信号レベルがスレッショルドレベル以上であるか否かを判別する(ステップS104)。具体的には、CPU101は、Data≧CmpThrshであるか否かを判別する。
CPU101は、取得された信号レベルがスレッショルドレベル以上であると判別すると、ゲイン取得処理を実行する(ステップS105)。ゲイン取得処理については、図8に示すフローチャートを参照して詳細に説明する。
まず、CPU101は、ゲイン取得用の係数に基づいて暫定のゲインを算出する(ステップS301)。ここで、暫定のゲインを表すCmpRatioNewは、ゲイン取得用の係数を表すCmpSlopeに基づいて、式(5)により求められる。CmpRatioNewは、最新の情報から求められる圧縮率である。
CmpRatioNew=(((sqrt(fabs(Data))−sqrt(CmpThrsh))*CmpSlope)+sqrt(CmpPeakIn))/fabs(Data) ・・・ (5)
CPU101は、ステップS301の処理を終了すると、暫定のゲインが現在のゲイン以下であるか否かを判別する(ステップS302)。ここで、現在のゲインがCmpRatioNowにより表されるものとすると、CmpRatioNew≦CmpRatioNowであるか否かが判別される。
CPU101は、暫定のゲインが現在のゲイン以下であると判別すると(ステップS302:YES)、現在のゲインよりも小さい仮のゲインを設定する(ステップS303)。具体的には、式(6)に基づいて、仮のゲインであるCmpRatioを求める。ここで、CmpAtkTmは、アタック時の時定数を表す。つまり、CmpRatioは、時定数を考慮して設定される圧縮率である。この圧縮率(係数)を入力信号の信号レベルに乗算することでクリップを抑制可能である。また、アタック時は、CmpAtkTmの値に応じて、CmpRatioの値はCmpRatioNewの値に段階的に近づけられる。なお、CmpAtkTm>=1とする。
CmpRatio=CmpRatioNow−(CmpRatioNow−CmpRatioNew)/CmpAtkTm ・・・ (6)
CPU101は、ステップS303の処理を終了すると、仮のゲインが暫定のゲイン以下であるか否かを判別する(ステップS304)。具体的には、CmpRatio≦CmpRatioNewであるか否かが判別される。
CPU101は、仮のゲインが暫定のゲイン以下であると判別すると(ステップS304:YES)、暫定のゲインを仮のゲインに設定する(ステップS305)。具体的には、CmpRatioに、CmpRatioNewが代入される。つまり、仮のゲインは、暫定のゲイン以上の値に設定される。
一方、CPU101は、暫定のゲインが現在のゲイン以下ではないと判別すると(ステップS302:YES)、現在のゲインよりも大きい仮のゲインを設定する(ステップS306)。具体的には、式(7)に基づいて、仮のゲインであるCmpRatioを求める。ここで、CmpRlsTmは、リリース時の時定数を表す。つまり、リリース時は、CmpRlsTmの値に応じて、CmpRatioの値はCmpRatioNewの値に段階的に近づけられる。なお、CmpRlsTm>=1とする。
CmpRatio=CmpRatioNow+(CmpRatioNew−CmpRatioNow)/CmpRlsTm ・・・ (7)
CPU101は、ステップS306の処理を終了すると、仮のゲインが暫定のゲイン以上であるか否かを判別する(ステップS307)。具体的には、CmpRatio≧CmpRatioNewであるか否かが判別される。
CPU101は、仮のゲインが暫定のゲイン以上であると判別すると(ステップS307:YES)、暫定のゲインを仮のゲインに設定する(ステップS308)。具体的には、CmpRatioに、CmpRatioNewが代入される。つまり、仮のゲインは、暫定のゲイン以下の値に設定される。
CPU101は、ステップS304においてNOと判別した場合、ステップS305の処理を完了した場合、ステップS307においてNOと判別した場合、もしくは、ステップS308の処理を完了した場合、ゲイン取得処理を終了する。
一方、CPU101は、取得された信号レベルがスレッショルドレベル以上ではないと判別すると、リミッタ解除処理を実行する(ステップS106)。リミッタ解除処理については、図9に示すフローチャートを参照して詳細に説明する。
まず、CPU101は、ゲインの初期値を暫定のゲインに設定する(ステップS401)。例えば、暫定のゲインを表すCmpRatioNewは、1に設定される。
CPU101は、ステップS401の処理を終了すると、暫定のゲインが現在のゲイン以下であるか否かを判別する(ステップS402)。ここで、現在のゲインがCmpRatioNowにより表されるものとすると、CmpRatioNew≦CmpRatioNowであるか否かが判別される。
CPU101は、暫定のゲインが現在のゲイン以下であると判別すると(ステップS402:YES)、現在のゲインよりも小さい仮のゲインを設定する(ステップS403)。具体的には、式(8)に基づいて、仮のゲインであるCmpRatioを求める。ここで、CmpRlsTmは、リリース時の時定数を表す。つまり、リリース時は、CmpRlsTmの値に応じて、CmpRatioの値はCmpRatioNewの値に段階的に近づけられる。なお、CmpRlsTm>=1とする。
CmpRatio=CmpRatioNow−(CmpRatioNow−CmpRatioNew)/CmpRlsTm ・・・ (8)
CPU101は、ステップS403の処理を終了すると、仮のゲインが暫定のゲイン以下であるか否かを判別する(ステップS404)。具体的には、CmpRatio≦CmpRatioNewであるか否かが判別される。
CPU101は、仮のゲインが暫定のゲイン以上以下であると判別すると(ステップS404:YES)、暫定のゲインを仮のゲインに設定する(ステップS405)。具体的には、CmpRatioに、CmpRatioNewが代入される。つまり、仮のゲインは、暫定のゲイン以上の値に設定される。
一方、CPU101は、暫定のゲインが現在のゲイン以下ではないと判別すると(ステップS402:YES)、現在のゲインよりも大きい仮のゲインを設定する(ステップS406)。具体的には、式(7)に基づいて、仮のゲインであるCmpRatioを求める。
CPU101は、ステップS406の処理を終了すると、仮のゲインが暫定のゲイン以上であるか否かを判別する(ステップS407)。具体的には、CmpRatio≧CmpRatioNewであるか否かが判別される。
CPU101は、仮のゲインが暫定のゲイン以上であると判別すると(ステップS407:YES)、暫定のゲインを仮のゲインに設定する(ステップS408)。具体的には、CmpRatioに、CmpRatioNewが代入される。つまり、仮のゲインは、暫定のゲイン以下の値に設定される。
CPU101は、ステップS404においてNOと判別した場合、ステップS405の処理を完了した場合、ステップS407においてNOと判別した場合、もしくは、ステップS408の処理を完了した場合、リミッタ解除処理を終了する。
CPU101は、ステップS105もしくはステップS106の処理を終了すると、仮のゲインを現在のゲインに設定する(ステップS107)。具体的には、CmpRatioNowに、CmpRatioが代入される。
CPU101は、ステップS107の処理を終了すると、現在のゲインがゲインの上限値を超えるか否かを判別する(ステップS108)。例えば、CmpRatioNow>1であるか否かが判別される。
CPU101は、現在のゲインがゲインの上限値を超えると判別すると(ステップS108:YES)、ゲインの上限値を現在のゲインに設定する(ステップS109)。例えば、CmpRatioNowに1が代入される。つまり、現在のゲインは、ゲインの上限値以下の値に設定される。
CPU101は、ステップS108においてNOと判別した場合、もしくは、ステップS109の処理を終了した場合、現在のゲインに基づいて信号レベルを調整する(ステップS110)。例えば、ゲイン調整後のオーディオ信号の信号レベルをDataNewとすると、DataNewは式(10)により表される。
DataNew=Data*CmpRatioNow ・・・ (10)
CPU101は、ステップS110の処理を終了すると、ステップS101に処理を戻す。
本実施形態に係る信号レベル調整装置100によれば、供給されるオーディオ信号の信号レベルが時間の経過とともに大きく変動する場合であっても、常に適切なリミッタ処理が可能となる。例えば、前段の信号処理装置200により0dBを大きく超えるようなブースト処理がなされる場合があっても(例えば、信号処理装置200がEQのようなレベルブースターの場合であっても)、広いダイナミックレンジを確保しつつ、オーディオ信号のクリップを最大限に抑えることができる。その理由は、供給されるオーディオ信号のピークレベルを監視し、このピークレベルが、出力されるオーディオ信号の信号レベルの最大値に対応するようにゲイン(圧縮率)を設定し、かつ、0dBを超えない範囲ではあまり圧縮をかけないようにゲインを設定しているためである。
また、CmpPeakInは、時定数(CmpPkAtkTmもしくはCmpPkRlsTm)に従って、段階的に変化する。さらに、CmpRatioは、時定数(CmpAtkTmもしくはCmpRlsTm)に従って、段階的に変化する。このため、音のつながりが不自然になることを抑制できる。なお、CmpPkAtkTm、CmpPkRlsTm、CmpAtkTm、CmpRlsTmに1を設定することにより、時定数を持たなくすることができる。この場合、入力信号の信号レベルの変化に応じて、速やかに圧縮率が変化する。
(第2実施形態)
第1実施形態では、信号レベル調整装置100に供給されるオーディオ信号が1つである例を示した。しかし、本発明において、信号レベル調整装置100に供給されるオーディオ信号が2つ以上であってもよい。例えば、5.1chサラウンドシステムにおいて使用される6つのオーディオ信号が信号レベル調整装置100に供給されてもよい。このように、互いに依存関係にあると考えられる複数のオーディオ信号の信号レベルは、一括して調整されることが好ましい。
例えば、信号レベル調整装置100は、供給される複数のオーディオ信号の信号レベルに基づいて、複数のオーディオ信号の信号レベルのそれぞれに共通して乗じる1つのゲインを取得してもよい。以下、本実施形態に係る信号レベル調整装置100が実行する信号レベル調整処理について説明する。なお、当該信号レベル調整処理は、基本的には、第1実施形態において、図6〜9において説明した信号レベル調整処理と同様である。従って、ここでは、第1実施形態と異なる部分についてのみ説明する。
まず、CPU101は、ステップS101において、複数のチャネルのそれぞれに供給された、複数のオーディオ信号の信号レベルを全て取得する。ここで、入力装置104は、複数のチャネルを備え、1つのチャネルには、1つのオーディオ信号が供給されるものとする。また、出力装置105は、複数のチャネルを備え、1つのチャネルからは、1つのオーディオ信号が出力されるものとする。
そして、CPU101は、ステップS201において、例えば、複数のオーディオ信号の信号レベルのうち、最大の信号レベルを暫定の基準値として取得する。
その後、CPU101は、ステップS202〜S208において、現在の基準値を設定する。
そして、CPU101は、ステップS103において、ゲイン取得用の係数を算出する。
次に、CPU101は、複数のチャネルのそれぞれについて、ステップS104〜S106の処理を実行する。具体的には、CPU101は、ステップS104において、選択した1つのチャネルについて、取得されたオーディオ信号の信号レベルがスレッショルドレベル以上であるか否かを判別する。そして、CPU101は、取得されたオーディオ信号の信号レベルがスレッショルドレベル以上であると判別すると、ステップS105において、当該選択した1つのチャネルについて、ゲイン取得処理を実行する。一方、CPU101は、取得されたオーディオ信号の信号レベルがスレッショルドレベル以上ではないと判別すると、ステップS106において、当該選択した1つのチャネルについて、ゲイン取得処理を実行する。
ここで、CHをチャネル番号として、CHチャネルにおいて取得されたオーディオ信号の信号レベルは、DATA[CH]であるものとする。また、暫定のゲインを表すCmpRatioNewは、チャネル毎に用意され、各チャネルの暫定のゲインは、CmpRatioNew[CH]であるものとする。さらに、仮のゲインを表すCmpRatioは、チャネル毎に用意され、各チャネルの仮のゲインは、CmpRatio[CH]であるものとする。ただし、現在のゲインを表すCmpRatioNowは、全てのチャネルに共通して1つ用意されるものとする。
そして、CPU101は、ステップS107において、仮のゲインを現在のゲインに設定する。例えば、全てのチャネルについて取得された仮のゲインのうち、最小の仮のゲインが現在のゲインに設定される。具体的には、全てのチャネルについて取得された仮のゲインを表すCmpRatio[CH]のうち、最小のものが、現在のゲインを表すCmpRatioNowに設定される。なお、オーディオ信号の信号レベルが0のチャネルは除外されて、CmpRatioNowが設定される。
CPU101は、ステップS108において、現在のゲインがゲインの上限値を超えると判別した場合、ステップS109において、ゲインの上限値を現在のゲインに設定する。
そして、CPU101は、ステップS110において、現在のゲインに基づいて、全てのチャネルのオーディオ信号の信号レベルを調整する。例えば、各チャネルにおける、ゲイン調整後のオーディオ信号の信号レベルをDataNew[CH]とすると、DataNew[CH]は式(11)により表される。
DataNew[CH]=Data[CH]*CmpRatioNow ・・・ (11)
CPU101は、ステップS110の処理を終了すると、ステップS101に処理を戻す。
本実施形態に係る信号レベル調整装置100によれば、信号レベルが互いに依存関係にある複数のオーディオ信号に対して、広いダイナミックレンジを確保しつつ、複数のオーディオ信号の信号レベルのそれぞれが所定の値を超えてしまうことを抑制することができる。
(変形例)
本発明は、上記実施形態に開示したものに限られない。
第1、2の実施形態では、図5Bに示すように、計算により求められたゲインが1を超える場合、ゲインを強制的に1にする例(つまり、ゲインの上限値が1である例)を示した。しかし、図5Aに示すように、1を超えるゲインが許容される(つまり、ゲインの上限値が1を超える)ようにしてもよい。
第1、2の実施形態では、信号レベル調整装置100をリミッタ装置として機能させるために、ゲインの初期値を1にする例を示した。しかし、ゲインの初期値は1を超える値にすることもできる。例えば、ゲインの初期値を2(約6dB)に設定し、CmpThrshを低めの値(例えば、−50dB)に設定することで、0dB以下の入力信号の信号レベルを増幅することができる。
第1、2の実施形態では、出力の上限値を表すCmpPeakOutが1である例を示した。しかし、CmpPeakOutは、1を超える値であっても良いし、1未満の値であっても良い。
また、信号レベル調整装置100は、CPU101に代えてまたはCPU1001と協働するDSP(Digital Signal Processor)を備えていてもよい。さらに信号レベル処理装置100と信号処理装置200は、共通するCPU101またはDSPにより実現されてもよい。
なお、本発明に係る信号レベル調整装置は、専用のシステムによらず、通常のコンピュータシステムを用いても実現可能である。例えば、コンピュータに、上記動作を実行するためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read−Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)などのコンピュータ読み取り可能な記録媒体に記憶して配布し、これをコンピュータシステムにインストールすることにより、上述の処理を実行する信号レベル調整装置を構成しても良い。
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを記憶しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
11 信号取得部
12 記憶部
13 更新部
14 ゲイン取得部
15 調整部
100 信号レベル調整装置
101 CPU
102 ROM
103 RAM
104 入力装置
105 出力装置
200 信号処理装置
300 D/Aコンバータ
400 ボリューム
500 増幅器
600 スピーカ
1000 信号処理システム

Claims (7)

  1. オーディオ信号を取得する信号取得部と、
    前記取得されるオーディオ信号の信号レベルの基準値が記憶される記憶部と、
    前記記憶されている基準値が、前記取得されたオーディオ信号の信号レベルに近づくように、当該基準値を更新する更新部と、
    前記更新された基準値に基づいて、前記取得されたオーディオ信号の信号レベルが高いほどゲインに基づく調整後の信号レベルが高くなり、かつ、当該調整後の信号レベルが所定の信号レベルよりも小さくなるゲインを取得するゲイン取得部と、
    前記取得されたゲインに基づいて、前記取得されたオーディオ信号の信号レベルを調整する調整部と、を備える、
    ことを特徴とする信号レベル調整装置。
  2. 前記ゲイン取得部は、前記取得されたオーディオ信号の信号レベルが高いほど低いゲインを取得する、
    ことを特徴とする請求項1に記載の信号レベル調整装置。
  3. 前記ゲイン取得部は、前記取得されたオーディオ信号の信号レベルが前記記憶されている基準値に収束する場合に、ゲインに基づく調整後の信号レベルが前記所定の信号レベルに収束するゲインを取得する、
    ことを特徴とする請求項1又は2に記載の信号レベル調整装置。
  4. 前記更新部は、前記取得されたオーディオ信号の信号レベルが前記記憶されている基準値よりも大きい場合、当該オーディオ信号の信号レベルが当該基準値よりも小さい場合よりも、当該基準値の更新量を大きくする、
    ことを特徴とする請求項1乃至3のいずれか1項に記載の信号レベル調整装置。
  5. 前記信号取得部は、複数のオーディオ信号を取得し、
    前記更新部は、前記記憶されている基準値が、前記取得された複数のオーディオ信号の信号レベルのうち、最も大きな信号レベルに近づくように、当該基準値を更新し、
    前記ゲイン取得部は、前記複数のオーディオ信号のそれぞれに対するゲインを取得し、
    前記調整部は、前記取得された前記複数のオーディオ信号のそれぞれに対するゲインのうち、最も小さいゲインに基づいて、当該取得された複数のオーディオ信号の信号レベルのそれぞれを調整する、
    ことを特徴とする請求項1乃至4のいずれか1項に記載の信号レベル調整装置。
  6. オーディオ信号を取得する信号取得工程と、
    前記取得されるオーディオ信号の信号レベルの基準値が、前記取得されたオーディオ信号の信号レベルに近づくように、当該基準値を更新する更新工程と、
    前記更新された基準値に基づいて、前記取得されたオーディオ信号の信号レベルが高いほどゲインに基づく調整後の信号レベルが高くなり、かつ、当該調整後の信号レベルが所定の信号レベルよりも小さくなるゲインを取得するゲイン取得工程と、
    前記取得されたゲインに基づいて、前記取得されたオーディオ信号の信号レベルを調整する調整工程と、を備える、
    ことを特徴とする信号レベル調整方法。
  7. オーディオ信号を取得する信号取得部と、前記取得されるオーディオ信号の信号レベルの基準値が記憶される記憶部と、を備えるコンピュータを、
    前記記憶されている基準値が、前記取得されたオーディオ信号の信号レベルに近づくように、当該基準値を更新する更新部、
    前記更新された基準値に基づいて、前記取得されたオーディオ信号の信号レベルが高いほどゲインに基づく調整後の信号レベルが高くなり、かつ、当該調整後の信号レベルが所定の信号レベルよりも小さくなるゲインを取得するゲイン取得部、
    前記取得されたゲインに基づいて、前記取得されたオーディオ信号の信号レベルを調整する調整部、として機能させる、
    ことを特徴とするプログラム。
JP2010243014A 2010-10-29 2010-10-29 信号レベル調整装置、信号レベル調整方法、および、プログラム Pending JP2012095248A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010243014A JP2012095248A (ja) 2010-10-29 2010-10-29 信号レベル調整装置、信号レベル調整方法、および、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010243014A JP2012095248A (ja) 2010-10-29 2010-10-29 信号レベル調整装置、信号レベル調整方法、および、プログラム

Publications (1)

Publication Number Publication Date
JP2012095248A true JP2012095248A (ja) 2012-05-17

Family

ID=46388079

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010243014A Pending JP2012095248A (ja) 2010-10-29 2010-10-29 信号レベル調整装置、信号レベル調整方法、および、プログラム

Country Status (1)

Country Link
JP (1) JP2012095248A (ja)

Similar Documents

Publication Publication Date Title
US9294062B2 (en) Sound processing apparatus, method, and program
US9425747B2 (en) System and method of reducing power consumption for audio playback
TWI429301B (zh) 音量控制裝置與方法
CN109217834B (zh) 增益调整方法、音频设备及可读存储介质
CN105245195B (zh) 用于具有音质保护的失真减少多频带压缩器的技术
JP3146973U (ja) 動的イコライジング
KR20070068379A (ko) 오디오 신호의 인식된 라우드니스 및/또는 인식된 스펙트럼밸런스 계산 및 조정
WO2005071830A1 (en) System for audio signal processing
JP2010500613A (ja) 緩慢段階と急速段階の音声ピーク値制限
JP5216125B2 (ja) 動的音響最適化方法および装置
CN104518746B (zh) 电子装置与增益控制方法
JP2006324786A (ja) 音響信号処理装置およびその方法
JP2012095248A (ja) 信号レベル調整装置、信号レベル調整方法、および、プログラム
JP2009171057A (ja) 増幅回路
JP5128269B2 (ja) 音響装置
JP4803193B2 (ja) オーディオ信号の利得制御装置および利得制御方法
JP5611029B2 (ja) 音響装置及び出力音制御方法
JP5585432B2 (ja) 音響信号処理装置および方法、並びに、プログラム
JP5233792B2 (ja) 増幅回路
JP2015226285A (ja) 音声信号処理装置およびそのプログラム
JP5240039B2 (ja) 周波数特性調整装置、プログラム、及び周波数特性調整方法
JP2010233059A (ja) 増幅回路
JP2015173343A (ja) オーディオ信号処理装置
JP2008167152A (ja) 増幅装置、増幅方法及び増幅プログラム
AU7827801A (en) Dynamic reduction for dynamics-limited audio systems