(57)【要約】【課題】楽音の種類に拠らず、ＦＦＴ方式を用いて高品質な音に変換可能なタイムスケーリング方法等を提供する。【解決手段】デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換するＦＦＴ部２１と、振幅および／または位相の時間変化率の演算結果に応じて、周波数成分ごとの位相が、周波数変換ステップの演算結果そのものとして位相のリセット処理を行う第１の位相演算処理と、周波数成分ごとの位相が、周波数変換ステップの前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第２の位相演算処理と、のいずれかを行う位相演算部２２と、位相演算部２２による位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する逆ＦＦＴ部２３と、逆ＦＦＴ部２３による周波数逆変換処理時に、時間伸縮率に比例してデータ数を増減させる時間伸縮演算部２４と、を備えた。【選択図】図２
2012002858.tif 000002
【特許請求の範囲】
【請求項１】
オーディオデータ処理装置が、
デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換する周波数変換ステップと、
前記振幅および／または前記位相の時間変化率の演算結果を用いて異なる位相切替判別を行う複数の位相切替判別処理の処理結果に応じ、前記周波数成分ごとの位相が、前記周波数変換ステップの演算結果そのものとして位相のリセット処理を行う第１の位相演算処理と、前記周波数成分ごとの位相が、前記周波数変換ステップの前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第２の位相演算処理と、の少なくともいずれかを行う位相演算ステップと、
前記位相演算ステップによる位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する周波数逆変換ステップと、
前記周波数逆変換ステップによる周波数逆変換処理時に、時間伸縮率に比例して周波数逆変換後のデジタルオーディオデータのデータ数を増減させる時間伸縮演算ステップと、を実行することを特徴とするタイムスケーリング方法。
【請求項２】
前記複数の位相切替判別処理は、異なる周波数帯域ごとにアタック部の有無を判別するものであり、
前記位相演算ステップでは、前記複数の位相切替判別処理の判別により前記アタック部「有」と判別された場合、前記第１の位相演算処理を行い、前記アタック部「無」と判別された場合、前記第２の位相演算処理を行うことを特徴とする請求項１に記載のタイムスケーリング方法。
【請求項３】
前記位相演算ステップでは、前記振幅の時間変化率を振幅で除算した正規化振幅差分値を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項１に記載のタイムスケーリング方法。
【請求項４】
前記位相演算ステップでは、前記位相切替判別処理として、前記正規化振幅差分値の合計値が所定の閾値以上であるか否かを判別し、所定の閾値以上である場合、アタック部の有無を判別し、当該アタック部が検出された場合は、全周波数帯域に対して前記第１の位相演算処理を行うことを特徴とする請求項３に記載のタイムスケーリング方法。
【請求項５】
前記位相演算ステップでは、前記位相切替判別処理として、前記正規化振幅差分値の合計値が所定の閾値以上であるか否かを判別し、所定の閾値未満である場合、さらに前記位相切替判別処理として、周波数成分ごとにアタック部の有無を判別し、当該アタック部が検出された場合は、周波数成分ごとに前記第１の位相演算処理を行い、前記アタック部が検出されなかった場合は、前記第２の位相演算処理を行うことを特徴とする請求項４に記載のタイムスケーリング方法。
【請求項６】
前記位相演算ステップでは、前記位相の時間変化率である位相断層度を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項１に記載のタイムスケーリング方法。
【請求項７】
前記位相演算ステップでは、前記振幅の時間変化率を振幅で除算した正規化振幅差分値と、前記位相の時間変化率である位相断層度と、を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項１に記載のタイムスケーリング方法。
【請求項８】
前記位相演算ステップでは、前記アタック部が検出された場合でも、周波数ピークが時間的に継続している継続成分に対しては、前記第２の位相演算処理を行うことを特徴とする請求項５に記載のタイムスケーリング方法。
【請求項９】
前記位相演算ステップでは、前記周波数ピークの継続成分に対して位相のリセット処理を行わない場合、当該継続成分となる周波数ピークの近傍に発生するサイドローブ成分に対しても、前記第２の位相演算処理を行うことを特徴とする請求項８に記載のタイムスケーリング方法。
【請求項１０】
前記位相演算ステップでは、前記アタック部が検出されなかった場合でも、周波数ピークが時間的に継続していない非継続成分に対して位相のリセット処理を行う場合、当該周波数ピークの近傍に発生するサイドローブ成分に対して、前記第１の位相演算処理を行うことを特徴とする請求項５に記載のタイムスケーリング方法。
【請求項１１】
前記位相演算ステップでは、ステレオの左右の音に対する前記正規化振幅差分値の合算結果を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項３に記載のタイムスケーリング方法。
【請求項１２】
前記位相演算ステップでは、ステレオの左右の音に対する前記正規化振幅差分値の合算結果と、ステレオの左右の音それぞれの前記正規化振幅差分値と、を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項１１に記載のタイムスケーリング方法。
【請求項１３】
前記位相演算ステップでは、前記正規化振幅差分値の合計値が所定の閾値以上である場合であって前記アタック部が検出された場合は、低周波成分のみ、所定時間だけタイミングを遅らせて、前記第１の位相演算処理を行うことを特徴とする請求項４に記載のタイムスケーリング方法。
【請求項１４】
前記オーディオデータ処理装置が、
請求項１ないし１３のいずれか１項に記載のタイムスケーリング方法における各ステップと、
デジタルオーディオデータのサンプリング周波数を変更することで、時間伸縮および音高変更を行うサンプリングレート変換演算ステップと、を実行し、
前記タイムスケーリング方法の各ステップによる時間長変化と、前記サンプリングレート変換演算ステップによる時間長変化とが相殺され、音高のみが変更されることを特徴とするピッチシフト方法。
【請求項１５】
デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換する周波数変換手段と、
前記振幅および／または前記位相の時間変化率の演算結果を用いて異なる位相切替判別を行う複数の位相切替判別処理の処理結果に応じ、前記周波数成分ごとの位相が、前記周波数変換手段の演算結果そのものとして位相のリセット処理を行う第１の位相演算処理と、前記周波数成分ごとの位相が、前記周波数変換手段の前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第２の位相演算処理と、の少なくともいずれかを行う位相演算手段と、
前記位相演算手段による位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する周波数逆変換手段と、
前記周波数逆変換手段による周波数逆変換処理時に、時間伸縮率に比例して周波数逆変換後のデジタルオーディオデータのデータ数を増減させる時間伸縮演算手段と、を備えたことを特徴とするオーディオデータ処理装置。
【請求項１６】
前記複数の位相切替判別処理は、異なる周波数帯域ごとにアタック部の有無を判別するものであり、
前記位相演算手段は、前記複数の位相切替判別処理の判別により前記アタック部「有」と判別された場合、前記第１の位相演算処理を行い、前記アタック部「無」と判別された場合、前記第２の位相演算処理を行うことを特徴とする請求項１５に記載のオーディオデータ処理装置。
【請求項１７】
前記位相演算手段は、前記振幅の時間変化率を振幅で除算した正規化振幅差分値を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項１５に記載のオーディオデータ処理装置。
【請求項１８】
デジタルオーディオデータのサンプリング周波数を変更することで、時間伸縮および音高変更を行うサンプリングレート変換演算手段をさらに備え、
前記サンプリングレート変換演算手段および／または前記時間伸縮演算手段は、それぞれの演算処理にて発生した時間長変化を相殺することを特徴とする請求項１５に記載のオーディオデータ処理装置。
【請求項１９】
コンピューターに、請求項１ないし１３のいずれか１項に記載のタイムスケーリング方法における各ステップを実行させるためのプログラム。
【請求項２０】
コンピューターに、請求項１４に記載のピッチシフト方法における各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
デジタルオーディオデータの音高を変えずに時間軸上の長さを伸張および圧縮するタイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラムに関するものである。
【背景技術】
【０００２】
従来、デジタルオーディオデータの音高を変えずに時間軸上の長さを伸張および圧縮するタイムスケーリング技術として、クロスフェード方式が知られている。例えば、特許文献１の［従来の技術］の欄には、クロスフェード方式の一例として、ＰＩＣＯＬＡ方式が記載されている。また、デジタルオーディオデータの再生速度を変えずにサンプリング周波数を変更するＳＲＣ（Sampling  Rate  Convert）処理が知られている。例えば、特許文献２には、ＳＲＣ処理により音程変換を行う方法が記載されている。このＳＲＣ処理を、クロスフェード方式のタイムスケーリング量をキャンセルするサンプリング周波数変更量でクロスフェード方式のタイムスケーリング処理の前あるいは後に行い、元のデジタルオーディオデータのサンプリング周波数で再生すれば同時に音高が変更されるため、元のデジタルオーディオデータの音高だけを変更し時間軸上の長さを変更しないピッチシフト（キーコントロール）を実現できる。
【０００３】
一方、タイムスケーリングやピッチシフトを実現する方法として、ＦＦＴ（Fast  Fourier  Transform，高速フーリエ変換）方式が知られている。例えば、特許文献３には、ＦＦＴ方式を用いて入力サンプリング数と出力サンプリング数とを変更することで、タイムスケーリングを行う方法が記載されている。また、特許文献４には、ＦＦＴ方式を用いてタイムスケーリングを行う際に、入力オーバーラップサンプリング数と出力オーバーラップサンプリング数とを変更したときのトランジェント（打撃音）の開始ずれを補正する方法が記載されている。
【０００４】
なお、タイムスケーリングやピッチシフトを実現する上記の２方式を比較すると、一般的にＦＦＴ方式は、クロスフェード方式で問題となる２度鳴り、音抜け、うなり（トレモロ）といった音質劣化がなく、クロスフェード方式よりも高品質な音に変換できるといった利点がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３３９５５６０号公報（段落［０００３］等）
【特許文献２】特開平０８−１３９５７０号公報
【特許文献３】特表２００７−５１９９６７号公報
【特許文献４】米国特許７５６５２８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところが、ＦＦＴ方式を用いた場合、アタックが緩いロングトーンの音（メロディ音）は高品質に変換できるが、アタックが急峻な打楽器音（リズム音）はアタック部が時間軸方向に間延びし、アタック感が失われるという音質劣化が生じる。これは、例えば上記のようにＦＦＴ方式を用いて入出力のサンプリング数を変更することでタイムスケーリングを実現する場合、原音の位相のままでは、次のＦＦＴ演算との間で位相が不連続になってしまうため、位相が不連続にならないように、位相を連続化する処理が必要となると共に、ピッチシフトを行う場合は周波数領域で周波数シフトを行なうため、ＦＦＴにより計算した位相を周波数シフト後の位相とすることができず、周波数シフト後の周波数成分ごとに連続変化位相処理が必要となり、その結果、原音とはまったく違う位相になるためである。ところが、アタック感の強い音（打楽器音など）では広い周波数帯域で位相が特定の関係（音の鳴り始め時点で位相が０）にあると考えられる。従来のＦＦＴ方式によるピッチシフトでは、連続変化位相処理により周波数成分ごとに位相が連続になるように計算されるので、アタック部で特定の位相関係を持つべき複数の周波数成分間の位相の関係が原音と異なり、結果的にアタック感が失われるという音質上の問題があった。つまり、従来のＦＦＴ方式では、ＦＦＴにより計算された位相を周波数シフト後には別の値に変換して用いなければならないため、周波数成分間でアタックを失わないために保つべき位相関係が失われ、アタック感の消失を防止できなかった。また、従来のＦＦＴ方式は、周波数領域でピッチシフトするため、周波数成分が一対一に対応せず、演算誤差が生じてしまう。また、各周波数成分で周波数誤差と位相誤差が分離できず、ピッチシフト演算時に誤差が生じてしまう。これにより、アタック部以外においても音の劣化が生じるといった問題もあった。
【０００７】
本発明は、上記の問題点に鑑み、メロディ音やリズム音などの楽音の種類に拠らず、また、メロディ音やリズム音などが混在したような複雑な楽音の場合であっても、ＦＦＴ方式を用いて高品質な音に変換可能なタイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のタイムスケーリング方法は、オーディオデータ処理装置が、デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換する周波数変換ステップと、振幅および／または位相の時間変化率の演算結果を用いて異なる位相切替判別を行う複数の位相切替判別処理の処理結果に応じ、周波数成分ごとの位相が、周波数変換ステップの演算結果そのものとして位相のリセット処理を行う第１の位相演算処理と、周波数成分ごとの位相が、周波数変換ステップの前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第２の位相演算処理と、の少なくともいずれかを行う位相演算ステップと、位相演算ステップによる位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する周波数逆変換ステップと、周波数逆変換ステップによる周波数逆変換処理時に、時間伸縮率に比例して周波数逆変換後のデジタルオーディオデータのデータ数を増減させる時間伸縮演算ステップと、を実行することを特徴とする。
【０００９】
本発明のオーディオデータ処理装置は、デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換する周波数変換手段と、振幅および／または位相の時間変化率の演算結果を用いて異なる位相切替判別を行う複数の位相切替判別処理の処理結果に応じ、周波数成分ごとの位相が、周波数変換手段の演算結果そのものとして位相のリセット処理を行う第１の位相演算処理と、周波数成分ごとの位相が、周波数変換手段の前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第２の位相演算処理と、の少なくともいずれかを行う位相演算手段と、位相演算手段による位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する周波数逆変換手段と、周波数逆変換手段による周波数逆変換処理時に、時間伸縮率に比例して周波数逆変換後のデジタルオーディオデータのデータ数を増減させる時間伸縮演算手段と、を備えたことを特徴とする。
【００１０】
これらの構成によれば、振幅および／または位相の時間変化率の演算結果を用いて、異なる位相切替判別を行う複数の位相切替判別処理を行うことにより、急峻な音の立ち上がりなどを検出できる。また、当該複数の位相切替判別処理の処理結果に応じて、適切な位相演算処理（第１位相演算処理および第２の位相演算処理とのいずれか）を行うため、アタック感の消失を防止できる。つまり、振幅および／または位相の時間変化率の演算結果から、急峻な音の立ち上がりなどが検出された場合は、位相の連続化処理ではなく（第２の位相演算処理ではなく）、ＦＦＴ変換した位相そのものを用いて位相演算処理を行うため（第１の位相演算処理を行うため）、アタック感を再現することが可能となる。これにより、リズム音などのアタックが急峻な楽音であっても、ＦＦＴ方式を用いて高品質なタイムスケーリングが可能となる。
【００１１】
上記に記載のタイムスケーリング方法において、複数の位相切替判別処理は、異なる周波数帯域ごとにアタック部の有無を判別するものであり、位相演算ステップでは、複数の位相切替判別処理の判別によりアタック部「有」と判別された場合、第１の位相演算処理を行い、アタック部「無」と判別された場合、第２の位相演算処理を行うことを特徴とする。
【００１２】
上記に記載のオーディオデータ処理装置において、複数の位相切替判別処理は、異なる周波数帯域ごとにアタック部の有無を判別するものであり、位相演算手段は、複数の位相切替判別処理の判別によりアタック部「有」と判別された場合、第１の位相演算処理を行い、アタック部「無」と判別された場合、第２の位相演算処理を行うことを特徴とする。
【００１３】
この構成によれば、異なる周波数帯域ごとにアタック部の有無を判別するため、正確にアタック部を検出することができる。また、アタック部を検出した場合は、位相の連続化処理（第２の位相演算処理）を行わないため、アタック感の消失を防止できる。
【００１４】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、振幅の時間変化率を振幅で除算した正規化振幅差分値を用いて、複数の位相切替判別処理を行うことを特徴とする。
【００１５】
上記に記載のオーディオデータ処理装置において、位相演算手段は、振幅の時間変化率を振幅で除算した正規化振幅差分値を用いて、複数の位相切替判別処理を行うことを特徴とする。
【００１６】
これらの構成によれば、振幅の時間変化率を用いるため、アタック部を正確に検出することができる。また、振幅の時間変化率を振幅で除算した正規化振幅差分値を用いるため、原音の音量が小さい場合でも確実にアタック部を検出することができる。
【００１７】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、位相切替判別処理として、正規化振幅差分値の合計値が所定の閾値以上であるか否かを判別し、所定の閾値以上である場合、アタック部の有無を判別し、当該アタック部が検出された場合は、全周波数帯域に対して第１の位相演算処理を行うことを特徴とする。
【００１８】
この構成によれば、正規化振幅差分値の合計値が大きい場合であってアタック部が検出された場合は、位相リセットをするべき周波数成分が広範囲に広がっていることを意味するため、全周波数帯域に対して第１の位相演算処理を行うことで、高品質な音の変換を実現できる。
【００１９】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、位相切替判別処理として、正規化振幅差分値の合計値が所定の閾値以上であるか否かを判別し、所定の閾値未満である場合、さらに位相切替判別処理として、周波数帯域ごとにアタック部の有無を判別し、当該アタック部が検出された場合は、周波数帯域ごとに第１の位相演算処理を行い、アタック部が検出されなかった場合は、第２の位相演算処理を行うことを特徴とする。
【００２０】
この構成によれば、正規化振幅差分値の合計値が小さい場合は、周波数帯域ごとにアタック部の有無を検出するため、微細なアタックであっても確実に検出することができる。また、周波数帯域ごとのアタック部が検出された場合は、周波数帯域ごとに第１の位相演算処理を行うため、微細なアタック感の消失を防止し、高品質な音の変換を実現できる。
【００２１】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、位相の時間変化率である位相断層度を用いて、複数の位相切替判別処理を行うことを特徴とする。
【００２２】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、振幅の時間変化率を振幅で除算した正規化振幅差分値と、位相の時間変化率である位相断層度とを用いて、複数の位相切替判別処理を行うことを特徴とする。
【００２３】
これらの構成によれば、位相の時間変化率である位相断層度を用いてアタック部を検出することができる。また、正規化振幅差分値と位相断層度とを組み合わせることで、より正確にアタック部を検出することができる。
【００２４】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、アタック部が検出された場合でも、周波数ピークが時間的に継続している継続成分に対しては、第２の位相演算処理を行うことを特徴とする。
【００２５】
この構成によれば、周波数ピークが時間的に継続している継続成分を位相リセット処理の対象外とすることで、高音質化を図ることができる。具体的には、継続成分を継続音として検出し、これを位相連続化処理することで、アタック部の前後で継続して鳴っている音を途切れにくくすることができる。
なお、「周波数ピーク」とは、ＦＦＴ変換で得られたスペクトルが極大となる箇所の周波数を指す。
【００２６】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、周波数ピークの継続成分に対して位相のリセット処理を行わない場合、当該継続成分となる周波数ピークの近傍に発生するサイドローブ成分に対しても、第２の位相演算処理を行うことを特徴とする。
【００２７】
この構成によれば、継続成分となる周波数ピークの近傍に発生するサイドローブ成分も継続音として検出し、これを位相連続化処理する（位相リセット処理の対象外とする）ことで、アタック部の前後で継続して鳴っている音をより途切れにくくすることができる。
なお、「サイドローブ成分」とは、周波数ピークの両隣に発生する、なだらかに大きさが小さくなっていく周波数帯を指す。
【００２８】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、アタック部が検出されなかった場合でも、周波数ピークが時間的に継続していない非継続成分に対して位相のリセット処理を行う場合、当該周波数ピークの近傍に発生するサイドローブ成分に対して、第１の位相演算処理を行うことを特徴とする。
【００２９】
この構成によれば、周波数ピークが時間的に継続していない非継続成分に対して位相のリセット処理を行う場合（つまり前処理において位相リセットすると判定された周波数成分が周波数ピークであった場合）、その周波数ピークのサイドローブ成分も合わせて位相リセット処理を行うことで、アタック部をより鮮明に再現することができる。
【００３０】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、ステレオの左右の音に対する正規化振幅差分値の合算結果を用いて、複数の位相切替判別処理を行うことを特徴とする。
【００３１】
ステレオの左右の音に音量差があった場合、同一音源からの発生音は左右同時にリセットしないと位相が左右ばらばらになってしまう。この構成によれば、ステレオの左右の音に対する正規化振幅差分値の合算結果を用いて、複数の位相切替判別処理を行うため、左右の音の位相リセットのタイミングを同期させ、音像（定位）の乱れを防止することができる。
【００３２】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、ステレオの左右の音に対する正規化振幅差分値の合算結果と、ステレオの左右の音それぞれの正規化振幅差分値と、を用いて、複数の位相切替判別処理を行うことを特徴とする。
【００３３】
この構成によれば、ステレオの左右の音に対する正規化振幅差分値の合算結果だけでなく、ステレオの左右の音それぞれの正規化振幅差分値を用いるため、左右の音量差なども考慮して、より確実に音像の乱れを防止することができる。
【００３４】
上記に記載のタイムスケーリング方法において、位相演算ステップでは、正規化振幅差分値の合計値が所定の閾値以上である場合であってアタック部が検出された場合は、低周波成分のみ、所定時間だけタイミングを遅らせて、第１の位相演算処理を行うことを特徴とする。
【００３５】
低音域の音は周期が長いため、前処理で検出した位相リセットのタイミングでは位相が安定せず、位相リセット処理の効果が小さい。このため、前処理で検出した位相リセットのタイミングから所定時間だけタイミングを遅らせて位相リセット処理を行うことで、低音域のアタック感を復活させることができる。これにより、バスドラムなどの胴鳴り（高い周波数の後に低い周波数が続く部分）の高音質化を図ることができる。
【００３６】
本発明のピッチシフト方法は、オーディオデータ処理装置が、上記に記載のＦＦＴを用いたタイムスケーリング方法における各ステップと、デジタルオーディオデータのサンプリング周波数を変更することで、時間伸縮および音高変更を行うサンプリングレート変換演算ステップと、を実行し、タイムスケーリング方法の各ステップによる時間長変化と、サンプリングレート変換演算ステップによる時間長変化とが相殺され、音高のみが変更されることを特徴とする。
【００３７】
上記に記載のオーディオデータ処理装置において、デジタルオーディオデータのサンプリング周波数を変更することで、時間伸縮および音高変更を行うサンプリングレート変換演算手段をさらに備え、サンプリングレート変換演算手段および／または時間伸縮演算手段は、それぞれの演算処理にて発生した時間長変化を相殺することを特徴とする。
【００３８】
従来のＦＦＴを用いて周波数領域で周波数シフトを行なう方式のピッチシフトでは、ＦＦＴによって計算された位相は周波数シフト後には別の値に変換して用いなければならないため、周波数成分間でアタックを失わないために保つべき位相関係が失われるので第１の位相演算処理を正しく行なえずアタック感の消失を防止できない。これに対し、これらのピッチシフト方法の構成によれば、サンプリングレート変換法を用いることで、周波数領域で周波数シフトを行わないためＦＦＴにより計算した位相をアタック部分においてはピッチシフト変換音の位相とすることができるので、第１の位相演算処理により、アタック感の消失を防止できる。また、周波数シフト処理の誤差要因が少ないため、サンプリングレート変換法を使用しない従来のＦＦＴ方式と比較すると、アタック部以外の音質低下も防止でき、高品質なピットシフトが可能となる。
【００３９】
本発明のプログラムは、コンピューターに、上記に記載のタイムスケーリング方法における各ステップを実行させることを特徴とする。
【００４０】
本発明の他のプログラムは、コンピューターに、上記に記載のピッチシフト方法における各ステップを実行させることを特徴とする。
【００４１】
これらのプログラムを用いることにより、メロディ音やリズム音などの楽音の種類に拠らず、ＦＦＴ方式を用いて高品質な音に変換可能なタイムスケーリング方法およびピッチシフト方法を実現できる。
【図面の簡単な説明】
【００４２】
【図１】第１実施形態に係る再生装置と、その一部であるオーディオデータ処理部の簡易ブロック図である。
【図２】オーディオデータ処理部のブロック図である。
【図３】オーディオデータ処理部によるピッチシフト処理を示すフローチャートである。
【図４】第１実施形態に係る位相演算処理を示すフローチャートである。
【図５】第２実施形態に係る位相演算処理を示すフローチャートである。
【図６】第３実施形態に係る位相演算処理を示すフローチャートである。
【発明を実施するための形態】
【００４３】
以下、本発明の一実施形態に係るタイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラムについて、添付図面を参照しながら詳細に説明する。本実施形態では、本発明のオーディオデータ処理装置を、ＣＤプレーヤーなどの再生装置に適用した場合について例示する。
【００４４】
［第１実施形態］
図１（ａ）は、再生装置１の簡易ブロック図である。同図に示すように、再生装置１は、再生部２と、オーディオデータ処理部３（オーディオデータ処理装置）と、バッファメモリ４と、オーディオデータ出力部５と、を備えている。再生部２は、ＣＤなどのデバイスから楽曲・楽音を読み出して再生する。オーディオデータ処理部３は、ＣＰＵ（Central  Processing  Unit）またはＤＳＰ（Digital  Signal  Processor）によって主要部が構成され、再生部２によって再生されたデジタルオーディオデータ（以下、単に「オーディオデータ」と称する）をバッファメモリ４に格納すると共に、バッファメモリ４から読み出したオーディオデータに対し、デジタル信号処理を施す。なお、バッファメモリ４は、入力用のバッファメモリ４（以下、「入力バッファ４ａ」と称する）と、出力用のバッファメモリ４（以下、「出力バッファ４ｂ」と称する）と、から成る。オーディオデータ出力部５は、オーディオデータ処理部３による処理後のオーディオデータ（出力バッファ４ｂから読み出したオーディオデータ）を、外部（アンプおよびスピーカーを有する出力装置など）に出力する。
【００４５】
図１（ｂ）は、オーディオデータ処理部３の一例を示すブロック図である。図１（ｂ）のオーディオデータ処理部３は、主な機能構成として、タイムスケーリング部１１を備えている。タイムスケーリング部１１は、上記のバッファメモリ４（入力バッファ４ａ）から、処理対象となるオーディオデータを取得してタイムスケーリング（時間伸縮変換処理）を行う。なお、本実施形態では、ＦＦＴ方式を用いてタイムスケーリングを行う。
【００４６】
一方、図１（ｃ）は、オーディオデータ処理部３の他の例を示すブロック図である。図１（ｃ）のオーディオデータ処理部３は、主な機能構成として、ＳＲＣ部１２（サンプリングレート変換演算部）と、タイムスケーリング部１１と、を備えている。つまり、図１（ｂ）のオーディオデータ処理部３に、ＳＲＣ部１２を追加した構成となっている。
【００４７】
ＳＲＣ部１２は、タイムスケーリング部１１によるタイムスケーリングの前あるいは後に、オーディオデータのサンプリング周波数を変更するＳＲＣ処理を行う（サンプリングレート変換演算ステップ）。ＳＲＣ処理は本来デジタルオーディオデータのサンプリング周期を変更するために使われる技術であるが、ＳＲＣ処理を施して新たに求めたサンプリングデータを、サンプリング周波数を元のままとすることで時間伸縮および音高変更が行われる。つまり、図１（ｃ）のオーディオデータ処理部３は、ＳＲＣ部１２とタイムスケーリング部１１によるオーディオデータの時間長変化を相殺することで、時間軸上の長さを変更することなく音高のみを変更させるピッチシフトを実現できるようになっている。以下、図１（ｃ）に示したオーディオデータ処理部３により、ピッチシフトを行う方法について記載する。
【００４８】
図２は、オーディオデータ処理部３の詳細な機能構成を示すブロック図である。上記の通り、オーディオデータ処理部３は、ＳＲＣ部１２およびタイムスケーリング部１１から成る。本実施形態では、最初にＳＲＣ処理を行い、その後タイムスケーリングを行うものとする。ＳＲＣ部１２は、原音となるオーディオデータに対してＳＲＣ処理を行う。
【００４９】
一方、タイムスケーリング部１１は、ＦＦＴ部２１、位相演算部２２、逆ＦＦＴ部２３および時間伸縮演算部２４から成る。ＦＦＴ部２１は、オーディオデータを、周波数成分ごとの振幅と位相に変換する（周波数変換ステップ）。つまり、時間領域の音を、周波数領域に変換し、振幅と位相を求める。
【００５０】
位相演算部２２は、振幅の時間変化率の演算結果に応じて、位相演算処理を行う（位相演算ステップ）。具体的には、振幅の時間変化率を振幅で除算した正規化振幅差分値を用いて、異なる位相切替判別を行う複数の位相切替判別処理を行い、その判別結果に応じた位相演算処理を行う。当該複数の位相切替判別処理は、アタック部を検出するための処理である。同図に示すように、位相演算部２２は、アタック検出部３１、位相リセット部３２および位相連続処理部３３を備えている。さらに、アタック検出部３１は、全周波数帯域検出部３１ａ、周波数帯域別検出部（Ａ）３１ｂおよび周波数帯域別検出部（Ｂ）３１ｃから成る。
【００５１】
全周波数帯域検出部３１ａは、上記の複数の位相切替判別処理の一つである第１の位相切替判別処理により、正規化振幅差分値の合計値が所定の閾値Ｌ１（当該閾値を、以下「高閾値」と称する）以上であるか否かを判別し、前回の演算において高閾値未満であり、且つ今回の演算で高閾値以上である場合、全周波数帯域に対してリセット処理が必要なアタック部を検出したと判定する。具体的例を挙げると、バスドラ等の低音の打楽器の打撃音を検出した場合などである。低音打楽器の場合のアタック部には楽器の音の高さを特徴づける基本の低い周波数成分から上のかなり高音域までの周波数成分が含まれているため、ほぼ全周波数帯にわたるような位相のリセット処理が必要となる。
【００５２】
また、周波数帯域別検出部（Ａ）３１ｂは、第１の位相切替判別処理により、正規化振幅差分値の合計値が、上記の高閾値未満且つ所定の閾値Ｌ２（当該閾値を、以下「低閾値」と称する）以上である場合（但し、Ｌ１＞Ｌ２）、第２の位相切替判別処理を行う。当該第２の位相切替判別処理は、周波数成分ごとに正規化振幅差分値を低閾値で２値化し且つ高域限定で、周波数成分ごとにアタック部を検出する処理である。ここでは、中域から高域の打撃音を検出可能である。
【００５３】
さらに、周波数帯域別検出部（Ｂ）３１ｃは、第１の位相切替判別処理により、正規化振幅差分値の合計値が低閾値未満であると判別した場合、第３の位相切替判別処理を行う。当該第３の位相切替判別処理は、周波数成分ごとに正規化振幅差分値を高い閾値で２値化して、周波数成分ごとにアタック部の有無を検出する処理である。ここでは、ボーカルや弦楽器などによるアタックを検出可能である。
【００５４】
位相リセット部３２は、全周波数帯域検出部３１ａ、周波数帯域別検出部（Ａ）３１ｂおよび周波数帯域別検出部（Ｂ）３１ｃにおいてアタック部が検出された場合、周波数成分ごとの位相が、ＦＦＴ部２１の演算結果そのものとして位相のリセット処理（第１の位相演算処理）を行う。また、位相連続処理部３３は、全周波数帯域検出部３１ａ、周波数帯域別検出部（Ａ）３１ｂおよび周波数帯域別検出部（Ｂ）３１ｃにおいてアタック部が検出されなかった場合、周波数成分（周波数グリッド）ごとの位相が、ＦＦＴ部２１の前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理（第２の位相演算処理）を行う。つまり、位相連続処理部３３は、時間伸縮分位相補正を行い、周波数成分ごとに前回の演算結果と位相が連続するように演算処理を行う。このように、本実施形態の位相演算部２２は、正規化振幅差分値の合計値、および個別の周波数成分ごとの値に応じて、位相リセット処理および位相連続化処理のいずれかの処理を選択的に実行する。
【００５５】
逆ＦＦＴ部２３は、位相演算部２２による位相演算処理後の各周波数成分を、オーディオデータに変換する（周波数逆変換ステップ）。つまり、周波数領域の振幅と位相を、時間領域の音に変換する。
【００５６】
時間伸縮演算部２４は、逆ＦＦＴ部２３による周波数逆変換処理時に、時間伸縮率に比例してデータ数を増減させる（時間伸縮演算ステップ）。具体的には、ＳＲＣ部１２によるオーディオデータの時間長変化を相殺するように時間伸縮する。なお、時間伸縮の方法については、逆ＦＦＴ部２３により演算された時間領域のオーディオデータをＦＦＴ時にずらしたサンプル数より時間伸縮量に比例して変化させたサンプル数だけずらすことにより実現する。時間伸縮演算部２４による演算処理後のオーディオデータは、変換音として出力される。
【００５７】
なお、ステレオ再生の場合、本実施形態では、各部（ＳＲＣ部１２、ＦＦＴ部２１、位相演算部２２、逆ＦＦＴ部２３および時間伸縮演算部２４）において、左右の音を独立して処理する。
【００５８】
次に、図３および図４のフローチャートを参照し、第１実施形態に係るピッチシフト処理の流れについて説明する。まず、オーディオデータ処理部３は、初期化処理を行い（ＦＦＴ演算回数ｉ＝１とする，Ｓ０１）、入力バッファ４ａからオーディオデータを取得する（Ｓ０２）。続いて、ＳＲＣ部１２によりＳＲＣ処理を行い（Ｓ０３）、その後Ｓ０４以降のタイムスケーリングを開始する。
【００５９】
タイムスケーリングでは、まず、入力窓関数（ハニング窓関数）を乗じ（Ｓ０４）、ｉ回目のＦＦＴを行う（Ｓ０５）。また、周波数成分、すなわちＦＦＴ周波数グリッド番号ｊをｊ＝０とし（Ｓ０６）、位相振幅計算を行う（Ｓ０７）。以上、Ｓ０３〜Ｓ０７は、ＦＦＴ部２１による処理工程である。
【００６０】
続いて、オーディオデータ処理部３は、位相演算部２２により位相演算処理を行う（Ｓ０８）。当該位相演算処理については、図４にて後述する。オーディオデータ処理部３は、位相演算処理を終えると、振幅と位相を複素数化し（Ｓ０９）、ＦＦＴ周波数グリッド番号ｊが、ＦＦＴサンプル数ｎＦＦＴの半分に達したか否か、すなわち「ｊ＝ｎＦＦＴ／２」に達したか否かを判別する（Ｓ１０）。ここで、「ｊ＝ｎＦＦＴ／２」に達していない場合は（Ｓ１０：Ｎｏ）、ＦＦＴ周波数グリッド番号ｊをカウントアップして（Ｓ１１）、Ｓ０７に戻る。また、「ｊ＝ｎＦＦＴ／２」に達した場合は（Ｓ１０：Ｙｅｓ）、複素数化したデータの共役複素数を残り半分の負の周波数成分の複素数データとしてＩＦＦＴを行う（Ｓ１２）。以上、Ｓ０９〜Ｓ１２は、逆ＦＦＴ部２３による処理工程である。
【００６１】
続いて、オーディオデータ処理部３は、出力窓関数（ハニング窓関数）を乗じ（Ｓ１３）、ＳＲＣ率をキャンセルすべく、入力オーバーラップ数にタイムストレッチ率を乗算して、出力ポインタを移動する（Ｓ１４）。また、これを出力バッファ４ｂに書き込んで（出力バッファ４ｂに加算して，Ｓ１５）、変換音として出力する。以上、Ｓ１３〜Ｓ１５は、時間伸縮演算部２４による処理工程である。なお、この実施例では出力窓関数もＦＦＴ前と同じハニング窓としたが、必ずしも同じである必要はなく、別の窓関数を選んでもよいし、ＦＦＴ前の窓関数が適切である場合には出力窓関数を省略することも可能である。
【００６２】
その後、オーディオデータ処理部３は、入力オーバーラップ数の入力ポインタを移動し（Ｓ１６）、入力バッファ４ａにオーディオデータが残っているか否かを判別する（Ｓ１７）。ここで、オーディオデータが残っている場合は（Ｓ１７：データあり）、ＦＦＴ演算回数ｉをカウントアップして（Ｓ１８）、Ｓ０２に戻る。また、オーディオデータが残っていない場合は（Ｓ１７：データなし）、ピッチシフト処理を終了する。
【００６３】
次に、図４を参照し、図３のＳ０８に相当する位相演算処理について説明する。オーディオデータ処理部３（位相演算部２２）は、まず、振幅の差分を演算し（Ｓ２１）、正規化振幅差分値を求める（Ｓ２２）。すなわち、振幅の時間変化率をさらに振幅で除算することにより正規化振幅差分値を求める。但し、振幅が０であるか、非常に微小である場合は、除算できないか、除算の結果が適切でなくなる可能性があるため、例外処理として正規化振幅差分値も０とする。ここで、i回目の正規化振幅差分値の合計値（図４では、「Σi」と図示）が、高閾値以上であるか、低閾値以上高閾値未満であるか、低閾値未満であるかを判別する（Ｓ２３，第１の位相切替判別処理）。
【００６４】
ここで、i回目の正規化振幅差分値の合計値Σiが高閾値以上の場合は（Ｓ２３：高閾値以上）、i-１回目の正規化振幅差分値の合計値Σi-1が高閾値以上であったか否かを判別し（Ｓ２４）、高閾値以上でなかった場合（Ｓ２４：Ｎｏ）、全周波数帯域に対して位相リセット処理を行う（Ｓ３０）。また、i-１回目の正規化振幅差分値の合計値Σi-1が高閾値以上であった場合は（Ｓ２４：Ｙｅｓ）、位相連続処理を行う（Ｓ３１）。つまり、全周波数帯域検出部３１ａにより、i-１回目演算２値化が０で、i回目演算の２値化が１の場合にアタック部が検出されたと判別し、位相リセット部３２により、周波数成分ごとの位相を、ＦＦＴ部２１の演算結果そのものとして位相をリセットする。また、アタック部が検出されなかった場合は、位相連続処理部３３により、周波数成分ごとの位相が、ＦＦＴ部２１の前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う。
【００６５】
また、正規化振幅差分値の合計値が低閾値以上高閾値未満の場合は（Ｓ２３：低閾値以上高閾値未満）、周波数成分ごとの正規化振幅差分値を低閾値で２値化し（Ｓ２５）、さらに高域限定で（Ｓ２６）、周波数別リセット（Ａ）の要否を判別する（Ｓ２７，第２の位相切替判別処理）。ここで、周波数別リセット（Ａ）が必要と判別した場合は（Ｓ２７：Ｙｅｓ）、周波数成分ごとに位相リセット処理を行い（Ｓ３０）、周波数別リセット（Ａ）が不要と判別した場合は（Ｓ２７：Ｎｏ）、位相連続処理を行う（Ｓ３１）。つまり、周波数帯域別検出部（Ａ）３１ｂにより、i-１回目演算２値化が０で、i回目演算の２値化が１の場合にアタック部が検出されたと判別し、位相リセット部３２による位相リセット処理を行う。また、アタック部が検出されなかった場合は、位相連続処理部３３による位相の連続化処理を行う。
【００６６】
さらに、正規化振幅差分値の合計値が低閾値未満の場合は（Ｓ２３：低閾値未満）、周波数成分ごとの正規化振幅差分値を高閾値で２値化し（Ｓ２８）、周波数別リセット（Ｂ）の要否を判別する（Ｓ２９，第３の位相切替判別処理）。ここで、周波数別リセット（Ｂ）が必要と判別した場合は（Ｓ２９：Ｙｅｓ）、位相リセット処理を行い（Ｓ３０）、周波数別リセット（Ｂ）が不要と判別した場合は（Ｓ２９：Ｎｏ）、位相連続処理を行う（Ｓ３１）。つまり、周波数帯域別検出部（Ｂ）３１ｃにより、i-１回目演算２値化が０で、i回目演算の２値化が１の場合にアタック部が検出されたと判別し、位相リセット部３２による位相リセット処理を行い、アタック部が検出されなかった場合は、位相連続処理部３３による位相の連続化処理を行う。なお、位相リセット処理（Ｓ３０）および位相連続処理（Ｓ３１）の終了により、位相演算処理が終了となる。
【００６７】
以上説明したとおり、本実施形態によれば、正規化振幅差分値に応じて、アタック部の有無を検出し、その検出結果に応じて、ＦＦＴの演算結果そのものを利用して位相のリセット処理を行う第１の位相演算処理と、前回のＦＦＴの演算結果から時間伸縮を考慮して位相の連続化処理を行う第２の位相演算処理と、のいずれかを行うため、高品質な音の変換が可能となる。特に、アタック部が検出された場合は、第１の位相演算処理を行うことでアタック感を再現するため、アタック感の消失を防止できる。これにより、ＦＦＴ方式であっても、リズム音などのアタックが急峻な楽音に対し、高品質なタイムスケーリングおよびピッチシフトを実現できる。
【００６８】
また、振幅の時間変化率を振幅で除算した正規化振幅差分値を用いてアタック部を検出するため、原音の音量が小さい場合でも正確且つ確実にアタック部を検出することができる。
【００６９】
さらに、正規化振幅差分値を用いて、異なる周波数帯域ごとに３回の位相切替判別処理を行うため、より確実にアタック部を検出することができる。例えば、正規化振幅差分値の合計値が高閾値以上の場合は、位相リセットをするべき周波数成分が広範囲に広がっていることを意味するため、全周波数帯域に対して第１の位相演算処理を行うことで、確実にアタック部を検出できる。また、正規化振幅差分値の合計値が高閾値未満の場合は、周波数帯域ごとにアタック部の有無を検出するため、微細なアタックであっても確実に検出することができる。
【００７０】
また、ＳＲＣ部１２により、サンプリングレート変換法を用いることで、周波数領域で周波数シフトを行わないためＦＦＴにより計算した位相そのものをアタック部分においてはピッチシフト変換音の位相とすることができるので、第１の位相演算処理により、アタック感の消失を防止できる。また、周波数シフト処理の誤差要因が少ないため、サンプリングレート変換法を使用しない従来のＦＦＴ方式と比較すると、アタック部以外の音質低下も防止でき、高品質なピットシフトが可能となる。
【００７１】
［第２実施形態］
次に、図５を参照し、本発明の第２実施形態について説明する。上記の第１実施形態では、振幅の時間変化率から得られる正規化振幅差分値に基づいてアタック部を検出したが、本実施形態は、位相の時間変化率から得られる位相断層度に基づいてアタック部を検出する点で異なる。以下、第１実施形態と異なる点のみ説明する。なお、本実施形態において、第１実施形態と同様の構成部分については同様の符号を付し、詳細な説明を省略する。また、第１実施形態と同様の構成部分について適用される変形例は、本実施形態についても同様に適用される。
【００７２】
本実施形態のオーディオデータ処理部３は、図２に示した第１実施形態の機能構成から、全周波数帯域検出部３１ａ、周波数帯域別検出部（Ａ）３１ｂおよび周波数帯域別検出部（Ｂ）３１ｃを省略した構成となっている（図示省略）。当該構成により、本実施形態の位相演算部２２は、位相の時間変化率の演算結果に応じて、位相演算処理を行う（位相演算ステップ）。具体的には、アタック検出部３１により、位相の時間変化率である位相断層度を用いて、位相断層が生じているか否かを判別し、その判別結果に応じて位相演算処理を行う。つまり、位相断層が生じている場合は、アタック部「有」と判定し、位相リセット部３２による位相リセット処理を行う。また、位相断層が生じていない場合は、アタック部「無」と判定し、位相連続処理部３３による位相の連続化処理を行う。
【００７３】
図５は、第２実施形態に係る位相演算処理を示すフローチャートである。なお、図３に示したピッチシフト処理のメインフローについては、第１実施形態と同様であるため、図示を省略する。本実施形態のオーディオデータ処理部３（位相演算部２２）は、まず、位相の２階差分を演算し（Ｓ４１）、位相断層度を算出する（Ｓ４２）。ここで、位相断層度が所定の閾値以上であるか否かに応じて、位相断層の有無（アタック部の有無）を判別する（Ｓ４３）。つまり、位相断層度が所定の閾値以上である場合は（Ｓ４３：あり）、位相リセット部３２により、周波数成分ごとの位相が、ＦＦＴ部２１の演算結果そのものとして位相リセット処理を行う（Ｓ４４）。また、位相断層度が所定の閾値未満である場合は（Ｓ４３：なし）、位相連続処理部３３により、周波数成分ごとの位相が、ＦＦＴ部２１の前回の演算結果から時間伸縮を考慮して連続変化したものとして位相連続処理を行う（Ｓ４５）。また、位相リセット処理（Ｓ４４）および位相連続処理（Ｓ４５）の終了後、位相演算処理を終了する。
【００７４】
以上説明したとおり、本実施形態によれば、位相の時間変化率を用いることで、原音の音量に拠らず、アタック部を正確に検出することができる。また、位相断層の有無で２つの処理に分岐するだけで良いため、少ない演算処理量で、高品質なタイムスケーリングおよびピッチシフトを実現できる。
【００７５】
なお、上記の実施例において、第２実施形態に係るオーディオデータ処理部３の構成は、図２に示した第１実施形態の機能構成から、全周波数帯域検出部３１ａ、周波数帯域別検出部（Ａ）３１ｂおよび周波数帯域別検出部（Ｂ）３１ｃを省略した構成であると記載したが、第１実施形態の機能構成と同様の構成としても良い。この場合、全周波数帯域検出部３１ａ、周波数帯域別検出部（Ａ）３１ｂおよび周波数帯域別検出部（Ｂ）３１ｃにより、位相断層度を用いて、異なる位相切替判別を行う複数の位相切替判別処理を行う。また、当該複数の位相切替判別処理により位相断層が生じているか否かを判別し、その判別結果に応じて位相演算処理を行う。なお、本例における位相演算処理の流れは、図４に示した第１実施形態の位相演算処理において、Ｓ２１の「振幅差分」を「位相差分」に、またＳ２２の「正規化振幅差分値」を「位相断層度」に変更したものと同様であるため、図示を省略する。
【００７６】
また、第１実施形態の正規化振幅差分値を用いたアタック部の検出方法と、第２実施形態の位相断層度を用いたアタック部の検出方法と、を組み合わせてアタック部を検出しても良い。この構成によれば、アタック部の検出精度をより向上させることができる。
【００７７】
［第３実施形態］
次に、図６を参照し、本発明の第３実施形態について説明する。本実施形態では、位相リセット処理を行うべき成分と、位相連続処理を行うべき成分と、を高度に分類することを特徴とする。なお、本実施形態では、正規化振幅差分値を用いてアタック部を検出するものとする。また、本実施形態においても、上記の各実施形態と同様の構成部分については同様の符号を付し、詳細な説明を省略する。また、上記の各実施形態と同様の構成部分について適用される変形例は、本実施形態についても同様に適用される。
【００７８】
図６は、第３実施形態に係る位相演算処理を示すフローチャートである。なお、図３に示したピッチシフト処理のメインフローについては、第１実施形態とほぼ同様であるため、異なる部分のみ言及する。本実施形態のオーディオデータ処理部３（位相演算部２２）は、まず、ＦＦＴ周波数グリッド番号ｊをｊ＝１とし（Ｓ５１）、遅延リセットカウンタが０になったか否かを判別する（Ｓ５２）。この遅延リセットカウンタは、正規化振幅差分値の合計値Σiが高閾値以上である場合であって（Ｓ５３：Ｙｅｓの場合）アタック部が検出された場合（Ｓ５４：Ｙｅｓの場合）、低周波成分のみ、所定時間だけタイミングを遅らせて位相のリセット処理を行うため（Ｓ７５）、そのタイミングを計測すべくオーディオデータ処理部３内に設けられたものである。なお、遅延リセットカウンタは、Ｓ５５にてセットされる。
【００７９】
Ｓ５２：Ｎｏの場合は、正規化振幅差分値の合計値Σiが高閾値以上であるか否かを判別する（Ｓ５３）。当該Ｓ５３および後述するＳ６４は、図４のＳ２３（第１の位相切替判別処理）に相当する工程である。本実施形態では、正規化振幅差分値の合計値Σiが高閾値より大きいか否かを判別するための閾値をＰ0とする。ここで、正規化振幅差分値の合計値Σiが高閾値以上の場合は（Ｓ５３：Ｙｅｓ）、i-１回目の正規化振幅差分値の合計値Σi-1が高閾値以上であったか否かを判別する（Ｓ５４）。ここで、i-１回目の正規化振幅差分値の合計値Σi-1が高閾値未満であった場合（Ｓ５４：Ｎｏ，つまり、i-１回目演算２値化が０で、i回目演算の２値化が１の場合）、全周波数帯域検出部３１ａによりアタック部が検出されたと判別する。また、i-１回目の正規化振幅差分値の合計値Σi-1が高閾値以上であった場合は（Ｓ５４：Ｙｅｓ）、Ｓ６９に移行する。
【００８０】
i-１回目の正規化振幅差分値の合計値Σi-1が高閾値未満であった場合は（Ｓ５４：Ｎｏ）、上記の遅延リセットカウンタの値をＮ（但し、Ｎは、Ｎ≧１となる任意の整数）にセットする（Ｓ５５）。その後、高域限定で（Ｓ５６）、Ｓ５７の継続音判定を行った後、必要に応じて位相リセット処理を行う（Ｓ５８）。
【００８１】
ここで、Ｓ５７の継続音判定について説明する。当該工程では、対象となる周波数成分が、周波数ピークが時間的に継続している継続成分（継続音）に相当するか否か、または継続成分となる周波数ピークのサイドローブ成分に相当するか否かを判別する。なお、継続成分については、所定処理回数以上（例えば、２回以上）、周波数ピークと判定した場合に「継続音」と判定する。また、「周波数ピーク」とは、ＦＦＴ変換で得られたスペクトルが極大となる箇所の周波数を指し、「サイドローブ成分」とは、周波数ピークの両隣に発生する、なだらかに大きさが小さくなっていく周波数帯を指す。このように、本実施形態では、アタック部が検出された場合でも、継続音または継続音サイドローブに該当する場合は、位相リセット処理の対象外とすることで、アタック部の前後で継続して鳴っている音を途切れにくくしている。したがって、Ｓ５７：Ｎｏの場合に、位相リセット処理を行い（Ｓ５８）、Ｓ５７：Ｙｅｓの場合は、位相連続処理を行う（Ｓ７０）。
【００８２】
一方、Ｓ５３：Ｎｏと判別した場合は（正規化振幅差分値の合計値Σiが高閾値未満である場合は）、Ｓ５９およびＳ６０にて、２回のステレオ判定を行う。当該ステレオ判定とは、ステレオの左右の音（以下、「Ｌ，Ｒ」と記載する）に対する正規化振幅差分値の合算結果と、ステレオの左右の音それぞれの正規化振幅差分値と、を用いて、位相切替の判定（複数の位相切替判別処理の一部に相当）を行うものである。これにより、左右の音の位相リセットのタイミングを同期させ、音像（定位）の乱れを防止する。
【００８３】
具体的には、Ｓ５９において、Ｌ，Ｒに対する正規化振幅差分値の合計値の合算結果（ΣiL＋ΣiR）が所定閾値Ｐ1より大きく、且つＬの正規化振幅差分値の合計値ΣiLが所定閾値Ｐ1Lより大きく、且つＲの正規化振幅差分値の合計値ΣiRが所定閾値Ｐ1Rより大きい場合、Ｓ５９：Ｙｅｓと判定する。ここで、Ｐ1＞Ｐ0、Ｐ1L＝Ｐ1R＜Ｐ0であることが好ましい。つまり、Ｌ，Ｒそれぞれの正規化振幅差分値の合計値Σiが、Σi＞Ｐ0とならない場合であっても、Ｌ，Ｒに対する正規化振幅差分値の合計値の合算結果（ΣiL＋ΣiR）が大きく、Ｌ，Ｒに対するそれぞれの正規化振幅差分値の合計値（ΣiL，ΣiR）が最低限の閾値（Ｐ1L＝Ｐ1R）よりも大きい場合は、全周波数帯域検出部３１ａによりＬ，Ｒともにアタック部を検出する。このように、Ｓ５９では、Ｓ５４の判定を行うためのＬ，Ｒの足並みをそろえる処理を行っている。
【００８４】
また、Ｓ６０では、Ｌ，Ｒに対する正規化振幅差分値の合計値の合算結果（ΣiL＋ΣiR）が所定閾値Ｐ2より大きく、且つＬの正規化振幅差分値の合計値ΣiLが所定閾値Ｐ2Lより大きく、且つＲの正規化振幅差分値の合計値ΣiRが所定閾値Ｐ2Rより大きい場合、Ｓ６０：Ｙｅｓと判定する。ここで、Ｐ2＜Ｐ0、Ｐ2L＝Ｐ2R＞Ｐ1L＝Ｐ1Rであることが好ましい。つまり、Ｌ，Ｒに対する正規化振幅差分値の合計値の合算結果（ΣiL＋ΣiR）がある所定閾値（Ｐ2）より大きく、Ｌ，Ｒに対するそれぞれの正規化振幅差分値の合計値に大きな差が生じていない場合、ＬまたはＲの周波数成分ごとの正規化振幅差分値を、低閾値にて２値化し（Ｓ６１）、さらに高域限定で（Ｓ６２）、周波数別リセット（Ａ）の要否を判別する（Ｓ６３，第２の位相切替判別処理）。また、Ｓ６０：Ｎｏの場合は、Ｌ，Ｒそれぞれの正規化振幅差分値の合計値Σiが、Σi≧Ｐ3となるか否かを判別する（Ｓ６４）。ここで、所定閾値Ｐ3は、Ｐ3＜Ｐ0となる値であり、当該Ｓ６４では、正規化振幅差分値の合計値が低閾値（P3）以上であるか否かを判定している。このように、Ｓ６０では、Ｓ６４の判定を行うためのＬ，Ｒの足並みをそろえる処理を行っている。
【００８５】
続いて、Ｓ６４：Ｙｅｓの場合（正規化振幅差分値の合計値が低閾値以上である場合）、周波数成分ごとの正規化振幅差分値を低閾値で２値化し（Ｓ６５）、さらに高域限定で（Ｓ６２）、周波数別リセット（Ａ）の要否を判別する（Ｓ６３）。Ｓ６３にて、周波数別リセット（Ａ）が必要と判別した場合（i-１回目演算２値化が０で、i回目演算の２値化が１の場合）は（Ｓ６３：Ｙｅｓ）、Ｓ５７に移行し、必要に応じて位相リセット処理を行う。また、周波数別リセット（Ａ）が不要と判別した場合は（Ｓ６３：Ｎｏ）、Ｓ６９に移行し、必要に応じて位相連続処理を行う。
【００８６】
さらに、Ｓ６４：Ｎｏの場合（正規化振幅差分値の合計値が低閾値未満の場合）、周波数成分ごとの正規化振幅差分値を高閾値で２値化し（Ｓ６６）、高域限定で（Ｓ６７）、周波数別リセット（Ｂ）の要否を判別する（Ｓ６８，第３の位相切替判別処理）。このように、高域に周波数帯域を絞って周波数別リセット（Ｂ）の要否を判別し、位相演算処理を行うことで、高音質化を図ることができる。また、Ｓ６８にて、周波数別リセット（Ｂ）が必要と判別した場合（i-１回目演算２値化が０で、i回目演算の２値化が１の場合）は（Ｓ６８：Ｙｅｓ）、Ｓ５７に移行する。また、周波数別リセット（Ｂ）が不要と判別した場合は（Ｓ６８：Ｎｏ）、Ｓ６９に移行して、リセット音サイドローブ判定を行う。
【００８７】
ここで、リセット音サイドローブ判定について説明する。当該工程では、対象となる周波数成分が、周波数ピークが時間的に継続していない位相リセットされる非継続成分の周波数ピークの近傍に発生するサイドローブ成分に相当するか否かを判別する。つまり、リセット音サイドローブ判定は、i回目の処理において、位相リセットすると判定された周波数成分について、その成分が非継続の周波数ピークであった場合に、そのサイドローブ成分も合わせて位相リセット処理を行うための判定処理である。このように、本実施形態では、アタック部が検出されなかった周波数成分でも、その周波数成分が位相リセットする非継続周波数ピークのサイドローブであった場合は、アタック部をより鮮明に再現できるように、位相リセット処理を行う。したがって、Ｓ６９：Ｙｅｓの場合は、位相リセット処理を行い（Ｓ５８）、Ｓ６９：Ｎoの場合は、位相連続処理を行う（Ｓ７０）。
【００８８】
なお、Ｓ５８の位相リセット処理およびＳ７０の位相連続処理の後は、図３に示した第１実施形態の処理と同様に、振幅と位相を複素数化する（Ｓ７１）。その後、ＦＦＴ周波数グリッド番号ｊが、ＦＦＴサンプル数ｎＦＦＴの半分に達したか否かを判別し（Ｓ７２）、達していない場合は（Ｓ７２：Ｎｏ）、ＦＦＴ周波数グリッド番号ｊをカウントアップして（Ｓ７３）、Ｓ５２に戻る。また、達した場合は（Ｓ７２：Ｙｅｓ）、遅延リセットカウンタをデクリメントし（カウンタの値を１ずつ減らし）（Ｓ７４）、図１３のＳ１２に移行する。一方、Ｓ５２：Ｙｅｓの場合（遅延リセットカウンタが０になった場合）は、低域限定で（Ｓ７５）、Ｓ５７の継続音判定を行い、その判定結果に応じて、位相リセット処理（Ｓ５８）または位相連続処理を行う（Ｓ７０）。
【００８９】
以上説明したとおり、本実施形態によれば、位相演算部２２は、アタック部が検出された場合でも、周波数ピークが時間的に継続している継続成分に対しては、位相リセット処理の対象外とすることで、高音質化を図ることができる。つまり、周波数ピークが時間的に継続している継続成分を継続音として検出し、これを位相連続処理することで、アタック部の前後で継続して鳴っている音を途切れにくくすることができる。また、継続音のサイドローブ成分についても、位相リセット処理の対象外とすることで、アタック部の前後で継続して鳴っている音をより高音質にできる。
【００９０】
また、位相演算部２２は、アタック部が検出されなかった場合でも、周波数ピークが時間的に継続していない非継続成分に対して位相のリセット処理を行う場合、当該周波数ピークの近傍に発生するサイドローブ成分に対しては、位相連続処理の対象外とすることで、更なる高音質化を図ることができる。つまり、前処理において位相リセットすると判定された周波数成分について、その成分が周波数ピークであった場合、そのサイドローブ成分も合わせて位相リセット処理を行うことで、アタック部をより鮮明に再現することができる。
【００９１】
また、位相演算部２２は、Ｌ，Ｒの正規化振幅差分値の合算結果を用いて、位相切替判別処理を行うため、Ｌ，Ｒの音に音量差があった場合でも、Ｌ，Ｒの位相リセットのタイミングを同期させ、音像の乱れを防止することができる。さらに、Ｌ，Ｒそれぞれの正規化振幅差分値を用いるため、Ｌ，Ｒのバランスを考慮して、より適切に音像の乱れを防止することができる。
【００９２】
また、位相演算部２２は、正規化振幅差分値の合計値が高閾値以上である場合であってアタック部が検出された場合は、低周波成分のみ、所定時間だけタイミングを遅らせて位相リセット処理を行うため、低音域のアタック感を復活させることができる。これは、低音域の音は周期が長いため、前処理で検出した位相リセットのタイミングでは位相が安定せず、位相リセット処理の効果が小さいが、タイミングを遅らせることで、位相リセット処理の効果を高めることができるためである。これにより、低音打楽器における打撃音後に継続する低周波数の音、例えばバスドラムの胴鳴りなどの高音質化を図ることができる。
【００９３】
なお、上記の各実施形態において、オーディオデータ処理部３は、再生部２による再生に伴ってバッファメモリ４に書き込まれるオーディオデータを解析しながらピッチシフト（タイムスケーリング）を行うものとしたが、事前に解析したデータを読み出してこれらを行っても良い。つまり、楽曲を再生しながらリアルタイムにピッチシフト（タイムスケーリング）を行う構成としても良いし、事前に解析したデータを利用して、楽曲全体または楽曲の一部をピッチシフト（タイムスケーリング）する構成としても良い。
【００９４】
また、上記に示したオーディオデータ処理部３の各構成要素をプログラムとして提供することが可能である。また、そのプログラムを各種記録媒体（ＣＤ−ＲＯＭ、フラッシュメモリ等）に格納して提供することも可能である。すなわち、コンピューターをオーディオデータ処理部３の各構成要素として機能させるためのプログラム、およびそれを記録した記録媒体も、本発明の権利範囲に含まれるものである。
【００９５】
また、上記の各実施形態では、オーディオデータ処理部３を再生装置１に適用した場合を例示したが、ミキサー装置などのＤＪ機器、各種電子楽器およびコンピューター（ＰＣアプリケーション）などに適用しても良い。また、カラオケ装置、ボイスチェンジャーおよび音声合成装置など、音高を変更する機能を有する音声処理装置への適用も有用である。例えば、本発明を適用することで、異なる楽曲を連続して再生するＤＪ機器において、連続再生する楽曲のキーが不協和な関係にある場合に、ピッチシフトにより親和性の高いキーに変換するハーモニックスミックス処理を高音質化できる。また、カラオケ装置において、ユーザの声の高さに合わせてキー変更する機能があるが、音質を落とさずにキー変更可能なように、音源を打ち込み音であるＭＩＤＩとしている場合が多いが、本発明を適用することによって、生音を音源に用いても高品質なキー変換が可能となる。
【００９６】
さらに、キーを変えずに音声の時間軸長さだけを変更する場合など、タイムスケーリングのみの適用も可能である。例えば、本発明を適用することで、異なる楽曲を連続して再生するＤＪ機器において、連続再生する楽曲のテンポのみを変更し、キー（音高）を変更しないようにするタイムスケーリングを高音質化できる。また、音声を録音・再生できる装置において、高速再生しても、キーを変えない早聴き機能を高音質化できる。その他、本発明の要旨を逸脱しない範囲で、適宜変更が可能である。
【符号の説明】
【００９７】
１…再生装置  ２…再生部  ３…オーディオデータ処理部  ４…バッファメモリ  ４ａ…入力バッファ  ４ｂ…出力バッファ  ５…オーディオデータ出力部  １１…タイムスケーリング部  １２…ＳＲＣ部  ２１…ＦＦＴ部  ２２…位相演算部  ２３…逆ＦＦＴ部  ２４…時間伸縮演算部  ３１…アタック検出部  ３１ａ…全周波数帯域検出部  ３１ｂ…周波数帯域別検出部（Ａ）  ３１ｃ…周波数帯域別検出部（Ｂ）  ３２…位相リセット部  ３３…位相連続処理部
【図１】
2012002858.tif 000003
【図２】
2012002858.tif 000004
【図３】
2012002858.tif 000005
【図４】
2012002858.tif 000006
【図５】
2012002858.tif 000007
【図６】
2012002858.tif 000008