JP2010219582A - フィルタリング装置、フィルタリング方法、プログラムおよびサラウンドプロセッサ - Google Patents

フィルタリング装置、フィルタリング方法、プログラムおよびサラウンドプロセッサ Download PDF

Info

Publication number
JP2010219582A
JP2010219582A JP2009060442A JP2009060442A JP2010219582A JP 2010219582 A JP2010219582 A JP 2010219582A JP 2009060442 A JP2009060442 A JP 2009060442A JP 2009060442 A JP2009060442 A JP 2009060442A JP 2010219582 A JP2010219582 A JP 2010219582A
Authority
JP
Japan
Prior art keywords
unit
fourier transform
fast fourier
length
zero
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
Application number
JP2009060442A
Other languages
English (en)
Inventor
Yuki Yamamoto
優樹 山本
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2009060442A priority Critical patent/JP2010219582A/ja
Priority to CN201010129061XA priority patent/CN101834581B/zh
Priority to US12/719,508 priority patent/US8433738B2/en
Publication of JP2010219582A publication Critical patent/JP2010219582A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/0211Frequency selective networks using specific transformation algorithms, e.g. WALSH functions, Fermat transforms, Mersenne transforms, polynomial transforms, Hilbert transforms
    • H03H17/0213Frequency domain filters using Fourier transforms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04SSTEREOPHONIC SYSTEMS 
    • H04S3/00Systems employing more than two channels, e.g. quadraphonic
    • H04S3/008Systems employing more than two channels, e.g. quadraphonic in which the audio signals are in digital form, i.e. employing more than two discrete digital channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04SSTEREOPHONIC SYSTEMS 
    • H04S2400/00Details of stereophonic systems covered by H04S but not provided for in its groups
    • H04S2400/01Multi-channel, i.e. more than two input channels, sound reproduction with two speakers wherein the multi-channel information is substantially preserved

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Signal Processing (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】長さNの離散時間信号x[n]と長さMのフィルタ係数h[m]の畳み込み演算の演算量等を低減する。
【解決手段】N,Mは、M-1≦(P-N)/2を満足する。離散時間信号x[n]を、x1[n],x2[n]に分割し、x1[n]の長さをP/2-(M-1)、x2[n]の長さを残りの長さとし、x1[n]及びx2[n]にゼロ詰めをして、長さP/2、Qのゼロ詰めデータx1′[n],x2′[n]を得る。Qは、N2+M-1以上の最小の2の乗数である。h[m]にゼロ詰めをして、x1′[n],x2′[n]に対応したゼロ詰めデータh1′[n],h2′[n]を得る。各ゼロ詰めデータにFFTを行い、周波数領域で乗算し、その乗算結果に対してIFFTを行って、2つの離散時間信号y1[n],y2[n]を得て、重複加算法で加算して、出力離散時間信号y[n]を得る。Q≦P/2となるため、非分割方式より、演算量等を低減できる。
【選択図】図2

Description

この発明は、フィルタリング装置、フィルタリング方法、プログラムおよびサラウンドプロセッサに関し、詳しくは、離散時間信号とフィルタ係数の畳み込み演算を、高速フーリエ変換を用いて周波数領域での乗算により行うフィルタリング装置等に関する。
長さN(Nは整数)の離散時間信号を、長さM(Mは整数)のフィルタ係数を持つFIR(Finiteimpulse Response:有限インパルス応答)フィルタに入力した場合の出力を求める方法を考える。FIRフィルタは、インパルス応答の継続時間が有限のフィルタである。長さNの離散時間信号をx[n](n=0,1,2,・・・,N−1)、長さMのフィルタ係数をh[m](m=0,1,2,・・・,M−1)、出力をy[n](n=0,1,2,・・・,N−1)とする。ここで、x[n]およびh[m]は実数であり、N≧M−1を満たしているものとする。
フィルタ係数がh[m]のFIRフィルタに離散時間信号x[n]を入力した場合の出力y[n]は、(1)式に示すように、時間領域での畳み込み演算により求まることが知られている。以降、時間領域での畳み込み演算を「方式A」と呼ぶことにする。
Figure 2010219582
「方式A」の他に、x[n]、h[m]のDFT(Discrete Fourier Transform:離散フーリエ変換)を求め、これらを乗算し、IDFT(Inverse Discrete Fourier Transform:逆離散フーリエ変換)することにより、「方式A」と同値の演算結果を得る方法もある。
x[n]、h[m]のN点DFTをそれぞれX[k]、H[k]とし、k=0,1,2,・・・,N−1とする。x[n]、h[m]のN点DFTを求め、乗算を行った結果をY′[k]とする。この場合、Y′[k]は、(2)式で表される、
Figure 2010219582
ここで、Y′[k]のN点IDFTをy′[n]とすると、循環畳み込み定理より、y′[n]は、(3)式のように表わされる。
Figure 2010219582
ここで、x[n−m]Nは、x[n]を右にmだけ循環シフトしたものである。すなわち、x[n]とh[m]を、DFTを用いて周波数領域で乗算したものの逆DFTは、時間領域でx[n]を右にmだけ循環シフトした信号とh[m]との畳み込み演算となり、y[n]とy′[n]は同値とはならない。
そこで、x[n]の後ろに(M−1)個のゼロを詰め行うことにより、周波数領域で乗算し、IDFTを行って得た結果y′[n]と、時間領域での畳み込み演算結果y[n]を同値にする方法が知られている(例えば、非特許文献1参照)。すなわち、このようなゼロ詰めの処理を行うことで、時間領域での畳み込み演算を周波数領域での乗算に置き換えることができる。
ここで、計算コストの削減のためDFTではなくFFT(Fast FourierTransform:高速フーリエ変換)を用いることにする。この場合、FFT処理前に、データ長を2の乗数にする必要がある。すなわち、FFTを用いて周波数領域での乗算により時間領域での畳み込み演算と同値の演算を実現する場合、循環畳み込み定理による制約およびFFTを行うための制約を考慮し、x[n]の後ろに(M−1)個以上の0を詰め、その長さ(変換長)を2の乗数にして演算を行わねばならない。
このような処理を行い、FFTを用いて周波数領域での乗算により畳み込みを実現する方法を「方式B」と呼ぶことにする。N,Mが大きくなるほど、演算量の面において、「方式B」は「方式A」に優位であることが知られている。
図13は、変換長をL(Lは2の乗数)とおき、x[n]とh[m]の畳み込み演算を「方式B」で行うフィルタリング装置200の構成例を示している。このフィルタリング装置200は、ゼロ詰め部201と、高速フーリエ変換部202と、ゼロ詰め部203と、高速フーリエ変換部204と、乗算部205と、逆高速フーリエ変換部206を有している。
ゼロ詰め部201は、長さNの離散時間信号x[n](0≦n≦N−1)の後に(L−N)個のゼロを詰めて、ゼロ詰めデータx′[n](0≦n≦L−1)を得る。高速フーリエ変換部202は、ゼロ詰め部201で得られたゼロ詰めデータx′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX[k](0≦k≦L−1)を得る。
ゼロ詰め部203は、長さMのフィルタ係数h[m](0≦m≦M−1)の後に(L−M)個のゼロを詰めて、ゼロ詰めデータh′[n](0≦n≦L−1)を得る。高速フーリエ変換部204は、ゼロ詰め部203で得られたゼロ詰めデータh′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データH[k](0≦k≦L−1)を得る。
乗算部205は、高速フーリエ変換部202で得られた周波数領域データX[k]と高速フーリエ変換部204で得られた周波数領域データH[k]とを乗算して、乗算結果Y[k](0≦k≦L−1)を得る。そして、逆高速フーリエ変換部206は、乗算部205で得られた乗算結果Y[k]に対してIFFT(逆高速フーリエ変換)を行って、出力離散時間信号y[n](0≦n≦L−1)を得る。
図13のフィルタリング装置200の動作を説明する。フィルタリング対象の長さNの離散時間信号x[n]は、ゼロ詰め部201に供給される。このゼロ詰め部201では、長さNの離散時間信号x[n]の後に(L−N)個のゼロが詰められ、長さ(変換長)Lのゼロ詰めデータx′[n]が得られる。このゼロ詰めデータx′[n]は高速フーリエ変換部202に供給される。この高速フーリエ変換部202では、ゼロ詰めデータx′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX[k](0≦k≦L−1)が得られる。
また、長さMのフィルタ係数h[m]は、ゼロ詰め部203に供給される。このゼロ詰め部203では、長さMのフィルタ係数h[m]の後に(L−M)個のゼロが詰められ、長さ(変換長)Lのゼロ詰めデータh′[n]が得られる。このゼロ詰めデータh′[n]は高速フーリエ変換部204に供給される。この高速フーリエ変換部204では、ゼロ詰めデータh′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データH[k]が得られる。
高速フーリエ変換部202で得られた周波数領域データX[k]および高速フーリエ変換部204で得られた周波数領域データH[k]は乗算部205に供給される。この乗算部205では、周波数領域データX[k]と周波数領域データH[k]が乗算されて、乗算結果Y[k]が得られる。この乗算結果Y[k]は逆高速フーリエ変換部206に供給される。この逆高速フーリエ変換部206では、乗算結果Y[k]に対してIFFT(逆高速フーリエ変換)が行われて、出力離散時間信号y[n]が得られる。
Alan V. Oppenheim, Ronald W.Schafer: "DISCRETE-TIME SIGNAL PROCESSING", PRENTICLE HALL, pp.548-560
上述したように、「方式B」においては、時間領域での畳み込み演算と同値の演算を行うために長さNの離散時間信号x[n]の後ろに(M−1)個以上のゼロを詰め、さらにFFTを行うためにその長さ(変換長)を2の乗数にして演算を行わねばならない。
ここで、N以上の最小の2の乗数をPとする。図14(a)は、(N+M−1)の値がPより少し小さい場合を示している。また、図14(b)は、(N+M−1)の値がPより少し大きい場合を示している。このように、(N+M−1)の値がPより少し大きい場合は、少し小さい場合に比べ、変換長がPだけ異なり、演算量、メモリ使用量とも約2倍となってしまう。
この発明の目的は、離散時間信号とフィルタ係数の畳み込み演算を、高速フーリエ変換を用いて周波数領域での乗算により行う場合にあって、演算量およびメモリ使用量の低減を図ることにある。
この発明の概念は、
長さN(Nは整数)の離散時間信号を、長さM(Mは整数、N≧M−1)のフィルタ係数を持つFIRフィルタに入力した場合の出力を得るフィルタリング装置であって、
上記長さNの離散時間信号を複数分割して、複数個の離散時間信号を得る分割部と、
上記分割部で得られた各離散時間信号の後に適当な数のゼロを詰めて、長さが2の乗数となる複数個のゼロ詰めデータを得る第1のゼロ詰め部と、
上記第1のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第1の高速フーリエ変換部と、
上記長さMのフィルタ係数の後にゼロを詰めて、上記第1のゼロ詰め部で得られた各ゼロ詰めデータに対応した長さを持つ複数個のゼロ詰めデータを得る第2のゼロ詰め部と、
上記第2のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第2の高速フーリエ変換部と、
上記第1の高速フーリエ変換部で得られた各周波数領域データに、上記第2の高速フーリエ変換部で得られた各周波数領域データを乗算して、複数個の乗算結果を得る乗算部と、
上記乗算部で得られた各乗算結果に対して逆高速フーリエ変換を行って、複数個の離散時間信号を得る逆高速フーリエ変換部と、
上記逆高速フーリエ変換部で得られた各離散時間信号を加算して、出力離散時間信号を得る加算部
を備えるフィルタリング装置にある。
この発明においては、長さNの離散時間信号が複数分割されて、複数個の離散時間信号が得られる。そして、各離散時間信号とフィルタ係数の畳み込み演算が高速フーリエ変換を用いて周波数領域での乗算により行われる。そして、各畳み込み演算結果が最終的に加算されて出力離散時間信号が得られる。
例えば、分割部では、長さNの離散時間信号が2分割されて、2個の離散時間信号が得られる。そして、第1のゼロ詰め部では、(N+M−1)以上の最小の2の乗数の長さをLとするとき、長さがL/2のゼロ詰めデータと、長さがL/2以下のゼロ詰めデータが得られる。
また、例えば、N以上の最小の2の乗数をPとするとき、N,Mは、M−1≦(P−N)/2を満足し、分割部では、長さNの離散時間信号が、(P/2−(M−1))の長さの離散時間信号と、(N−P/2+(M−1))の長さの離散時間信号に分割される。また、例えば、N以上の最小の2の乗数をPとするとき、N,Mは、P−N<M−1≦P―N/2を満足し、分割部では、長さNの離散時間信号が、(P−(M−1))の長さの離散時間信号と、(N−P+(M−1))の長さの離散時間信号に分割される。
長さN(Nは整数)の離散時間信号を長さM(Mは整数、N≧M−1)のフィルタ係数を持つFIRフィルタに入力した場合の出力を得る際に、上述したように、長さNの離散時間信号を複数個の離散時間信号に分割して処理することで、従来方式に比べて、演算量およびメモリ使用量の低減が可能となる。
この発明によれば、長さN(Nは整数)の離散時間信号を、長さM(Mは整数、N≧M−1)のフィルタ係数を持つFIRフィルタに入力した場合の出力を得る際に、従来方式に比べて、演算量およびメモリ使用量を低減できる。
この発明の第1の実施の形態としてのサラウンドプロセッサの構成例を示すブロック図である。 サラウンドプロセッサを構成するフィルタリング部の構成例(N+M−1≦Pで2分割する場合)を示すブロック図である。 長さNの離散時間信号x[n]を、離散時間信号x1[n],x2[n]に2分割してフィルタリング処理することを説明するための図である。 サラウンドプロセッサを構成するフィルタリング部の他の構成例(N+M−1>Pで2分割する場合)を示すブロック図である。 長さNの離散時間信号x[n]を、離散時間信号x1[n],x2[n]に2分割してフィルタリング処理することを説明するための図である。 N=1472のとき、M−1を1からNまで変化させたときの、「方式A」(A_Method)、「方式B」(B_Method)、「本方式」(Proposal_Method)の加算回数を比較して示す図である。 N=1472のとき、M−1を1からNまで変化させたときの、「方式A」(A_Method)、「方式B」(B_Method)、「本方式」(Proposal_Method)の乗算回数を比較して示す図である。 サラウンドプロセッサを構成するフィルタリング部の他の構成例(N+M−1≦Pで3分割する場合)を示すブロック図である。 長さNの離散時間信号x[n]を、離散時間信号x1[n],x2[n],x3[n]に3分割してフィルタリング処理することを説明するための図である。 サラウンドプロセッサを構成するフィルタリング部の他の構成例(N+M−1>Pで3分割する場合)を示すブロック図である。 長さNの離散時間信号x[n]を、離散時間信号x1[n],x2[n],x3[n]に3分割してフィルタリング処理することを説明するための図である。 フィルタリング処理(離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算)をソフトウェアで行うコンピュータ装置の構成例を示すブロック図である。 従来のフィルタリング装置の構成例を示すブロック図である。 離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算を高速フーリエ変換を用いて周波数領域での乗算により行う場合における変換長の説明を行うための図である。
以下、発明を実施するための形態(以下、「実施の形態」とする)について説明する。なお、説明は以下の順序で行う。
1.実施の形態
2.変形例
<1.実施の形態>
[サラウンドプロセッサの構成例]
図1は、実施の形態としてのサラウンドプロセッサ10の構成例を示している。このサラウンドプロセッサ10は、5.1チャネルのマルチチャネル音声を、2チャネルステレオ音声にダウンミックスする。
このサラウンドプロセッサ10は、左音声信号成分を得るためのフィルタリング部11-1〜11-6と、右音声信号成分を得るためのフィルタリング部12-1〜12-6と、加算部13と、加算部14を有している。
5.1チャネルのマルチチャネル音声信号は、左前方信号Sig_L、右前方信号Sig_R、正面信号Sig_C、低音出力信号Sig_LFE、左後方信号Sig_RLおよび右後方信号Sig_RRにより構成されている。また、2チャネルステレオ音声信号は、左音声信号Sig_L′および右音声信号Sig_R′により構成されている。
フィルタリング部11-1(Filter_L_L)は、左前方信号Sig_Lから左音声信号成分を抽出する。フィルタリング部11-2(Filter_L_R)は、右前方信号Sig_Rから左音声信号成分を抽出する。フィルタリング部11-3(Filter_L_C)は、正面信号Sig_Cから左音声信号成分を抽出する。
フィルタリング部11-4(Filter_L_LFE)は、低音出力信号Sig_LFEから左音声信号成分を抽出する。フィルタリング部11-5(Filter_L_RL)は、左後方信号Sig_RLから左音声信号成分を抽出する。フィルタリング部11-6(Filter_L_RR)は、右後方信号Sig_RRから左音声信号成分を抽出する。そして、加算部13は、フィルタリング部11-1〜11-6で抽出された各左音声信号成分を加算して、左音声信号S_L′を得る。
また、フィルタリング部12-1(Filter_R_L)は、左前方信号Sig_Lから右音声信号成分を抽出する。フィルタリング部12-2(Filter_R_R)は、右前方信号Sig_Rから右音声信号成分を抽出する。フィルタリング部12-3(Filter_R_C)は、正面信号Sig_Cから右音声信号成分を抽出する。
フィルタリング部12-4(Filter_R_LFE)は、低音出力信号Sig_LFEから右音声信号成分を抽出する。フィルタリング部12-5(Filter_R_RL)は、左後方信号Sig_RLから右音声信号成分を抽出する。フィルタリング部12-6(Filter_R_RR)は、右後方信号Sig_RRから右音声信号成分を抽出する。そして、加算部14は、フィルタリング部12-1〜12-6で抽出された各右音声信号成分を加算して、右音声信号S_R′を得る。
[フィルタリング部の構成例]
図2、図4は、上述のフィルタリング部11-1〜11-6,12-1〜12-6として使用されるフィルタリング部100A,100Bの構成例を示している。フィルタリング部100A,100Bは、長さN(Nは整数)の離散時間信号(離散時間音声信号)x[n](0≦n≦N−1)を長さM(Mは整数)のフィルタ係数h[m](0≦m≦M−1)を持つFIRフィルタに入力した場合の出力を得る。このフィルタリング部100A,100Bは、離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算を、高速フーリエ変換を用いて、周波数領域での乗算により行う。ここで、x[n]およびh[m]は実数であり、N≧M−1を満たしている。
図2のフィルタリング部100Aは、N以上の最小の2の乗数をPとするとき、N,Mは、M−1≦(P−N)/2を満足するように構成される。フィルタリング部100Aでは、長さNの離散時間信号x[n]が、(P/2−(M−1))の長さの離散時間信号x1[n]と、(N−P/2+(M−1))の長さの離散時間信号x2[n]に分割されて処理される。図2のフィルタリング部100Aにおいては、上述したように、長さNの離散時間信号x[n]が、2個の離散時間信号x1[n],x2[n]に分割して処理されるため、従来の「B方式」に比べて、演算量およびメモリ使用量の低減が可能となる。この理由については、後述する。
また、図4のフィルタリング部100Bは、N以上の最小の2の乗数をPとするとき、N,Mは、P−N<M−1≦P−N/2を満足するように構成される。フィルタリング部100Bでは、長さNの離散時間信号x[n]が、(P−(M−1))の長さの離散時間信号x1[n]と、(N−P+(M−1))の長さの離散時間信号x2[n]に分割されて処理される。図4のフィルタリング部100Bにおいては、上述したように、長さNの離散時間信号x[n]が、2個の離散時間信号x1[n],x2[n]に分割して処理されるため、従来の「B方式」に比べて、演算量およびメモリ使用量の低減が可能となる。この理由については、後述する。
最初に、図2のフィルタリング部100Aを説明する。この図2のフィルタリング部100Aは、N以上の最小の2の乗数をPとするとき、図3(a)に示すように、N+M−1≦Pを満たす場合に適用される。この場合、N+M−1以上の最小の2の乗数はPであることから、「B方式」で処理を行うときの変換長はPとなる。
このフィルタリング部100Aは、2分割部101Aと、ゼロ詰め部102Aと、高速フーリエ変換部103Aと、ゼロ詰め部104Aと、高速フーリエ変換部105Aを有している。また、このフィルタリング部100Aは、ゼロ詰め部106Aと、高速フーリエ変換部107Aと、ゼロ詰め部108Aと、高速フーリエ変換部109Aを有している。さらに、このフィルタリング部100Aは、乗算部110Aと、逆高速フーリエ変換部111Aと、乗算部112Aと、逆高速フーリエ変換部113Aと、加算部114Aを有している。
2分割部101Aは、長さNの離散時間信号x[n](0≦n≦N−1)を2分割して、2個の離散時間信号x1[n](0≦n≦N1−1),x2[n](0≦n≦N2−1)を得る。ここで、離散時間信号x1[n]の長さN1は、図3(b)に示すように、P/2−(M−1)とされる。また、x2[n]の長さN2は、図3(c)に示すように、N−P/2+(M−1)とされる。
ゼロ詰め部102Aは、長さN1の離散時間信号x1[n]の後に、(P/2−N1)個、すなわち(M−1)個のゼロを詰めて、長さP/2のゼロ詰めデータx1′[n](0≦n≦P/2−1)を得る。高速フーリエ変換部103Aは、ゼロ詰め部102Aで得られたゼロ詰めデータx1′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX1[k](0≦k≦P/2−1)を得る。
ゼロ詰め部104Aは、長さN2の離散時間信号x2[n]の後に、(Q−N2)個、すなわち(Q−(N−P/2+(M−1))個のゼロを詰めて、長さQのゼロ詰めデータx2′[n](0≦n≦Q−1)を得る。ここで、Qは、N2+M−1以上の最小の2の乗数である。高速フーリエ変換部105Aは、ゼロ詰め部104Aで得られたゼロ詰めデータx2′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX2[k](0≦k≦Q−1)を得る。
ゼロ詰め部106Aは、長さMのフィルタ係数h[m](0≦m≦M−1)の後に(P/2−M)個のゼロを詰めて、上述のゼロ詰めデータx1′[n](0≦n≦P/2−1)に対応した長さのゼロ詰めデータh1′[n](0≦n≦P/2−1)を得る。高速フーリエ変換部107Aは、ゼロ詰め部106Aで得られたゼロ詰めデータh1′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データH1[k](0≦k≦P/2−1)を得る。
ゼロ詰め部108Aは、長さMのフィルタ係数h[m](0≦m≦M−1)の後に(Q−M)個のゼロを詰めて、上述のゼロ詰めデータx2′[n](0≦n≦Q−1)に対応した長さのゼロ詰めデータh2′[n](0≦n≦Q−1)を得る。高速フーリエ変換部109Aは、ゼロ詰め部108Aで得られたゼロ詰めデータh2′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データH2[k](0≦k≦Q−1)を得る。
乗算部110Aは、高速フーリエ変換部103Aで得られた周波数領域データX1[k]と高速フーリエ変換部107Aで得られた周波数領域データH1[k]とを乗算して、乗算結果Y1[k](0≦k≦P/2−1)を得る。そして、逆高速フーリエ変換部111Aは、乗算部110Aで得られた乗算結果Y1[k]に対してIFFT(逆高速フーリエ変換)を行って、離散時間信号y1[n](0≦n≦P/2−1)を得る。
乗算部112Aは、高速フーリエ変換部105Aで得られた周波数領域データX2[k]と高速フーリエ変換部109Aで得られた周波数領域データH2[k]とを乗算して、乗算結果Y2[k](0≦k≦Q−1)を得る。そして、逆高速フーリエ変換部113Aは、乗算部112Aで得られた乗算結果Y2[k]に対してIFFT(逆高速フーリエ変換)を行って、離散時間信号y2[n](0≦n≦Q−1)を得る。
加算部114Aは、逆高速フーリエ変換部111Aで得られた離散時間信号y1[n]と、逆高速フーリエ変換部113Aで得られた離散時間信号y2[n]を加算して、出力離散時間信号y[n]を得る。この出力離散時間信号y[n]は、離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算結果となる。なお、加算部114Aは、分割せずに離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算を行う場合との整合性を取るため、重複加算法(上述の非特許文献1参照)により、出力離散時間信号y[n]を求める。
図2のフィルタリング部100Aの動作を説明する。フィルタリング対象の長さNの離散時間信号(離散時間音声信号)x[n]は、2分割部101Aに供給される。この2分割部101Aでは、長さNの離散時間信号x[n](0≦n≦N−1)が2分割される。そして、この2分割部101Aからは、長さN1=P/2−(M−1)の離散時間信号x1[n](0≦n≦N1−1)が得られる。また、この2分割部101Aからは、長さN2=N−P/2+(M−1)の離散時間信号x2[n](0≦n≦N2−1)が得られる。
2分割部101Aで得られた離散時間信号x1[n]は、ゼロ詰め部102Aに供給される。このゼロ詰め部102Aでは、長さN1の離散時間信号x1[n]の後に(M−1)個のゼロが詰められ、長さ(変換長)P/2のゼロ詰めデータx1′[n]が得られる。このゼロ詰めデータx1′[n]は高速フーリエ変換部103Aに供給される。この高速フーリエ変換部103Aでは、ゼロ詰めデータx1′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX1[k](0≦k≦P/2−1)が得られる。
また、2分割部101Aで得られた離散時間信号x2[n]は、ゼロ詰め部104Aに供給される。このゼロ詰め部104Aでは、長さN2の離散時間信号x2[n]の後にQ−(N−P/2+(M−1))個のゼロが詰められ、長さ(変換長)Qのゼロ詰めデータx2′[n]が得られる。このゼロ詰めデータx2′[n]は高速フーリエ変換部105Aに供給される。この高速フーリエ変換部105Aでは、ゼロ詰めデータx2′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX2[k](0≦k≦Q−1)が得られる。
また、長さMのフィルタ係数h[m]は、ゼロ詰め部106Aに供給される。このゼロ詰め部106Aでは、長さMのフィルタ係数h[m]の後に(P/2−M)個のゼロが詰められ、長さ(変換長)P/2のゼロ詰めデータh1′[n]が得られる。このゼロ詰めデータh1′[n]は高速フーリエ変換部107Aに供給される。この高速フーリエ変換部107Aでは、ゼロ詰めデータh1′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データH1[k]が得られる。
また、長さMのフィルタ係数h[m]は、ゼロ詰め部108Aに供給される。このゼロ詰め部108Aでは、長さMのフィルタ係数h[m]の後に(Q−M)個のゼロが詰められ、長さ(変換長)Qのゼロ詰めデータh2′[n]が得られる。このゼロ詰めデータh2′[n]は高速フーリエ変換部109Aに供給される。この高速フーリエ変換部109Aでは、ゼロ詰めデータh2′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データH2[k]が得られる。
高速フーリエ変換部103Aで得られた周波数領域データX1[k]および高速フーリエ変換部107Aで得られた周波数領域データH1[k]は乗算部110Aに供給される。この乗算部110Aでは、周波数領域データX1[k]と周波数領域データH1[k]が乗算されて、乗算結果Y1[k]が得られる。この乗算結果Y1[k]は逆高速フーリエ変換部111Aに供給される。この逆高速フーリエ変換部111Aでは、乗算結果Y1[k]に対してIFFT(逆高速フーリエ変換)が行われて、離散時間信号y1[n]が得られる。
また、高速フーリエ変換部105Aで得られた周波数領域データX2[k]および高速フーリエ変換部109Aで得られた周波数領域データH2[k]は乗算部112Aに供給される。この乗算部112Aでは、周波数領域データX2[k]と周波数領域データH2[k]が乗算されて、乗算結果Y2[k]が得られる。この乗算結果Y2[k]は逆高速フーリエ変換部113Aに供給される。この逆高速フーリエ変換部113Aでは、乗算結果Y2[k]に対してIFFT(逆高速フーリエ変換)が行われて、離散時間信号y2[n]が得られる。
逆高速フーリエ変換部111Aで得られた離散時間信号y1[n]および逆高速フーリエ変換部113Aで得られた離散時間信号y2[n]は、加算部114Aに供給される。加算部114Aでは、重複加算法により、離散時間信号y1[n],y2[n]が加算されて、出力離散時間信号y[n]が得られる。
次に、図4のフィルタリング部100Bを説明する。この図4のフィルタリング部100Bは、N以上の最小の2の乗数をPとするとき、図5(a)に示すように、N+M−1>Pを満たす場合に適用される。この場合、N+M−1以上の最小の2の乗数は2Pであることから、「B方式」で処理を行うときの変換長は2Pとなる。
このフィルタリング部100Bは、2分割部101Bと、ゼロ詰め部102Bと、高速フーリエ変換部103Bと、ゼロ詰め部104Bと、高速フーリエ変換部105Bを有している。また、このフィルタリング部100Bは、ゼロ詰め部106Bと、高速フーリエ変換部107Bと、ゼロ詰め部108Bと、高速フーリエ変換部109Bを有している。さらに、このフィルタリング部100Bは、乗算部110Bと、逆高速フーリエ変換部111Bと、乗算部112Bと、逆高速フーリエ変換部113Bと、加算部114Bを有している。
2分割部101Bは、長さNの離散時間信号x[n](0≦n≦N−1)を2分割して、2個の離散時間信号x1[n](0≦n≦N1−1),x2[n](0≦n≦N2−1)を得る。ここで、離散時間信号x1[n]の長さN1は、図5(b)に示すように、P−(M−1)とされる。また、x2[n]の長さN2は、図5(c)に示すように、N−P+(M−1)とされる。
ゼロ詰め部102Bは、長さN1の離散時間信号x1[n]の後に、(P−N1)個、すなわち(M−1)個のゼロを詰めて、長さPのゼロ詰めデータx1′[n](0≦n≦P−1)を得る。高速フーリエ変換部103Bは、ゼロ詰め部102Bで得られたゼロ詰めデータx1′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX1[k](0≦k≦P−1)を得る。
ゼロ詰め部104Bは、長さN2の離散時間信号x2[n]の後に、(R−N2)個、すなわち(R−(N−P+(M−1))個のゼロを詰めて、長さRのゼロ詰めデータx2′[n](0≦n≦R−1)を得る。ここで、Rは、N2+M−1以上の最小の2の乗数である。高速フーリエ変換部105Bは、ゼロ詰め部104Bで得られたゼロ詰めデータx2′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX2[k](0≦k≦R−1)を得る。
ゼロ詰め部106Bは、長さMのフィルタ係数h[m](0≦m≦M−1)の後に(P−M)個のゼロを詰めて、上述のゼロ詰めデータx1′[n](0≦n≦P−1)に対応した長さのゼロ詰めデータh1′[n](0≦n≦P−1)を得る。高速フーリエ変換部107Bは、ゼロ詰め部106Bで得られたゼロ詰めデータh1′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データH1[k](0≦k≦P−1)を得る。
ゼロ詰め部108Bは、長さMのフィルタ係数h[m](0≦m≦M−1)の後に(R−M)個のゼロを詰めて、上述のゼロ詰めデータx2′[n](0≦n≦R−1)に対応した長さのゼロ詰めデータh2′[n](0≦n≦R−1)を得る。高速フーリエ変換部109Bは、ゼロ詰め部108Bで得られたゼロ詰めデータh2′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データH2[k](0≦k≦R−1)を得る。
乗算部110Bは、高速フーリエ変換部103Bで得られた周波数領域データX1[k]と高速フーリエ変換部107Bで得られた周波数領域データH1[k]とを乗算して、乗算結果Y1[k](0≦k≦P−1)を得る。そして、逆高速フーリエ変換部111Bは、乗算部110Bで得られた乗算結果Y1[k]に対してIFFT(逆高速フーリエ変換)を行って、離散時間信号y1[n](0≦n≦P−1)を得る。
乗算部112Bは、高速フーリエ変換部105Bで得られた周波数領域データX2[k]と高速フーリエ変換部109Bで得られた周波数領域データH2[k]とを乗算して、乗算結果Y2[k](0≦k≦R−1)を得る。そして、逆高速フーリエ変換部113Bは、乗算部112Bで得られた乗算結果Y2[k]に対してIFFT(逆高速フーリエ変換)を行って、離散時間信号y2[n](0≦n≦R−1)を得る。
加算部114Bは、逆高速フーリエ変換部111Bで得られた離散時間信号y1[n]と、逆高速フーリエ変換部113Bで得られた離散時間信号y2[n]を加算して、出力離散時間信号y[n]を得る。この出力離散時間信号y[n]は、離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算結果となる。なお、加算部114Bは、分割せずに離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算を行う場合との整合性を取るため、重複加算法(上述の非特許文献1参照)により、出力離散時間信号y[n]を求める。
図4のフィルタリング部100Aの動作を説明する。フィルタリング対象の長さNの離散時間信号(離散時間音声信号)x[n]は、2分割部101Bに供給される。この2分割部101Bでは、長さNの離散時間信号x[n](0≦n≦N−1)が2分割される。そして、この2分割部101Bからは、長さN1=P−(M−1)の離散時間信号x1[n](0≦n≦N1−1)が得られる。また、この2分割部101Bからは、長さN2=N−P+(M−1)の離散時間信号x2[n](0≦n≦N2−1)が得られる。
2分割部101Bで得られた離散時間信号x1[n]は、ゼロ詰め部102Bに供給される。このゼロ詰め部102Bでは、長さN1の離散時間信号x1[n]の後に(M−1)個のゼロが詰められ、長さ(変換長)Pのゼロ詰めデータx1′[n]が得られる。このゼロ詰めデータx1′[n]は高速フーリエ変換部103Bに供給される。この高速フーリエ変換部103Bでは、ゼロ詰めデータx1′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX1[k](0≦k≦P−1)が得られる。
また、2分割部101Bで得られた離散時間信号x2[n]は、ゼロ詰め部104Bに供給される。このゼロ詰め部104Bでは、長さN2の離散時間信号x2[n]の後にR−(N−P+(M−1))個のゼロが詰められ、長さ(変換長)Rのゼロ詰めデータx2′[n]が得られる。このゼロ詰めデータx2′[n]は高速フーリエ変換部105Bに供給される。この高速フーリエ変換部105Bでは、ゼロ詰めデータx2′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX2[k](0≦k≦R−1)が得られる。
また、長さMのフィルタ係数h[m]は、ゼロ詰め部106Bに供給される。このゼロ詰め部106Bでは、長さMのフィルタ係数h[m]の後に(P−M)個のゼロが詰められ、長さ(変換長)Pのゼロ詰めデータh1′[n]が得られる。このゼロ詰めデータh1′[n]は高速フーリエ変換部107Bに供給される。この高速フーリエ変換部107Bでは、ゼロ詰めデータh1′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データH1[k]が得られる。
また、長さMのフィルタ係数h[m]は、ゼロ詰め部108Bに供給される。このゼロ詰め部108Bでは、長さMのフィルタ係数h[m]の後に(R−M)個のゼロが詰められ、長さ(変換長)Rのゼロ詰めデータh2′[n]が得られる。このゼロ詰めデータh2′[n]は高速フーリエ変換部109Bに供給される。この高速フーリエ変換部109Bでは、ゼロ詰めデータh2′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データH2[k]が得られる。
高速フーリエ変換部103Bで得られた周波数領域データX1[k]および高速フーリエ変換部107Bで得られた周波数領域データH1[k]は乗算部110Bに供給される。この乗算部110Bでは、周波数領域データX1[k]と周波数領域データH1[k]が乗算されて、乗算結果Y1[k]が得られる。この乗算結果Y1[k]は逆高速フーリエ変換部111Bに供給される。この逆高速フーリエ変換部111Bでは、乗算結果Y1[k]に対してIFFT(逆高速フーリエ変換)が行われて、離散時間信号y1[n]が得られる。
また、高速フーリエ変換部105Bで得られた周波数領域データX2[k]および高速フーリエ変換部109Bで得られた周波数領域データH2[k]は乗算部112Bに供給される。この乗算部112Bでは、周波数領域データX2[k]と周波数領域データH2[k]が乗算されて、乗算結果Y2[k]が得られる。この乗算結果Y2[k]は逆高速フーリエ変換部113Bに供給される。この逆高速フーリエ変換部113Bでは、乗算結果Y2[k]に対してIFFT(逆高速フーリエ変換)が行われて、離散時間信号y2[n]が得られる。
逆高速フーリエ変換部111Bで得られた離散時間信号y1[n]および逆高速フーリエ変換部113Bで得られた離散時間信号y2[n]は、加算部114Bに供給される。加算部114Bでは、重複加算法により、離散時間信号y1[n],y2[n]が加算されて、出力離散時間信号y[n]が得られる。
[演算量およびメモリ使用量の低減理由]
図2、図4のフィルタリング部100A,100Bにおいて、演算量およびメモリ使用量が低減される理由を説明する。
図2のフィルタリング部100Aにおいては、図3(a)に示すように、N+M−1≦Pを満たす場合に適用される。そして、図3(b),(c)に示すように、長さNの離散時間信号x[n]が、長さN1=P/2−(M−1)の離散時間信号x1[n]と、長さN2=N−P/2+(M−1)の離散時間信号x2[n]に2分割されて処理される。ここで、N1≧N2である場合、すなわち、M−1≦(P−N)/2のとき、x2[n]の変換長Q(2の乗数)は、x1[n]の変換長P/2以下となる。
図2のフィルタリング部100Aにおいては、上述したように、N,Mが、M−1≦P−Nを満足するように構成される。したがって、x2[n]の変換長Q(2の乗数)は、x1[n]の変換長P/2以下となり、長さNの離散時間信号x[n]を分割せずに、変換長がPである「方式B」で処理する場合に比べて、演算量およびメモリ使用量を低減することが可能となる。
なお、N,Mが、M−1≦(P−N)/2を満足せず、(P−N)/2<M−1≦P−Nを満たす場合には、x2[n]の変換長Qを、x1[n]の変換長P/2以下とすることができず、Q=Pとなる。この場合、「方式B」で処理する場合に比べて、演算量およびメモリ使用量の面で劣位となる。
また、図4のフィルタリング部100Bにおいては、図5(a)に示すように、N+M−1>Pを満たす場合に適用される。そして、図5(b),(c)に示すように、長さNの離散時間信号x[n]が、長さN1=P−(M−1)の離散時間信号x1[n]と、長さN2=N−P+(M−1)の離散時間信号x2[n]に2分割されて処理される。ここで、N1≧N2である場合、すなわち、P−N<M−1≦P−N/2のとき、x2[n]の変換長R(2の乗数)は、x1[n]の変換長P以下となる。
図4のフィルタリング部100Bにおいては、上述したように、N,Mが、P−N<M−1≦P−N/2を満足するように構成される。したがって、x2[n]の変換長R(2の乗数)は、x1[n]の変換長P以下となり、長さNの離散時間信号x[n]を分割せずに「B方式」で処理する場合に比べて、演算量およびメモリ使用量を低減することが可能となる。
なお、N,Mが、P−N<M−1≦P−N/2を満足せず、P−N/2<M−1≦Nを満たす場合には、x2[n]の変換長Rを、x1[n]の変換長P以下とすることができず、R=2Pとなる。この場合、「方式B」で処理する場合に比べて、演算量およびメモリ使用量の面で劣位となる。
[演算量およびメモリ使用量の比較]
ここで、「方式A」、「方式B」および、図2、図4に示すようにx[n]を分割する方式(以下、「本方式」という)における演算量およびメモリ使用量を比較してみる。
「演算量の比較」
<比較のための条件>
本比較では、単純に加算・乗算回数の比較を行う。
時間領域での畳み込み演算「方式A」に関して、加算・乗算回数はループ内の積和演算部分のみに関して評価する。
FFTの演算量に関して、バタフライ演算部の複素指数関数((4)式参照)のコサイン値、サイン値はデータとして保持しておくものとし、加算・乗算回数はバタフライ演算部の加算、および加算結果と複素指数関数の乗算のみに関して評価する。
Figure 2010219582
なお、P、Q、Rに関しては、以下の式により算出可能である。
P=2 ** int(log2(N*2−1))
Q=2 ** int(log2((N+2* M−2−P/2) * 2−1)
R=2 ** int(log2((N+2* M−2−P) * 2−1)
ただし、int(x)はxの小数点以下を切り捨てた整数、log2(x)は2を底とする対数を表すものとする。
<演算量の算出結果>
「方式A」、「方式B」、「本方式」における演算量の算出結果を以下に示す。
「方式A」
M−1≦Nの全範囲で、以下の(5)式、(6)式で表される。
加算:N*M ・・・(5)
乗算:N*M ・・・(6)
「方式B」
M−1≦P−Nの場合は、以下の(7)式、(8)式で表される。
加算:12*P*log2(P)+2*P ・・・(7)
乗算:6*P*log2(P)+4*P ・・・(8)
P−N<M−1≦Nの場合は、以下の(9)式、(10)式で表される。
加算:24*P*log2(P)+28*P ・・・(9)
乗算:12*P*log2(P)+20*P ・・・(10)
「本方式」
A.M−1≦(P−N)/2を満たし、x[n]を2分割した場合(図2のフィルタリング部100Aの場合)は、以下の(11)式、(12)式で表される。
加算:6*P*log2(P)−5*P+12*Q*log2(Q)+2*Q+M−1
・・・(11)
乗算:3*P*log2(P)−P+6*Q*log2(Q)+4*Q
・・・(12)
B.P−N<M−1≦P−N/2を満たし、x[n]を2分割した場合(図4のフィルタリング部100Bの場合)は、以下の(13)式、(14)式で表される。
加算:12*P*log2(P)+2*P+12*R*log2(R)+2*R+M−1
・・・(13)
乗算:6*P*log2(P)+4*P+6*R*log2(R)+4*R
・・・(14)
<方式Bと本方式の演算量の差>
A.M−1≦(P−N)/2の場合(図2のフィルタリング部100Aの場合)、方式Bから本方式の演算量を差し引いた値の最小値は、Q=P/2として、以下の(15)式、(16)式で表される。
加算:12*P−M+1 ・・・(15)
乗算:6*P ・・・(16)
したがって、この場合は、加算、乗算とも差が正となるため、本方式は方式Bに演算量の面において優位であることが分かる。
B.P−N<M−1≦P−N/2の場合(図4のフィルタリング部100Bの場合)、方式Bから本方式の演算量を差し引いた値の最小値は、R=Pとして、以下の(17)式、(18)式で表される。
加算:24*P−M+1 ・・・(17)
乗算:12*P ・・・(18)
したがって、この場合は、加算、乗算とも差が正となるため、本方式は方式Bに演算量の面において優位であることが分かる。
図6、図7のグラフは、N=1472のとき、M−1を1からNまで変化させたときの、「方式A」(A_Method)、「方式B」(B_Method)、「本方式」(Proposal_Method)の加算回数、乗算回数を比較して示している。ただし、図中のProposal_Methodのラインは、M−1≦(P−N)/2、P−N<M−1≦P−N/2以外の範囲は方式Bの演算量としている。
この図6、図7のグラフを見ても分かるように、M−1≦(P−N)/2、P−N<M−1≦P−N/2の範囲で、本方式(Proposal_Method)は方式B(B_Method)より加算回数、乗算回数とも少ない。したがって、本方式は、方式Bより少ない演算量で演算可能であることがわかる。
<使用メモリ量の比較>
方式Bおよび本方式はFFT処理値を複素数で保持せねばならないこと、ゼロ詰め等の処理を必要とすることなどの制約から、方式Aに比べて使用するメモリ量は多い。方式Bと本方式の比較では、方式Bで必要となるメモリ量を1とすると、本方式で必要となるメモリ量は以下のようになる。
A.M−1≦(P−N)/2の場合(図2のフィルタリング部100Aの場合)、本方式で必要となるメモリ量は、以下の(19)式で表される。
(P+2*Q)/2*P ・・・(19)
定義からQ≦P/2であるので、本方式は方式Bに比べて使用するメモリ量は増えない。ここで、P、Qは上述で定義されているものと同じ変数である。
B.P−N<M−1≦P−N/2の場合(図4のフィルタリング部100Bの場合)、本方式で必要となるメモリ量は、以下の(20)式で表される。
(P+R)/2*P ・・・(20)
定義からR≦Pであるので、本方式は方式Bに比べて使用するメモリ量は増えない。ここで、P、Rは上述で定義されているものと同じ変数である。
以上説明したように、図1に示すサラウンドプロセッサ10において、各フィルタリング部は、図2に示すフィルタリング部100Aあるいは図4に示すフィルタリング部100Bに示すように構成される。そのため、従来の方式Bで演算処理するフィルタリング部に比べて、演算量およびメモリ使用量を低減できる。
図1に示すサラウンドプロセッサ10において、各フィルタリング部が、例えば、N=1472、M=700のとき、「方式A」、「方式B」、「本方式」の計算量は以下のようになる。したがって、本方式を用いることで、従来方式に比べて、少ない演算量で畳み込み演算を行うことが可能である。
「方式A」
・加算:12364800
・乗算:12364800
「方式B」
・加算:7176192
・乗算:3735552
「本方式」
・加算:4800708
・乗算:2506752

なお、上述実施の形態において、図1に示すサラウンドプロセッサ10の各フィルタリング部は、図2に示すフィルタリング部100Aあるいは図4に示すフィルタリング部100Bに示すように構成される。

<2.変形例>
図2に示すフィルタリング部100Aは、上述したように、N以上の最小の2の乗数をPとするとき、N+M−1≦Pを満足し、M−1≦(P−N)/2の場合の例である。しかし、(P−N)/2<M−1≦P−Nの場合であっても、長さNの離散時間信号x[n](図3(a)参照)を3分割して処理することで、方式Bに比べて演算量を低減できる場合がある。この理由については、後述する。
図8は、その場合におけるフィルタリング部100Cの構成例を示している。このフィルタリング部100Cは、3分割部101Cと、ゼロ詰め部102Cと、高速フーリエ変換部103Cと、ゼロ詰め部104Cと、高速フーリエ変換部105Cと、ゼロ詰め部106Cと、高速フーリエ変換部107Cを有している。また、このフィルタリング部100Cは、ゼロ詰め部108Cと、高速フーリエ変換部109Cと、ゼロ詰め部110Cと、高速フーリエ変換部111Cを有している。さらに、このフィルタリング部100Cは、乗算部112Cと、逆高速フーリエ変換部113Cと、乗算部114Cと、逆高速フーリエ変換部115Cと、乗算部116Cと、逆高速フーリエ変換部117Cと、加算部118Cを有している。
3分割部101Cは、長さNの離散時間信号x[n](0≦n≦N−1)を3分割して、3個の離散時間信号x1[n],x2[n],x3[n]を得る。ここで、x1[n]の長さN1は、図9(a)に示すように、P/2−(M−1)とされる。また、x2[n]の長さN2は、図9(b)に示すように、x1[n]の長さN1と同じく、P/2−(M−1)とされる。また、x3[n]の長さN3は、図9(c)に示すように、N−P+2(M−1)とされる。
ゼロ詰め部102Cは、長さN1の離散時間信号x1[n]の後に、(P/2−N1)個、すなわち(M−1)個のゼロを詰めて、長さP/2のゼロ詰めデータx1′[n](0≦n≦P/2−1)を得る。高速フーリエ変換部103Cは、ゼロ詰め部102Cで得られたゼロ詰めデータx1′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX1[k](0≦k≦P/2−1)を得る。
ゼロ詰め部104Cは、長さN2の離散時間信号x2[n]の後に、(P/2−N2)個、すなわち(M−1)個のゼロを詰めて、長さP/2のゼロ詰めデータx2′[n](0≦n≦P/2−1)を得る。高速フーリエ変換部105Cは、ゼロ詰め部104Cで得られたゼロ詰めデータx2′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX2[k](0≦k≦P/2−1)を得る。
ゼロ詰め部106Cは、長さN3の離散時間信号x3[n]の後に、(S−N3)個、すなわち(S−(N−P+2(M−1))個のゼロを詰めて、長さSのゼロ詰めデータx3′[n](0≦n≦S−1)を得る。ここで、Sは、N3+M−1以上の最小の2の乗数である。高速フーリエ変換部107Cは、ゼロ詰め部106Cで得られたゼロ詰めデータx3′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX3[k](0≦k≦S−1)を得る。
ゼロ詰め部108Cは、長さMのフィルタ係数h[m](0≦m≦M−1)の後に(P/2−M)個のゼロを詰めて、上述のゼロ詰めデータx1′[n],x2′[n]に対応した長さのゼロ詰めデータh12′[n](0≦n≦P/2−1)を得る。高速フーリエ変換部109Cは、ゼロ詰め部108Cで得られたゼロ詰めデータh12′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データH12[k](0≦k≦P/2−1)を得る。
ゼロ詰め部110Cは、長さMのフィルタ係数h[m](0≦m≦M−1)の後に(S−M)個のゼロを詰めて、上述のゼロ詰めデータx3′[n](0≦n≦S−1)に対応した長さのゼロ詰めデータh3′[n](0≦n≦S−1)を得る。高速フーリエ変換部111Cは、ゼロ詰め部110Cで得られたゼロ詰めデータh3′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データH3[k](0≦k≦S−1)を得る。
乗算部112Cは、高速フーリエ変換部103Cで得られた周波数領域データX1[k]と高速フーリエ変換部109Cで得られた周波数領域データH12[k]とを乗算して、乗算結果Y1[k](0≦k≦P/2−1)を得る。そして、逆高速フーリエ変換部113Cは、乗算部112Cで得られた乗算結果Y1[k]に対してIFFT(逆高速フーリエ変換)を行って、離散時間信号y1[n](0≦n≦P/2−1)を得る。
乗算部114Cは、高速フーリエ変換部105Cで得られた周波数領域データX2[k]と高速フーリエ変換部109Cで得られた周波数領域データH12[k]とを乗算して、乗算結果Y2[k](0≦k≦P/2−1)を得る。そして、逆高速フーリエ変換部115Cは、乗算部114Cで得られた乗算結果Y2[k]に対してIFFT(逆高速フーリエ変換)を行って、離散時間信号y2[n](0≦n≦P/2−1)を得る。
乗算部116Cは、高速フーリエ変換部107Cで得られた周波数領域データX3[k]と高速フーリエ変換部111Cで得られた周波数領域データH3[k]とを乗算して、乗算結果Y3[k](0≦k≦S−1)を得る。そして、逆高速フーリエ変換部117Cは、乗算部116Cで得られた乗算結果Y3[k]に対してIFFT(逆高速フーリエ変換)を行って、離散時間信号y3[n](0≦n≦S−1)を得る。
加算部118Cは、逆高速フーリエ変換部113C,115C,117Cで得られた離散時間信号y1[n],y2[n],y3[n]を加算して、出力離散時間信号y[n]を得る。この出力離散時間信号y[n]は、離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算結果となる。なお、加算部118Cは、分割せずに離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算を行う場合との整合性を取るため、重複加算法(上述の非特許文献1参照)により、出力離散時間信号y[n]を求める。
図8のフィルタリング部100Cの動作を説明する。フィルタリング対象の長さNの離散時間信号(離散時間音声信号)x[n]は、3分割部101Cに供給される。この3分割部101Cでは、長さNの離散時間信号x[n](0≦n≦N−1)が3分割される。そして、この3分割部101Cからは、長さN1=P/2−(M−1)の離散時間信号x1[n](0≦n≦N1−1)が得られる。また、この3分割部101Cからは、長さN2=P/2−(M−1)の離散時間信号x2[n](0≦n≦N2−1)が得られる。また、この3分割部101Cからは、長さN3=N−P+2(M−1)の離散時間信号x3[n](0≦n≦N3−1)が得られる。
3分割部101Cで得られた離散時間信号x1[n]は、ゼロ詰め部102Cに供給される。このゼロ詰め部102Cでは、長さN1の離散時間信号x1[n]の後に(M−1)個のゼロが詰められ、長さ(変換長)P/2のゼロ詰めデータx1′[n]が得られる。このゼロ詰めデータx1′[n]は高速フーリエ変換部103Cに供給される。この高速フーリエ変換部103Cでは、ゼロ詰めデータx1′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX1[k](0≦k≦P/2−1)が得られる。
また、3分割部101Cで得られた離散時間信号x2[n]は、ゼロ詰め部104Cに供給される。このゼロ詰め部104Cでは、長さN2の離散時間信号x2[n]の後に(M−1)個のゼロが詰められ、長さ(変換長)P/2のゼロ詰めデータx2′[n]が得られる。このゼロ詰めデータx2′[n]は高速フーリエ変換部105Cに供給される。この高速フーリエ変換部105Cでは、ゼロ詰めデータx2′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX2[k](0≦k≦P/2−1)が得られる。
また、2分割部101Cで得られた離散時間信号x3[n]は、ゼロ詰め部106Cに供給される。このゼロ詰め部106Cでは、長さN3の離散時間信号x3[n]の後にS−(N−P+2(M−1))個のゼロが詰められ、長さ(変換長)Sのゼロ詰めデータx3′[n]が得られる。このゼロ詰めデータx3′[n]は高速フーリエ変換部107Cに供給される。この高速フーリエ変換部107Cでは、ゼロ詰めデータx3′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX3[k](0≦k≦S−1)が得られる。
また、長さMのフィルタ係数h[m]は、ゼロ詰め部108Cに供給される。このゼロ詰め部108Cでは、長さMのフィルタ係数h[m]の後に(P/2−M)個のゼロが詰められ、長さ(変換長)P/2のゼロ詰めデータh12′[n]が得られる。このゼロ詰めデータh12′[n]は高速フーリエ変換部109Cに供給される。この高速フーリエ変換部109Cでは、ゼロ詰めデータh12′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データH12[k]が得られる。
また、長さMのフィルタ係数h[m]は、ゼロ詰め部110Cに供給される。このゼロ詰め部110Cでは、長さMのフィルタ係数h[m]の後に(S−M)個のゼロが詰められ、長さ(変換長)Sのゼロ詰めデータh3′[n]が得られる。このゼロ詰めデータh3′[n]は高速フーリエ変換部111Cに供給される。この高速フーリエ変換部111Cでは、ゼロ詰めデータh3′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データH3[k]が得られる。
高速フーリエ変換部103Cで得られた周波数領域データX1[k]および高速フーリエ変換部109Cで得られた周波数領域データH12[k]は乗算部112Cに供給される。この乗算部112Cでは、周波数領域データX1[k]と周波数領域データH12[k]が乗算されて、乗算結果Y1[k]が得られる。この乗算結果Y1[k]は逆高速フーリエ変換部113Cに供給される。この逆高速フーリエ変換部113Cでは、乗算結果Y1[k]に対してIFFT(逆高速フーリエ変換)が行われて、離散時間信号y1[n]が得られる。
また、高速フーリエ変換部105Cで得られた周波数領域データX2[k]および高速フーリエ変換部109Cで得られた周波数領域データH12[k]は乗算部114Cに供給される。この乗算部114Cでは、周波数領域データX2[k]と周波数領域データH12[k]が乗算されて、乗算結果Y2[k]が得られる。この乗算結果Y2[k]は逆高速フーリエ変換部115Cに供給される。この逆高速フーリエ変換部115Cでは、乗算結果Y2[k]に対してIFFT(逆高速フーリエ変換)が行われて、離散時間信号y2[n]が得られる。
また、高速フーリエ変換部107Cで得られた周波数領域データX3[k]および高速フーリエ変換部111Cで得られた周波数領域データH3[k]は乗算部116Cに供給される。この乗算部116Cでは、周波数領域データX3[k]と周波数領域データH3[k]が乗算されて、乗算結果Y3[k]が得られる。この乗算結果Y3[k]は逆高速フーリエ変換部117Cに供給される。この逆高速フーリエ変換部117Cでは、乗算結果Y3[k]に対してIFFT(逆高速フーリエ変換)が行われて、離散時間信号y3[n]が得られる。
逆高速フーリエ変換部113Cで得られた離散時間信号y1[n]、逆高速フーリエ変換部115Cで得られた離散時間信号y2[n]および逆高速フーリエ変換部117Cで得られた離散時間信号y3[n]は、加算部118Cに供給される。加算部118Cでは、重複加算法により、離散時間信号y1[n],y2[n],y3[n]が加算されて、出力離散時間信号y[n]が得られる。
図4に示すフィルタリング部100Bは、上述したように、N以上の最小の2の乗数をPとするとき、N+M−1>Pを満足し、P−N<M−1≦P−N/2の場合の例である。しかし、P−N/2<M−1≦Nの場合であっても、長さNの離散時間信号x[n](図5(a)参照)を3分割して処理することで、方式Bに比べて演算量を低減できる場合がある。この理由については、後述する。
図10は、その場合におけるフィルタリング部100Dの構成例を示している。このフィルタリング部100Cは、3分割部101Dと、ゼロ詰め部102Dと、高速フーリエ変換部103Dと、ゼロ詰め部104Dと、高速フーリエ変換部105Dと、ゼロ詰め部106Dと、高速フーリエ変換部107Dを有している。また、このフィルタリング部100Dは、ゼロ詰め部108Dと、高速フーリエ変換部109Dと、ゼロ詰め部110Dと、高速フーリエ変換部111Dを有している。さらに、このフィルタリング部100Dは、乗算部112Dと、逆高速フーリエ変換部113Dと、乗算部114Dと、逆高速フーリエ変換部115Dと、乗算部116Dと、逆高速フーリエ変換部117Dと、加算部118Dを有している。
3分割部101Dは、長さNの離散時間信号x[n](0≦n≦N−1)を3分割して、3個の離散時間信号x1[n],x2[n],x3[n]を得る。ここで、x1[n]の長さN1は、図11(a)に示すように、P−(M−1)とされる。また、x2[n]の長さN2は、図11(b)に示すように、x1[n]の長さN1と同じく、P−(M−1)とされる。また、x3[n]の長さN3は、図11(c)に示すように、N−2P+2(M−1)とされる。
ゼロ詰め部102Dは、長さN1の離散時間信号x1[n]の後に、(P−N1)個、すなわち(M−1)個のゼロを詰めて、長さPのゼロ詰めデータx1′[n](0≦n≦P−1)を得る。高速フーリエ変換部103Dは、ゼロ詰め部102Dで得られたゼロ詰めデータx1′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX1[k](0≦k≦P−1)を得る。
ゼロ詰め部104Dは、長さN2の離散時間信号x2[n]の後に、(P−N2)個、すなわち(M−1)個のゼロを詰めて、長さPのゼロ詰めデータx2′[n](0≦n≦P−1)を得る。高速フーリエ変換部105Dは、ゼロ詰め部104Dで得られたゼロ詰めデータx2′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX2[k](0≦k≦P−1)を得る。
ゼロ詰め部106Dは、長さN3の離散時間信号x3[n]の後に、(T−N3)個、すなわち(T−(N−2P+2(M−1))個のゼロを詰めて、長さTのゼロ詰めデータx3′[n](0≦n≦T−1)を得る。ここで、Tは、N3+M−1以上の最小の2の乗数である。高速フーリエ変換部107Dは、ゼロ詰め部106Dで得られたゼロ詰めデータx3′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データX3[k](0≦k≦T−1)を得る。
ゼロ詰め部108Dは、長さMのフィルタ係数h[m](0≦m≦M−1)の後に(P−M)個のゼロを詰めて、上述のゼロ詰めデータx1′[n],x2′[n]に対応した長さのゼロ詰めデータh12′[n](0≦n≦P−1)を得る。高速フーリエ変換部109Dは、ゼロ詰め部108Dで得られたゼロ詰めデータh12′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データH12[k](0≦k≦P−1)を得る。
ゼロ詰め部110Dは、長さMのフィルタ係数h[m](0≦m≦M−1)の後に(T−M)個のゼロを詰めて、上述のゼロ詰めデータx3′[n](0≦n≦T−1)に対応した長さのゼロ詰めデータh3′[n](0≦n≦T−1)を得る。高速フーリエ変換部111Dは、ゼロ詰め部110Dで得られたゼロ詰めデータh3′[n]に対してFFT(高速フーリエ変換)を行って、周波数領域データH3[k](0≦k≦T−1)を得る。
乗算部112Dは、高速フーリエ変換部103Dで得られた周波数領域データX1[k]と高速フーリエ変換部109Dで得られた周波数領域データH12[k]とを乗算して、乗算結果Y1[k](0≦k≦P−1)を得る。そして、逆高速フーリエ変換部113Dは、乗算部112Dで得られた乗算結果Y1[k]に対してIFFT(逆高速フーリエ変換)を行って、離散時間信号y1[n](0≦n≦P−1)を得る。
乗算部114Dは、高速フーリエ変換部105Dで得られた周波数領域データX2[k]と高速フーリエ変換部109Dで得られた周波数領域データH12[k]とを乗算して、乗算結果Y2[k](0≦k≦P−1)を得る。そして、逆高速フーリエ変換部115Dは、乗算部114Dで得られた乗算結果Y2[k]に対してIFFT(逆高速フーリエ変換)を行って、離散時間信号y2[n](0≦n≦P−1)を得る。
乗算部116Dは、高速フーリエ変換部107Dで得られた周波数領域データX3[k]と高速フーリエ変換部111Dで得られた周波数領域データH3[k]とを乗算して、乗算結果Y3[k](0≦k≦T−1)を得る。そして、逆高速フーリエ変換部117Dは、乗算部116Dで得られた乗算結果Y3[k]に対してIFFT(逆高速フーリエ変換)を行って、離散時間信号y3[n](0≦n≦T−1)を得る。
加算部118Dは、逆高速フーリエ変換部113D,115D,117Dで得られた離散時間信号y1[n],y2[n],y3[n]を加算して、出力離散時間信号y[n]を得る。この出力離散時間信号y[n]は、離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算結果となる。なお、加算部118Dは、分割せずに離散時間信号x[n]とフィルタ係数h[m]の畳み込み演算を行う場合との整合性を取るため、重複加算法(上述の非特許文献1参照)により、出力離散時間信号y[n]を求める。
図10のフィルタリング部100Dの動作を説明する。フィルタリング対象の長さNの離散時間信号(離散時間音声信号)x[n]は、3分割部101Dに供給される。この3分割部101Dでは、長さNの離散時間信号x[n](0≦n≦N−1)が3分割される。そして、この3分割部101Dからは、長さN1=P−(M−1)の離散時間信号x1[n](0≦n≦N1−1)が得られる。また、この3分割部101Dからは、長さN2=P−(M−1)の離散時間信号x2[n](0≦n≦N2−1)が得られる。また、この3分割部101Dからは、長さN3=N−2P+2(M−1)の離散時間信号x3[n](0≦n≦N3−1)が得られる。
3分割部101Dで得られた離散時間信号x1[n]は、ゼロ詰め部102Dに供給される。このゼロ詰め部102Dでは、長さN1の離散時間信号x1[n]の後に(M−1)個のゼロが詰められ、長さ(変換長)Pのゼロ詰めデータx1′[n]が得られる。このゼロ詰めデータx1′[n]は高速フーリエ変換部103Dに供給される。この高速フーリエ変換部103Dでは、ゼロ詰めデータx1′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX1[k](0≦k≦P−1)が得られる。
また、3分割部101Dで得られた離散時間信号x2[n]は、ゼロ詰め部104Dに供給される。このゼロ詰め部104Dでは、長さN2の離散時間信号x2[n]の後に(M−1)個のゼロが詰められ、長さ(変換長)Pのゼロ詰めデータx2′[n]が得られる。このゼロ詰めデータx2′[n]は高速フーリエ変換部105Dに供給される。この高速フーリエ変換部105Dでは、ゼロ詰めデータx2′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX2[k](0≦k≦P−1)が得られる。
また、3分割部101Dで得られた離散時間信号x3[n]は、ゼロ詰め部106Dに供給される。このゼロ詰め部106Dでは、長さN3の離散時間信号x3[n]の後にT−(N−2P+2(M−1))個のゼロが詰められ、長さ(変換長)Tのゼロ詰めデータx3′[n]が得られる。このゼロ詰めデータx3′[n]は高速フーリエ変換部107Dに供給される。この高速フーリエ変換部107Dでは、ゼロ詰めデータx3′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データX3[k](0≦k≦T−1)が得られる。
また、長さMのフィルタ係数h[m]は、ゼロ詰め部108Dに供給される。このゼロ詰め部108Dでは、長さMのフィルタ係数h[m]の後に(P−M)個のゼロが詰められ、長さ(変換長)Pのゼロ詰めデータh12′[n]が得られる。このゼロ詰めデータh12′[n]は高速フーリエ変換部109Dに供給される。この高速フーリエ変換部109Dでは、ゼロ詰めデータh12′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データH12[k]が得られる。
また、長さMのフィルタ係数h[m]は、ゼロ詰め部110Dに供給される。このゼロ詰め部110Dでは、長さMのフィルタ係数h[m]の後に(T−M)個のゼロが詰められ、長さ(変換長)Tのゼロ詰めデータh3′[n]が得られる。このゼロ詰めデータh3′[n]は高速フーリエ変換部111Dに供給される。この高速フーリエ変換部111Dでは、ゼロ詰めデータh3′[n]に対してFFT(高速フーリエ変換)が行われて、周波数領域データH3[k]が得られる。
高速フーリエ変換部103Dで得られた周波数領域データX1[k]および高速フーリエ変換部109Dで得られた周波数領域データH12[k]は乗算部112Dに供給される。この乗算部112Dでは、周波数領域データX1[k]と周波数領域データH12[k]が乗算されて、乗算結果Y1[k]が得られる。この乗算結果Y1[k]は逆高速フーリエ変換部113Dに供給される。この逆高速フーリエ変換部113Dでは、乗算結果Y1[k]に対してIFFT(逆高速フーリエ変換)が行われて、離散時間信号y1[n]が得られる。
また、高速フーリエ変換部105Dで得られた周波数領域データX2[k]および高速フーリエ変換部109Dで得られた周波数領域データH12[k]は乗算部114Dに供給される。この乗算部114Dでは、周波数領域データX2[k]と周波数領域データH12[k]が乗算されて、乗算結果Y2[k]が得られる。この乗算結果Y2[k]は逆高速フーリエ変換部115Dに供給される。この逆高速フーリエ変換部115Dでは、乗算結果Y2[k]に対してIFFT(逆高速フーリエ変換)が行われて、離散時間信号y2[n]が得られる。
また、高速フーリエ変換部107Dで得られた周波数領域データX3[k]および高速フーリエ変換部111Dで得られた周波数領域データH3[k]は乗算部116Dに供給される。この乗算部116Dでは、周波数領域データX3[k]と周波数領域データH3[k]が乗算されて、乗算結果Y3[k]が得られる。この乗算結果Y3[k]は逆高速フーリエ変換部117Dに供給される。この逆高速フーリエ変換部117Dでは、乗算結果Y3[k]に対してIFFT(逆高速フーリエ変換)が行われて、離散時間信号y3[n]が得られる。
逆高速フーリエ変換部113Dで得られた離散時間信号y1[n]、逆高速フーリエ変換部115Dで得られた離散時間信号y2[n]および逆高速フーリエ変換部117Dで得られた離散時間信号y3[n]は、加算部118Dに供給される。加算部118Dでは、重複加算法により、離散時間信号y1[n],y2[n],y3[n]が加算されて、出力離散時間信号y[n]が得られる。
[演算量を低減できる場合]
図8、図10のフィルタリング部100C,100Dにおいて、方式Bに比べて演算量を低減できる場合を説明する。
ここで、「方式B」および、図8、図10に示すようにx[n]を分割する方式(以下、「本方式」という)における演算量を比較してみる。
「演算量の比較」
<比較のための条件>
本比較では、単純に加算・乗算回数の比較を行う。
FFTの演算量に関して、バタフライ演算部の複素指数関数((21)式参照)のコサイン値、サイン値はデータとして保持しておくものとし、加算・乗算回数はバタフライ演算部の加算、および加算結果と複素指数関数の乗算のみに関して評価する。
Figure 2010219582
なお、P、S、Tに関しては、以下の式により算出可能である。
P=2 ** int(log2(N*2−1))
S=2 ** int(log2((N+3* M−3−P) * 2−1)
T=2 ** int(log2((N+3* M−3−2 * P) *2−1)
ただし、int(x)はxの小数点以下を切り捨てた整数、log2(x)は2を底とする対数を表すものとする。
<演算量の算出結果>
「方式B」、「本方式」における演算量の算出結果を以下に示す。なお、「方式B」の演算量の算出結果を示す(22)式〜(25)式は、上述した(7)式〜(10)式と同じものであるが、比較の容易ために挙げている。
「方式B」
M−1≦P−Nの場合は、以下の(22)式、(23)式で表される。
加算:12*P*log2(P)+2*P ・・・(22)
乗算:6*P*log2(P)+4*P ・・・(23)
P−N<M−1≦Nの場合は、以下の(24)式、(25)式で表される。
加算:24*P*log2(P)+28*P ・・・(24)
乗算:12*P*log2(P)+20*P ・・・(25)
「本方式」A.(P−N)/2<M−1≦P−Nで、x[n]を3分割した場合(図8のフィルタリング部100Cの場合)は、以下の(26)式、(27)式で表される。
加算:10*P*log2(P)−8*P+12*S*log2(S)
+2*S+2*(M−1) ・・・(26)
乗算:5*P*log2(P)−P+6*S*log2(S)+4*S ・・・(27)
B.P−N/2<M−1≦Nで、x[n]を3分割した場合(図10のフィルタリング部100Dの場合)は、以下の(28)式、(29)式で表される。
加算:20*P*log2(P)+4*P+12*T*log2(T)
+2*T+2*(M−1) ・・・(28)
乗算:10*P*log2(P)+8*P+6*T*log2(T)
+4*T ・・・(29)
<方式Bと本方式の演算量の差>
A.(P−N)/2<M−1≦P−Nの場合(図8のフィルタリング部100Cの場合)、方式Bから本方式の演算量を差し引いた値の最小値は、以下の(30)式、(31)式で表される。
加算:2*P*log2(P)+10*P−12*S*log2(S)
−2*S−2*(M−1) ・・・(30)
乗算:P*log2(P)+5*P−6*S*log2(S)−4*S ・・・(31)
したがって、この場合は、N、Mの値により、(30)式、(31)式の値が正となるとき、本方式は方式Bに対して演算量の面において優位となる。
B.P−N/2<M−1≦Nの場合(図10のフィルタリング部100Dの場合)、方式Bから本方式の演算量を差し引いた値の最小値は、以下の(32)式、(33)式で表される。
加算:4*P*log2(P)+24*P−12*T*log2(T)
−2*T−2*(M−1) ・・・(32)
乗算:2*P*log2(P)+12*P−6*T*log2(T)
−4*T ・・・(33)
したがって、N、Mの値により、(32)式、(33)式の値が正となる場合、本方式は方式Bに対して演算量の面において優位となる。
なお、上述の図2、図4、図8、図10のフィルタリング部では、長さN(Nは整数)の離散時間信号x[n]を2分割、あるいは3分割して処理を行うものを示した。しかし、この発明において、分割する数および分割の仕方は、これらの分割例に限定されるものではない。要は、この発明は、長さN(Nは整数)の離散時間信号を長さM(Mは整数、N≧M−1)のフィルタ係数を持つFIRフィルタに入力した場合の出力を得る際に、この長さNの離散時間信号x[n]を複数個の離散時間信号に分割して処理することにある。これにより、従来方式に比べて、演算量等の低減が可能となる。
また、上述したフィルタリング部100A〜100Dは、ハードウェアで処理を行うものを示したが、同様の処理をソフトウェアで行うこともできる。図12は、ソフトウェアで処理を行うコンピュータ装置100Eの構成例を示している。このコンピュータ装置100Eは、CPU(Central Processing Unit)181、ROM(Read OnlyMemory)182、RAM(Random Access Memory)183およびデータ入出力部(データI/O)184により構成されている。
ROM182には、CPU181の処理プログラムが格納されている。RAM183は、CPU181のワークエリアとして機能する。CPU181は、ROM182に格納されている処理プログラムを必要に応じて読み出し、読み出した処理プログラムをRAM183に転送して展開し、当該展開された処理プログラムを読み出して、フィルタリング処理を実行する。
このコンピュータ装置100Eにおいては、長さNの離散時間信号x[n]および長さMのフィルタ係数h[m]は、データI/O184を介して入力され、RAM183に蓄積される。このRAM183に蓄積された離散時間信号x[n]およびフィルタ係数h[m]に対して、CPU181により、上述の図2、図4、図8、図10のフィルタリング部と同様の手順による畳み込み演算の処理、つまりフィルタリング処理が行われる。処理後の出力離散時間信号y[n]は、RAM183からデータI/O184を介して外部に出力される。
また、上述実施の形態においては、この発明をサラウンドプロセッサ10の各フィルタリング部に適用したものを示した。しかし、この発明は、離散時間信号とフィルタ係数の畳み込み演算を高速フーリエ変換を用いて周波数領域での乗算により行う、その他のフィルタリング装置に同様に適用できることは勿論である。
この発明は、離散時間信号とフィルタ係数の畳み込み演算を高速フーリエ変換を用いて周波数領域での乗算により行う場合にあって、演算量およびメモリ使用量の低減が可能となるものであり、サラウンドプロセッサ等の電子機器に適用できる。
10・・・サラウンドプロセッサ
11-1〜11-6,12-1〜12-6・・・フィルタリング部
13,14・・・加算部
100A〜100D・・・フィルタリング部
100E・・・コンピュータ装置
101A,101B・・・2分割部
101C,101D・・・3分割部
102A,102B,102C,102D,104A,104B,104C,104D,106A,106B,106C,106D,108A,108B,108C,108D,110C,110D・・・ゼロ詰め部
103A,103B,103C,103D,105A,105B,105C,105D,107A,107B,107C,107D,109A,109B,109C,109D,111C,111D・・・高速フーリエ変換部
110A,110B,112A,112B,112C,112D,114C,114D,116C,116D・・・乗算部
111A,111B,113A,113B,113C,113D,115C,115D,117C,117D・・・逆高速フーリエ変換部
114A,114B,118C,118D・・・加算部

Claims (7)

  1. 長さN(Nは整数)の離散時間信号を、長さM(Mは整数、N≧M−1)のフィルタ係数を持つFIRフィルタに入力した場合の出力を得るフィルタリング装置であって、
    上記長さNの離散時間信号を複数分割して、複数個の離散時間信号を得る分割部と、
    上記分割部で得られた各離散時間信号の後に適当な数のゼロを詰めて、長さが2の乗数となる複数個のゼロ詰めデータを得る第1のゼロ詰め部と、
    上記第1のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第1の高速フーリエ変換部と、
    上記長さMのフィルタ係数の後にゼロを詰めて、上記第1のゼロ詰め部で得られた各ゼロ詰めデータに対応した長さを持つ複数個のゼロ詰めデータを得る第2のゼロ詰め部と、
    上記第2のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第2の高速フーリエ変換部と、
    上記第1の高速フーリエ変換部で得られた各周波数領域データに、上記第2の高速フーリエ変換部で得られた各周波数領域データを乗算して、複数個の乗算結果を得る乗算部と、
    上記乗算部で得られた各乗算結果に対して逆高速フーリエ変換を行って、複数個の離散時間信号を得る逆高速フーリエ変換部と、
    上記逆高速フーリエ変換部で得られた各離散時間信号を加算して、出力離散時間信号を得る加算部
    を備えるフィルタリング装置。
  2. 上記分割部は、上記長さNの離散時間信号を2分割して、2個の離散時間信号を得、
    上記第1のゼロ詰め部は、(N+M−1)以上の最小の2の乗数の長さをLとするとき、長さがL/2のゼロ詰めデータと、長さがL/2以下のゼロ詰めデータを得る
    請求項1に記載のフィルタリング装置。
  3. 上記N以上の最小の2の乗数をPとするとき、上記Nおよび上記Mは、M−1≦(P−N)/2を満足し、
    上記分割部は、上記長さNの離散時間信号を、(P/2−(M−1))の長さの離散時間信号と、(N−P/2+(M−1))の長さの離散時間信号に分割する
    請求項2に記載のフィルタリング装置。
  4. 上記N以上の最小の2の乗数をPとするとき、上記Nおよび上記Mは、P−N<M−1≦P―N/2を満足し、
    上記分割部は、上記長さNの離散時間信号を、(P−(M−1))の長さの離散時間信号と、(N−P+(M−1))の長さの離散時間信号に分割する
    請求項2に記載のフィルタリング装置。
  5. 長さN(Nは整数)の離散時間信号を、長さM(Mは整数、N≧M−1)のフィルタ係数を持つFIRフィルタに入力した場合の出力を得るフィルタリング方法であって、
    上記長さNの離散時間信号を複数分割して、複数個の離散時間信号を得る分割ステップと、
    上記分割ステップで得られた各離散時間信号の後に(M−1)個以上のゼロを詰めて、長さが2の乗数となる複数個のゼロ詰めデータを得る第1のゼロ詰めステップと、
    上記第1のゼロ詰めステップで得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第1の高速フーリエ変換ステップと、
    上記長さMのフィルタ係数の後にゼロを詰めて、上記第1のゼロ詰めステップで得られた各ゼロ詰めデータに対応した長さを持つ複数個のゼロ詰めデータを得る第2のゼロ詰めステップと、
    上記第2のゼロ詰めステップで得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第2の高速フーリエ変換ステップと、
    上記第1の高速フーリエ変換ステップで得られた各周波数領域データに、上記第2の高速フーリエ変換ステップで得られた各周波数領域データを乗算して、複数個の乗算結果を得る乗算ステップと、
    上記乗算ステップで得られた各乗算結果に対して逆高速フーリエ変換を行って、複数個の離散時間信号を得る逆高速フーリエ変換ステップと、
    上記逆高速フーリエ変換ステップで得られた各離散時間信号を加算して、出力離散時間信号を得る加算ステップ
    を備えるフィルタリング方法。
  6. 長さN(Nは整数)の離散時間信号を、長さM(Mは整数、N≧M−1)のフィルタ係数を持つFIRフィルタに入力した場合の出力を得るために、
    コンピュータを、
    上記長さNの離散時間信号を複数分割して、複数個の離散時間信号を得る分割手段と、
    上記分割手段で得られた各離散時間信号の後に(M−1)個以上のゼロを詰めて、長さが2の乗数となる複数個のゼロ詰めデータを得る第1のゼロ詰め手段と、
    上記第1のゼロ詰め手段で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第1の高速フーリエ変換手段と、
    上記長さMのフィルタ係数の後にゼロを詰めて、上記第1のゼロ詰め手段で得られた各ゼロ詰めデータに対応した長さを持つ複数個のゼロ詰めデータを得る第2のゼロ詰め手段と、
    上記第2のゼロ詰め手段で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第2の高速フーリエ変換手段と、
    上記第1の高速フーリエ変換手段で得られた各周波数領域データに、上記第2の高速フーリエ変換手段で得られた各周波数領域データを乗算して、複数個の乗算結果を得る乗算手段と、
    上記乗算手段で得られた各乗算結果に対して逆高速フーリエ変換を行って、複数個の離散時間信号を得る逆高速フーリエ変換手段と、
    上記逆高速フーリエ変換手段で得られた各離散時間信号を加算して、出力離散時間信号を得る加算手段
    として機能させるプログラム。
  7. 長さN(Nは整数)の離散時間信号を、長さM(Mは整数、N≧M−1)のフィルタ係数を持つFIRフィルタに入力した場合の出力を得るフィルタリング部を複数備え、3チャネル以上の離散音声時間信号から2チャネルの離散音声時間信号を生成するサラウンドプロセッサであって、
    上記フィルタリング部は、
    上記長さNの離散時間音声信号を複数分割して、複数個の離散時間音声信号を得る分割部と、
    上記分割部で得られた各離散時間音声信号の後に(M−1)個以上のゼロを詰めて、長さが2の乗数となる複数個のゼロ詰めデータを得る第1のゼロ詰め部と、
    上記第1のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第1の高速フーリエ変換部と、
    上記長さMのフィルタ係数の後にゼロを詰めて、上記第1のゼロ詰め部で得られた各ゼロ詰めデータに対応した長さを持つ複数個のゼロ詰めデータを得る第2のゼロ詰め部と、
    上記第2のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第2の高速フーリエ変換部と、
    上記第1の高速フーリエ変換部で得られた各周波数領域データに、上記第2の高速フーリエ変換部で得られた各周波数領域データを乗算して、複数個の乗算結果を得る乗算部と、
    上記乗算部で得られた各乗算結果に対して逆高速フーリエ変換を行って、複数個の離散時間音声信号を得る逆高速フーリエ変換部と、
    上記逆高速フーリエ変換部で得られた各離散時間音声信号を加算して、出力離散時間音声信号を得る加算部を有する
    サラウンドプロセッサ。
JP2009060442A 2009-03-13 2009-03-13 フィルタリング装置、フィルタリング方法、プログラムおよびサラウンドプロセッサ Withdrawn JP2010219582A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009060442A JP2010219582A (ja) 2009-03-13 2009-03-13 フィルタリング装置、フィルタリング方法、プログラムおよびサラウンドプロセッサ
CN201010129061XA CN101834581B (zh) 2009-03-13 2010-03-08 滤波装置、滤波方法、程序和环绕处理器
US12/719,508 US8433738B2 (en) 2009-03-13 2010-03-08 Filtering apparatus, filtering method, program, and surround processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009060442A JP2010219582A (ja) 2009-03-13 2009-03-13 フィルタリング装置、フィルタリング方法、プログラムおよびサラウンドプロセッサ

Publications (1)

Publication Number Publication Date
JP2010219582A true JP2010219582A (ja) 2010-09-30

Family

ID=42718538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009060442A Withdrawn JP2010219582A (ja) 2009-03-13 2009-03-13 フィルタリング装置、フィルタリング方法、プログラムおよびサラウンドプロセッサ

Country Status (3)

Country Link
US (1) US8433738B2 (ja)
JP (1) JP2010219582A (ja)
CN (1) CN101834581B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012137945A (ja) * 2010-12-27 2012-07-19 Shimizu Corp 畳み込み演算システム及び畳み込み演算プログラム
WO2013094308A1 (ja) * 2011-12-20 2013-06-27 日本電気株式会社 ディジタルフィルタ回路およびディジタルフィルタ処理方法
WO2013125173A1 (ja) * 2012-02-20 2013-08-29 日本電気株式会社 ディジタルフィルタ回路、ディジタルフィルタ処理方法及びディジタルフィルタ処理プログラム記憶媒体

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8335857B1 (en) * 2009-05-21 2012-12-18 Sprint Communications Company L.P. System and methods of data transmission to devices
CN102545834B (zh) * 2010-12-21 2015-02-18 普天信息技术研究院有限公司 一种基于dsp高速采样信号实时滤波的方法和装置
US8943117B1 (en) * 2011-04-18 2015-01-27 Arthur Torosyan Method and apparatus for hybrid digital filtering
US9280964B2 (en) * 2013-03-14 2016-03-08 Fishman Transducers, Inc. Device and method for processing signals associated with sound
US9820074B2 (en) 2013-03-15 2017-11-14 Apple Inc. Memory management techniques and related systems for block-based convolution
CN104333348B (zh) * 2014-11-27 2017-02-22 中国电子科技集团公司第二十九研究所 一种高阶数字滤波系统及方法
CN104967428B (zh) * 2015-07-28 2018-03-13 南京信息工程大学 用于fpga的高速高阶fir滤波器的频域实现方法
WO2017153699A1 (fr) * 2016-03-11 2017-09-14 Orange Procédé et dispositif de transmission multi services avec modulation fc-ofdm et récepteur correspondant
FR3049131B1 (fr) 2016-03-18 2018-04-06 Thales Procede de filtrage d'un signal d'entree numerique et filtre associe
US20180011181A1 (en) * 2016-07-07 2018-01-11 Infineon Technologies Ag Radar systems and methods thereof
US10565285B2 (en) 2017-12-18 2020-02-18 International Business Machines Corporation Processor and memory transparent convolutional lowering and auto zero padding for deep neural network implementations

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1304797A3 (en) * 1992-07-07 2007-11-28 Dolby Laboratories Licensing Corporation Digital filter having high accuracy and efficiency
US5809069A (en) * 1996-07-19 1998-09-15 Texas Instruments Incorporated Frequency-domain carrierless AM-PM demodulator
SE517525C2 (sv) * 1999-09-07 2002-06-18 Ericsson Telefon Ab L M Förfarande och anordning för konstruktion av digitala filter
AU2001288963A1 (en) * 2000-09-18 2002-04-02 Skybitz, Inc System and method for fast code phase and carrier frequency acquisition in gps receiver
CA2390253A1 (en) * 2001-06-11 2002-12-11 Unique Broadband Systems, Inc. Ofdm multiple sub-channel communication system
US8484272B2 (en) * 2004-08-20 2013-07-09 Qualcomm Incorporated Unified pulse shaping for multi-carrier and single-carrier waveforms
CN100393133C (zh) * 2004-12-30 2008-06-04 中兴通讯股份有限公司 一种视频序列中运动物体的分割方法
CN101087413B (zh) * 2006-06-07 2010-05-12 中兴通讯股份有限公司 视频序列中运动物体的分割方法
CN101339652B (zh) * 2007-12-28 2011-06-01 中国人民解放军海军航空工程学院 一种固体发动机ct图像的分割方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012137945A (ja) * 2010-12-27 2012-07-19 Shimizu Corp 畳み込み演算システム及び畳み込み演算プログラム
WO2013094308A1 (ja) * 2011-12-20 2013-06-27 日本電気株式会社 ディジタルフィルタ回路およびディジタルフィルタ処理方法
JPWO2013094308A1 (ja) * 2011-12-20 2015-04-27 日本電気株式会社 ディジタルフィルタ回路およびディジタルフィルタ処理方法
US9509282B2 (en) 2011-12-20 2016-11-29 Nec Corporation Digital filter circuit and digital filter processing method
WO2013125173A1 (ja) * 2012-02-20 2013-08-29 日本電気株式会社 ディジタルフィルタ回路、ディジタルフィルタ処理方法及びディジタルフィルタ処理プログラム記憶媒体
US9571066B2 (en) 2012-02-20 2017-02-14 Nec Corporation Digital filter circuit, digital filter processing method and digital filter processing program storage medium

Also Published As

Publication number Publication date
CN101834581B (zh) 2013-06-05
CN101834581A (zh) 2010-09-15
US8433738B2 (en) 2013-04-30
US20100235419A1 (en) 2010-09-16

Similar Documents

Publication Publication Date Title
JP2010219582A (ja) フィルタリング装置、フィルタリング方法、プログラムおよびサラウンドプロセッサ
EP3236587B1 (en) Filter system comprising a filter converter and a filter compressor and method for operating the filter system
JP4396233B2 (ja) 複素指数変調フィルタバンクの信号分析方法、信号合成方法、そのプログラム及びその記録媒体
US7612281B2 (en) Reverberation effect adding device
JP2005148274A5 (ja)
US20050193185A1 (en) Processor execution unit for complex operations
US8239442B2 (en) Computing module for efficient FFT and FIR hardware accelerator
JP2011034566A (ja) マルチmacアーキテクチャにおける低電力firフィルタ
CN107835992A (zh) Simd相乘和水平归约运算
CN109117188A (zh) 一种多路混合基fft可重构蝶形运算器
WO2002091221A2 (en) Address generator for fast fourier transform processor
US7110927B1 (en) Finite impulse response (FIR) filter compiler
US6625629B1 (en) System and method for signal processing using an improved convolution technique
US20040128335A1 (en) Fast fourier transform (FFT) butterfly calculations in two cycles
CN109933749B (zh) 用于生成信息的方法和装置
US20200264842A1 (en) Performing processing using hardware counters in a computer system
US20160179458A1 (en) Digital signal processing using a combination of direct and multi-band convolution algorithms in the time domain
JP6015431B2 (ja) サンプリングレート変換装置及びプログラム
JP4083387B2 (ja) 離散フーリエ変換の計算
CN1688104B (zh) 数字信号处理方法及装置
CN115033293A (zh) 零知识证明硬件加速器及生成方法、电子设备和存储介质
US7925213B2 (en) Method and system for audio signal processing for Bluetooth wireless headsets using a hardware accelerator
US20120254274A1 (en) Index Generation Scheme for Prime Factor Algorithm Based Mixed Radix Discrete Fourier Transform (DFT)
JPWO2013125173A1 (ja) ディジタルフィルタ回路、ディジタルフィルタ処理方法及びディジタルフィルタ処理プログラム
Cintra et al. The arithmetic cosine transform: Exact and approximate algorithms

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120605