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