JP2012002858A - タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム - Google Patents
タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム Download PDFInfo
- Publication number
- JP2012002858A JP2012002858A JP2010135068A JP2010135068A JP2012002858A JP 2012002858 A JP2012002858 A JP 2012002858A JP 2010135068 A JP2010135068 A JP 2010135068A JP 2010135068 A JP2010135068 A JP 2010135068A JP 2012002858 A JP2012002858 A JP 2012002858A
- Authority
- JP
- Japan
- Prior art keywords
- phase
- frequency
- time
- calculation
- audio data
- 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.)
- Pending
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
【課題】楽音の種類に拠らず、FFT方式を用いて高品質な音に変換可能なタイムスケーリング方法等を提供する。
【解決手段】デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換するFFT部21と、振幅および/または位相の時間変化率の演算結果に応じて、周波数成分ごとの位相が、周波数変換ステップの演算結果そのものとして位相のリセット処理を行う第1の位相演算処理と、周波数成分ごとの位相が、周波数変換ステップの前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第2の位相演算処理と、のいずれかを行う位相演算部22と、位相演算部22による位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する逆FFT部23と、逆FFT部23による周波数逆変換処理時に、時間伸縮率に比例してデータ数を増減させる時間伸縮演算部24と、を備えた。
【選択図】図2
【解決手段】デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換するFFT部21と、振幅および/または位相の時間変化率の演算結果に応じて、周波数成分ごとの位相が、周波数変換ステップの演算結果そのものとして位相のリセット処理を行う第1の位相演算処理と、周波数成分ごとの位相が、周波数変換ステップの前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第2の位相演算処理と、のいずれかを行う位相演算部22と、位相演算部22による位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する逆FFT部23と、逆FFT部23による周波数逆変換処理時に、時間伸縮率に比例してデータ数を増減させる時間伸縮演算部24と、を備えた。
【選択図】図2
Description
デジタルオーディオデータの音高を変えずに時間軸上の長さを伸張および圧縮するタイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラムに関するものである。
従来、デジタルオーディオデータの音高を変えずに時間軸上の長さを伸張および圧縮するタイムスケーリング技術として、クロスフェード方式が知られている。例えば、特許文献1の[従来の技術]の欄には、クロスフェード方式の一例として、PICOLA方式が記載されている。また、デジタルオーディオデータの再生速度を変えずにサンプリング周波数を変更するSRC(Sampling Rate Convert)処理が知られている。例えば、特許文献2には、SRC処理により音程変換を行う方法が記載されている。このSRC処理を、クロスフェード方式のタイムスケーリング量をキャンセルするサンプリング周波数変更量でクロスフェード方式のタイムスケーリング処理の前あるいは後に行い、元のデジタルオーディオデータのサンプリング周波数で再生すれば同時に音高が変更されるため、元のデジタルオーディオデータの音高だけを変更し時間軸上の長さを変更しないピッチシフト(キーコントロール)を実現できる。
一方、タイムスケーリングやピッチシフトを実現する方法として、FFT(Fast Fourier Transform,高速フーリエ変換)方式が知られている。例えば、特許文献3には、FFT方式を用いて入力サンプリング数と出力サンプリング数とを変更することで、タイムスケーリングを行う方法が記載されている。また、特許文献4には、FFT方式を用いてタイムスケーリングを行う際に、入力オーバーラップサンプリング数と出力オーバーラップサンプリング数とを変更したときのトランジェント(打撃音)の開始ずれを補正する方法が記載されている。
なお、タイムスケーリングやピッチシフトを実現する上記の2方式を比較すると、一般的にFFT方式は、クロスフェード方式で問題となる2度鳴り、音抜け、うなり(トレモロ)といった音質劣化がなく、クロスフェード方式よりも高品質な音に変換できるといった利点がある。
ところが、FFT方式を用いた場合、アタックが緩いロングトーンの音(メロディ音)は高品質に変換できるが、アタックが急峻な打楽器音(リズム音)はアタック部が時間軸方向に間延びし、アタック感が失われるという音質劣化が生じる。これは、例えば上記のようにFFT方式を用いて入出力のサンプリング数を変更することでタイムスケーリングを実現する場合、原音の位相のままでは、次のFFT演算との間で位相が不連続になってしまうため、位相が不連続にならないように、位相を連続化する処理が必要となると共に、ピッチシフトを行う場合は周波数領域で周波数シフトを行なうため、FFTにより計算した位相を周波数シフト後の位相とすることができず、周波数シフト後の周波数成分ごとに連続変化位相処理が必要となり、その結果、原音とはまったく違う位相になるためである。ところが、アタック感の強い音(打楽器音など)では広い周波数帯域で位相が特定の関係(音の鳴り始め時点で位相が0)にあると考えられる。従来のFFT方式によるピッチシフトでは、連続変化位相処理により周波数成分ごとに位相が連続になるように計算されるので、アタック部で特定の位相関係を持つべき複数の周波数成分間の位相の関係が原音と異なり、結果的にアタック感が失われるという音質上の問題があった。つまり、従来のFFT方式では、FFTにより計算された位相を周波数シフト後には別の値に変換して用いなければならないため、周波数成分間でアタックを失わないために保つべき位相関係が失われ、アタック感の消失を防止できなかった。また、従来のFFT方式は、周波数領域でピッチシフトするため、周波数成分が一対一に対応せず、演算誤差が生じてしまう。また、各周波数成分で周波数誤差と位相誤差が分離できず、ピッチシフト演算時に誤差が生じてしまう。これにより、アタック部以外においても音の劣化が生じるといった問題もあった。
本発明は、上記の問題点に鑑み、メロディ音やリズム音などの楽音の種類に拠らず、また、メロディ音やリズム音などが混在したような複雑な楽音の場合であっても、FFT方式を用いて高品質な音に変換可能なタイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラムを提供することを目的とする。
本発明のタイムスケーリング方法は、オーディオデータ処理装置が、デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換する周波数変換ステップと、振幅および/または位相の時間変化率の演算結果を用いて異なる位相切替判別を行う複数の位相切替判別処理の処理結果に応じ、周波数成分ごとの位相が、周波数変換ステップの演算結果そのものとして位相のリセット処理を行う第1の位相演算処理と、周波数成分ごとの位相が、周波数変換ステップの前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第2の位相演算処理と、の少なくともいずれかを行う位相演算ステップと、位相演算ステップによる位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する周波数逆変換ステップと、周波数逆変換ステップによる周波数逆変換処理時に、時間伸縮率に比例して周波数逆変換後のデジタルオーディオデータのデータ数を増減させる時間伸縮演算ステップと、を実行することを特徴とする。
本発明のオーディオデータ処理装置は、デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換する周波数変換手段と、振幅および/または位相の時間変化率の演算結果を用いて異なる位相切替判別を行う複数の位相切替判別処理の処理結果に応じ、周波数成分ごとの位相が、周波数変換手段の演算結果そのものとして位相のリセット処理を行う第1の位相演算処理と、周波数成分ごとの位相が、周波数変換手段の前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第2の位相演算処理と、の少なくともいずれかを行う位相演算手段と、位相演算手段による位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する周波数逆変換手段と、周波数逆変換手段による周波数逆変換処理時に、時間伸縮率に比例して周波数逆変換後のデジタルオーディオデータのデータ数を増減させる時間伸縮演算手段と、を備えたことを特徴とする。
これらの構成によれば、振幅および/または位相の時間変化率の演算結果を用いて、異なる位相切替判別を行う複数の位相切替判別処理を行うことにより、急峻な音の立ち上がりなどを検出できる。また、当該複数の位相切替判別処理の処理結果に応じて、適切な位相演算処理(第1位相演算処理および第2の位相演算処理とのいずれか)を行うため、アタック感の消失を防止できる。つまり、振幅および/または位相の時間変化率の演算結果から、急峻な音の立ち上がりなどが検出された場合は、位相の連続化処理ではなく(第2の位相演算処理ではなく)、FFT変換した位相そのものを用いて位相演算処理を行うため(第1の位相演算処理を行うため)、アタック感を再現することが可能となる。これにより、リズム音などのアタックが急峻な楽音であっても、FFT方式を用いて高品質なタイムスケーリングが可能となる。
上記に記載のタイムスケーリング方法において、複数の位相切替判別処理は、異なる周波数帯域ごとにアタック部の有無を判別するものであり、位相演算ステップでは、複数の位相切替判別処理の判別によりアタック部「有」と判別された場合、第1の位相演算処理を行い、アタック部「無」と判別された場合、第2の位相演算処理を行うことを特徴とする。
上記に記載のオーディオデータ処理装置において、複数の位相切替判別処理は、異なる周波数帯域ごとにアタック部の有無を判別するものであり、位相演算手段は、複数の位相切替判別処理の判別によりアタック部「有」と判別された場合、第1の位相演算処理を行い、アタック部「無」と判別された場合、第2の位相演算処理を行うことを特徴とする。
この構成によれば、異なる周波数帯域ごとにアタック部の有無を判別するため、正確にアタック部を検出することができる。また、アタック部を検出した場合は、位相の連続化処理(第2の位相演算処理)を行わないため、アタック感の消失を防止できる。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、振幅の時間変化率を振幅で除算した正規化振幅差分値を用いて、複数の位相切替判別処理を行うことを特徴とする。
上記に記載のオーディオデータ処理装置において、位相演算手段は、振幅の時間変化率を振幅で除算した正規化振幅差分値を用いて、複数の位相切替判別処理を行うことを特徴とする。
これらの構成によれば、振幅の時間変化率を用いるため、アタック部を正確に検出することができる。また、振幅の時間変化率を振幅で除算した正規化振幅差分値を用いるため、原音の音量が小さい場合でも確実にアタック部を検出することができる。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、位相切替判別処理として、正規化振幅差分値の合計値が所定の閾値以上であるか否かを判別し、所定の閾値以上である場合、アタック部の有無を判別し、当該アタック部が検出された場合は、全周波数帯域に対して第1の位相演算処理を行うことを特徴とする。
この構成によれば、正規化振幅差分値の合計値が大きい場合であってアタック部が検出された場合は、位相リセットをするべき周波数成分が広範囲に広がっていることを意味するため、全周波数帯域に対して第1の位相演算処理を行うことで、高品質な音の変換を実現できる。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、位相切替判別処理として、正規化振幅差分値の合計値が所定の閾値以上であるか否かを判別し、所定の閾値未満である場合、さらに位相切替判別処理として、周波数帯域ごとにアタック部の有無を判別し、当該アタック部が検出された場合は、周波数帯域ごとに第1の位相演算処理を行い、アタック部が検出されなかった場合は、第2の位相演算処理を行うことを特徴とする。
この構成によれば、正規化振幅差分値の合計値が小さい場合は、周波数帯域ごとにアタック部の有無を検出するため、微細なアタックであっても確実に検出することができる。また、周波数帯域ごとのアタック部が検出された場合は、周波数帯域ごとに第1の位相演算処理を行うため、微細なアタック感の消失を防止し、高品質な音の変換を実現できる。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、位相の時間変化率である位相断層度を用いて、複数の位相切替判別処理を行うことを特徴とする。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、振幅の時間変化率を振幅で除算した正規化振幅差分値と、位相の時間変化率である位相断層度とを用いて、複数の位相切替判別処理を行うことを特徴とする。
これらの構成によれば、位相の時間変化率である位相断層度を用いてアタック部を検出することができる。また、正規化振幅差分値と位相断層度とを組み合わせることで、より正確にアタック部を検出することができる。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、アタック部が検出された場合でも、周波数ピークが時間的に継続している継続成分に対しては、第2の位相演算処理を行うことを特徴とする。
この構成によれば、周波数ピークが時間的に継続している継続成分を位相リセット処理の対象外とすることで、高音質化を図ることができる。具体的には、継続成分を継続音として検出し、これを位相連続化処理することで、アタック部の前後で継続して鳴っている音を途切れにくくすることができる。
なお、「周波数ピーク」とは、FFT変換で得られたスペクトルが極大となる箇所の周波数を指す。
なお、「周波数ピーク」とは、FFT変換で得られたスペクトルが極大となる箇所の周波数を指す。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、周波数ピークの継続成分に対して位相のリセット処理を行わない場合、当該継続成分となる周波数ピークの近傍に発生するサイドローブ成分に対しても、第2の位相演算処理を行うことを特徴とする。
この構成によれば、継続成分となる周波数ピークの近傍に発生するサイドローブ成分も継続音として検出し、これを位相連続化処理する(位相リセット処理の対象外とする)ことで、アタック部の前後で継続して鳴っている音をより途切れにくくすることができる。
なお、「サイドローブ成分」とは、周波数ピークの両隣に発生する、なだらかに大きさが小さくなっていく周波数帯を指す。
なお、「サイドローブ成分」とは、周波数ピークの両隣に発生する、なだらかに大きさが小さくなっていく周波数帯を指す。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、アタック部が検出されなかった場合でも、周波数ピークが時間的に継続していない非継続成分に対して位相のリセット処理を行う場合、当該周波数ピークの近傍に発生するサイドローブ成分に対して、第1の位相演算処理を行うことを特徴とする。
この構成によれば、周波数ピークが時間的に継続していない非継続成分に対して位相のリセット処理を行う場合(つまり前処理において位相リセットすると判定された周波数成分が周波数ピークであった場合)、その周波数ピークのサイドローブ成分も合わせて位相リセット処理を行うことで、アタック部をより鮮明に再現することができる。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、ステレオの左右の音に対する正規化振幅差分値の合算結果を用いて、複数の位相切替判別処理を行うことを特徴とする。
ステレオの左右の音に音量差があった場合、同一音源からの発生音は左右同時にリセットしないと位相が左右ばらばらになってしまう。この構成によれば、ステレオの左右の音に対する正規化振幅差分値の合算結果を用いて、複数の位相切替判別処理を行うため、左右の音の位相リセットのタイミングを同期させ、音像(定位)の乱れを防止することができる。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、ステレオの左右の音に対する正規化振幅差分値の合算結果と、ステレオの左右の音それぞれの正規化振幅差分値と、を用いて、複数の位相切替判別処理を行うことを特徴とする。
この構成によれば、ステレオの左右の音に対する正規化振幅差分値の合算結果だけでなく、ステレオの左右の音それぞれの正規化振幅差分値を用いるため、左右の音量差なども考慮して、より確実に音像の乱れを防止することができる。
上記に記載のタイムスケーリング方法において、位相演算ステップでは、正規化振幅差分値の合計値が所定の閾値以上である場合であってアタック部が検出された場合は、低周波成分のみ、所定時間だけタイミングを遅らせて、第1の位相演算処理を行うことを特徴とする。
低音域の音は周期が長いため、前処理で検出した位相リセットのタイミングでは位相が安定せず、位相リセット処理の効果が小さい。このため、前処理で検出した位相リセットのタイミングから所定時間だけタイミングを遅らせて位相リセット処理を行うことで、低音域のアタック感を復活させることができる。これにより、バスドラムなどの胴鳴り(高い周波数の後に低い周波数が続く部分)の高音質化を図ることができる。
本発明のピッチシフト方法は、オーディオデータ処理装置が、上記に記載のFFTを用いたタイムスケーリング方法における各ステップと、デジタルオーディオデータのサンプリング周波数を変更することで、時間伸縮および音高変更を行うサンプリングレート変換演算ステップと、を実行し、タイムスケーリング方法の各ステップによる時間長変化と、サンプリングレート変換演算ステップによる時間長変化とが相殺され、音高のみが変更されることを特徴とする。
上記に記載のオーディオデータ処理装置において、デジタルオーディオデータのサンプリング周波数を変更することで、時間伸縮および音高変更を行うサンプリングレート変換演算手段をさらに備え、サンプリングレート変換演算手段および/または時間伸縮演算手段は、それぞれの演算処理にて発生した時間長変化を相殺することを特徴とする。
従来のFFTを用いて周波数領域で周波数シフトを行なう方式のピッチシフトでは、FFTによって計算された位相は周波数シフト後には別の値に変換して用いなければならないため、周波数成分間でアタックを失わないために保つべき位相関係が失われるので第1の位相演算処理を正しく行なえずアタック感の消失を防止できない。これに対し、これらのピッチシフト方法の構成によれば、サンプリングレート変換法を用いることで、周波数領域で周波数シフトを行わないためFFTにより計算した位相をアタック部分においてはピッチシフト変換音の位相とすることができるので、第1の位相演算処理により、アタック感の消失を防止できる。また、周波数シフト処理の誤差要因が少ないため、サンプリングレート変換法を使用しない従来のFFT方式と比較すると、アタック部以外の音質低下も防止でき、高品質なピットシフトが可能となる。
本発明のプログラムは、コンピューターに、上記に記載のタイムスケーリング方法における各ステップを実行させることを特徴とする。
本発明の他のプログラムは、コンピューターに、上記に記載のピッチシフト方法における各ステップを実行させることを特徴とする。
これらのプログラムを用いることにより、メロディ音やリズム音などの楽音の種類に拠らず、FFT方式を用いて高品質な音に変換可能なタイムスケーリング方法およびピッチシフト方法を実現できる。
以下、本発明の一実施形態に係るタイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラムについて、添付図面を参照しながら詳細に説明する。本実施形態では、本発明のオーディオデータ処理装置を、CDプレーヤーなどの再生装置に適用した場合について例示する。
[第1実施形態]
図1(a)は、再生装置1の簡易ブロック図である。同図に示すように、再生装置1は、再生部2と、オーディオデータ処理部3(オーディオデータ処理装置)と、バッファメモリ4と、オーディオデータ出力部5と、を備えている。再生部2は、CDなどのデバイスから楽曲・楽音を読み出して再生する。オーディオデータ処理部3は、CPU(Central Processing Unit)またはDSP(Digital Signal Processor)によって主要部が構成され、再生部2によって再生されたデジタルオーディオデータ(以下、単に「オーディオデータ」と称する)をバッファメモリ4に格納すると共に、バッファメモリ4から読み出したオーディオデータに対し、デジタル信号処理を施す。なお、バッファメモリ4は、入力用のバッファメモリ4(以下、「入力バッファ4a」と称する)と、出力用のバッファメモリ4(以下、「出力バッファ4b」と称する)と、から成る。オーディオデータ出力部5は、オーディオデータ処理部3による処理後のオーディオデータ(出力バッファ4bから読み出したオーディオデータ)を、外部(アンプおよびスピーカーを有する出力装置など)に出力する。
図1(a)は、再生装置1の簡易ブロック図である。同図に示すように、再生装置1は、再生部2と、オーディオデータ処理部3(オーディオデータ処理装置)と、バッファメモリ4と、オーディオデータ出力部5と、を備えている。再生部2は、CDなどのデバイスから楽曲・楽音を読み出して再生する。オーディオデータ処理部3は、CPU(Central Processing Unit)またはDSP(Digital Signal Processor)によって主要部が構成され、再生部2によって再生されたデジタルオーディオデータ(以下、単に「オーディオデータ」と称する)をバッファメモリ4に格納すると共に、バッファメモリ4から読み出したオーディオデータに対し、デジタル信号処理を施す。なお、バッファメモリ4は、入力用のバッファメモリ4(以下、「入力バッファ4a」と称する)と、出力用のバッファメモリ4(以下、「出力バッファ4b」と称する)と、から成る。オーディオデータ出力部5は、オーディオデータ処理部3による処理後のオーディオデータ(出力バッファ4bから読み出したオーディオデータ)を、外部(アンプおよびスピーカーを有する出力装置など)に出力する。
図1(b)は、オーディオデータ処理部3の一例を示すブロック図である。図1(b)のオーディオデータ処理部3は、主な機能構成として、タイムスケーリング部11を備えている。タイムスケーリング部11は、上記のバッファメモリ4(入力バッファ4a)から、処理対象となるオーディオデータを取得してタイムスケーリング(時間伸縮変換処理)を行う。なお、本実施形態では、FFT方式を用いてタイムスケーリングを行う。
一方、図1(c)は、オーディオデータ処理部3の他の例を示すブロック図である。図1(c)のオーディオデータ処理部3は、主な機能構成として、SRC部12(サンプリングレート変換演算部)と、タイムスケーリング部11と、を備えている。つまり、図1(b)のオーディオデータ処理部3に、SRC部12を追加した構成となっている。
SRC部12は、タイムスケーリング部11によるタイムスケーリングの前あるいは後に、オーディオデータのサンプリング周波数を変更するSRC処理を行う(サンプリングレート変換演算ステップ)。SRC処理は本来デジタルオーディオデータのサンプリング周期を変更するために使われる技術であるが、SRC処理を施して新たに求めたサンプリングデータを、サンプリング周波数を元のままとすることで時間伸縮および音高変更が行われる。つまり、図1(c)のオーディオデータ処理部3は、SRC部12とタイムスケーリング部11によるオーディオデータの時間長変化を相殺することで、時間軸上の長さを変更することなく音高のみを変更させるピッチシフトを実現できるようになっている。以下、図1(c)に示したオーディオデータ処理部3により、ピッチシフトを行う方法について記載する。
図2は、オーディオデータ処理部3の詳細な機能構成を示すブロック図である。上記の通り、オーディオデータ処理部3は、SRC部12およびタイムスケーリング部11から成る。本実施形態では、最初にSRC処理を行い、その後タイムスケーリングを行うものとする。SRC部12は、原音となるオーディオデータに対してSRC処理を行う。
一方、タイムスケーリング部11は、FFT部21、位相演算部22、逆FFT部23および時間伸縮演算部24から成る。FFT部21は、オーディオデータを、周波数成分ごとの振幅と位相に変換する(周波数変換ステップ)。つまり、時間領域の音を、周波数領域に変換し、振幅と位相を求める。
位相演算部22は、振幅の時間変化率の演算結果に応じて、位相演算処理を行う(位相演算ステップ)。具体的には、振幅の時間変化率を振幅で除算した正規化振幅差分値を用いて、異なる位相切替判別を行う複数の位相切替判別処理を行い、その判別結果に応じた位相演算処理を行う。当該複数の位相切替判別処理は、アタック部を検出するための処理である。同図に示すように、位相演算部22は、アタック検出部31、位相リセット部32および位相連続処理部33を備えている。さらに、アタック検出部31は、全周波数帯域検出部31a、周波数帯域別検出部(A)31bおよび周波数帯域別検出部(B)31cから成る。
全周波数帯域検出部31aは、上記の複数の位相切替判別処理の一つである第1の位相切替判別処理により、正規化振幅差分値の合計値が所定の閾値L1(当該閾値を、以下「高閾値」と称する)以上であるか否かを判別し、前回の演算において高閾値未満であり、且つ今回の演算で高閾値以上である場合、全周波数帯域に対してリセット処理が必要なアタック部を検出したと判定する。具体的例を挙げると、バスドラ等の低音の打楽器の打撃音を検出した場合などである。低音打楽器の場合のアタック部には楽器の音の高さを特徴づける基本の低い周波数成分から上のかなり高音域までの周波数成分が含まれているため、ほぼ全周波数帯にわたるような位相のリセット処理が必要となる。
また、周波数帯域別検出部(A)31bは、第1の位相切替判別処理により、正規化振幅差分値の合計値が、上記の高閾値未満且つ所定の閾値L2(当該閾値を、以下「低閾値」と称する)以上である場合(但し、L1>L2)、第2の位相切替判別処理を行う。当該第2の位相切替判別処理は、周波数成分ごとに正規化振幅差分値を低閾値で2値化し且つ高域限定で、周波数成分ごとにアタック部を検出する処理である。ここでは、中域から高域の打撃音を検出可能である。
さらに、周波数帯域別検出部(B)31cは、第1の位相切替判別処理により、正規化振幅差分値の合計値が低閾値未満であると判別した場合、第3の位相切替判別処理を行う。当該第3の位相切替判別処理は、周波数成分ごとに正規化振幅差分値を高い閾値で2値化して、周波数成分ごとにアタック部の有無を検出する処理である。ここでは、ボーカルや弦楽器などによるアタックを検出可能である。
位相リセット部32は、全周波数帯域検出部31a、周波数帯域別検出部(A)31bおよび周波数帯域別検出部(B)31cにおいてアタック部が検出された場合、周波数成分ごとの位相が、FFT部21の演算結果そのものとして位相のリセット処理(第1の位相演算処理)を行う。また、位相連続処理部33は、全周波数帯域検出部31a、周波数帯域別検出部(A)31bおよび周波数帯域別検出部(B)31cにおいてアタック部が検出されなかった場合、周波数成分(周波数グリッド)ごとの位相が、FFT部21の前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理(第2の位相演算処理)を行う。つまり、位相連続処理部33は、時間伸縮分位相補正を行い、周波数成分ごとに前回の演算結果と位相が連続するように演算処理を行う。このように、本実施形態の位相演算部22は、正規化振幅差分値の合計値、および個別の周波数成分ごとの値に応じて、位相リセット処理および位相連続化処理のいずれかの処理を選択的に実行する。
逆FFT部23は、位相演算部22による位相演算処理後の各周波数成分を、オーディオデータに変換する(周波数逆変換ステップ)。つまり、周波数領域の振幅と位相を、時間領域の音に変換する。
時間伸縮演算部24は、逆FFT部23による周波数逆変換処理時に、時間伸縮率に比例してデータ数を増減させる(時間伸縮演算ステップ)。具体的には、SRC部12によるオーディオデータの時間長変化を相殺するように時間伸縮する。なお、時間伸縮の方法については、逆FFT部23により演算された時間領域のオーディオデータをFFT時にずらしたサンプル数より時間伸縮量に比例して変化させたサンプル数だけずらすことにより実現する。時間伸縮演算部24による演算処理後のオーディオデータは、変換音として出力される。
なお、ステレオ再生の場合、本実施形態では、各部(SRC部12、FFT部21、位相演算部22、逆FFT部23および時間伸縮演算部24)において、左右の音を独立して処理する。
次に、図3および図4のフローチャートを参照し、第1実施形態に係るピッチシフト処理の流れについて説明する。まず、オーディオデータ処理部3は、初期化処理を行い(FFT演算回数i=1とする,S01)、入力バッファ4aからオーディオデータを取得する(S02)。続いて、SRC部12によりSRC処理を行い(S03)、その後S04以降のタイムスケーリングを開始する。
タイムスケーリングでは、まず、入力窓関数(ハニング窓関数)を乗じ(S04)、i回目のFFTを行う(S05)。また、周波数成分、すなわちFFT周波数グリッド番号jをj=0とし(S06)、位相振幅計算を行う(S07)。以上、S03〜S07は、FFT部21による処理工程である。
続いて、オーディオデータ処理部3は、位相演算部22により位相演算処理を行う(S08)。当該位相演算処理については、図4にて後述する。オーディオデータ処理部3は、位相演算処理を終えると、振幅と位相を複素数化し(S09)、FFT周波数グリッド番号jが、FFTサンプル数nFFTの半分に達したか否か、すなわち「j=nFFT/2」に達したか否かを判別する(S10)。ここで、「j=nFFT/2」に達していない場合は(S10:No)、FFT周波数グリッド番号jをカウントアップして(S11)、S07に戻る。また、「j=nFFT/2」に達した場合は(S10:Yes)、複素数化したデータの共役複素数を残り半分の負の周波数成分の複素数データとしてIFFTを行う(S12)。以上、S09〜S12は、逆FFT部23による処理工程である。
続いて、オーディオデータ処理部3は、出力窓関数(ハニング窓関数)を乗じ(S13)、SRC率をキャンセルすべく、入力オーバーラップ数にタイムストレッチ率を乗算して、出力ポインタを移動する(S14)。また、これを出力バッファ4bに書き込んで(出力バッファ4bに加算して,S15)、変換音として出力する。以上、S13〜S15は、時間伸縮演算部24による処理工程である。なお、この実施例では出力窓関数もFFT前と同じハニング窓としたが、必ずしも同じである必要はなく、別の窓関数を選んでもよいし、FFT前の窓関数が適切である場合には出力窓関数を省略することも可能である。
その後、オーディオデータ処理部3は、入力オーバーラップ数の入力ポインタを移動し(S16)、入力バッファ4aにオーディオデータが残っているか否かを判別する(S17)。ここで、オーディオデータが残っている場合は(S17:データあり)、FFT演算回数iをカウントアップして(S18)、S02に戻る。また、オーディオデータが残っていない場合は(S17:データなし)、ピッチシフト処理を終了する。
次に、図4を参照し、図3のS08に相当する位相演算処理について説明する。オーディオデータ処理部3(位相演算部22)は、まず、振幅の差分を演算し(S21)、正規化振幅差分値を求める(S22)。すなわち、振幅の時間変化率をさらに振幅で除算することにより正規化振幅差分値を求める。但し、振幅が0であるか、非常に微小である場合は、除算できないか、除算の結果が適切でなくなる可能性があるため、例外処理として正規化振幅差分値も0とする。ここで、i回目の正規化振幅差分値の合計値(図4では、「Σi」と図示)が、高閾値以上であるか、低閾値以上高閾値未満であるか、低閾値未満であるかを判別する(S23,第1の位相切替判別処理)。
ここで、i回目の正規化振幅差分値の合計値Σiが高閾値以上の場合は(S23:高閾値以上)、i-1回目の正規化振幅差分値の合計値Σi-1が高閾値以上であったか否かを判別し(S24)、高閾値以上でなかった場合(S24:No)、全周波数帯域に対して位相リセット処理を行う(S30)。また、i-1回目の正規化振幅差分値の合計値Σi-1が高閾値以上であった場合は(S24:Yes)、位相連続処理を行う(S31)。つまり、全周波数帯域検出部31aにより、i-1回目演算2値化が0で、i回目演算の2値化が1の場合にアタック部が検出されたと判別し、位相リセット部32により、周波数成分ごとの位相を、FFT部21の演算結果そのものとして位相をリセットする。また、アタック部が検出されなかった場合は、位相連続処理部33により、周波数成分ごとの位相が、FFT部21の前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う。
また、正規化振幅差分値の合計値が低閾値以上高閾値未満の場合は(S23:低閾値以上高閾値未満)、周波数成分ごとの正規化振幅差分値を低閾値で2値化し(S25)、さらに高域限定で(S26)、周波数別リセット(A)の要否を判別する(S27,第2の位相切替判別処理)。ここで、周波数別リセット(A)が必要と判別した場合は(S27:Yes)、周波数成分ごとに位相リセット処理を行い(S30)、周波数別リセット(A)が不要と判別した場合は(S27:No)、位相連続処理を行う(S31)。つまり、周波数帯域別検出部(A)31bにより、i-1回目演算2値化が0で、i回目演算の2値化が1の場合にアタック部が検出されたと判別し、位相リセット部32による位相リセット処理を行う。また、アタック部が検出されなかった場合は、位相連続処理部33による位相の連続化処理を行う。
さらに、正規化振幅差分値の合計値が低閾値未満の場合は(S23:低閾値未満)、周波数成分ごとの正規化振幅差分値を高閾値で2値化し(S28)、周波数別リセット(B)の要否を判別する(S29,第3の位相切替判別処理)。ここで、周波数別リセット(B)が必要と判別した場合は(S29:Yes)、位相リセット処理を行い(S30)、周波数別リセット(B)が不要と判別した場合は(S29:No)、位相連続処理を行う(S31)。つまり、周波数帯域別検出部(B)31cにより、i-1回目演算2値化が0で、i回目演算の2値化が1の場合にアタック部が検出されたと判別し、位相リセット部32による位相リセット処理を行い、アタック部が検出されなかった場合は、位相連続処理部33による位相の連続化処理を行う。なお、位相リセット処理(S30)および位相連続処理(S31)の終了により、位相演算処理が終了となる。
以上説明したとおり、本実施形態によれば、正規化振幅差分値に応じて、アタック部の有無を検出し、その検出結果に応じて、FFTの演算結果そのものを利用して位相のリセット処理を行う第1の位相演算処理と、前回のFFTの演算結果から時間伸縮を考慮して位相の連続化処理を行う第2の位相演算処理と、のいずれかを行うため、高品質な音の変換が可能となる。特に、アタック部が検出された場合は、第1の位相演算処理を行うことでアタック感を再現するため、アタック感の消失を防止できる。これにより、FFT方式であっても、リズム音などのアタックが急峻な楽音に対し、高品質なタイムスケーリングおよびピッチシフトを実現できる。
また、振幅の時間変化率を振幅で除算した正規化振幅差分値を用いてアタック部を検出するため、原音の音量が小さい場合でも正確且つ確実にアタック部を検出することができる。
さらに、正規化振幅差分値を用いて、異なる周波数帯域ごとに3回の位相切替判別処理を行うため、より確実にアタック部を検出することができる。例えば、正規化振幅差分値の合計値が高閾値以上の場合は、位相リセットをするべき周波数成分が広範囲に広がっていることを意味するため、全周波数帯域に対して第1の位相演算処理を行うことで、確実にアタック部を検出できる。また、正規化振幅差分値の合計値が高閾値未満の場合は、周波数帯域ごとにアタック部の有無を検出するため、微細なアタックであっても確実に検出することができる。
また、SRC部12により、サンプリングレート変換法を用いることで、周波数領域で周波数シフトを行わないためFFTにより計算した位相そのものをアタック部分においてはピッチシフト変換音の位相とすることができるので、第1の位相演算処理により、アタック感の消失を防止できる。また、周波数シフト処理の誤差要因が少ないため、サンプリングレート変換法を使用しない従来のFFT方式と比較すると、アタック部以外の音質低下も防止でき、高品質なピットシフトが可能となる。
[第2実施形態]
次に、図5を参照し、本発明の第2実施形態について説明する。上記の第1実施形態では、振幅の時間変化率から得られる正規化振幅差分値に基づいてアタック部を検出したが、本実施形態は、位相の時間変化率から得られる位相断層度に基づいてアタック部を検出する点で異なる。以下、第1実施形態と異なる点のみ説明する。なお、本実施形態において、第1実施形態と同様の構成部分については同様の符号を付し、詳細な説明を省略する。また、第1実施形態と同様の構成部分について適用される変形例は、本実施形態についても同様に適用される。
次に、図5を参照し、本発明の第2実施形態について説明する。上記の第1実施形態では、振幅の時間変化率から得られる正規化振幅差分値に基づいてアタック部を検出したが、本実施形態は、位相の時間変化率から得られる位相断層度に基づいてアタック部を検出する点で異なる。以下、第1実施形態と異なる点のみ説明する。なお、本実施形態において、第1実施形態と同様の構成部分については同様の符号を付し、詳細な説明を省略する。また、第1実施形態と同様の構成部分について適用される変形例は、本実施形態についても同様に適用される。
本実施形態のオーディオデータ処理部3は、図2に示した第1実施形態の機能構成から、全周波数帯域検出部31a、周波数帯域別検出部(A)31bおよび周波数帯域別検出部(B)31cを省略した構成となっている(図示省略)。当該構成により、本実施形態の位相演算部22は、位相の時間変化率の演算結果に応じて、位相演算処理を行う(位相演算ステップ)。具体的には、アタック検出部31により、位相の時間変化率である位相断層度を用いて、位相断層が生じているか否かを判別し、その判別結果に応じて位相演算処理を行う。つまり、位相断層が生じている場合は、アタック部「有」と判定し、位相リセット部32による位相リセット処理を行う。また、位相断層が生じていない場合は、アタック部「無」と判定し、位相連続処理部33による位相の連続化処理を行う。
図5は、第2実施形態に係る位相演算処理を示すフローチャートである。なお、図3に示したピッチシフト処理のメインフローについては、第1実施形態と同様であるため、図示を省略する。本実施形態のオーディオデータ処理部3(位相演算部22)は、まず、位相の2階差分を演算し(S41)、位相断層度を算出する(S42)。ここで、位相断層度が所定の閾値以上であるか否かに応じて、位相断層の有無(アタック部の有無)を判別する(S43)。つまり、位相断層度が所定の閾値以上である場合は(S43:あり)、位相リセット部32により、周波数成分ごとの位相が、FFT部21の演算結果そのものとして位相リセット処理を行う(S44)。また、位相断層度が所定の閾値未満である場合は(S43:なし)、位相連続処理部33により、周波数成分ごとの位相が、FFT部21の前回の演算結果から時間伸縮を考慮して連続変化したものとして位相連続処理を行う(S45)。また、位相リセット処理(S44)および位相連続処理(S45)の終了後、位相演算処理を終了する。
以上説明したとおり、本実施形態によれば、位相の時間変化率を用いることで、原音の音量に拠らず、アタック部を正確に検出することができる。また、位相断層の有無で2つの処理に分岐するだけで良いため、少ない演算処理量で、高品質なタイムスケーリングおよびピッチシフトを実現できる。
なお、上記の実施例において、第2実施形態に係るオーディオデータ処理部3の構成は、図2に示した第1実施形態の機能構成から、全周波数帯域検出部31a、周波数帯域別検出部(A)31bおよび周波数帯域別検出部(B)31cを省略した構成であると記載したが、第1実施形態の機能構成と同様の構成としても良い。この場合、全周波数帯域検出部31a、周波数帯域別検出部(A)31bおよび周波数帯域別検出部(B)31cにより、位相断層度を用いて、異なる位相切替判別を行う複数の位相切替判別処理を行う。また、当該複数の位相切替判別処理により位相断層が生じているか否かを判別し、その判別結果に応じて位相演算処理を行う。なお、本例における位相演算処理の流れは、図4に示した第1実施形態の位相演算処理において、S21の「振幅差分」を「位相差分」に、またS22の「正規化振幅差分値」を「位相断層度」に変更したものと同様であるため、図示を省略する。
また、第1実施形態の正規化振幅差分値を用いたアタック部の検出方法と、第2実施形態の位相断層度を用いたアタック部の検出方法と、を組み合わせてアタック部を検出しても良い。この構成によれば、アタック部の検出精度をより向上させることができる。
[第3実施形態]
次に、図6を参照し、本発明の第3実施形態について説明する。本実施形態では、位相リセット処理を行うべき成分と、位相連続処理を行うべき成分と、を高度に分類することを特徴とする。なお、本実施形態では、正規化振幅差分値を用いてアタック部を検出するものとする。また、本実施形態においても、上記の各実施形態と同様の構成部分については同様の符号を付し、詳細な説明を省略する。また、上記の各実施形態と同様の構成部分について適用される変形例は、本実施形態についても同様に適用される。
次に、図6を参照し、本発明の第3実施形態について説明する。本実施形態では、位相リセット処理を行うべき成分と、位相連続処理を行うべき成分と、を高度に分類することを特徴とする。なお、本実施形態では、正規化振幅差分値を用いてアタック部を検出するものとする。また、本実施形態においても、上記の各実施形態と同様の構成部分については同様の符号を付し、詳細な説明を省略する。また、上記の各実施形態と同様の構成部分について適用される変形例は、本実施形態についても同様に適用される。
図6は、第3実施形態に係る位相演算処理を示すフローチャートである。なお、図3に示したピッチシフト処理のメインフローについては、第1実施形態とほぼ同様であるため、異なる部分のみ言及する。本実施形態のオーディオデータ処理部3(位相演算部22)は、まず、FFT周波数グリッド番号jをj=1とし(S51)、遅延リセットカウンタが0になったか否かを判別する(S52)。この遅延リセットカウンタは、正規化振幅差分値の合計値Σiが高閾値以上である場合であって(S53:Yesの場合)アタック部が検出された場合(S54:Yesの場合)、低周波成分のみ、所定時間だけタイミングを遅らせて位相のリセット処理を行うため(S75)、そのタイミングを計測すべくオーディオデータ処理部3内に設けられたものである。なお、遅延リセットカウンタは、S55にてセットされる。
S52:Noの場合は、正規化振幅差分値の合計値Σiが高閾値以上であるか否かを判別する(S53)。当該S53および後述するS64は、図4のS23(第1の位相切替判別処理)に相当する工程である。本実施形態では、正規化振幅差分値の合計値Σiが高閾値より大きいか否かを判別するための閾値をP0とする。ここで、正規化振幅差分値の合計値Σiが高閾値以上の場合は(S53:Yes)、i-1回目の正規化振幅差分値の合計値Σi-1が高閾値以上であったか否かを判別する(S54)。ここで、i-1回目の正規化振幅差分値の合計値Σi-1が高閾値未満であった場合(S54:No,つまり、i-1回目演算2値化が0で、i回目演算の2値化が1の場合)、全周波数帯域検出部31aによりアタック部が検出されたと判別する。また、i-1回目の正規化振幅差分値の合計値Σi-1が高閾値以上であった場合は(S54:Yes)、S69に移行する。
i-1回目の正規化振幅差分値の合計値Σi-1が高閾値未満であった場合は(S54:No)、上記の遅延リセットカウンタの値をN(但し、Nは、N≧1となる任意の整数)にセットする(S55)。その後、高域限定で(S56)、S57の継続音判定を行った後、必要に応じて位相リセット処理を行う(S58)。
ここで、S57の継続音判定について説明する。当該工程では、対象となる周波数成分が、周波数ピークが時間的に継続している継続成分(継続音)に相当するか否か、または継続成分となる周波数ピークのサイドローブ成分に相当するか否かを判別する。なお、継続成分については、所定処理回数以上(例えば、2回以上)、周波数ピークと判定した場合に「継続音」と判定する。また、「周波数ピーク」とは、FFT変換で得られたスペクトルが極大となる箇所の周波数を指し、「サイドローブ成分」とは、周波数ピークの両隣に発生する、なだらかに大きさが小さくなっていく周波数帯を指す。このように、本実施形態では、アタック部が検出された場合でも、継続音または継続音サイドローブに該当する場合は、位相リセット処理の対象外とすることで、アタック部の前後で継続して鳴っている音を途切れにくくしている。したがって、S57:Noの場合に、位相リセット処理を行い(S58)、S57:Yesの場合は、位相連続処理を行う(S70)。
一方、S53:Noと判別した場合は(正規化振幅差分値の合計値Σiが高閾値未満である場合は)、S59およびS60にて、2回のステレオ判定を行う。当該ステレオ判定とは、ステレオの左右の音(以下、「L,R」と記載する)に対する正規化振幅差分値の合算結果と、ステレオの左右の音それぞれの正規化振幅差分値と、を用いて、位相切替の判定(複数の位相切替判別処理の一部に相当)を行うものである。これにより、左右の音の位相リセットのタイミングを同期させ、音像(定位)の乱れを防止する。
具体的には、S59において、L,Rに対する正規化振幅差分値の合計値の合算結果(ΣiL+ΣiR)が所定閾値P1より大きく、且つLの正規化振幅差分値の合計値ΣiLが所定閾値P1Lより大きく、且つRの正規化振幅差分値の合計値ΣiRが所定閾値P1Rより大きい場合、S59:Yesと判定する。ここで、P1>P0、P1L=P1R<P0であることが好ましい。つまり、L,Rそれぞれの正規化振幅差分値の合計値Σiが、Σi>P0とならない場合であっても、L,Rに対する正規化振幅差分値の合計値の合算結果(ΣiL+ΣiR)が大きく、L,Rに対するそれぞれの正規化振幅差分値の合計値(ΣiL,ΣiR)が最低限の閾値(P1L=P1R)よりも大きい場合は、全周波数帯域検出部31aによりL,Rともにアタック部を検出する。このように、S59では、S54の判定を行うためのL,Rの足並みをそろえる処理を行っている。
また、S60では、L,Rに対する正規化振幅差分値の合計値の合算結果(ΣiL+ΣiR)が所定閾値P2より大きく、且つLの正規化振幅差分値の合計値ΣiLが所定閾値P2Lより大きく、且つRの正規化振幅差分値の合計値ΣiRが所定閾値P2Rより大きい場合、S60:Yesと判定する。ここで、P2<P0、P2L=P2R>P1L=P1Rであることが好ましい。つまり、L,Rに対する正規化振幅差分値の合計値の合算結果(ΣiL+ΣiR)がある所定閾値(P2)より大きく、L,Rに対するそれぞれの正規化振幅差分値の合計値に大きな差が生じていない場合、LまたはRの周波数成分ごとの正規化振幅差分値を、低閾値にて2値化し(S61)、さらに高域限定で(S62)、周波数別リセット(A)の要否を判別する(S63,第2の位相切替判別処理)。また、S60:Noの場合は、L,Rそれぞれの正規化振幅差分値の合計値Σiが、Σi≧P3となるか否かを判別する(S64)。ここで、所定閾値P3は、P3<P0となる値であり、当該S64では、正規化振幅差分値の合計値が低閾値(P3)以上であるか否かを判定している。このように、S60では、S64の判定を行うためのL,Rの足並みをそろえる処理を行っている。
続いて、S64:Yesの場合(正規化振幅差分値の合計値が低閾値以上である場合)、周波数成分ごとの正規化振幅差分値を低閾値で2値化し(S65)、さらに高域限定で(S62)、周波数別リセット(A)の要否を判別する(S63)。S63にて、周波数別リセット(A)が必要と判別した場合(i-1回目演算2値化が0で、i回目演算の2値化が1の場合)は(S63:Yes)、S57に移行し、必要に応じて位相リセット処理を行う。また、周波数別リセット(A)が不要と判別した場合は(S63:No)、S69に移行し、必要に応じて位相連続処理を行う。
さらに、S64:Noの場合(正規化振幅差分値の合計値が低閾値未満の場合)、周波数成分ごとの正規化振幅差分値を高閾値で2値化し(S66)、高域限定で(S67)、周波数別リセット(B)の要否を判別する(S68,第3の位相切替判別処理)。このように、高域に周波数帯域を絞って周波数別リセット(B)の要否を判別し、位相演算処理を行うことで、高音質化を図ることができる。また、S68にて、周波数別リセット(B)が必要と判別した場合(i-1回目演算2値化が0で、i回目演算の2値化が1の場合)は(S68:Yes)、S57に移行する。また、周波数別リセット(B)が不要と判別した場合は(S68:No)、S69に移行して、リセット音サイドローブ判定を行う。
ここで、リセット音サイドローブ判定について説明する。当該工程では、対象となる周波数成分が、周波数ピークが時間的に継続していない位相リセットされる非継続成分の周波数ピークの近傍に発生するサイドローブ成分に相当するか否かを判別する。つまり、リセット音サイドローブ判定は、i回目の処理において、位相リセットすると判定された周波数成分について、その成分が非継続の周波数ピークであった場合に、そのサイドローブ成分も合わせて位相リセット処理を行うための判定処理である。このように、本実施形態では、アタック部が検出されなかった周波数成分でも、その周波数成分が位相リセットする非継続周波数ピークのサイドローブであった場合は、アタック部をより鮮明に再現できるように、位相リセット処理を行う。したがって、S69:Yesの場合は、位相リセット処理を行い(S58)、S69:Noの場合は、位相連続処理を行う(S70)。
なお、S58の位相リセット処理およびS70の位相連続処理の後は、図3に示した第1実施形態の処理と同様に、振幅と位相を複素数化する(S71)。その後、FFT周波数グリッド番号jが、FFTサンプル数nFFTの半分に達したか否かを判別し(S72)、達していない場合は(S72:No)、FFT周波数グリッド番号jをカウントアップして(S73)、S52に戻る。また、達した場合は(S72:Yes)、遅延リセットカウンタをデクリメントし(カウンタの値を1ずつ減らし)(S74)、図13のS12に移行する。一方、S52:Yesの場合(遅延リセットカウンタが0になった場合)は、低域限定で(S75)、S57の継続音判定を行い、その判定結果に応じて、位相リセット処理(S58)または位相連続処理を行う(S70)。
以上説明したとおり、本実施形態によれば、位相演算部22は、アタック部が検出された場合でも、周波数ピークが時間的に継続している継続成分に対しては、位相リセット処理の対象外とすることで、高音質化を図ることができる。つまり、周波数ピークが時間的に継続している継続成分を継続音として検出し、これを位相連続処理することで、アタック部の前後で継続して鳴っている音を途切れにくくすることができる。また、継続音のサイドローブ成分についても、位相リセット処理の対象外とすることで、アタック部の前後で継続して鳴っている音をより高音質にできる。
また、位相演算部22は、アタック部が検出されなかった場合でも、周波数ピークが時間的に継続していない非継続成分に対して位相のリセット処理を行う場合、当該周波数ピークの近傍に発生するサイドローブ成分に対しては、位相連続処理の対象外とすることで、更なる高音質化を図ることができる。つまり、前処理において位相リセットすると判定された周波数成分について、その成分が周波数ピークであった場合、そのサイドローブ成分も合わせて位相リセット処理を行うことで、アタック部をより鮮明に再現することができる。
また、位相演算部22は、L,Rの正規化振幅差分値の合算結果を用いて、位相切替判別処理を行うため、L,Rの音に音量差があった場合でも、L,Rの位相リセットのタイミングを同期させ、音像の乱れを防止することができる。さらに、L,Rそれぞれの正規化振幅差分値を用いるため、L,Rのバランスを考慮して、より適切に音像の乱れを防止することができる。
また、位相演算部22は、正規化振幅差分値の合計値が高閾値以上である場合であってアタック部が検出された場合は、低周波成分のみ、所定時間だけタイミングを遅らせて位相リセット処理を行うため、低音域のアタック感を復活させることができる。これは、低音域の音は周期が長いため、前処理で検出した位相リセットのタイミングでは位相が安定せず、位相リセット処理の効果が小さいが、タイミングを遅らせることで、位相リセット処理の効果を高めることができるためである。これにより、低音打楽器における打撃音後に継続する低周波数の音、例えばバスドラムの胴鳴りなどの高音質化を図ることができる。
なお、上記の各実施形態において、オーディオデータ処理部3は、再生部2による再生に伴ってバッファメモリ4に書き込まれるオーディオデータを解析しながらピッチシフト(タイムスケーリング)を行うものとしたが、事前に解析したデータを読み出してこれらを行っても良い。つまり、楽曲を再生しながらリアルタイムにピッチシフト(タイムスケーリング)を行う構成としても良いし、事前に解析したデータを利用して、楽曲全体または楽曲の一部をピッチシフト(タイムスケーリング)する構成としても良い。
また、上記に示したオーディオデータ処理部3の各構成要素をプログラムとして提供することが可能である。また、そのプログラムを各種記録媒体(CD−ROM、フラッシュメモリ等)に格納して提供することも可能である。すなわち、コンピューターをオーディオデータ処理部3の各構成要素として機能させるためのプログラム、およびそれを記録した記録媒体も、本発明の権利範囲に含まれるものである。
また、上記の各実施形態では、オーディオデータ処理部3を再生装置1に適用した場合を例示したが、ミキサー装置などのDJ機器、各種電子楽器およびコンピューター(PCアプリケーション)などに適用しても良い。また、カラオケ装置、ボイスチェンジャーおよび音声合成装置など、音高を変更する機能を有する音声処理装置への適用も有用である。例えば、本発明を適用することで、異なる楽曲を連続して再生するDJ機器において、連続再生する楽曲のキーが不協和な関係にある場合に、ピッチシフトにより親和性の高いキーに変換するハーモニックスミックス処理を高音質化できる。また、カラオケ装置において、ユーザの声の高さに合わせてキー変更する機能があるが、音質を落とさずにキー変更可能なように、音源を打ち込み音であるMIDIとしている場合が多いが、本発明を適用することによって、生音を音源に用いても高品質なキー変換が可能となる。
さらに、キーを変えずに音声の時間軸長さだけを変更する場合など、タイムスケーリングのみの適用も可能である。例えば、本発明を適用することで、異なる楽曲を連続して再生するDJ機器において、連続再生する楽曲のテンポのみを変更し、キー(音高)を変更しないようにするタイムスケーリングを高音質化できる。また、音声を録音・再生できる装置において、高速再生しても、キーを変えない早聴き機能を高音質化できる。その他、本発明の要旨を逸脱しない範囲で、適宜変更が可能である。
1…再生装置 2…再生部 3…オーディオデータ処理部 4…バッファメモリ 4a…入力バッファ 4b…出力バッファ 5…オーディオデータ出力部 11…タイムスケーリング部 12…SRC部 21…FFT部 22…位相演算部 23…逆FFT部 24…時間伸縮演算部 31…アタック検出部 31a…全周波数帯域検出部 31b…周波数帯域別検出部(A) 31c…周波数帯域別検出部(B) 32…位相リセット部 33…位相連続処理部
Claims (20)
- オーディオデータ処理装置が、
デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換する周波数変換ステップと、
前記振幅および/または前記位相の時間変化率の演算結果を用いて異なる位相切替判別を行う複数の位相切替判別処理の処理結果に応じ、前記周波数成分ごとの位相が、前記周波数変換ステップの演算結果そのものとして位相のリセット処理を行う第1の位相演算処理と、前記周波数成分ごとの位相が、前記周波数変換ステップの前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第2の位相演算処理と、の少なくともいずれかを行う位相演算ステップと、
前記位相演算ステップによる位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する周波数逆変換ステップと、
前記周波数逆変換ステップによる周波数逆変換処理時に、時間伸縮率に比例して周波数逆変換後のデジタルオーディオデータのデータ数を増減させる時間伸縮演算ステップと、を実行することを特徴とするタイムスケーリング方法。 - 前記複数の位相切替判別処理は、異なる周波数帯域ごとにアタック部の有無を判別するものであり、
前記位相演算ステップでは、前記複数の位相切替判別処理の判別により前記アタック部「有」と判別された場合、前記第1の位相演算処理を行い、前記アタック部「無」と判別された場合、前記第2の位相演算処理を行うことを特徴とする請求項1に記載のタイムスケーリング方法。 - 前記位相演算ステップでは、前記振幅の時間変化率を振幅で除算した正規化振幅差分値を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項1に記載のタイムスケーリング方法。
- 前記位相演算ステップでは、前記位相切替判別処理として、前記正規化振幅差分値の合計値が所定の閾値以上であるか否かを判別し、所定の閾値以上である場合、アタック部の有無を判別し、当該アタック部が検出された場合は、全周波数帯域に対して前記第1の位相演算処理を行うことを特徴とする請求項3に記載のタイムスケーリング方法。
- 前記位相演算ステップでは、前記位相切替判別処理として、前記正規化振幅差分値の合計値が所定の閾値以上であるか否かを判別し、所定の閾値未満である場合、さらに前記位相切替判別処理として、周波数成分ごとにアタック部の有無を判別し、当該アタック部が検出された場合は、周波数成分ごとに前記第1の位相演算処理を行い、前記アタック部が検出されなかった場合は、前記第2の位相演算処理を行うことを特徴とする請求項4に記載のタイムスケーリング方法。
- 前記位相演算ステップでは、前記位相の時間変化率である位相断層度を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項1に記載のタイムスケーリング方法。
- 前記位相演算ステップでは、前記振幅の時間変化率を振幅で除算した正規化振幅差分値と、前記位相の時間変化率である位相断層度と、を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項1に記載のタイムスケーリング方法。
- 前記位相演算ステップでは、前記アタック部が検出された場合でも、周波数ピークが時間的に継続している継続成分に対しては、前記第2の位相演算処理を行うことを特徴とする請求項5に記載のタイムスケーリング方法。
- 前記位相演算ステップでは、前記周波数ピークの継続成分に対して位相のリセット処理を行わない場合、当該継続成分となる周波数ピークの近傍に発生するサイドローブ成分に対しても、前記第2の位相演算処理を行うことを特徴とする請求項8に記載のタイムスケーリング方法。
- 前記位相演算ステップでは、前記アタック部が検出されなかった場合でも、周波数ピークが時間的に継続していない非継続成分に対して位相のリセット処理を行う場合、当該周波数ピークの近傍に発生するサイドローブ成分に対して、前記第1の位相演算処理を行うことを特徴とする請求項5に記載のタイムスケーリング方法。
- 前記位相演算ステップでは、ステレオの左右の音に対する前記正規化振幅差分値の合算結果を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項3に記載のタイムスケーリング方法。
- 前記位相演算ステップでは、ステレオの左右の音に対する前記正規化振幅差分値の合算結果と、ステレオの左右の音それぞれの前記正規化振幅差分値と、を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項11に記載のタイムスケーリング方法。
- 前記位相演算ステップでは、前記正規化振幅差分値の合計値が所定の閾値以上である場合であって前記アタック部が検出された場合は、低周波成分のみ、所定時間だけタイミングを遅らせて、前記第1の位相演算処理を行うことを特徴とする請求項4に記載のタイムスケーリング方法。
- 前記オーディオデータ処理装置が、
請求項1ないし13のいずれか1項に記載のタイムスケーリング方法における各ステップと、
デジタルオーディオデータのサンプリング周波数を変更することで、時間伸縮および音高変更を行うサンプリングレート変換演算ステップと、を実行し、
前記タイムスケーリング方法の各ステップによる時間長変化と、前記サンプリングレート変換演算ステップによる時間長変化とが相殺され、音高のみが変更されることを特徴とするピッチシフト方法。 - デジタルオーディオデータを、周波数成分ごとの振幅と位相に変換する周波数変換手段と、
前記振幅および/または前記位相の時間変化率の演算結果を用いて異なる位相切替判別を行う複数の位相切替判別処理の処理結果に応じ、前記周波数成分ごとの位相が、前記周波数変換手段の演算結果そのものとして位相のリセット処理を行う第1の位相演算処理と、前記周波数成分ごとの位相が、前記周波数変換手段の前回の演算結果から時間伸縮を考慮して連続変化したものとして位相の連続化処理を行う第2の位相演算処理と、の少なくともいずれかを行う位相演算手段と、
前記位相演算手段による位相演算処理後の各周波数成分を、デジタルオーディオデータに変換する周波数逆変換手段と、
前記周波数逆変換手段による周波数逆変換処理時に、時間伸縮率に比例して周波数逆変換後のデジタルオーディオデータのデータ数を増減させる時間伸縮演算手段と、を備えたことを特徴とするオーディオデータ処理装置。 - 前記複数の位相切替判別処理は、異なる周波数帯域ごとにアタック部の有無を判別するものであり、
前記位相演算手段は、前記複数の位相切替判別処理の判別により前記アタック部「有」と判別された場合、前記第1の位相演算処理を行い、前記アタック部「無」と判別された場合、前記第2の位相演算処理を行うことを特徴とする請求項15に記載のオーディオデータ処理装置。 - 前記位相演算手段は、前記振幅の時間変化率を振幅で除算した正規化振幅差分値を用いて、前記複数の位相切替判別処理を行うことを特徴とする請求項15に記載のオーディオデータ処理装置。
- デジタルオーディオデータのサンプリング周波数を変更することで、時間伸縮および音高変更を行うサンプリングレート変換演算手段をさらに備え、
前記サンプリングレート変換演算手段および/または前記時間伸縮演算手段は、それぞれの演算処理にて発生した時間長変化を相殺することを特徴とする請求項15に記載のオーディオデータ処理装置。 - コンピューターに、請求項1ないし13のいずれか1項に記載のタイムスケーリング方法における各ステップを実行させるためのプログラム。
- コンピューターに、請求項14に記載のピッチシフト方法における各ステップを実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010135068A JP2012002858A (ja) | 2010-06-14 | 2010-06-14 | タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010135068A JP2012002858A (ja) | 2010-06-14 | 2010-06-14 | タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012002858A true JP2012002858A (ja) | 2012-01-05 |
Family
ID=45534957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010135068A Pending JP2012002858A (ja) | 2010-06-14 | 2010-06-14 | タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012002858A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013136846A1 (ja) * | 2012-03-12 | 2013-09-19 | クラリオン株式会社 | 音響信号処理装置および音響信号処理方法 |
JP2014041241A (ja) * | 2012-08-22 | 2014-03-06 | Pioneer Electronic Corp | タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム |
JP2014041240A (ja) * | 2012-08-22 | 2014-03-06 | Pioneer Electronic Corp | タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム |
JP2015087436A (ja) * | 2013-10-29 | 2015-05-07 | パイオニア株式会社 | 音声処理装置、音声処理装置の制御方法およびプログラム |
JP2019040000A (ja) * | 2017-08-24 | 2019-03-14 | 国立大学法人千葉大学 | 聴診トレーニングシステム |
CN111354365A (zh) * | 2020-03-10 | 2020-06-30 | 苏宁云计算有限公司 | 一种纯语音数据采样率识别方法、装置、*** |
-
2010
- 2010-06-14 JP JP2010135068A patent/JP2012002858A/ja active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013136846A1 (ja) * | 2012-03-12 | 2013-09-19 | クラリオン株式会社 | 音響信号処理装置および音響信号処理方法 |
JP2013190470A (ja) * | 2012-03-12 | 2013-09-26 | Clarion Co Ltd | 音響信号処理装置および音響信号処理方法 |
CN104185870A (zh) * | 2012-03-12 | 2014-12-03 | 歌乐株式会社 | 声学信号处理装置和声学信号处理方法 |
US9280986B2 (en) | 2012-03-12 | 2016-03-08 | Clarion Co., Ltd. | Acoustic signal processing device and acoustic signal processing method |
JP2014041241A (ja) * | 2012-08-22 | 2014-03-06 | Pioneer Electronic Corp | タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム |
JP2014041240A (ja) * | 2012-08-22 | 2014-03-06 | Pioneer Electronic Corp | タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム |
JP2015087436A (ja) * | 2013-10-29 | 2015-05-07 | パイオニア株式会社 | 音声処理装置、音声処理装置の制御方法およびプログラム |
JP2019040000A (ja) * | 2017-08-24 | 2019-03-14 | 国立大学法人千葉大学 | 聴診トレーニングシステム |
JP6994753B2 (ja) | 2017-08-24 | 2022-01-14 | 国立大学法人千葉大学 | 聴診トレーニングシステム |
CN111354365A (zh) * | 2020-03-10 | 2020-06-30 | 苏宁云计算有限公司 | 一种纯语音数据采样率识别方法、装置、*** |
CN111354365B (zh) * | 2020-03-10 | 2023-10-31 | 苏宁云计算有限公司 | 一种纯语音数据采样率识别方法、装置、*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4823804B2 (ja) | コード名検出装置及びコード名検出用プログラム | |
JP4672613B2 (ja) | テンポ検出装置及びテンポ検出用コンピュータプログラム | |
JP4767691B2 (ja) | テンポ検出装置、コード名検出装置及びプログラム | |
US8153882B2 (en) | Time compression/expansion of selected audio segments in an audio file | |
US8392006B2 (en) | Detecting if an audio stream is monophonic or polyphonic | |
JP4645241B2 (ja) | 音声処理装置およびプログラム | |
US20120046771A1 (en) | Music audio signal generating system | |
US20110011243A1 (en) | Collectively adjusting tracks using a digital audio workstation | |
JP2012002858A (ja) | タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム | |
WO2007010637A1 (ja) | テンポ検出装置、コード名検出装置及びプログラム | |
JP2008275975A (ja) | リズム検出装置及びリズム検出用コンピュータ・プログラム | |
US20110015767A1 (en) | Doubling or replacing a recorded sound using a digital audio workstation | |
JP5229998B2 (ja) | コード名検出装置及びコード名検出用プログラム | |
JP6118522B2 (ja) | タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム | |
WO2019043797A1 (ja) | 楽曲解析装置および楽曲解析プログラム | |
JP6281211B2 (ja) | 音響信号のアライメント装置、アライメント方法及びコンピュータプログラム | |
JP4932614B2 (ja) | コード名検出装置及びコード名検出用プログラム | |
JP5005445B2 (ja) | コード名検出装置及びコード名検出用プログラム | |
WO2010146624A1 (ja) | 音声信号処理装置のタイムスケーリング方法、音声信号処理装置のピッチシフト方法、音声信号処理装置およびプログラム | |
JP2014041240A (ja) | タイムスケーリング方法、ピッチシフト方法、オーディオデータ処理装置およびプログラム | |
WO2024034118A1 (ja) | 音声信号処理装置、音声信号処理方法およびプログラム | |
WO2024034115A1 (ja) | 音声信号処理装置、音声信号処理方法およびプログラム | |
JP5807419B2 (ja) | 信号処理装置 | |
JP5151603B2 (ja) | 電子楽器 | |
JP2011090189A (ja) | 音響信号の符号化方法および装置 |