<第1の実施形態>
以下、本発明の第1の実施形態を、図面を参照しながら説明する。図1は、本発明による音声処理装置として適用可能な情報処理装置100の一例の構成を示す。図1において、バス101に対してCPU110、RAM111およびROM112、ならびに、グラフィクスコントローラ113が接続される。バス101に対して、さらに、入力インターフェイス(I/F)120、ハードディスク122、ドライブ装置123およびオーディオインターフェイス(I/F)124が接続される。情報処理装置100の各部は、バス101を介してデータのやりとりを行うことができる。
CPU110は、ROM112に予め記憶されたプログラムに基づきシステムを起動させる。そして、CPU110は、後述するハードディスク122に予め記録されるプログラムデータを読み込んでRAM111に展開し、RAM111上に展開されたプログラムデータに基づき情報処理装置100の各部を制御する。
グラフィクスコントローラ113は、表示装置114が接続され、CPU110から出力された表示制御信号を表示装置114が表示可能な信号に変換して、表示装置114に出力する。表示装置114は、例えばLCD(Liquid Crystal Display)を表示素子として用いる。
入力インターフェイス120は、ユーザ操作を受け付けるための入力デバイス、例えばキーボード121Aと、ポインティングデバイス121Bとが接続される。ポインティングデバイス121Bは、マウスやタッチパッドを適用できる。キーボード121Aやポインティングデバイス121Bから出力された信号は、入力インターフェイス120を介してCPU110に渡される。
ハードディスク122は、記録媒体そのものであるハードディスク本体と、ハードディスクを駆動するためのドライブ装置とからなるハードディスクドライブ(HDD)として用いられる。ハードディスク122には、上述した、CPU110を動作させるためのプログラムが記録されると共に、この情報処理装置100で生成されたり、この情報処理装置100に入力される様々なデータを格納することができる。
ドライブ装置123は、記録可能なタイプのDVDやCDといった記録媒体が装填可能とされ、装填された記録媒体に対するデータの読み書きを行う。勿論、ドライブ装置123に対して、再生専用のタイプのDVDやCD−ROMを装填してもよい。これに限らず、ドライブ装置123は、書き換え可能な不揮発性メモリを装着可能とし、この不揮発性メモリに対するデータの読み書きを行うようにしてもよい。さらに、ドライブ装置123は、フレキシブルディスクに対応したものでもよい。
通信I/F124は、所定のプロトコルを用いて外部の機器やネットワークに接続する。例えば、通信I/F124は、USBやIEEE1394といったデータ転送プロトコルに対応し、外部機器から転送されたデータを受信すると共に、外部機器に対してデータの転送を行う。これに限らず、通信I/F124は、TCP/IPに対応し、インターネットやLAN(Local Area Network)との接続を制御するようなものでもよい。この通信I/F124を介して、この情報処理装置100における音声データの入出力を行うことができる。
次に、本発明に適用可能な音声データのフォーマットについて、概略的に説明する。以下では、以下では、音声データがPCM方式で符号化され、WAVファイル形式でファイルに格納されるものとする。なお、PCMは、Pulse Code Modulationの略称である。
図2は、WAVファイルの一例の構造を示す。領域401は、4バイトのデータ長を有し、このファイルがRIFF形式であることを識別する文字列「RIFF」が格納される。なお、RIFFは、Resource Interchange File Formatの略称である。領域402は、4バイトのデータ長を有し、このファイルの領域402以降のファイルサイズがバイト単位で格納される。すなわち、領域402に格納されるファイルサイズは、このWAVファイル全体のファイルサイズよりも8バイト分少ないことになる。
領域403は、4バイトのデータ長を有し、RIFFの種類を表す識別子が格納される。この例では、文字列「WAVE」が格納され、このファイルがWAVファイル形式で音声データを格納するファイルであることが示される。領域404は、4バイトのデータ長を有し、フォーマットを定義するためのfmtチャンクが格納される領域を示す文字列「fmt 」(空白文字を含めた4文字)が格納される。領域405は、4バイトのデータ長を有し、fmtチャンクによる音声データの特性を示す情報のデータサイズが格納される。
領域406は、fmtチャンクの本体、すなわち、このWAVファイルに格納される音声データの特性を示す情報が格納される。例えば、領域406には、サンプリング周波数や、サンプル当たりの量子化ビット数などの情報が格納される。なお、サンプリング周波数は、Hz(ヘルツ)単位で記述されて領域406に格納される。
領域407は、4バイトのデータ長を有し、PCM方式の音声データの波形データが格納される領域を示す文字列「DATA」が格納される。領域408は、次の領域409に格納される波形データのデータサイズが格納される。領域409には、PCM方式で符号化された音声の波形データが格納される。領域409に格納される波形データが、このWAVファイルにおける音声データの本体となる。
なお、ここでは音声データがPCM方式で変調および符号化され、WAVファイルに格納されるものとして説明したが、これはこの例に限定されない。すなわち、本発明は、サンプル当たりの量子化ビット数およびサンプリング周波数の値を取得できれば、AIFF形式など他の形式の音声データにも適用可能である。なお、AIFFは、Audio Interchange File Formatの略称である。
図3は、ユーザが入力音声データのサンプリング周波数変換を情報処理装置100に指示するための一例のユーザインターフェイスを示す。このユーザインターフェイスは、CPU110によりプログラムに従い生成され、例えば表示装置114に対して表示される。
画面201に対して、入力音声データファイルのパスを表示するパス表示部202と、入力音声データファイルのパスを参照するための参照ボタン203と、入力音声データのサンプリング周波数を表示する表示部204とが表示される。さらに、画面201に対して、出力音声データのパスを表示するパス表示部205と、出力音声データファイルのパスを参照するための参照ボタン206と、出力音声データのサンプリング周波数を指定するための入力部207とが表示される。また、変換ボタン208は、画面201で設定された内容に従い、入力音声データのサンプリング周波数の変換処理を開始させるためのものである。
ユーザにより、画面201の表示に従いキーボード121Aやポインティングデバイス121Bなどの入力デバイスが操作され、入力音声データのサンプリング周波数を変換するための情報が情報処理装置100に対して入力される。
一例として、ユーザ操作により参照ボタン203が操作されると、CPU110は、例えばハードディスク122に格納される音声データファイルから変換を行いたいファイルを指定するためのダイアログ(図示しない)を表示させる。このダイアログに従い、ユーザ操作によりサンプリング周波数を変換する入力音声データファイルが指定されると、CPU110は、指定された入力音声データファイルのパスをパス表示部202に表示させる。また、CPU110は、指定された入力音声データファイルの領域406から当該ファイルに格納される音声データのサンプリング周波数を示す情報を取得し、表示部204に対して例えばヘルツ単位で表示させる。
ユーザ操作により参照ボタン206が操作されると、CPU110は、サンプリング周波数を変換された出力音声データファイルを保存するためのフォルダを指定するダイアログ(図示しない)を表示させる。このダイアログに従い、ユーザ操作によりフォルダが指定され、さらにファイル名が指定されると、CPU110は、指定された出力音声データファイルへのパスをパス表示部205に表示させる。さらに、ユーザ操作により変換後のサンプリング周波数の値が入力部207に対して入力されると、入力された値がRAM111やCPU110のレジスタなどに保持される。なお、ユーザ操作により出力音声データファイルのパスをパス表示部205に対して直接的に入力することも可能である。また、変換後のサンプリング周波数の値は、予め決められた幾つかの値から選択するようにもできる。
上述のようにして、画面201に従い、入力音声データに対するサンプリング周波数変換に必要な情報が指定された後に、ユーザ操作により変換ボタン208が操作されると、CPU110は、本第1の実施形態によるサンプリング周波数の変換処理を開始する。すなわち、パス表示部202に表示された入力音声データファイルに格納された入力音声データに対して、当該入力音声データのサンプリング周波数を入力207に入力されたサンプリング周波数へと変換する処理が開始される。この処理によりサンプリング周波数が変換された音声データは、ファイルに格納され、出力音声データファイルとして、パス表示部205に表示されるパスに保存される。
図4は、本第1の実施形態によるサンプリング周波数変換の一例の処理を示すフローチャートである。ここでは、サンプリング周波数が11.025kHz、量子化ビット数が16ビットの入力音声データについて、サンプリング周波数を異なる周波数、例えば12kHzに変換する例を用いて説明する。入力音声データのサンプリング周波数である11.025kHzと、出力音声データのサンプリング周波数である12kHzは、簡単な整数比の関係に無い。
最初のステップS301で、CPU110は、サンプリング周波数の変換対象である入力音声データの量子化ビット数を取得する。具体的には、CPU110は、パス表示部202に表示される音声データファイルの領域406にアクセスして、当該音声データファイルに格納される音声データの量子化ビット数の情報を取得する。この例では、入力音声データの量子化ビット数として16ビットが取得される。
次のステップS302で、CPU110は、入力部207に入力された、変換後のサンプリング周波数fo(第2のサンプリング周波数)を取得する。この例では、入力部207に入力された12000Hz(12kHz)が出力音声データのサンプリング周波数foとして取得される。このサンプリング周波数foが、出力音声データのサンプリング周波数となる。
入力音声データの量子化ビット数と、出力音声データのサンプリング周波数foとが取得されると、処理はステップS303に移行される。ステップS303で、CPU110は、取得された入力音声データの量子化ビット数と、出力音声データのサンプリング周波数foとに基づき、中間音声データのサンプリング周波数fp(第3のサンプリング周波数)を求める。
すなわち、入力音声データのサンプリング周波数fi(第1のサンプリング周波数)を、出力音声データのサンプリング周波数foの整数倍のサンプリング周波数fpに変換(第1の変換)して中間音声データを生成する。そして、この中間音声データのサンプルを所定に間引いて(第2の変換)、サンプリング周波数foの出力音声データを生成する。
本発明では、中間音声データのサンプリング周波数fpを、入力音声データの量子化ビット数が低いほど低くし、入力音声データの量子化ビット数が高いほど高くする。このようにすることで、入力音声データの量子化ビット数が低い場合には、後述する低域通過フィルタ処理のCPUに対する負荷を、入力音声データの量子化ビット数が高い場合よりも低減することが可能となる。また、入力音声データの量子化ビット数が高い場合には、出力音声データにおいて高品質を達成することが可能となる。
本第1の実施形態では、この入力音声データの量子化ビット数と中間音声データのサンプリング周波数fpとの関係を達成するために、中間音声データのサンプリング周波数fpを、入力音声データの量子化ビット数の関数として求める。この関数の一例を下記の式(1)に示す。なお、式(1)において、値xは、入力音声データの量子化ビット数を表す。値yは、中間音声データのサンプリング周波数fpの、出力音声データのサンプリング周波数foに対する倍率を表す。また、値cは、所定の定数である。
y=cx …(1)
なお、定数cは、例えば、ソフトウェアあるいは装置が対応可能な最高量子化ビット数において所定以上のSN比を達成可能な最も低い中間音声データのサンプリング周波数fpを実験的に求め、このサンプリング周波数fpに基づき決定する。この定数cの算出方法の具体的な例については、後述する。
定数cの値をc=0.375とした場合、入力音声データの量子化ビット数が16ビットであるので、式(1)によりy=6となり、中間音声データのサンプリング周波数fp=6×12kHz=72kHzとなる。
ステップS303で中間音声データのサンプリング周波数fpが算出されると、処理は次のステップS304に移行され、CPU110により中間音声データの生成が行われる。より具体的には、ステップS304では、ステップS303で算出された中間音声データのサンプリング周波数fp(この例では72kHz)になるように、補間処理によりサンプルを生成して中間音声データを生成する。
本第1の実施形態では、この補間処理を、ラグランジュ補間の二次多項式補間を用いて行う。例えば、3点(x
1,y
1)、(x
2,y
2)および(x
3,y
3)から点P(x,y)のy座標を補間により求める場合、下記の式(2)を用いる。
次のステップS305で、CPU110は、低域通過フィルタのフィルタ係数を生成する。すなわち、ステップS305では、上述したステップS304の補間により発生した余分な高周波成分を除去するために用いる低域通過フィルタのフィルタ係数を生成する。
図5のフローチャートを用いて、ステップS305におけるフィルタ係数の一例の算出処理について説明する。なお、図5のフローチャートの各処理は、CPU110によりプログラムに従い実行される。
最初のステップS501で、CPU110は、低域通過フィルタのカットオフ周波数fcを求める。入力音声データおよび出力音声データのサンプリング周波数のうち、周波数が低い方のサンプリング周波数の1/2の値をカットオフ周波数fcとする。この例では、入力音声データのサンプリング周波数fi(11.025kHz)の方が出力音声データのサンプリング周波数fo(12kHz)よりも低い。したがって、入力音声データのサンプリング周波数fiである11.025kHzの1/2の5.5125kHzをカットオフ周波数fcとする。
そして、次のステップS502で、カットオフ周波数fcを、低域通過フィルタに入力する中間音声データのサンプリング周波数fpで規格化する。この例では、ステップS502において、カットオフ周波数fcを中間音声データのサンプリング周波数fpの72kHzで除して、fc=0.0764625に規格化する。
ステップS503で、フィルタの長さNを求める。理想的な低域通過フィルタは係数が無限に続くので、係数を有限にするために、窓関数を使用してフィルタの長さを打ち切ることが必要となる。窓関数によって有限の係数になったときのフィルタの係数の個数をフィルタの長さNと呼ぶことにする。本第1の実施形態では、窓関数としてハニング窓を使用する。ハニング窓を使用する場合、窓の長さN
wは、以下の式(3)を用いて算出する。なお、算出結果の小数部分は、切り上げる。また、計算の結果、窓の長さN
wの値が偶数になった場合は、1を加えて奇数にする。
次のステップS504では、下記の式(4)を用いてフィルタ係数h(n)を算出する。
なお、式(4)において関数w(x)は窓関数で、ハニング窓を使用する場合、下記の式(5)で表される。但し、0≦x≦1である。
説明は図4のフローチャートに戻り、ステップS305でフィルタ係数h(n)が算出されると、処理はステップS306に移行される。ステップS306で、CPU110は、ステップS305で生成されたフィルタ係数h(n)を適用した低域通過フィルタにより、中間音声データに対してフィルタ処理を行う。ここでは、ステップS305で作成したフィルタ係数を下記の式(6)の通り使用して、カットオフ周波数fcよりも大きな周波数成分が除去された中間音声データを求める。
ステップS306で中間音声データに対するフィルタ処理が行われると、処理はステップS307に移行され、ステップS306で得られた中間音声データを1/Nに間引き、出力音声データを生成する。この出力音声データは、次のステップS308で、出力パスで指定されたファイルに書き込まれる。
次に、サンプリング周波数fi=11.025kHz、量子化ビット数が16ビットの入力音声データを、サンプリング周波数fo=12kHz、量子化ビット数が16ビットの出力音声データに変換する処理について、より具体的な例を用いて説明する。
なお、以下に示す図6(a)〜図6(d)において、横軸は時間を示し、縦軸はサンプルのレベル(ビット値)を示す。また、図7(a)〜図7(d)において、横軸は周波数を示し、縦軸はエネルギを示す。
図6(a)は、サンプリング周波数fiが11.025kHzの入力音声データの例を示す。図6(a)の入力音声データは、図7(a)のスペクトル901に例示されるように、スペクトルが周波数fi=11.025kHzの周期で繰り返されるものとなる。図6(a)のサンプルあたりの間隔Tiは1/11.025kHz≒0.0907(ミリ秒)である。
図4のステップS304で、サンプリング周波数fpが出力音声データのサンプリング周波数fo(12kHz)のN倍である中間音声データを補間処理により生成する。補間処理により生成された中間音声データの例を図6(b)に、そのスペクトルの例を図7(b)に示す。スペクトル902は、補間処理によって生じた雑音である。補間を行う際の次数が高くなると補間の精度が高くなるため、雑音のスペクトル902は小さくなる。また、フィルタの長さNの値を大きくすると補間の精度が高くなるため、雑音のスペクトル902は小さくなる。図6(b)に例示される中間音声データのサンプル間隔Tpは、1/(To×N)=1/(12kHz×N)≒0.0833/N(ミリ秒)である。
図4のステップS306で、中間音声データに対して低域通過フィルタ処理が施され、補間処理によって発生した高周波成分を除去する。ここで用いる低域通過フィルタは、カットオフ周波数fcが入力音声データのサンプリング周波数fi=11.025kHzの1/2の5.50125kHzとなっている。高周波成分を除去されたデータの例を図6(c)に、そのスペクトルの例を図7(c)に示す。
図4のステップS307で、中間音声データのサンプルを1/Nに間引いて出力音声データを生成する。出力音声データの例を図6(d)に、そのスペクトルの例を図7(d)に示す。図6(d)に例示される出力音声データのサンプル間隔Toは1/12(kHz)=0.0833(ミリ秒)である。
<第1の実施形態による具体的な処理結果の例>
量子化ビット数が16ビットである入力音声データのサンプリング周波数fiを11.025kHzから12kHzに変換する処理における、処理時間の実測値の例を図8に示し、出力音声データのSN比の実測値の例を図9に示す。なお、図9の縦軸はステップS306のフィルタ処理における処理時間を示し、図10の縦軸は出力音声データのSN比を示す。また、図9および図10の横軸は、補間処理によって生成された中間音声データのサンプリング周波数fp(単位:kHz)を示す。
図9および図10の各図において、補間処理にラグランジュの一次多項式補間を用いた例(破線)とラグランジュの二次多項式補間を用いた例(実線)とをそれぞれ示す。この例では、入力音声データとして、量子化ビット数が16ビット、再生時間長が30秒のPCM形式の音声データを使用している。
フィルタの長さNの値を大きくすると、入力音声データのサンプル間が細かく補間され(図8(b)参照)、補間処理によって発生する周波数成分が高い周波数に分散されることが分かる(図9(b)参照)。高周波成分は、低域通過フィルタで除去すればよい。
一次多項式補間よりも二次多項式補間の方が、精度の高い補間ができる。そのため、二次多項式補間では、補間によって発生する高周波成分は一次多項式補間よりも少ない。図9では、二次多項式補間の方が一次多項式補間よりもSN比が高いことが示されている。
一方、図8に例示されるように、二次多項式補間の方が一次多項式補間よりも処理時間が長い。これは、一次多項式補間では2点のデータを用いて計算を行うのに対し、二次多項式補間では3点のデータを用いて計算を行うので、二次多項式補間の方が一次多項式補間よりも補間の際の計算量が多くなるためである。
また、図8に例示されるように、フィルタの長さNの値を大きくすると、処理時間が長くなっている。これは、フィルタの長さNの値を大きくすると、より細かく補間処理がなされて中間音声データのサンプル数が多くなり、フィルタ処理にかかる時間が長くなるためである。
第1の例として、量子化ビット数が大きい場合、例えば量子化ビット数が16ビット、サンプリング周波数が12kHzの出力音声データに対して要求されるSN比が例えば80dB以上である場合について考える。この場合、図9から、中間音声データのサンプリング周波数fpが72kHz以上でSN比が80dBを超えることが分かる。この条件から上述の式(1)における定数cを求めると、次のようになる。すなわち、出力音声データのサンプリング周波数が12kHz、入力音声データの量子化ビット数が16ビットであるこの例では、y=72kHz/12kHz=6となり、定数c=6/16(ビット)=0.375となる。
定数cは、予め求めてROM112に記憶させたり、本第1の実施形態によるサンプリング周波数をCPU110に実行させるためのプログラムデータに埋め込んでおく。
ここで、値yは、出力音声データのサンプリング周波数foに対する中間音声データのサンプリング周波数fpの倍率である。したがって、フィルタの長さN=y=6として中間音声データを間引きすると、出力音声データに指定されたサンプリング周波数foを得ることができ、そのとき、出力音声データに要求される80dB以上のSN比を達成することができる。また、量子化ビット数が16ビットの入力音声データのサンプリング周波数を11.025kHzから12kHzに変換する場合の、80dB以上のSN比が得られる最小の処理時間は、図10から求めることができる。
第2の例として、量子化ビット数が小さい場合について説明する。一例として、量子化ビット数が12ビット、サンプリング周波数fiが11.025kHzの入力音声データのサンプリング周波数を12kHzに変換する場合について考える。なお、中間音声データを生成する際の補間方法は、上述と同様にラグランジュの一次多項式補間と二次多項式補間とをそれぞれ用い、入力音声データとして、量子化ビット数が12ビット、再生時間長が30秒のPCM形式の音声データを使用している。
量子化ビット数が12ビットの入力音声データのサンプリング周波数fiを11.025kHzから12kHzに変換する処理における、出力音声データのSN比の実測値の例を図10に示す。なお、図10において、縦軸は出力音声データのSN比を示し、横軸は補間処理によって生成された中間音声データのサンプリング周波数fp(単位:kHz)を示す。また、図10において、破線がラグランジュの一次多項式補間の例、実線が二次多項式補間の例である。
図10から分かるように、中間音声データを生成する際の補間処理に二次多項式補間を用いた方が、一次多項式補間を用いた場合よりもSN比が高い。ここで、図10において、二次多項式補間を用いた場合に、中間音声データのサンプリング周波数fpが60kHz以上でSN比の増加が見込めなくなる。これは、サンプリング周波数fpが60kHz以上で、量子化ビット数が12ビットの場合のSN比の理論的な限界に近づくためである。
また、上述の式(1)によれば、入力音声データの量子化ビット数が小さいときは、中間音声データのサンプリング周波数も低くなるため、中間音声データを生成するための入力音声データに対する補間サンプル数が減ることになる。したがって、入力音声データの量子化ビット数が小さくなるほど、補間処理に要する時間が短縮される。
ここで、上述の式(1)によれば、入力音声データの量子化ビット数が12ビットの場合には、値y=4.5となり、中間音声データのサンプリング周波数fpが54kHzとなる。これは、図10から分かるように、量子化ビット数が12ビットの入力音声データのサンプリング周波数fiを11.025kHzから12kHzに変換した場合の最良のSN比ではない。しかしながら、量子化ビット数が小さい場合には、出力音声データに対して高品質が要求されていないと考えられるため、フィルタ係数の個数(フィルタの長さN=y)を減らして処理のCPUに対する負荷の軽減を図ることができる。例えば、低域通過フィルタにFIRフィルタを用い、CPUの処理をタップ毎に時分割で割り当てる場合、フィルタ係数の個数を減らすことでタップ数が減り、CPUに対する負荷が低減される。
なお、値yに小数点以下の端数が発生した場合は、小数点以下の切り上げや切り捨てを行うことが考えられる。
なお、上述では、中間音声データのサンプリング周波数fpを、入力音声データの量子化ビット数の一次関数に基づき求めるように説明したが、これはこの例に限定されない。すなわち、本第1の実施形態では、中間音声データのサンプリング周波数fpが、入力音声データの量子化ビット数が低いほど低くなり、当該量子化ビット数が高いほど高くなるような他の関数を用いることができる。一例として、中間音声データのサンプリング周波数fpと入力音声データの量子化ビット数とをパラメータとして、出力音声データのSN比を計測する。そして、計測結果に基づいた近似などで求めた、中間音声データのサンプリング周波数fpの量子化ビット数に対する関数を用いてもよい。
以上説明したように、本第1の実施形態によれば、入力音声データの量子化ビット数が大きいときには、中間音声データのサンプリング周波数を変換した後で高品質の出力音声データを得ることが可能である。また、入力音声データの量子化ビット数が低いときには、中間音声データのサンプリング周波数も低くなるため、中間音声データを生成するための入力音声データに対する補間サンプル数が減り、CPUに対する負荷を低減させることが可能である。
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。上述した第1の実施形態では、中間音声データのサンプリング周波数fpを、入力音声データの量子化ビット数の関数として求めた。本第2の実施形態では、中間音声データのサンプリング周波数fpを、入力音声データの量子化ビット数と、出力音声データのサンプリング周波数foに対する中間音声データのサンプリング周波数fpの倍率との関係を示すテーブルを参照して求める。
なお、本第2の実施形態に適用可能なハードウェア、出力音声データのサンプリング周波数を入力するための入力画面、音声データのデータ構造は、図1〜図3を用いて説明した第1の実施形態と同様のものを適用できるので、ここでの説明を省略する。
表1は、入力音声データの量子化ビット数と、出力音声データのサンプリング周波数に対する中間音声データのサンプリング周波数fpの倍率との関係を示すテーブルの一例を示す。この例では、テーブルにおいて、出力音声データのサンプリング周波数に対する中間音声データのサンプリング周波数fpの倍率(以下、適宜「倍率」と呼ぶ)を、入力音声データの量子化ビット数の範囲に対して関連付ける。
例えば、このテーブルにおいて、設定された量子化ビット数の範囲のうち最も大きな量子化ビット数の出力音声データが所定以上の品質(SN比)を得られる最小の倍率を算出し、当該量子化ビット数の範囲に対して関連付けることが考えられる。
表1の例では、量子化ビット数が1ビット〜8ビットの範囲の入力音声データに対して倍率「4」が関連付けられ、量子化ビット数が9ビット〜16ビットの範囲の入力音声データに対して倍率「6」が関連付けられている。また、量子化ビット数が17ビット〜24ビットの範囲の入力音声データに対して倍率「8」が関連付けられている。勿論、入力音声データの量子化ビット数の範囲や、当該範囲に対して関連付けられる倍率は、この例に限定されるものではない。
このテーブルは、予め作成し、ROM112に記憶させたり、CPU110が本第2の実施形態によるサンプリング周波数の変換処理を行うためのプログラムに埋め込んでおく。これに限らず、CPU110によってプログラムに従い表示される所定のユーザインターフェイスを用いて、ユーザ操作によりテーブルを直接的に設定することも可能である。
図11は、本第2の実施形態によるサンプリング周波数変換の一例の処理を示すフローチャートである。なお、図11のフローチャートにおいて、上述した図4のフローチャートと対応する処理には同一の符号を付し、詳細な説明を省略する。
図11に示されるように、ステップS301で入力音声データの量子化ビット数を取得し、ステップS302で出力音声データのサンプリング周波数foを取得したら、処理が本第2の実施形態の特徴であるステップS1201に移行される。ステップS1201では、ステップS301で取得された入力音声データの量子化ビット数に基づき表1に例示したテーブルが参照され、当該量子化ビット数に関連付けられた倍率が取得される。そして、取得した倍率を、ステップS302で取得した出力音声データのサンプリング周波数foに乗じて、中間音声データのサンプリング周波数fpを得る。
例えば、量子化ビット数が16ビット、サンプリング周波数fiが11.025kHzの入力音声データのサンプリング周波数を、12kHzに変換する場合ついて考える。この場合、入力音声データの量子化ビット数である16ビットに基づきテーブルを参照し、対応する倍率「6」を得る。そして、出力音声データのサンプリング周波数である12kHzに対してこの倍率「6」を乗じて、中間音声データのサンプリング周波数fp=72kHzを得る。
ステップS1201で中間音声データのサンプリング周波数fpが得られた後の処理は、上述した図4におけるステップS304移行の処理と何ら変わるところがないため、説明を省略する。
以上説明したように、本第2の実施形態によれば、入力音声データの量子化ビット数が大きいときには、中間音声データのサンプリング周波数を変換した後で高品質の出力音声データを得ることが可能である。また、入力音声データの量子化ビット数が低いときには、中間音声データのサンプリング周波数も低くなるため、中間音声データを生成するための入力音声データに対する補間サンプル数が減り、CPUに対する負荷を低減させることが可能である。
また、本第2の実施形態によれば、入力音声データの量子化ビット数と、中間音声データのサンプリング周波数fpの出力音声データのサンプリング周波数foに対する倍率との対応関係を、ユーザが設定することができる。したがって、中間音声データのサンプリング周波数fpをユーザが設定することができる。これは、出力音声データの品質を、ユーザが指定することができることを意味する。
<他の実施形態>
上述の各実施形態は、システム或は装置のコンピュータ(或いはCPU、MPUなど)によりソフトウェア的に実現することも可能である。従って、上述の実施形態をコンピュータで実現するために、該コンピュータに供給されるコンピュータプログラム自体も本発明を実現するものである。つまり、上述の実施形態の機能を実現するためのコンピュータプログラム自体も本発明の一つである。
なお、上述の各実施形態を実現するためのコンピュータプログラムは、コンピュータで読み取り可能であれば、どのような形態であってもよい。例えば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等で構成することができるが、これらに限るものではない。
上述の各実施形態を実現するためのコンピュータプログラムは、記憶媒体又は有線/無線通信によりコンピュータに供給される。プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記憶媒体、MO、CD、DVD等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
有線/無線通信を用いたコンピュータプログラムの供給方法としては、コンピュータネットワーク上のサーバを利用する方法がある。この場合、本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムファイル)をサーバに記憶しておく。プログラムファイルとしては、実行形式のものであっても、ソースコードであっても良い。
そして、このサーバにアクセスしたクライアントコンピュータに、プログラムファイルをダウンロードすることによって供給する。この場合、プログラムファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに分散して配置することも可能である。
つまり、上述の各実施形態を実現するためのプログラムファイルをクライアントコンピュータに提供するサーバ装置も本発明の一つである。
また、上述の各実施形態を実現するためのコンピュータプログラムを暗号化して格納した記憶媒体を配布し、所定の条件を満たしたユーザに、暗号化を解く鍵情報を供給し、ユーザの有するコンピュータへのインストールを許可してもよい。鍵情報は、例えばインターネットを介してホームページからダウンロードさせることによって供給することができる。
また、上述の各実施形態を実現するためのコンピュータプログラムは、すでにコンピュータ上で稼働するOSの機能を利用するものであってもよい。
さらに、上述の各実施形態を実現するためのコンピュータプログラムは、その一部をコンピュータに装着される拡張ボード等のファームウェアで構成してもよいし、拡張ボード等が備えるCPUで実行するようにしてもよい。