JP2006245865A - 畳み込み演算方法および畳み込み演算処理プログラム - Google Patents
畳み込み演算方法および畳み込み演算処理プログラム Download PDFInfo
- Publication number
- JP2006245865A JP2006245865A JP2005057167A JP2005057167A JP2006245865A JP 2006245865 A JP2006245865 A JP 2006245865A JP 2005057167 A JP2005057167 A JP 2005057167A JP 2005057167 A JP2005057167 A JP 2005057167A JP 2006245865 A JP2006245865 A JP 2006245865A
- Authority
- JP
- Japan
- Prior art keywords
- data
- convolution
- level
- component data
- component
- 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.)
- Withdrawn
Links
Images
Landscapes
- Reverberation, Karaoke And Other Acoustics (AREA)
Abstract
【課題】畳み込み信号の波形によることなく、処理演算量を減らして効率良く畳み込み演算を行うことができる畳み込み演算方法を提供する。
【解決手段】元音声信号が入力されると振幅をディジタルサンプリングする(S1→S2)。そして、ディジタルサンプリングされた元音声データに対して、インパルス応答の振幅を上位側から所定ビットずつ4分割することで形成される4つの畳み込みデータであるレベルデータ列(HHレベルデータ、HLレベルデータ、LHレベルデータ、LLレベルデータ)をこの順で畳み込み演算する(S3→S4→S5→S6)。この畳み込み演算の際、畳み込み演算に用いる係数データは各レベルデータ列に応じて最適に設定されている。そして、このように畳み込み演算された各データを加算して出力する(S7)。
【選択図】 図1
【解決手段】元音声信号が入力されると振幅をディジタルサンプリングする(S1→S2)。そして、ディジタルサンプリングされた元音声データに対して、インパルス応答の振幅を上位側から所定ビットずつ4分割することで形成される4つの畳み込みデータであるレベルデータ列(HHレベルデータ、HLレベルデータ、LHレベルデータ、LLレベルデータ)をこの順で畳み込み演算する(S3→S4→S5→S6)。この畳み込み演算の際、畳み込み演算に用いる係数データは各レベルデータ列に応じて最適に設定されている。そして、このように畳み込み演算された各データを加算して出力する(S7)。
【選択図】 図1
Description
この発明は、入力信号にインパルス応答等の畳み込み演算処理を効率化した畳み込み演算方法に関するものである。
従来、ホール等の特定音響環境における音を模擬的に再現するために、無響環境で元信号となる音声信号を取得して、この音声信号を予め設定したインパルス応答で畳み込む方法が用いられることがある。
この方法では、取得した音声信号(入力信号)を所定サンプリング周期でサンプリングし、所定のビット数で量子化してディジタル形式の元音声データを形成する。そして、この元音声データを、インパルス応答が各タップのフィルタ係数として設定されているFIRフィルタに順次入力していき、この元音声データにインパルス応答を乗加算(畳み込み)して出力する。このような畳み込み演算では、元音声データの各時間単位での振幅データに対して、インパルス応答の各振幅データを乗加算し、この演算を元音声データの全ての振幅データに対して行う。すなわち、畳み込み演算は次式により表現される演算を行うものである。
従って、この演算処理では、畳み込む信号であるインパルス応答データの振幅データ数が増加する、すなわち、インパルス応答信号の時間軸上の長さが長くなるか、サンプリング周期が短くなる、と、演算量が増加することになる。
このように畳み込み演算では、精度を向上させようとすればデータ演算量が飛躍的に増大してしまうために、より効率的な演算処理方法が各種考案されている。
そして、効率的な演算処理方法として、フーリエ変換と逆フーリエ変換とを用いて、時間領域の処理を周波数領域の処理に変換する方法が考案されている。しかしながら、この方法では、元音声データを入力してから演算処理して出力するまでに遅延が生じるので、汎用なシステムではリアルタイムな処理を行うことができない場合が生じた。
このため、遅延の生じない時間領域での畳み込み演算処理方法として、特許文献1には、畳み込みデータ列を振幅レベルに応じて上位ビットと下位ビットとの2段階の成分データに分割して、それぞれ個別で元音声データに畳み込み演算を行った後に加算する方法が開示されている。
また、特許文献2には、畳み込みデータ列を時間軸上で複数のブロック(セグメント)に分割して、ブロックごとの最大振幅を示す畳み込みデータの振幅に基づきブロック単位で畳み込み演算を行って加算する方法が開示されている。
特開2003−133911公報
特表2002−534831公報
しかしながら、特許文献1に記載の畳み込み演算方法では、上位ビットと下位ビットとの2段階に分割することで処理回路の大型化を抑制することはできるが、全体的な処理量は変わらず、処理演算量を低減することはできなかった。
また、特許文献2に記載の畳み込み演算方法では、畳み込みデータ列の波形によっては、処理演算量を削減することは可能である。しかしながら、ブロック内に大きな振幅の畳み込みデータが1つでも存在すると、この畳み込みデータの振幅(ビット数)に応じて、当該ブロック内の他の畳み込みデータの演算処理も行われるため、効率的に畳み込み演算を行うことができなかった。
従って、本発明の目的は、畳み込みデータ列の波形によることなく、処理演算量を減らして効率良く畳み込み演算を行うことができる畳み込み演算方法を提供することにある。
この発明は、入力信号列に対してインパルス応答等の畳み込みデータ列を積和演算する畳み込み演算方法であって、畳み込みデータ列の各データをそれぞれが連続した所定ビット数毎のビット群からなる複数の成分データに分割し、上位ビットの成分データ列から順で成分データ列毎に積和演算を行うことを特徴としている。
この畳み込み演算方法では、畳み込みデータ列が振幅レベルに応じて複数の成分データ列に分割され、各成分データ列がそれぞれ個別に入力信号列へ畳み込み演算される。この際、上位ビット側の成分データ列から順に畳み込み演算が行われる。
図8は畳み込みデータ列として用いられるインパルス応答の一例を示す図である。
通常、インパルス応答は、図8に示すように、初期に大きな振幅のデータが生じ、徐々に小さな振幅のデータに移行していく形状である。このため、データの振幅レベルに基づく成分データ列毎に存在するデータ量が異なる。具体的には、高い振幅レベルの成分データが含まれる成分データ列ではデータ量が少なく、低い振幅レベルの成分データが含まれる成分データ列ではデータ量が多くなる。このように成分データ列毎で含まれるデータ量が異なることを利用して成分データ列毎に適した畳み込み演算を行い、この後に各演算データを加算することで、全体として適切な畳み込み演算処理が行われる。
図8は畳み込みデータ列として用いられるインパルス応答の一例を示す図である。
通常、インパルス応答は、図8に示すように、初期に大きな振幅のデータが生じ、徐々に小さな振幅のデータに移行していく形状である。このため、データの振幅レベルに基づく成分データ列毎に存在するデータ量が異なる。具体的には、高い振幅レベルの成分データが含まれる成分データ列ではデータ量が少なく、低い振幅レベルの成分データが含まれる成分データ列ではデータ量が多くなる。このように成分データ列毎で含まれるデータ量が異なることを利用して成分データ列毎に適した畳み込み演算を行い、この後に各演算データを加算することで、全体として適切な畳み込み演算処理が行われる。
ここで、図8に示すようなインパルス応答では、高い振幅レベルの成分データ、すなわち上位ビットの成分データはデータの初期部分にのみ局所的に存在するのでデータ量が少ないが、高い振幅レベルの成分データによる演算結果が出力データに与える影響は大きい。一方、低いレベルの成分データ、すなわち下位ビットの成分データは波形の全体を通して略連続してデータが存在するのでデータ量が多いが、低い振幅レベルの成分データによる演算結果が出力データに与える影響は、高い振幅レベルの成分データよりも大きくない。このため、この演算方法では、高い振幅レベルの成分データ列から順に畳み込み演算を行うことで、畳み込み後のデータすなわち出力データに対して影響の大きい部分から優先的に畳み込み演算が行われる。
また、この演算方法は、入力信号列と畳み込みデータ列の成分データ列との積和演算を、有意な値を有する成分データでのみ行うことを特徴としている。
この演算方法では、前述の成分データ列毎の畳み込み演算として、成分データが存在しない、すなわち「0」データとなる時間軸上のアドレスに対しては畳み込み演算を行わないことで、処理演算量が低減される。ここで、「時間軸上のアドレス」とは、時系列の音声データや畳み込みデータを遅延時間に応じて(時系列で)メモリに記憶させたときの該メモリ上のアドレスを示すものである。例えば、前述のように、高い振幅レベルの成分データ列に含まれる有意な値を有する成分データは少なく、時間軸上のアドレスに対して成分データが存在しないアドレスが存在する。これを利用し、成分データが存在するアドレスでのみ畳み込み演算を行い、成分データが存在しないアドレスでの畳み込み演算を省略することで、処理演算量が低減される。
また、この演算方法は、畳み込みデータ列における有意な値を有する成分データの連続を検知して、連続する成分データ群を1つの積和演算のブロックとして処理することを特徴としている。
この演算方法では、「0」でない有意な値の成分データが時系列のアドレス上で連続して存在する場合に、各アドレスとこれに対応する成分データとは、それぞれにアドレスを読み出しながら畳み込み演算されるのではなく、有意な値の成分データが連続するブロックの先頭アドレスを読み出してブロック単位で畳み込み演算が行われる。すなわち、有意な値の成分データが連続するブロックの先頭アドレスを読み出してこのブロックの最初の成分データにより畳み込み演算が行われると、次のアドレスからは該当ブロックのアドレスが終了するまで単にアドレスをインクリメントさせながら畳み込み演算が行われる。
また、この演算方法は、積和演算の演算時間を設定し、該演算時間内に入らない下位ビット側の成分データ列の積和演算を省略することを特徴としている。
この演算方法では、リアルタイムに畳み込み演算が行われる場合で、入力信号列に対して全ての畳み込み演算が行われない場合でも、畳み込み後の出力データに対して影響の大きい、高い振幅レベルの成分データ列で畳み込み演算される。そして、影響の少ない、低い振幅レベルの成分データ列に対しては畳み込み演算が省略される。
また、この発明は、入力信号列に対してインパルス応答等の畳み込みデータ列を積和演算する畳み込み演算処理プログラムであって、畳み込みデータ列の各データを、それぞれが連続した所定ビット数毎のビット群からなる複数の成分データに分割する処理と、積和演算を、上位ビットの成分データ列から順に、成分データ列毎に行う処理と、を含むことを特徴としている。
この構成では、このような畳み込み演算処理プログラムをインストールすることで、汎用の演算処理装置であっても、前述のような畳み込み演算が行われる。
この発明によれば、振幅レベルにより分割された成分データ列毎に適した畳み込み演算処理を実行することで、全体に同じ畳み込み演算処理を実行する場合に生じる不必要な演算を行わないので、より効率的に畳み込み演算処理を行うことができる。さらに、畳み込み後の出力データに対して影響の大きい、高振幅レベルの成分データ列から優先的に畳み込み演算処理を行うことで、途中で畳み込み演算処理を終了しなければならなくなっても、与える影響の大きい部分が優先的に実行されるので、畳み込み演算後の出力データに対する影響を抑制することができる。
また、この発明によれば、各成分データ列において有意な値の成分データが存在しないアドレスでは畳み込み演算処理を行わないことで、畳み込み演算量が減少して、より効率的に畳み込み演算処理を行うことができる。
また、この発明によれば、成分データ列の畳み込み演算を有意な値の成分データが存在する連続するアドレスからなるブロック単位で行うことで、連続するブロックの先頭アドレスを読み出した後には順次アドレスをインクリメントしながら畳み込み演算を行う。この順次アドレスをインクリメントしながら行う畳み込み演算は通常の畳み込み演算処理であり、各アドレスを順次読み出す必要がないので、より効果的に畳み込み演算処理を行うことができる。
また、この発明によれば、畳み込み後の出力データに影響の少ない畳み込みデータ列の振幅レベルの低い部分による畳み込み演算が省略されても、畳み込み後の出力データに影響の大きい畳み込みデータ列の振幅レベルの高い部分が優先的に畳み込み演算処理されるので、リアルタイム処理等のように限られた時間内で、畳み込みデータ列の畳み込み効果をより大きく反映させることができる。
また、この発明によれば、前述の畳み込み演算をプログラム化することで、このプログラムをインストールした汎用の演算処理装置で効果的に畳み込み演算を行うことができる。
本発明の実施形態に係る畳み込み演算方法について図1〜図6を参照して説明する。
なお、以下の説明では、元音声信号の振幅の量子化を32ビットで行い、畳み込みデータ列であるインパルス応答の振幅の量子化も32ビットで行った場合について説明する。
なお、以下の説明では、元音声信号の振幅の量子化を32ビットで行い、畳み込みデータ列であるインパルス応答の振幅の量子化も32ビットで行った場合について説明する。
図1は本実施形態の畳み込み演算の処理フローを示すフローチャートである。
図2はインパルス応答の振幅レベルによる演算方法設定フローを示すフローチャートである。
図3はディジタルサンプリングされたインパルス応答を4つのレベルデータ列に分割する概念を示す説明図である。
図4は4つのレベルデータ列毎の演算概念および演算順序を示す説明図である。
図5は4つのレベルデータ列に対応する係数データの概念を示す説明図である。
図6は図1に示す畳み込み演算の処理フローを示すブロック図である。
図2はインパルス応答の振幅レベルによる演算方法設定フローを示すフローチャートである。
図3はディジタルサンプリングされたインパルス応答を4つのレベルデータ列に分割する概念を示す説明図である。
図4は4つのレベルデータ列毎の演算概念および演算順序を示す説明図である。
図5は4つのレベルデータ列に対応する係数データの概念を示す説明図である。
図6は図1に示す畳み込み演算の処理フローを示すブロック図である。
本実施形態の畳み込み演算では、まず、アナログの元音声信号を受音すると、この元音声信号をディジタルサンプリングして振幅を量子化し、32ビットのディジタル音声データ(本発明の「入力信号列」に相当し、以下、「元音声データ」と称す。)を生成する(S1→S2)。
インパルス応答はディジタルサンプリングされて振幅が32ビットで量子化されており、上位ビット側から8ビットずつ4分割されることで、4つの振幅レベル範囲のレベルデータ列であるHHレベルデータ、HLレベルデータ、LHレベルデータ、LLレベルデータに分割されている。これら、HHレベルデータ、HLレベルデータ、LHレベルデータ、LLレベルデータが本発明の「成分データ列」に相当し、これらが加算された総データが本発明の「畳み込みデータ列」に相当する。
そして、本実施形態の畳み込み演算では、これら、HHレベルデータ、HLレベルデータ、LHレベルデータ、LLレベルデータを元音声データに順次畳み込み演算する。この際、畳み込み順序は、上位ビット側のレベルデータ列から順に行う。すなわち、まずHHレベルデータと元音声データとを畳み込み演算し、2番目にHLレベルデータと元音声データとを畳み込み演算し、3番目にLHレベルデータと元音声データとを畳み込み演算し、最後(4番目)にLLレベルデータと元音声データとを畳み込み演算する(S3→S4→S5→S6)。
また、後述するように、レベルデータ列毎に予め係数データ(図5参照。)が設定されており、この係数データに基づいて畳み込み演算が行われる。
元音声データと各レベルデータ列との畳み込み演算が行われると、次に、これら4つの畳み込み演算後のデータを加算して出力する(S7)。この際、元音声データとHHレベルデータとの畳み込み演算データは上位側に24ビットシフト処理され、元音声データとHLレベルデータとの畳み込み演算データは上位側に16ビットシフト処理され、元音声データとLHレベルデータとの畳み込み演算データは上位側に8ビットシフト処理された後に加算される。
このような処理を行うことにより、元音声データとインパルス応答に基づくインパルス応答データ(畳み込みデータ列)との畳み込み演算が実現される。
ここで、予め設定した処理時間内に全ての演算処理ができないと判断した場合や次の元音声信号が入力された場合、新たな元音声信号に対して畳み込み演算を行う処理を開始するため現在の畳み込み演算を中断する。例えば、現在のレベルデータ列での乗算処理の後で、以降のレベルデータ列での乗算処理が予め設定した処理時間内に終了しないと判断すると、以降のレベルデータ列の乗算処理を中断し、必要なシフト処理および加算処理を行って畳み込み後のデータを出力する。
次に、レベルデータ列毎の係数データの設定方法について図2〜図5を参照して具体的に説明する。
レベルデータ列毎の係数データを設定する場合、必要とするインパルス応答を取得してディジタルサンプリングを行う。この際、サンプリング周期は所定値に設定し、振幅は32ビットで量子化する(S11)。この処理を行うことで、図3の左図のようなディジタルデータ波形h(i)が得られる。
レベルデータ列毎の係数データを設定する場合、必要とするインパルス応答を取得してディジタルサンプリングを行う。この際、サンプリング周期は所定値に設定し、振幅は32ビットで量子化する(S11)。この処理を行うことで、図3の左図のようなディジタルデータ波形h(i)が得られる。
次に、このインパルス応答のディジタルデータを振幅レベルに応じて、それぞれが8ビット単位で構成される4つのレベルデータ列に分割する(S12)。この処理を行うことで、図3の右図のような4つのレベルデータHH(i),HL(i),LH(i),LL(i)が得られる。
次に、4つのレベルデータHH(i),HL(i),LH(i),LL(i)に対してそれぞれ畳み込み演算の際に用いる係数データを設定する。
レベルデータHH(i)は、インパルス応答の各サンプリングデータ(振幅データ)のうちで最上位8ビットの成分データにより構成されるので、このレベルデータ列にデータが存在することが少なく、且つ時間軸上に離散的に存在する。このため、レベルデータHH(i)に対応する係数データ(HH係数データ)は、時間軸上のアドレスと、このアドレスに対応する8ビットの成分データとから構成される。ここで、HH係数データは、成分データが「0」の場合にはアドレスデータを持たない。すなわち、「0」でない有意な値の成分データとこの成分データが存在するアドレスとから構成される。例えば、HH係数データは、図5(A)に示すように、アドレス「aaaa」とこれに対応する成分データ「AAAAAAA1」とで構成される。
レベルデータHH(i)は、インパルス応答の各サンプリングデータ(振幅データ)のうちで最上位8ビットの成分データにより構成されるので、このレベルデータ列にデータが存在することが少なく、且つ時間軸上に離散的に存在する。このため、レベルデータHH(i)に対応する係数データ(HH係数データ)は、時間軸上のアドレスと、このアドレスに対応する8ビットの成分データとから構成される。ここで、HH係数データは、成分データが「0」の場合にはアドレスデータを持たない。すなわち、「0」でない有意な値の成分データとこの成分データが存在するアドレスとから構成される。例えば、HH係数データは、図5(A)に示すように、アドレス「aaaa」とこれに対応する成分データ「AAAAAAA1」とで構成される。
レベルデータHL(i)は、インパルス応答の各サンプリングデータ(振幅データ)のうちで前記レベルデータHH(i)に次ぐ上位8ビットの成分データにより構成される。このレベルデータ列では、レベルデータHH(i)に比べるとデータ数は多いが、下位側の16ビットのレベルデータ列に相当するレベルデータLH(i)、LL(i)よりはデータ数が少ない。そして、時間軸上で連続して成分データが存在することがレベルデータHH(i)よりも多くなる。このため、レベルデータHL(i)に対応する係数データ(HL係数データ)は、時間軸上で連続する成分データの集合を成分データ群として、時間軸上の成分データ群の先頭アドレスと、このアドレスから時系列に連続するデータ数と、このアドレスに対応して時系列に並ぶ各8ビットの成分データ群とから構成される。このように、HL係数データについても、成分データが「0」の場合にはアドレスデータを持たない。例えば、HL係数データは、図5(B)に示すように、アドレス「bbbb」と、データ数「m」と、これらに対応する成分データ群「BBBBBBB1〜BBBBBBBm」とで構成される。
レベルデータLH(i)は、インパルス応答の各サンプリングデータ(振幅データ)のうちで前記レベルデータHL(i)に次ぐ上位8ビットの成分データにより構成される。このレベルデータ列では、レベルデータHH(i),HL(i)のレベルデータ列に比べるとデータ数は多いが、最下位の8ビットのレベルデータ列に相当するレベルデータLL(i)よりはデータ数が少ない。そして、レベルデータHL(i)と同様に、時間軸上で連続して成分データが存在することがレベルデータHH(i)よりも多くなる。このため、レベルデータLH(i)に対応する係数データ(LH係数データ)も、レベルデータHL(i)と同様に、時間軸上で連続する成分データの集合を成分データ群として、時間軸上の成分データ群の先頭アドレスと、このアドレスから時系列に連続するデータ数と、このアドレスに対応して時系列に並ぶ各8ビットの成分データ群とから構成される。このように、LH係数データについても、成分データが「0」の場合にはアドレスデータを持たない。例えば、LH係数データは、図5(C)に示すように、アドレス「cccc」と、データ数「n」と、これらに対応する成分データ群「CCCCCCC1〜CCCCCCCn」とで構成される。
レベルデータLL(i)は、インパルス応答の各サンプリングデータ(振幅データ)のうちで最下位8ビットの成分データにより構成される。通常、このレベルデータ列では、時間軸上の殆ど全てのアドレスで成分データが存在する。このため、レベルデータLL(i)に対応する係数データ(LL係数データ)は時系列に並ぶ各8ビットの成分データ群で構成される。例えば、LL係数データは、図5(D)に示すように、成分データ群「DDDDDDD1〜DDDDDDDn」から構成される。
このように設定された各係数データの畳み込み演算への適用方法について次に説明する。
このように設定された各係数データの畳み込み演算への適用方法について次に説明する。
元音声データとレベルデータHH(i)に対応するHH係数データとを畳み込み演算する場合、元音声データに対して、アドレス情報が付加された成分データを乗算する。すなわち、特定の時間軸上のアドレスに対してのみ元音声データと成分データとの乗算処理を行う(図4(A)参照)。このようなアドレス情報を付加した乗算処理を行うと、通常の単にアドレスをインクリメントしながら乗算を行う処理(後述するレベルデータLL(i)の処理)よりも処理時間を要する。しかしながら、レベルデータHH(i)はデータ数が少ないので、離散的なアドレス利用演算を行わず、成分データがないところに成分データ「0」を用いてアドレスインクリメントしながら乗算処理を行うよりも高速に演算処理することができる。また、成分データ「0」を乗算して出力振幅「0」を得るような不必要な演算を行うことを防止することができる。
元音声データとレベルデータHL(i)に対応するHL係数データおよびレベルデータLH(i)に対応するLH係数データとを畳み込み演算する場合、元音声データに対して、アドレス情報が付加された成分データ群を乗算する。すなわち、特定の時間軸上のアドレスに対して元音声データと成分データとの乗算処理を行い、このアドレスに続きデータ数により指定された連続するアドレスでは、単にアドレスをインクリメントしながら元音声データと成分データとの乗算処理を行う(図4(B)、(C)参照)。このような処理を行うことで、前述のレベルデータHH(i)でのHH係数データによるアドレス管理しながらの乗算処理と、後述するレベルデータLL(i)でのLL係数データによる単にアドレスをインクリメントしながらの乗算処理とを適宜混合させた演算処理となる。レベルデータHL(i),LH(i)は、前述のように、レベルデータHH(i)ほどデータ数は少なくなく、レベルデータLL(i)ほどデータ数が多くないので、このような処理を行うことにより、最適な演算処理速度を得ることができる。
元音声データとレベルデータLL(i)に対応するLL係数データとを畳み込み演算する場合、元音声データに対して、アドレス情報が付加されていない時間軸上に連続する成分データ群を順次乗算する。すなわち、時間軸上の全てのアドレスに対して元音声データと成分データとの乗算処理を行う(図4(D)参照)。このような単にアドレスをインクリメントしながら乗算を行う処理は、本演算方法を実現するDSP等では通常に行われる処理方法であるので、DSPの処理能力に応じた効率的な処理速度で乗算処理を行うことができる。
次に、元音声データのHH係数データによる畳み込み演算データと、元音声データのHL係数データによる畳み込み演算データと、元音声データのLH係数データによる畳み込み演算データとのビットシフト方法について図6を参照して説明する。
32ビットの元音声データが入力されると、この元音声データは、それぞれ8ビットからなるHH係数データ、HL係数データ、LH係数データ、LL係数データと乗算される。これを実現する装置としては、例えば32ビット×8ビットの乗算器がある。元音声データのHH係数データによる畳み込み演算データは上位側に8ビットのシフト処理が行われて、元音声データのHL係数データによる畳み込み演算データに加算される。この加算データはさらに上位側に8ビットのシフト処理が行われて、元音声データのLH係数データによる畳み込み演算データに再加算される。この再加算データはさらに上位側に8ビットのシフト処理が行われて、元音声データのLL係数データによる畳み込み演算データに再々加算される。このような処理を行うことで、インパルス応答の最上位8ビットに対応する演算が24ビット上位側にシフトされ、インパルス応答の次の上位8ビットに対応する演算が16ビット上位側にシフトされ、インパルス応答のさらに次の上位8ビットに対応する演算が8ビット上位側にシフトされ、インパルス応答の最下位8ビットに対応する演算がそのままシフトされない。これにより、インパルス応答の振幅を32ビットで量子化して、このビット数のまま元音声データに畳み込み演算(乗算)を行った場合と同じ出力データを得ることができる。この際、使用されるデータ領域は32ビット×8ビットであり、従来のような32ビット×32ビットよりも小さいデータ領域で演算を行うことができる。
以上のように、本実施形態の畳み込み演算方法を用いることで、インパルス応答の振幅(波形)に応じて最適な方法で畳み込み演算を行うことができる。この際、演算を行うデータ規模が大きくなることはなく、従来よりも小さくすることができる。
また、上位側ビットから順に乗算を行うことで、畳み込み演算後の出力データに影響の大きい、インパルス応答の振幅が大きい部分から順に畳み込み演算が行われる。これにより、例えば、サンプリング周期内に演算が完了しなかった場合、すなわち畳み込み演算の途中で次の元音声信号が入力される場合のように、畳み込み演算を中断しなければならない場合であっても、演算途中の信号に畳み込みデータ列であるインパルス応答の振幅の特徴を反映しやすくなる。この結果、中断処理を行っても、畳み込み後の出力データは、中断処理を行わない場合と、あまり変わらない出力データを得ることができる。具体的に、前述の例で、32ビットの内レベルデータLL(i)を処理できなかった場合でも、インパルス応答の振幅の局所ピークに依存する特徴が表れる上位24ビットのレベルデータHH(i),HL(i),LH(i)で畳み込み演算されるので、前記特徴を有する24ビット精度の出力データを得ることができる。
このような畳み込み演算方法は、プログラム化することが可能である。そして、この畳み込み演算処理プログラムを汎用の演算処理装置にインストールすることで、インストールされた演算処理装置は、畳み込み演算を効果的に行うことができる。
なお、前述の説明では元音声信号、インパルス応答ともに振幅を32ビットで量子化した例を示したが、ビット数はこれに限らず、仕様に応じて適宜設定すればよい。また、インパルス応答データを振幅に基づいて4分割する例について示したが、分割数もこれに限らず、仕様に応じて適宜設定すればよい。
また、前述の説明では、有意な係数データが連続しているかどうかを判断して、畳み込み演算方法を適宜選択しながら処理する方法を示したが、次に示すような方法でも略同様の処理を実現することができ、前述の効果を奏することができる。
図7は他の演算処理方法を説明するための説明図であり、(A)はメモリ等に記憶されている情報を示す表であり、(B)は(A)に示す場合のインパルス応答の時系列振幅データを示す図である。なお、図7では振幅データをレベル別に区別していないが、実際には前述の図3や図4に示すように、振幅データをレベル別に区分した後にこの方法を用いる。
図7に示すように、この畳み込み演算方法では、有意な係数データとともに、隣り合う有意な係数データに対して、時間軸上で後側の係数データとともに、前側の係数データからこの後側の係数データまでのアドレスオフセット量を記憶しておく。例えば、図7では、最初の有意な係数データ「data1」から次の有意な係数データ「data2」までのオフセットが時間軸上のアドレスで10個分であれば、前記次の有意な係数データ「data2」とともにこのアドレスオフセット量「10」を記憶する。
そして、畳み込み演算時には、前側の有意な係数データによる畳み込み演算を行った後、アドレスオフセット量により設定される次の有意な係数データのアドレスに移り、この有意な係数データによる畳み込み演算を行う。この際、アドレスオフセット量は、有意な係数データが連続する場合には「1」とする。そして、最初の有意な係数データのみこの係数データに対応する時間軸上のアドレスをアドレスオフセット量に書き込む。最後の有意な係数データの後にはアドレスオフセット量を「0」として、これに対応する係数データを「0」にする。
このような処理方法を用いることで、有意な係数データに挟まれる無意(「0」)の係数データを時間軸上のアドレスにおいて飛ばし、有意な係数データでのみ畳み込み演算を行うことができる。そして、この方法を用いることにより、有意な係数データのブロックであるか、単独の有意な係数データであるかの選択を行うことなく、記憶されているアドレスオフセット量と係数データのみで畳み込み演算を行うことができる。これにより、前述のような振幅データをレベル別に区分する場合に、それぞれに振幅データの存在の仕方が異なる各レベルの振幅データ列に対して同じアルゴリズムで畳み込み演算を行うことができる。
Claims (5)
- 入力信号列に対してインパルス応答等の畳み込みデータ列を積和演算する畳み込み演算方法であって、
前記畳み込みデータ列の各データを、それぞれが連続した所定ビット数毎のビット群からなる複数の成分データに分割し、
前記積和演算を、上位ビットの成分データ列から順に、成分データ列毎に行うことを特徴とする畳み込み演算方法。 - 前記入力信号列と畳み込みデータ列の成分データ列との積和演算を、有意な値を有する成分データでのみ行う請求項1に記載の畳み込み演算方法。
- 前記畳み込みデータ列における有意な値を有する成分データの連続を検知して、連続する成分データ群を1つの積和演算のブロックとして処理する請求項1または請求項2に記載の畳み込み演算方法。
- 前記積和演算の演算時間を設定し、該演算時間内に入らない下位ビット側の成分データ列の積和演算を省略する請求項1〜請求項3のいずれかに記載の畳み込み演算方法。
- 入力信号列に対してインパルス応答等の畳み込みデータ列を積和演算する畳み込み演算処理プログラムであって、
前記畳み込みデータ列の各データを、それぞれが連続した所定ビット数毎のビット群からなる複数の成分データに分割する処理と、
前記積和演算を、上位ビットの成分データ列から順に、成分データ列毎に行う処理と、を含むことを特徴とする畳み込み演算処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005057167A JP2006245865A (ja) | 2005-03-02 | 2005-03-02 | 畳み込み演算方法および畳み込み演算処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005057167A JP2006245865A (ja) | 2005-03-02 | 2005-03-02 | 畳み込み演算方法および畳み込み演算処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006245865A true JP2006245865A (ja) | 2006-09-14 |
Family
ID=37051812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005057167A Withdrawn JP2006245865A (ja) | 2005-03-02 | 2005-03-02 | 畳み込み演算方法および畳み込み演算処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006245865A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008299004A (ja) * | 2007-05-30 | 2008-12-11 | Casio Comput Co Ltd | 共鳴音付加装置および共鳴音付加プログラム |
JP2008299005A (ja) * | 2007-05-30 | 2008-12-11 | Casio Comput Co Ltd | 共鳴音付加装置および共鳴音付加プログラム |
CN102708870A (zh) * | 2012-04-05 | 2012-10-03 | 广州大学 | 基于长脉冲响应的实时快速卷积系统 |
CN111523652A (zh) * | 2019-02-01 | 2020-08-11 | 阿里巴巴集团控股有限公司 | 处理器及其数据处理方法、摄像装置 |
-
2005
- 2005-03-02 JP JP2005057167A patent/JP2006245865A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008299004A (ja) * | 2007-05-30 | 2008-12-11 | Casio Comput Co Ltd | 共鳴音付加装置および共鳴音付加プログラム |
JP2008299005A (ja) * | 2007-05-30 | 2008-12-11 | Casio Comput Co Ltd | 共鳴音付加装置および共鳴音付加プログラム |
CN102708870A (zh) * | 2012-04-05 | 2012-10-03 | 广州大学 | 基于长脉冲响应的实时快速卷积系统 |
CN111523652A (zh) * | 2019-02-01 | 2020-08-11 | 阿里巴巴集团控股有限公司 | 处理器及其数据处理方法、摄像装置 |
CN111523652B (zh) * | 2019-02-01 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 处理器及其数据处理方法、摄像装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4037841B2 (ja) | 映像補間装置および映像補間方法 | |
JP2008017511A (ja) | 高精度及び高効率を有するディジタルフィルタ | |
US20140355786A1 (en) | Sound synthesis with fixed partition size convolution of audio signals | |
EP2063413A2 (en) | Reverberation effect adding device | |
JP2006245865A (ja) | 畳み込み演算方法および畳み込み演算処理プログラム | |
JP5129794B2 (ja) | 目的信号強調装置とその方法と、プログラム | |
JPH07253965A (ja) | 積和演算器 | |
JP6015431B2 (ja) | サンプリングレート変換装置及びプログラム | |
JP4019759B2 (ja) | 残響付与方法、インパルス応答供給制御方法、残響付与装置、インパルス応答補正装置、プログラム及び該プログラムを記録した記録媒体 | |
JP4877076B2 (ja) | 共鳴音付加装置および共鳴音付加プログラム | |
JP4941106B2 (ja) | 共鳴音付加装置および共鳴音付加プログラム | |
JP5434120B2 (ja) | インパルス応答加工装置、残響付与装置およびプログラム | |
JP6311601B2 (ja) | 多段フィルタ処理装置及び方法 | |
JP2022045086A (ja) | 残響を求めるためのシステム | |
US5703956A (en) | External memory control circuit for sound field processing digital signal processor | |
JP5169584B2 (ja) | インパルス応答加工装置、残響付与装置およびプログラム | |
JP3878601B2 (ja) | デジタルオーディオ放送受信装置及びその動作方法 | |
JP2008141470A (ja) | 1ビットのビットストリームをマルチビットデジタル信号に変換する装置およびプログラム | |
JP5310064B2 (ja) | インパルス応答加工装置、残響付与装置およびプログラム | |
JP6500266B2 (ja) | ディジタル信号処理装置 | |
JP2002049384A5 (ja) | ||
JP2000267682A (ja) | 畳み込み演算装置 | |
JP2003099064A (ja) | 波形修正方法 | |
JPH0690137A (ja) | Firディジタルフィルタ | |
JP2700335B2 (ja) | ゴースト除去装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080122 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090827 |