(57)【要約】【課題】窓をかけた結果、時間軸上で隣接するようになった両ブロックの波形が近付くように補正することによって、サンプルの個数を元のままで演算量を殆ど増やさずに両ブロック間の接続点での不連続を解消することが可能なノイズ除去装置を提供すること。【解決手段】時間軸上で隣接するようになった両ブロック間の接続点で不連続が生じた場合には、ＣＰＵ１００は、スムージング処理における補正量を求める処理を行う（ステップＳ３０００、Ｓ３０１０）。そして、このスムージング処理における補正量から１サンプル当りの差分値を求める（ステップＳ３０２０）。次に、変数Ｊに応じた位置のサンプルのサンプル値に、差分値と変数Ｊとに基づいて算出した数値を加算する処理を実行する（ステップＳ３０４０）。更に、変数Ｊに応じた位置のサンプルのサンプル値から、差分値と変数Ｊとに基づいて算出した数値を減算する処理を実行する（ステップＳ３０５０）。【選択図】  図１
2005010544.tif 000002
【特許請求の範囲】
【請求項１】
アナログ信号を順次サンプリングして生成されたデジタル信号を所定数個のサンプル値から成るブロック毎に分割したブロック群のうちの或るブロック（前側ブロック）と、窓をかけた結果これと時間軸上で隣接するようになった後側に所定ブロック数離れたブロック（後側ブロック）との両ブロック間を接続した場合における接続点での不連続を解消するスムージング処理を行うノイズ除去装置であって、
前記２つのブロック間の不連続が生じた接続点での前記スムージング処理を行う際の補正量を求める補正量算出手段と、
ブロック内のサンプル値のうち、前記スムージング処理の対象となるサンプル値の個数を示すスムージング点数で前記求めた補正量を除算して１サンプル当りの差分値を求める差分算出手段と、
前記後側ブロック内における或る変数に応じた位置のサンプル値に、前記差分値と前記或る変数とに基づいて算出した数値を加算する処理を加算処理と定め、前記後側ブロックの先頭から前記スムージング点数で示す個数番目までのサンプル値のそれぞれに対して、前記スムージング点数で示す個数番目から先頭側に向かって前記或る変数を順次変更して、前記加算処理を繰り返し行っていく加算手段と、
前記前側ブロック内における前記或る変数に応じた位置のサンプル値から、前記差分値と前記或る変数とに基づいて算出した数値を減算する処理を減算処理と定め、前記前側ブロックの最後から前記スムージング点数で示す個数番目手前までのサンプル値のそれぞれに対して、最後から前記スムージング点数で示す個数番目手前から末尾側に向かって前記或る変数を順次変更して、前記減算処理を繰り返し行っていく減算手段と、を備えたことを特徴とするノイズ除去装置。
【請求項２】
請求項１に記載のノイズ除去装置において、
前記補正量算出手段は、
前記２つのブロック間の不連続が生じた接続点での振幅差を求める手段と、前記求めた振幅差を２で除算して前記スムージング処理を行う際の補正量を求める手段と、を含むことを特徴とするノイズ除去装置。
【請求項３】
請求項１および２の内のいずれか１つに記載のノイズ除去装置において、
前記デジタル信号は、楽音信号であることを特徴とするノイズ除去装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、アナログ信号を順次サンプリングして生成されたデジタル信号を所定数個のサンプル値から成るブロック毎に分割したブロック群のうちの或るブロックと、窓をかけた結果これと時間軸上で隣接するようになった後側に所定ブロック数離れたブロックとの両ブロック間を接続した場合における接続点での不連続を解消するスムージング処理を行うノイズ除去装置に関する。
【０００２】
【従来の技術】
従来より、楽音信号等としてのアナログ信号をデジタル化したデジタル信号を、コンピュータにより複数のブロック毎に分割して処理すると、隣接する各ブロック間の接続点で不連続が生じていた。この不連続を解消する方法としては、まず、複数のブロックを高速フーリエ変換（ＦＦＴ）する前に窓をかける際の窓関数と、その後、逆高速フーリエ変換（逆ＦＦＴ）した後に窓をかける際の窓関数とをかけ合わせて三角窓やハニング窓となるようにそれぞれの窓関数を設計する方法等があった。また、従来の雑音低減システムでは、デジタル信号を複数のブロック毎に分割して処理しても因果性が保持されるように、ブロック内のＦＦＴする処理を行うサンプルの個数を変更するものが提案されている（例えば、特許文献１参照。）。
【０００３】
【特許文献１】
特表２００２−５１７０２１号公報（第１３頁、第１図）
【０００４】
【発明が解決しようとする課題】
しかしながら、上述のような窓関数を設計して不連続を解消する方法では、高速フーリエ変換（ＦＦＴ）する前と逆高速フーリエ変換（逆ＦＦＴ）した後とに窓をかける処理を行うため、コンピュータが処理する演算量が膨大となるという問題があった。
【０００５】
また、ブロック内のＦＦＴする処理を行うサンプルの個数を変更する方法でも、サンプルの個数を変更することによりコンピュータが処理する演算量が膨大となり、演算能力の低いコンピュータ等では対応できないという問題があった。
【０００６】
そこで、本発明は、かかる事情を考慮してなされたもので、窓をかけた結果、時間軸上で隣接するようになった所定ブロック数離れた２つのブロック間を接続した際に、それらの両ブロック間の接続点で不連続が生じた場合には、それら両ブロックの波形が近付くように補正することによって、サンプルの個数を元のままで演算量を殆ど増やさずに不連続を解消することが可能なノイズ除去装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記課題を解決するために、本発明は、アナログ信号を順次サンプリングして生成されたデジタル信号を所定数個のサンプル値から成るブロック毎に分割したブロック群のうちの或るブロック（前側ブロック）と、窓をかけた結果これと時間軸上で隣接するようになった後側に所定ブロック数離れたブロック（後側ブロック）との両ブロック間を接続した場合における接続点での不連続を解消するスムージング処理を行うノイズ除去装置であって、
前記２つのブロック間の不連続が生じた接続点での前記スムージング処理を行う際の補正量を求める補正量算出手段と、
ブロック内のサンプル値のうち、前記スムージング処理の対象となるサンプル値の個数を示すスムージング点数で前記求めた補正量を除算して１サンプル当りの差分値を求める差分算出手段と、
前記後側ブロック内における或る変数に応じた位置のサンプル値に、前記差分値と前記或る変数とに基づいて算出した数値を加算する処理を加算処理と定め、前記後側ブロックの先頭から前記スムージング点数で示す個数番目までのサンプル値のそれぞれに対して、前記スムージング点数で示す個数番目から先頭側に向かって前記或る変数を順次変更して、前記加算処理を繰り返し行っていく加算手段と、
前記前側ブロック内における前記或る変数に応じた位置のサンプル値から、前記差分値と前記或る変数とに基づいて算出した数値を減算する処理を減算処理と定め、前記前側ブロックの最後から前記スムージング点数で示す個数番目手前までのサンプル値のそれぞれに対して、最後から前記スムージング点数で示す個数番目手前から末尾側に向かって前記或る変数を順次変更して、前記減算処理を繰り返し行っていく減算手段と、を備えたことを特徴とする。
【０００８】
このような発明によれば、加算手段が、後側ブロックの先頭からスムージング点数で示す個数番目までのサンプル値のそれぞれに対して、スムージング点数で示す個数番目から先頭側に向かって或る変数を順次変更して、加算処理を繰り返し行っていくと共に、減算手段が、前側ブロックの最後からスムージング点数で示す個数番目手前までのサンプル値のそれぞれに対して、最後からスムージング点数で示す個数番目手前から末尾側に向かって或る変数を順次変更して、減算処理を繰り返し行っていくので、後側ブロック、前側ブロックにおいて、後側ブロックの先頭からスムージング点数で示す個数番目までのサンプル値、前側ブロックの最後からスムージング点数で示す個数番目手前までのサンプル値に対応する波形が補正されて接続点での不連続を解消することが可能である。
【０００９】
また、上述のノイズ除去装置において、
前記補正量算出手段は、
前記２つのブロック間の不連続が生じた接続点での振幅差を求める手段と、前記求めた振幅差を２で除算して前記スムージング処理を行う際の補正量を求める手段と、を含むようにしても良い。
【００１０】
このような発明によれば、２つのブロック間の不連続が生じた接続点での振幅差を２で除算してスムージング処理を行う際の補正量を求めるので、振幅差の分離れていたそれぞれのブロックの波形が近付くように補正されるので、振幅差が無くなり接続点での不連続が解消することが可能である。
【００１１】
更に、上述のノイズ除去装置において、前記デジタル信号は、楽音信号であるとしても良い。このような発明によれば、楽音信号としてのデジタル信号において生じた不連続を解消することが可能となる。
【００１２】
また、本発明に係る他のノイズ除去装置として、アナログ信号を順次サンプリングして生成されたデジタル信号を所定数個のサンプル値から成るブロック毎に分割したブロック群のうちの或るブロック（前側ブロック）とこれと時間軸上で後側に所定ブロック数離れたブロック（後側ブロック）との両ブロック間を接続することを想定した場合における接続点での不連続を解消するスムージング処理を行うノイズ除去装置であって、
前記２つのブロック間において不連続が生じる接続点での、前記スムージング処理を行う際に用いる補正量を求める補正量算出手段と、
１つのブロックにおいて前記スムージング処理対象となる部分に属するサンプルに対応する点（スムージング点）、の数であるスムージング点数で前記求めた補正量を除算して１サンプル当りの差分値を求める差分算出手段と、
前記後側ブロックにおける複数のスムージング点の夫々に対して、スムージング点位置に応じて変化する変数値と前記差分値とを乗算した値を当該スムージング点位置に対応するサンプル値に対して加算する処理を行う加算処理手段と、
前記前側ブロックにおける複数のスムージング点の夫々に対して、スムージング点位置に応じて変化する変数値と前記差分値とを乗算した値を当該スムージング点位置に対応するサンプル値に対して減算する処理を行う減算処理手段と、を備えたことを特徴とするようにしても良い。
【００１３】
上述のノイズ除去装置において、
前記加算処理手段は、
前記後側ブロックの先頭から「スムージング点数−Ｊ（Ｊは１から最大スムージング点数まで変化する自然数変数）」番目の位置に対応するサンプル値に対して当該変数Ｊに前記差分値を乗じた値を加算する処理を、変数Ｊを１から最大スムージング点数まで変化させて行うように構成され、
前記減算処理手段は、
前記前側ブロックの最後から「スムージング点数−Ｊ（Ｊは１から最大スムージング点数まで変化する自然数変数）」番目手前の位置に対応するサンプル値に対して当該変数Ｊに前記差分値を乗じた値を減算する処理を、変数Ｊを１から最大スムージング点数まで変化させて行うように構成された、ことを特徴とするようにしても良い。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しつつ説明する。図１は、本実施の形態におけるノイズ除去装置１０のブロック構成図である。ノイズ除去装置１０は、ＣＰＵ１００、ＲＯＭ１１０、ＲＡＭ１２０、Ａ／Ｄ（アナログ／デジタル変換器）１３０、Ｄ／Ａ（デジタル／アナログ変換器）１４０を備えている。
【００１５】
ＣＰＵ１００は、ＲＯＭ１１０に格納されたプログラムを実行することで、Ａ／Ｄ１３０によりデジタル信号化された楽音信号に対して、周波数領域での処理により音響効果の効果付加等を行う。
【００１６】
また、ＣＰＵ１００は、ＲＯＭ１１０に格納されたプログラムを実行することで、窓をかけた楽音信号としてのデジタル信号に対して後述するスムージング処理を行う。即ち、楽音信号としてのデジタル信号を所定数個のサンプル値から成るブロック毎に分割したブロック群のうち或るブロックと、窓をかけた結果これと時間軸上で隣接するようになった後側に所定ブロック数離れたブロックとの両ブロック間を接続した場合における、それらの両ブロック間の接続点での不連続を解消するスムージング処理を行う。
【００１７】
例えば、楽音信号としてのデジタル信号に対して２分の１オーバーラップを持たせて窓をかけた結果、図４に示すように、１番目のブロックと３番目のブロック、２番目のブロックと４番目のブロックがそれぞれ時間軸上で隣接した場合には、１番目と３番目のブロック間、２番目と４番目のブロック間の接続点で生じる不連続を解消するスムージング処理を行う。
【００１８】
ＲＯＭ１１０には、楽音信号としてのデジタル信号に対して窓をかける処理、高速フーリエ変換（以下、ＦＦＴと称する。）する処理、逆高速フーリエ変換（以下、逆ＦＦＴと称する。）する処理、周波数領域での処理により音響効果の効果付加等を行う処理等をＣＰＵ１００に実行させるためのプログラムが格納されている。また、ＣＰＵ１００にスムージング処理を実行させるためのプログラムが格納されている。
【００１９】
ＲＡＭ１２０には、楽音信号としてのデジタル信号からノイズ波形を除去するために検出したそのノイズ波形のスペクトラム等が格納されるようになっている。  また、スムージング処理においてＣＰＵ１００が算出した、時間軸上で隣接するようになった２つのブロック間の接続点で生じた不連続な接続点での振幅差やスムージング処理する際の補正量等が格納されるようになっている。
【００２０】
Ａ／Ｄ１３０は、ノイズ除去装置１０外部から受け取った楽音信号としてのアナログ信号を時間軸上で順次サンプリングすることにより、楽音信号としてのデジタル信号を生成する機能を有する。また、生成したこのデジタル信号をＣＰＵ１００に入力する機能を有する。
【００２１】
Ｄ／Ａ１４０は、ＣＰＵ１００から出力された楽音信号としてのデジタル信号を、楽音信号としてのアナログ信号に変換する機能を有する。また、この楽音信号としてのアナログ信号をノイズ除去装置１０外部に送出する機能を有する。
【００２２】
続いて、上述のような構成を有するノイズ除去装置１０における処理について、図２、３に示すフローチャート図を用いて説明する。まず、図２を用いてノイズ除去装置１０における全体の処理について説明する。ノイズ除去装置１０外部から受け取った楽音信号がＡ／Ｄ１３０によりデジタル信号化され、この楽音信号としてのデジタル信号（以下単にデジタル信号と称する。）をＣＰＵ１００に入力されると、ＣＰＵ１００は、デジタル信号の波形を所定数個のサンプル値から成る複数のブロック毎に分割しＲＡＭ１２０に格納する。そして、ＣＰＵ１００は、デジタル信号のノイズ波形のスペクトラムを求め、この求めたノイズ波形のスペクトラムをＲＡＭ１２０に格納する（ステップＳ２０００）。
【００２３】
次に、ＣＰＵ１００は、デジタル信号を分割した複数のブロックのうち、周波数領域での処理により音響効果の効果付加等を行う対象となるブロックを指定する変数Ｉを「１」に設定する（ステップＳ２０１０）。ＣＰＵ１００は、「１」に設定した変数ＩをＲＡＭ１２０に格納する。
【００２４】
次に、ＣＰＵ１００は、変数Ｉで指定したブロックを読み込む処理を実行する（ステップＳ２０２０）。ＣＰＵ１００は、ＲＡＭ１２０を検索して変数Ｉを読出す。そして、この変数Ｉが「１」となっていると判断し、ＲＡＭ１２０を検索してデジタル信号を分割した複数のブロックの内、時間軸上の前から１番目のブロックを読み出す。
【００２５】
次に、ＣＰＵ１００は、デジタル信号に対して窓をかける処理を実行する（ステップＳ２０３０）。ＣＰＵ１００は、ＲＡＭ１２０から各ブロックを読み出し、これらの各ブロックに対して窓をかける処理を実行する。ここでは、窓をかける処理の一例として、図４に示すように、デジタル信号を分割した複数のブロックのそれぞれを、時間軸上でブロックの２分の１長さ分のオーバーラップを持たせて窓をかける処理を実行する。
【００２６】
次に、ＣＰＵ１００は、デジタル信号をＦＦＴする処理を実行する（ステップＳ２０４０）。ＣＰＵ１００は、ＲＡＭ１２０を検索して各ブロックを読み出し、これらの各ブロックに対してＦＦＴする処理を実行する。
【００２７】
次に、ＣＰＵ１００は、変数Ｉで指定したブロックからノイズ波形を除去する処理を実行する（ステップＳ２０５０）。ＣＰＵ１００は、ＲＡＭ１２０を検索して、ステップＳ２０００において検出したノイズ波形のスペクトラムを読出す。そして、ステップＳ２０２０で読み出したブロックのスペクトラムから、このノイズ波形のスペクトラムを減算する。この処理によって、ノイズ波形が除去されたブロックの波形が取得される。
【００２８】
次に、ＣＰＵ１００は、周波数領域での処理を実行する（ステップＳ２０６０）。ＣＰＵ１００は、ステップＳ２０５０で取得したブロックの波形に対して周波数領域での処理を実行することにより、様々な音響効果等の効果付加を行う。音響効果の例としては、例えば、ローパスフィルター、フェイザ−、ディレイ・リバーブ等が挙げられる。そして、ＣＰＵ１００は、この周波数領域での処理を実行したブロックをＲＡＭ１２０に格納する。
【００２９】
次に、ＣＰＵ１００は、デジタル信号を逆ＦＦＴする処理を実行する（ステップＳ２０７０）。ＣＰＵ１００は、ＲＡＭ１２０を検索して各ブロックを読み出し、これらの各ブロックに対して逆ＦＦＴする処理を実行する。
【００３０】
次に、ＣＰＵ１００は、変数Ｉが３以上であるか否かを判定する（ステップＳ２０８０）。ＣＰＵ１００は、ＲＡＭ１２０を検索して変数Ｉを読出し、変数Ｉが３以上である場合には（ステップＳ２０８０のＹｅｓ）、ステップＳ２０９０の処理を実行する。変数Ｉが３以上でない場合には（ステップＳ２０８０のＮｏ）、時間軸上で前側に隣接するブロックが存在しないためスムージング処理を行わないものとして、ステップＳ３１００を実行する。
【００３１】
次に、ＣＰＵ１００は、変数Ｉで指定したブロックに対してスムージング処理を実行する（ステップＳ２０９０）。このスムージング処理ついては、後に詳細に説明する。
【００３２】
次に、ＣＰＵ１００は、ブロックの波形を出力波形として書き出す処理を実行する（ステップＳ３１００）。ＣＰＵ１００は、ＲＡＭ１２０を検索して、ステップＳ２０６０において周波数領域での処理を実行したブロック、即ち、変数Ｉで指定したブロックを読み出し、このブロックの波形をＤ／Ａ１４０を介してノイズ除去装置１０外部に送出する出力波形として設定する。
【００３３】
次に、ＣＰＵ１００は、変数Ｉがデジタル信号を分割した複数のブロックの内、最終ブロックを示す数値であるか否かを判定する（ステップＳ２１１０）。ＣＰＵ１００は、ＲＡＭ１２０を検索して変数Ｉを読み出す。そして、変数Ｉが最終ブロックを示す数値である場合には（ステップＳ２１１０のＹｅｓ）、ＣＰＵ１００は、ＲＡＭ１２０に格納された全てのブロック、即ち、ステップＳ３１００において出力波形として設定されたブロックをすべて読み出す。そして、これらのブロックをＤ／Ａ１４０により楽音信号としてのアナログ信号に変換し、ノイズ除去装置１０外部に送出する。
【００３４】
変数Ｉが最終ブロックを示す数値でない場合には（ステップＳ２１１０のＮｏ）、ＣＰＵ１００は、変数Ｉを変更して「１」を加え、この変更した変数ＩをＲＡＭ１２０に格納する（ステップＳ２１２０）。そして、ＣＰＵ１００は、ステップＳ２０２０以降の処理を繰り返し実行する。
【００３５】
続いて、上述のステップＳ２０９０におけるスムージング処理について、図３に示すフローチャート図を用いて詳細に説明するが、ここでまず、ＲＡＭ１２０に格納された各ブロックのそれぞれは、ステップＳ２０３０における窓をかける処理を実行した結果、時間軸上でブロックの２分の１長さ分オーバーラップされている。このため、時間軸上の前側から１番目のブロックと、この１番目の後側に２個離れた３番目のブロック、また、２番目と４番目のブロック…等のように２個離れたブロック同士が互いに時間軸上で隣接するようになっている。
【００３６】
そして、例えば隣接した１番目と３番目のブロック間を接続した場合の接続点においては、１番目のブロックの最後の振幅値と、３番目のブロックの先頭の振幅値とが一致せず、不連続が生じている。また、２番目と４番目のブロック間…等の接続点においても同様に不連続が生じている。
【００３７】
上述のステップＳ２０９０におけるスムージング処理は、１番目と３番目のブロック等を補正して、これらの両ブロック間の接続点での不連続を解消するために実行される。ここでは、変数Ｉが「３」である場合のスムージング処理について説明するが、変数Ｉが「３」以外の場合であっても、同様の処理が行われる。
【００３８】
ＣＰＵ１００は、時間軸上で隣接するブロック間の接続点の振幅差を求める処理を行う（ステップＳ３０００）。ＣＰＵ１００は、ＲＡＭ１２０を検索して、変数Ｉで指定したブロック、即ち、各ブロックの内時間軸上の前から３番目のブロックを読み出し、また、この３番目のブロックの２個前のブロック、即ち、１番目のブロックとを読み出す。そして、図５に示すように、１番目のブロックの波形上の最後の位置のサンプルの振幅値（以下、サンプル値と称する。）から、３番目のブロックの波形上の先頭の位置（１番目）のサンプル値を減算し、振幅差を求める。
【００３９】
例えば、図５に示すように、３番目のブロックの先頭の位置のサンプル値が「０」であり、１番目のブロックの最後の位置のサンプル値が「−０．３」である場合には、振幅差は「−０．３」となる。
【００４０】
次に、ＣＰＵ１００は、スムージング処理における補正量を求める処理を行う（ステップＳ３０１０）。ＣＰＵ１００は、図６に示すように、ステップＳ３０００において求めた振幅差を２で除算し、この除算して求めた数値を１番目と３番目のブロックのそれぞれに対応する補正量としてＲＡＭ１２０に格納する。即ち、振幅差が「−０．３」である場合には、補正量は「−０．１５」となる。
【００４１】
次に、ＣＰＵ１００は、補正量をスムージング点数で除算し１サンプル当りの差分値（ｄＢｌｏｃｋＳｍｔＤｉｆｆ）を求める（ステップＳ３０２０）。ここで、スムージング点数とは、ブロック内のサンプル値のうち、スムージング処理の対象となるサンプルの個数を示す数値である。即ち、スムージング点数とは、図６に示すように、スムージング処理を実行するブロックの部分を示すスムージング長の範囲内に含まれるサンプル値の個数を示す数値であり、スムージング長の範囲内においてスムージング点数で示す個数のサンプル値に対して補正が行われるようになっている。
【００４２】
ＣＰＵ１００は、ＲＡＭ１２０を検索して補正量を読み出し、この補正量をスムージング点数で除算して、スムージング処理の対象となるサンプルについての１サンプル当りの差分値（ｄＢｌｏｃｋＳｍｔＤｉｆｆ）を求める。差分値とは、１つのサンプルのサンプル値を修正するために用いる数値である。そして、この求めた差分値（ｄＢｌｏｃｋＳｍｔＤｉｆｆ）をＲＡＭ１２０に格納する。即ち、補正量が「−０．１５」であり、スムージング点数が「３０」である場合には、１サンプル当りの差分値（ｄＢｌｏｃｋＳｍｔＤｉｆｆ）は、「−０．００５」となる。
【００４３】
次に、ＣＰＵ１００は、修正を行うサンプルを指定するための或る変数Ｊを「１」に設定する（ステップＳ３０３０）。ＣＰＵ１００は、「１」に設定した変数ＪをＲＡＭ１２０に格納する。
【００４４】
次に、ＣＰＵ１００は、３番目のブロック内において変数Ｊに応じた位置のサンプルのサンプル値に、差分値と変数Ｊとに基づいて算出した数値を加算する処理を実行する（ステップＳ３０４０）。ＣＰＵ１００は、ＲＡＭ１２０を検索して変数Ｊを読み出し、この変数Ｊを用いて「スムージング点数−Ｊ」で求められる数値（以下、「Ｊ’」とする。）を求める。また、ＲＡＭ１２０を検索して差分値（ｄＢｌｏｃｋＳｍｔＤｉｆｆ）を読み出し、この差分値（ｄＢｌｏｃｋＳｍｔＤｉｆｆ）を用いて「差分値（ｄＢｌｏｃｋＳｍｔＤｉｆｆ）×Ｊ」で求められる数値（以下、「Ｊ’’」とする。）を求める。即ち、スムージング点数が「３０」であり、差分値（ｄＢｌｏｃｋＳｍｔＤｉｆｆ）が「−０．００５」である場合には、変数Ｊが「１」であることに応じて、「Ｊ’」は「２９」となり、「Ｊ’’」は「−０．０５」となる。
【００４５】
そして、ＣＰＵ１００は、３番目のブロックの時間軸上の先頭から「Ｊ’」番目のサンプルのサンプル値に、「Ｊ’’」を加算する。ＣＰＵ１００は、この求めた加算後のサンプル値を用いて３番目のブロックの波形を補正し、この補正した後の３番目のブロックをＲＡＭ１２０に格納する。即ち、「Ｊ’」が「２９」であり、「Ｊ’’」が「−０．０５」である場合には、３番目のブロックの時間軸上の先頭から２９番目のサンプルのサンプル値に「−０．０５」が加算され、この加算された後のサンプル値を用いて、３番目のブロックの先頭から２９番目のサンプルの振幅値が「０．０５」分少なくなるように、３番目のブロックの波形を補正する。
【００４６】
次に、ＣＰＵ１００は、１番目のブロック内において変数Ｊに応じた位置のサンプルのサンプル値から、差分値と変数Ｊとに基づいて算出した数値を減算する処理を実行する（ステップＳ３０５０）。ＣＰＵ１００は、１番目のブロックの時間軸上の最後から「Ｊ’」番目手前のサンプルのサンプル値から、「Ｊ’’」を減算する。ＣＰＵ１００は、この求めた減算後のサンプル値を用いて１番目のブロックの波形を補正し、この補正した後の１番目のブロックをＲＡＭ１２０に格納する。即ち、「Ｊ’」が「２９」であり、「Ｊ’’」が「−０．０５」である場合には、１番目のブロックの時間軸上の最後から２９番目手前のサンプルのサンプル値から「−０．０５」が減算され、この減算された後のサンプル値を用いて、１番目のブロックの最後から２９番目のサンプルの振幅値が「０．０５」分大きくなるように、１番目のブロックの波形を補正する。
【００４７】
次に、ＣＰＵ１００は、変数Ｊを変更して「１」を加え、この変更した変数ＪをＲＡＭ１２０に格納する（ステップＳ３０６０）。
【００４８】
次に、ＣＰＵ１００は、変数Ｊがスムージング点数と同値であるか否かを判定する（ステップＳ３０７０）。ＣＰＵ１００は、ＲＡＭ１２０を検索して変数Ｊを読み出し、変数Ｊがスムージング点数と同値である場合には（ステップＳ３０７０のＹｅｓ）、スムージング点数で示す個数のサンプルのサンプル値全てが修正され、１番目、３番目のブロックの波形の補正が終了したものとして処理を終了する。スムージング点数で示す個数のサンプルのサンプル値全てが修正されると、図８に示すように、１番目、３番目のブロックのスムージング長の範囲内において、振幅差の分離れていたそれぞれの波形が近付くように補正されるので、振幅差が無くなり１番目、３番目のブロック間の接続点での不連続が解消される。また、図９に示すスムージング処理前の波形のように、時間軸上で隣接するブロック間で不連続が生じていても、スムージング処理後の波形のように、それぞれの波形が近付くように補正されるので、振幅差が無くなり不連続が解消される。
【００４９】
一方、変数Ｊがスムージング点数と同値でない場合には（ステップＳ３０７０のＹｅｓ）、ＣＰＵ１００は、スムージング点数で示す個数のサンプルのサンプル値全てが修正されていないものとして、ＲＡＭ１２０を検索して変数Ｊを読み出し、この変数Ｊを用いて、ステップＳ３０４０以降の処理を繰り返し行う。即ち、ＣＰＵ１００は、３番目のブロックの先頭から３０番目までのサンプル値のそれぞれに対して、３０番目から先頭側に向かって変数Ｊを順次変更して、差分値と変数Ｊとに基づいて算出した数値を加算する処理を繰り返し行う。また、１番目のブロックに対しても、１番目のブロックの最後から３０番目までのサンプル値のそれぞれに対して、３０番目から最後側に向かって変数Ｊを順次変更して、差分値と変数Ｊとに基づいて算出した数値を減算する処理を繰り返し行う。
【００５０】
なお、変数Ｊを「１」からスムージング点数と同値となるまで順次変更してステップＳ３０４０およびステップＳ３０５０における処理を繰り返し行っていくことは、図７に示すように、「差分値（ｄＢｌｏｃｋＳｍｔＤｉｆｆ）×Ｊ」で求められる数値を変数Ｊを順次変更して得られる波形を１番目、３番目のブロックの波形に加算することと同等となっている。
【００５１】
このように、楽音信号としてのデジタル信号を所定数個のサンプル値から成るブロック毎に分割したブロック群のうち或るブロックと、窓をかけた結果これと時間軸上で隣接するようになった後側に所定ブロック数離れたブロックとの両ブロック間を接続した場合において、それらの両ブロック間の接続点で不連続が生じた場合には、ＣＰＵ１００はスムージング処理を行う。
【００５２】
そして、ＣＰＵ１００が、スムージング処理として、時間軸上の１番目、３番目のブロック内におけるスムージング点数で示す個数のサンプルのサンプル値全てを減算、加算する処理を実行し、減算、加算後のサンプル値を用いて１番目、３番目のブロックの波形の補正することにより、１番目、３番目のブロックのスムージング長の範囲内において、振幅差の分離れていたそれぞれの波形が近付くように補正されるので、振幅差が無くなり１番目、３番目のブロック間の接続点での不連続が解消される。
【００５３】
また、１番目、３番目のブロックの波形上のサンプルのサンプル値を修正するようにしているため、特表２００２−５１７０２１号公報に記載された発明のように、ブロック内のＦＦＴする処理を行うサンプルの個数を変更せずに、サンプルの個数を元のままで不連続を解消することが可能である。
【００５４】
更に、ＦＦＴする前に窓をかける処理を行い、そして、逆ＦＦＴした後に窓をかける処理を行うことによって三角窓やハニング窓となるように処理を行っていく場合と異なり、スムージング長で示す範囲内においてのみスムージング処理を行うようにしているので、演算量を殆ど増やさずに不連続を解消することが可能である。
【００５５】
（その他の実施の形態）
なお、以上本発明の実施の形態について説明したが、本発明の要旨を逸脱しない範囲内で上記実施形態に種々の変形や変更を施すことが可能となる。例えば、スムージング長やスムージング点数を必要に応じて適宜変更すること、等が挙げられる。
【００５６】
また、本実施の形態では、窓をかける処理として、ブロックの２分の１の長さ分オーバーラップを持たせて窓をかけた場合について説明したが、これに限られず、ブロックの３分の２の長さ分オーバーラップを持たせて窓をかけた場合若しくは他の方法により窓をかけた場合等であっても、窓をかけた結果所定ブロック数離れた２つのブロック同士が隣接した際に、それらの両ブロック間の接続点で不連続が生じた場合には、本実施の形態におけるノイズ除去装置１０を適用することが可能である。
【００５７】
【発明の効果】
以上説明したように、本発明によれば、窓をかけた結果、時間軸上で隣接するようになった所定ブロック数離れた２つのブロック間を接続した際に、それらの両ブロック間の接続点で不連続が生じた場合には、それら両ブロックの波形が近付くように補正することによって、サンプルの個数を元のままで演算量を殆ど増やさずに不連続を解消することが可能なノイズ除去装置を提供することができる。
【図面の簡単な説明】
【図１】ノイズ除去装置１０のブロック構成図である。
【図２】ノイズ除去装置１０における全体の処理を示すフローチャート図である。
【図３】ステップＳ２０９０におけるスムージング処理を示すフローチャート図である。
【図４】各ブロックに窓をかける処理として、ブロックの２分の１の長さ分オーバーラップを持たせて窓をかけた状態を示す図である。
【図５】１番目、３番目のブロックが時間軸上で隣接している状態を示す波形図である。
【図６】図５における１番目、３番目のブロック間の接続点付近を示す拡大図である。
【図７】１番目、３番目のブロックの波形を補正するための波形を示す波形図である。
【図８】１番目、３番目のブロック間の接続点での不連続を解消した状態を示す波形図である。
【図９】時間軸上で隣接するブロック間の接続点での不連続を解消した状態を示すグラフである。
【符号の説明】
１０  ノイズ除去装置
１００  ＣＰＵ
１１０  ＲＯＭ
１２０  ＲＡＭ
１３０  Ａ／Ｄ（アナログ／デジタル変換器）
１４０  Ｄ／Ａ（デジタル／アナログ変換器）
【図１】
2005010544.tif 000003
【図２】
2005010544.tif 000004
【図３】
2005010544.tif 000005
【図４】
2005010544.tif 000006
【図５】
2005010544.tif 000007
【図６】
2005010544.tif 000008
【図７】
2005010544.tif 000009
【図８】
2005010544.tif 000010
【図９】
2005010544.tif 000011