【手続補正書】
【提出日】平成18年9月1日(2006.9.1)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
ここで、ＤＡＣに入力するデジタル音声データのビット数は、例えば、１６ビットであり、ＤＡＣの能力に応じた有限の値を取る。しかしながら、波形データを制御する音量情報が大きな値に設定されていると、デジタル音声データのビット数がＤＡＣのダイナミックレンジを越えてしまうことがある。また、複数同時発音を行う場合には、各音色またはピッチに対応するデジタル音声データのビット数が１６ビット以内に収まっていたとしても、それらを合成したデジタル音声データのビット数が１６ビットを越えてしまうこともあり得る。このような場合には、いわゆるオーバーフローが発生し、再生されたアナログ音声信号の波形がクリップされてしまい、歪みが発生する。このため、不自然な再生音となってしまう。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
そこで、ＤＡＣの前段に利得制御回路を設け、デジタル音声データのビット数がＤＡＣのダイナミックレンジ以内に収まるように調整することが考えられる。デジタルデータの利得制御方式としては、各サンプルデータ毎に、ＲＭＳ値（平方自乗平均実効値）を計算し、この計算結果に基づいて利得を調整するものが知られている。この場合、あるサンプルデータＤN-1のＲＭＳ値をＲＭＳN-1で表すものとすれば、ＲＭＳN-1は以下に示す式で与えられる。
ＲＭＳN-1＝｛（Ｄ02＋Ｄ12＋…＋ＤN-12）／Ｎ｝1/2
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
１−２：音源ボードの構成
次に、図１に示す音源ボード１００は、図示せぬマザーボード上または拡張スロット内に装着されるようになっており、そこには、調整済合成音声データSDbを生成する音源ＬＳＩ１０と調整済合成音声データSDbをアナログ信号に変換して再生音声信号Ｓを出力するＤＡＣ１６が設けられている。ここで、調整済合成音声データSDbを再生する処理は、フレームと呼ばれる一定のサンプリング数単位で一括して行われるようになっており、この例では、調整済合成音声データSDbを出力サンプリング周波数（４８ＫＨｚ）で２５６サンプルだけ出力する期間（５．３ｍｓ）を１フレームとしている。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
最大値検出部１４１は、累算処理によって生成された合成音声データSDaを出力バッファ１５から順に読み出し、比較部1411と書込部1413に供給する。比較部1411は、レジスタ1412に格納されているサンプルデータと読み出されたサンプルデータとを比較し、比較結果を書込部1413に渡す。ただし、レジスタ1412は、フレームの開始で、その記憶内容がリセットされるようになっている。書込部1413は、出力バッファ１５からのサンプルデータの値がレジスタ1412に格納されているサンプルデータの値よりも大きい場合に、レジスタ1412に出力バッファ１５からのサンプルデータを書き込む。これらの処理を２５６サンプル分繰り返すことによって、１フレーム期間の合成音声データSDaのうち最大値Dmaxが検出される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
１−３−４：出力バッファ
図３は出力バッファの構成を示す図である。同図に示すように出力バッファ１５は、第１バッファ１５１と第２バッファ１５２から構成されている。第１および第２バッファ１５１，１５２は、各々２５６ワード×（１６ビット＋αビット）の記憶領域を有している。ここで、各ワード毎の記憶領域として１６ビット＋αビットが確保されているのは、以下の理由による。上述したようにデジタル音声データ生成処理によって生成される合成音声データSDaは１６ビット精度であり、また、利得制御処理によって生成される調整済合成音声データSDbは１６ビット精度となるため、第１および第２バッファ１５１，１５２の記憶領域としては、各ワード毎に１６ビットの記憶領域を確保すれば足りるようにも考えられる。しかし、ＤＳＰ１４は出力バッファ１５を用いて、累算処理を行う。この累算処理では、同時発音数だけ累算を繰り返しその累算結果を出力バッファ１５に格納するから、同時発音数に応じた記憶領域を余分に確保するために、αビットの記憶領域が設けられているのである。換言すれば、αの値は同時発音数に応じたものとなる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
以上の構成において、累算処理によって生成される合成音声データSDaが、１６ビット＋αビットの精度で第１バッファ１５１に書き込まれたとすると、利得制御処理では第１バッファ１５１から合成音声データSDaを読み出して、１６ビット精度の調整済合成音声データSDbを第１バッファ１５１に書き込む。そして、次のフレームにおいて、第１バッファ１５１からＤＡＣ１６へ出力サンプリング周波数に従って調整済合成音声データSDbが転送され、第２バッファ１５２をデジタル音声データ生成処理、累算処理および利得制御処理に用いる。すなわち、フレーム単位で第１バッファ１５１と第２バッファ１５２との役割は切り換わる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
次に、音源ＬＳＩ１０は利得制御処理をスロットSTn+1で実行する。図５は利得制御処理動作の一例を説明するための波形図である。いま、第１および第２フレームで生成される合成音声データSDaは図５（ａ）に示すSDa1,SDa2であり、第１および第２フレームの調整済合成音声データSDbをSDb1,SDb2で表すものとする。この場合、第１フレームの合成音声データSDa1を構成する各サンプルデータの最大値DmaxがＸであり、１６ビットのフルレンジ（ＤＡＣ１６に対応）をＦで表すものとすれば、第１フレームにおける係数データＫは、Ｋ＝Ｆ／Ｘとなる。このため、第１フレームの調整済合成音声データSDb1は、SDb1＝SDa1・Ｆ／Ｘによって算出され、１６ビット以内に収まるように利得が調整されることになる（図５（ｂ）参照）。一方、第２フレームにあっては、合成音声データSDa2が１６ビット以内に収まっているので、係数データＫの値は第１フレームの値が継続して使用される。このため、調整済合成音声データSDb2は合成音声データSDa2と比較して少し小さくなる。すなわち、Ｆ＜Ｘとなる場合にのみＫの値を更新している。これにより、合成音声データSDaのレベルが大レベルから小レベルに変化した場合であっても、フレームの境界でデータが不連続になるといったことがなくなる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
このように、本実施形態にあっては、各フレーム内の合成音声データSDaの最大値Dmaxを検出し、これに基づいてＤＡＣ１６に供給するデータのレベルをそのダイナミックレンジ以内に調整するようにしたので、例えば、図５（ａ）に示す斜線部分の波形が、オーバーフローによって失われ、再生音が不自然になるといったことがない。また、係数データＫは、最大値Dmaxの検出と１フレームに１回の除算といった簡易な処理によって算出することができるので、音源ＬＳＩ１０に利得制御処理を取り込むことが可能となる。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】符号の説明
【補正方法】変更
【補正の内容】
【符号の説明】
SD…音声データ、SDa…合成音声データ、SDb…調整済合成音声データ、Dmax…最大値、１３…入力バッファ（第１記憶部）、１４…ＤＳＰ（利得制御装置、音声データ生成部、読出部）、141…最大値検出部（最大値検出手段）、142…係数生成部（利得制御手段、制御部、比較部）、143…乗算部（利得制御手段、制御部）、１５…出力バッファ（第２記憶部）、１５１…第１バッファ、１５２…第２バッファ、Ａ…コンピュータシステム。