(57)【要約】【課題】  マイクから得られる音声波形データであっても、音声波形データの基音に基づいて、演奏波形データと位相ずれのないデータ合成を行うことにより、人間の声の特徴であるフォルマントを有する合成波形データを歪みのない状態で出力する。【解決手段】  ＣＰＵ１は、マイク７からの人間の音声に応じて、Ａ／Ｄ変換器８から入力される周期情報を含む音声波形データをＲＡＭ５に書き込み、鍵盤２の押鍵のピッチに対応する特定の周期のパルス波形を発生してＲＡＭ５に書き込み、音声波形データとパルス波形とを畳み込み演算して合成波形データを出力する。【選択図】  図１
2006146095.tif 000002
【特許請求の範囲】
【請求項１】
音声波形データの周期の始期を検出する周期検出手段と、
前記周期検出手段によって検出された周期の始期から、当該音声波形データを第１の記憶手段に記憶する第１の記憶制御手段と、
特定の周期のパルス情報を含む楽音波形データを第２の記憶手段に記憶する第２の記憶制御手段と、
前記第１の記憶手段に記憶された音声波形データと前記第２の記憶手段に記憶された楽音波形データとを畳み込み演算して、前記第２の記憶手段に記憶された特定の周期に同期した合成波形データを出力する畳込演算手段と、
を備えたデータ合成装置。
【請求項２】
窓関数のパラメータを記憶する第３の記憶手段と、前記畳込演算手段によって畳み込み演算される波形データに対して前記第３の記憶手段に記憶された窓関数のパラメータを演算する窓関数演算手段とをさらに備えたことを特徴とする請求項１に記載のデータ合成装置。
【請求項３】
前記窓関数演算手段は、音声波形データに対して窓関数のパラメータを演算し、前記第１の記憶制御手段は、前記窓関数演算手段によって演算された音声波形データを前記第１の記憶手段に記憶することを特徴とする請求項２に記載のデータ合成装置。
【請求項４】
前記窓関数演算手段は、前記周期検出手段によって検出された音声波形データの周期の始期から少なくとも１周期以上に亘って窓関数のパラメータを演算することを特徴とする請求項１に記載のデータ合成装置。
【請求項５】
前記周期検出手段は、音声波形データにおいて、当該音声波形データの正のピークホールドおよび当該音声波形データの負のピークホールドを生成し、当該正のピークホールドの値と当該音声波形データの振幅とが交差する第１のポイント、当該負のピークホールドの値と当該音声波形データの振幅とが交差する第２のポイント、および当該音声波形データが負から正に変化するゼロクロスポイントを順次検出して、当該音声波形データの周期の始期を検出することを特徴とする請求項４に記載のデータ合成装置。
【請求項６】
前記周期検出手段は、音声波形データにおいて、正のピークホールドが所定の減衰係数で減衰した値と当該音声波形データの振幅とが交差する第１のポイント、負のピークホールドが前記所定の減衰係数で減衰した値と当該音声波形データの振幅とが交差する第２のポイントを検出することを特徴とする請求項５に記載のデータ合成装置。
【請求項７】
前記周期検出手段は、音声波形データにおいて、正のピークホールドが音声波形データの正のピークから一定時間が経過した後から所定の減衰係数で減衰した値と、当該音声波形データの振幅とが交差する第１のポイント、負のピークホールドが音声波形データの負のピークから前記一定時間が経過した後から前記所定の減衰係数で減衰した値と、当該音声波形データの振幅とが交差する第２のポイントを検出することを特徴とする請求項５に記載のデータ合成装置。
【請求項８】
前記周期検出手段は、音声波形データが負から正に変化するゼロクロスポイントを周期の始期として検出することを特徴とする請求項５に記載のデータ合成装置。
【請求項９】
周期の始期であるか否かを示す識別情報を含む音声波形データを記憶している第４の記憶手段をさらに備え、前記第１の記憶制御手段は、当該第４の記憶手段から読み出した音声波形データに周期の始期であることを示す識別情報が含まれている場合には、当該識別情報を含んだ音声波形データから少なくとも１周期の音声波形データまでを前記第１の記憶手段に記憶することを特徴とする請求項１に記載のデータ合成装置。
【請求項１０】
前記窓関数演算手段は、前記第４の記憶手段から読み出した音声波形データに対して前記第３の記憶手段に記憶された窓関数のパラメータを演算し、前記第１の記憶制御手段は、前記窓関数演算手段によって演算された音声波形データを前記第１の記憶手段に記憶することを特徴とする請求項９に記載のデータ合成装置。
【請求項１１】
前記第４の記憶手段は、あらかじめ窓関数のパラメータが演算されている音声波形データを記憶していることを特徴とする請求項９に記載のデータ合成装置。
【請求項１２】
前記畳込演算手段は、前記第１の記憶手段のアドレスをインクリメントし、前記第２の記憶手段のアドレスをデクリメントしながら順次アドレスを指定するとともに、前記第２の記憶手段の指定したアドレスに楽音波形データが記憶されている場合にのみ当該楽音波形データと前記第１の記憶手段の指定したアドレスの音声波形データとを畳み込み演算することを特徴とする請求項１に記載のデータ合成装置。
【請求項１３】
音声波形データの周期の始期を検出する第１のステップと、
前記第１のステップによって検出された周期の始期から、当該音声波形データを第１の記憶手段に記憶する第２のステップと、
特定の周期のパルス情報を含む楽音波形データを第２の記憶手段に記憶する第３のステップと、
前記第１の記憶手段に記憶された音声波形データと前記第２の記憶手段に記憶された楽音波形データとを畳み込み演算して、前記第２の記憶手段に記憶された特定の周期に同期した合成波形データを出力する第４のステップと、
を実行するデータ合成処理のプログラム。
【請求項１４】
前記第４のステップによって畳み込み演算される波形データに対して、第３の記憶手段に記憶された窓関数のパラメータを演算する第５のステップをさらに実行することを特徴とする請求項１３に記載のデータ合成処理のプログラム。
【請求項１５】
前記第５のステップは、音声波形データに対して窓関数のパラメータを演算し、前記第２のステップは、前記第５のステップによって演算された音声波形データを前記第１の記憶手段に記憶することを特徴とする請求項１４に記載のデータ合成処理のプログラム。
【請求項１６】
前記第５のステップは、前記第１のステップによって検出された音声波形データの周期の始期から少なくとも１周期以上に亘って窓関数のパラメータを演算することを特徴とする請求項１３に記載のデータ合成処理のプログラム。
【請求項１７】
前記第１のステップは、音声波形データにおいて、当該音声波形データの正のピークホールドおよび当該音声波形データの負のピークホールドを生成し、当該正のピークホールドの値と当該音声波形データの振幅とが交差する第１のポイント、当該負のピークホールドの値と当該音声波形データの振幅とが交差する第２のポイント、および当該音声波形データが負から正に変化するゼロクロスポイントを順次検出して、当該音声波形データの周期の始期を検出することを特徴とする請求項１６に記載のデータ合成処理のプログラム。
【請求項１８】
前記第１のステップは、音声波形データにおいて、正のピークホールドが所定の減衰係数で減衰した値と当該音声波形データの振幅とが交差する第１のポイント、負のピークホールドが前記所定の減衰係数で減衰した値と当該音声波形データの振幅とが交差する第２のポイントを検出することを特徴とする請求項１７に記載のデータ合成処理のプログラム。
【請求項１９】
前記第１のステップは、音声波形データにおいて、正のピークホールドが音声波形データの正のピークから一定時間が経過した後から所定の減衰係数で減衰した値と、当該音声波形データの振幅とが交差する第１のポイント、負のピークホールドが音声波形データの負のピークから前記一定時間が経過した後から前記所定の減衰係数で減衰した値と、当該音声波形データの振幅とが交差する第２のポイントを検出することを特徴とする請求項１７に記載のデータ合成処理のプログラム。
【請求項２０】
前記第１のステップは、音声波形データが負から正に変化するゼロクロスポイントを周期の始期として検出することを特徴とする請求項１７に記載のデータ合成処理のプログラム。
【請求項２１】
周期の始期であるか否かを示す識別情報を含む音声波形データを記憶している第４の記憶手段をさらに備え、前記第２のステップは、当該第４の記憶手段から読み出した音声波形データに周期の始期であることを示す識別情報が含まれている場合には、当該識別情報を含んだ音声波形データから少なくとも１周期の音声波形データまでを前記第１の記憶手段に記憶することを特徴とする請求項１３に記載のデータ合成処理のプログラム。
【請求項２２】
前記第５のステップは、前記第４の記憶手段から読み出した音声波形データに対して前記第３の記憶手段に記憶された窓関数のパラメータを演算し、前記第２のステップは、前記第５のステップによって演算された音声波形データを前記第１の記憶手段に記憶することを特徴とする請求項２１に記載のデータ合成装置。
【請求項２３】
前記第２のステップは、あらかじめ窓関数のパラメータが演算された音声波形データを前記第４の記憶手段から読み出して前記第１の記憶手段に記憶することを特徴とする請求項２１に記載のデータ合成処理のプログラム。
【請求項２４】
前記第４のステップは、前記第１の記憶手段のアドレスをインクリメントし、前記第２の記憶手段のアドレスをデクリメントしながら順次アドレスを指定するとともに、前記第２の記憶手段の指定したアドレスに楽音波形データが記憶されている場合にのみ当該楽音波形データと前記第１の記憶手段の指定したアドレスの音声波形データとを畳み込み演算することを特徴とする請求項１３に記載のデータ合成処理のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ合成装置およびデータ合成処理のプログラムに関し、特に、人間の声の特徴であるフォルマントを持つ音声波形データと、楽器の演奏などによって発生される楽音波形データとを合成するデータ合成装置およびデータ合成処理のプログラムに関するものである。
【背景技術】
【０００２】
従来、人間の声の高さを鍵盤楽器から出力された音のピッチ（音高）に変換する装置としてボコーダが知られている。ボコーダにおいては、入力された人間の声の音声波形データを複数の周波数成分に分けるとともに、鍵盤楽器から出力される楽音波形データを分析して、音声波形データと楽音波形データとを合成する。その結果、人間の声の音色を楽器の音の音高で発音することができる。
【０００３】
このようなデータ合成によって、人間の発生する音声による歌詞を楽音として演奏する電子楽器の特許がある。
この特許によれば、音高指定情報を発生する鍵盤などの音高指定情報発生手段と、人間の声の発音を特徴付ける複数のフォルマントのそれぞれの時系列情報を記憶したＲＯＭなどのフォルマント情報記憶手段と、音高指定情報発生手段からの音高指定情報の発生に応答して、所定のシーケンスで時系列情報を順次読み出す読み出し手段であって、音高指定情報が所定の時間内に連続して発生した場合にはその連続した最初の音高指定情報による以外ではシーケンスを進めないものと、音高指定情報発生手段から発生される各音高指定情報ごとに、音高指定情報と読み出し手段で読み出される順次のフォルマント情報とに基づく音声を形成するフォルマント形成音源であって、複数の音声を並列的に形成可能なものとを具備している。
【０００４】
フォルマントとは、人間の声のスペクトル分布であり、声を特徴づけるものである。人の声の周波数分析をすると、発音の違いで特定のスペクトルを示すことが分かる。例えば、「あ」と発声すると、誰が発声しても声の性質に関係なく「あ」と聴こえる。これは、「あ」のスペクトルが、誰の声であっても同じスペクトル分布を示すからである。
【０００５】
図１のＲＯＭ１５で構成されたフォルマント情報記憶手段は、音節データ用シーケンステーブルで構成されている。この音節データ用シーケンステーブルは、図２に示すように、周波数シーケンサとレベルシーケンサとからなり、それぞれ人間の音声の各音節（５０音、各濁音、半濁音等）ごとにそれらを特徴付ける主な４つのフォルマントの周波数Ｆ１〜Ｆ４およびレベル（振幅）Ｌ１〜Ｌ４を時系列的に記憶している。
したがって、音高指定情報発生手段により指定された音高の人間の音声を合成することができる。また、複数音高、同一音声の同時発音、すなわちコーラス歌唱が可能となる。（特許文献１参照）
【０００６】
この場合のフォルマント形成音源としては、他の特許公開公報におけるフォルマント合成装置が用いられる。このフォルマント合成装置は、この特許公開公報の第１図に示されており、パルス発生回路１、搬送波発生回路２、変調波形発生回路３、加算器４，５、対数／真数変換テーブル６、Ｄ／Ａ変換器７で構成されている。そして、与えられるフォルマント中心周波数情報値Ｆｆ、フォルマント基本周波数情報値Ｆｏ、フォルマント形状パラメータ（バンド幅値ｋａ，ｋｂ、シフト値ｎａ，ｎｂ）、およびフォルマント音の振幅（エンベロープ）波形データ等に基づいてフォルマント音を合成する。すなわち、パルス発生回路１における位相アキュムレータ１１は、所定のクロックパルスφに同期してフォルマント基本周波数情報値Ｆｏを累算する。また、搬送波発生回路２においては、位相アキュムレータ２１は、クロックパルスφに同期してフォルマント中心周波数情報値Ｆｆを累算し、その累算値ｑＦｆを正弦波メモリ２２の読み出しアドレス信号として順次出力する。（特許文献２参照）
【特許文献１】特許２８００４６５号公報
【特許文献２】特開平２−２６２６９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献１のように、人間の音声の各音節（５０音、各濁音、半濁音等）ごとにそれらを特徴付ける主な４つのフォルマントの周波数Ｆ１〜Ｆ４およびレベル（振幅）Ｌ１〜Ｌ４を時系列的にＲＯＭに記憶している場合には、人間の音声の波形データがすでに分析されて記憶されている。すなわち、上記特許文献１のフォルマント形成音源を構成する上記特許文献２のフォルマント合成装置では、フォルマント中心周波数情報値Ｆｆ、フォルマント基本周波数情報値Ｆｏ、フォルマント形状パラメータ（バンド幅値ｋａ，ｋｂ、シフト値ｎａ，ｎｂ）、およびフォルマント音の振幅（エンベロープ）波形データ等を外部から入力して、所定のクロックパルスφに同期してフォルマント基本周波数情報値Ｆｏを累算するとともに、、クロックパルスφに同期してフォルマント中心周波数情報値Ｆｆを累算し、その累算値ｑＦｆを正弦波メモリ２２の読み出しアドレス信号として順次出力する構成になっている。
【０００８】
したがって、ＲＯＭの音声波形データと鍵盤からの楽音波形データとの合成は容易であるが、例えば、マイクから人間の音声が入力された場合や、マイクから入力された音声を記録したメモリから読み出す場合には、その音声波形データの周期が分からないため位相ずれが生じて正常なデータ合成ができない。また、音声に含まれている倍音を基音と誤って検出してデータ合成を行う可能性があるので、出力される音声に歪みが発生するおそれがある。
【０００９】
本発明は、このような従来の課題を解決するためのものであり、マイクから得られる音声波形データや、マイクから入力された音声を記録したメモリから読み出した音声波形データであっても、音声波形データの基音に基づいて、演奏波形データと位相ずれのないデータ合成を行うことにより、人間の声の特徴であるフォルマントを有する合成波形データを歪みのない状態で出力することを目的とする。
【課題を解決するための手段】
【００１０】
請求項１に記載のデータ合成装置は、音声波形データの周期の始期を検出する周期検出手段（実施形態においては、図２、図８の周期検出部２２に相当する）と、周期検出手段によって検出された周期の始期から、音声波形データを第１の記憶手段（実施形態においては、図２、図８、図１８の音声波形メモリ２１に相当する）に記憶する第１の記憶制御手段（実施形態においては、図１のＣＰＵ１の機能としての図２、図８、図１８の書込制御部２３に相当する）と、特定の周期のパルス情報を含む楽音波形データ（実施形態においては、演奏波形データに相当する）を第２の記憶手段（実施形態においては、図２、図８、図１８の演奏波形メモリ２５に相当する）に記憶する第２の記憶制御手段（実施形態においては、図１のＣＰＵ１の機能としての図２、図８、図１８のパルスジェネレータ２４に相当する）と、第１の記憶手段に記憶された音声波形データと第２の記憶手段に記憶された楽音波形データとを畳み込み演算して、第２の記憶手段に記憶された特定の周期に同期した合成波形データを出力する畳込演算手段（実施形態においては、図１のＣＰＵ１の機能としての図２、図８、図１８の畳込演算部２６に相当する）と、を備えた構成になっている。
【００１１】
請求項１のデータ合成装置において、請求項２に記載したように、窓関数（実施形態においては、図６のハニング窓関数に相当する）のパラメータを記憶する第３の記憶手段（実施形態においては、図１のＲＯＭ４で構成される図２、図８、図１８の窓関数テーブル２７に相当する）と、畳込演算手段によって畳み込み演算される波形データに対して第３の記憶手段に記憶された窓関数のパラメータを演算する窓関数演算手段（実施形態においては、図１のＣＰＵ１の機能に相当する）とをさらに備えたような構成にしてもよい。
【００１２】
請求項１のデータ合成装置において、請求項３に記載したように、窓関数演算手段は、音声波形データに対して窓関数のパラメータを演算し、第１の記憶制御手段は、窓関数演算手段によって演算された音声波形データを第１の記憶手段に記憶するような構成にしてもよい。
【００１３】
請求項１のデータ合成装置において、請求項４に記載したように、窓関数演算手段は、周期検出手段によって検出された音声波形データの周期の始期から少なくとも１周期以上に亘って窓関数のパラメータを演算するような構成にしてもよい。
【００１４】
請求項４のデータ合成装置において、請求項５に記載したように、周期検出手段は、音声波形データにおいて、音声波形データの正のピークホールドおよび音声波形データの負のピークホールドを生成し、正のピークホールドの値と音声波形データの振幅とが交差する第１のポイント（実施形態においては、図３、図９のａ点に相当する）、負のピークホールドの値と音声波形データの振幅とが交差する第２のポイント（実施形態においては、図３、図９のｂ点に相当する）、および音声波形データが負から正に変化するゼロクロスポイント（実施形態においては、図３、図９のｃ点に相当する）を順次検出して、音声波形データの周期の始期を検出するような構成にしてもよい。
【００１５】
請求項５のデータ合成装置において、請求項６に記載したように、周期検出手段は、音声波形データにおいて、正のピークホールドが所定の減衰係数（実施形態においては、図１０（Ａ）のＥｎｖ＿ｇに相当する）で減衰した値と音声波形データの振幅とが交差する第１のポイント、負のピークホールドが所定の減衰係数で減衰した値と音声波形データの振幅とが交差する第２のポイントを検出するような構成にしてもよい。
【００１６】
請求項５のデータ合成装置において、請求項７に記載したように、周期検出手段は、音声波形データにおいて、正のピークホールドが音声波形データの正のピークから一定時間（実施形態においては、図１０（Ａ）のＨｌｄＣｎｔに相当する）が経過した後から所定の減衰係数（実施形態においては、図１０（Ａ）のＥｎｖ＿ｇに相当する）で減衰した値と、音声波形データの振幅とが交差する第１のポイント、負のピークホールドが音声波形データの負のピークから一定時間が経過した後から所定の減衰係数で減衰した値と、音声波形データの振幅とが交差する第２のポイントを検出するような構成にしてもよい。
【００１７】
請求項５のデータ合成装置において、請求項８に記載したように、周期検出手段は、音声波形データが負から正に変化するゼロクロスポイントを周期の始期として検出するような構成にしてもよい。
【００１８】
請求項１のデータ合成装置において、請求項９に記載したように、周期の始期であるか否かを示す識別情報（実施形態においては、図１９の周期パルスデータに相当する）を含む音声波形データを記憶している第４の記憶手段（実施形態においては、図１８の音声・周期メモリ２９に相当する）をさらに備え、第１の記憶制御手段は、第４の記憶手段から読み出した音声波形データに周期の始期であることを示す識別情報が含まれている場合には、その識別情報を含んだ音声波形データから少なくとも１周期の音声波形データまでを第１の記憶手段に記憶するような構成にしてもよい。
【００１９】
請求項９のデータ合成装置において、請求項１０に記載したように、窓関数演算手段は、第４の記憶手段から読み出した音声波形データに対して第３の記憶手段に記憶された窓関数のパラメータを演算し、第１の記憶制御手段は、窓関数演算手段によって演算された音声波形データを第１の記憶手段に記憶するような構成にしてもよい。
【００２０】
請求項９のデータ合成装置において、請求項１１に記載したように、第４の記憶手段は、あらかじめ窓関数のパラメータが演算されている音声波形データを記憶しているような構成にしてもよい。
【００２１】
請求項１のデータ合成装置において、請求項１２に記載したように、畳込演算手段は、第１の記憶手段のアドレスをインクリメントし、第２の記憶手段のアドレスをデクリメントしながら順次アドレスを指定するとともに、第２の記憶手段の指定したアドレスに楽音波形データが記憶されている場合にのみ、楽音波形データと第１の記憶手段の指定したアドレスの音声波形データとを畳み込み演算するような構成にしてもよい。
【００２２】
請求項１３に記載のデータ合成処理のプログラムは、音声波形データの周期の始期を検出する第１のステップ（実施形態においては、図１のＣＰＵ１によって実行される図１３および図１４の音声波形処理に相当する）と、音声波形データを第１の記憶手段（実施形態においては、図２、図８、図１８の音声波形メモリ２１に相当する）に記憶する第２のステップ（実施形態においては、ＣＰＵ１によって実行される図１５の音声波形メモリ書き込み処理に相当する）と、特定の周期のパルス情報を含む楽音波形データ（実施形態においては、演奏波形データに相当する）を第２の記憶手段（実施形態においては、図２、図８、図１８の演奏波形メモリ２５に相当する）に記憶する第３のステップ（実施形態においては、図１のＣＰＵ１によって実行される図１６の演奏波形メモリ書き込み処理に相当する）と、第１の記憶手段に記憶された音声波形データと第２の記憶手段に記憶された楽音波形データとを畳み込み演算して、第２の記憶手段に記憶された特定の周期に同期した合成波形データを出力する第４のステップ（実施形態においては、図１のＣＰＵ１によって実行される図１７の畳み込み演算処理に相当する）と、を実行する。
【００２３】
請求項１３のデータ合成処理のプログラムにおいて、請求項１４に記載したように、第４のステップによって畳み込み演算される波形データに対して、第３の記憶手段に記憶された窓関数（実施形態においては、図６のハニング窓関数に相当する）のパラメータを演算する第５のステップ（実施形態においては、図１のＣＰＵ１によって実行される図１５の音声波形メモリ書き込み処理におけるステップＳＤ４の処理に相当する）をさらに実行するような構成にしてもよい。
【００２４】
請求項１４のデータ合成処理のプログラムにおいて、請求項１５に記載したように、第５のステップは、音声波形データに対して窓関数のパラメータを演算し、第２のステップは、第５のステップによって演算された音声波形データを第１の記憶手段に記憶するような構成にしてもよい。
【００２５】
請求項１３のデータ合成処理のプログラムにおいて、請求項１６に記載したように、第５のステップは、第１のステップによって検出された音声波形データの周期の始期から少なくとも１周期以上に亘って窓関数のパラメータを演算するような構成にしてもよい。
【００２６】
請求項１６のデータ合成処理のプログラムにおいて、請求項１７に記載したように、第１のステップは、音声波形データにおいて、音声波形データの正のピークホールドおよび音声波形データの負のピークホールドを生成し、正のピークホールドの値と音声波形データの振幅とが交差する第１のポイント（実施形態においては、図３、図９のａ点に相当する）、負のピークホールドの値と音声波形データの振幅とが交差する第２のポイント（実施形態においては、図３、図９のｂ点に相当する）、および音声波形データが負から正に変化するゼロクロスポイント（実施形態においては、図３、図９のｃ点に相当する）を順次検出して、音声波形データの周期の始期を検出するような構成にしてもよい。
【００２７】
請求項１７のデータ合成処理のプログラムにおいて、請求項１８に記載したように、第１のステップは、音声波形データにおいて、正のピークホールドが所定の減衰係数（実施形態においては、図１０（Ａ）のＥｎｖ＿ｇに相当する）で減衰した値と音声波形データの振幅とが交差する第１のポイント、負のピークホールドが所定の減衰係数で減衰した値と音声波形データの振幅とが交差する第２のポイントを検出するような構成にしてもよい。
【００２８】
請求項１７のデータ合成処理のプログラムにおいて、請求項１９に記載したように、第１のステップは、音声波形データにおいて、正のピークホールドが音声波形データの正のピークから一定時間（実施形態においては、図１０（Ａ）のＨｌｄＣｎｔに相当する）が経過した後から所定の減衰係数（実施形態においては、図１０（Ａ）のＥｎｖ＿ｇに相当する）で減衰した値と、音声波形データの振幅とが交差する第１のポイント、負のピークホールドが音声波形データの負のピークから一定時間が経過した後から所定の減衰係数で減衰した値と、音声波形データの振幅とが交差する第２のポイントを検出するような構成にしてもよい。
【００２９】
請求項１７のデータ合成処理のプログラムにおいて、請求項２０に記載したように、第１のステップは、音声波形データが負から正に変化するゼロクロスポイントを周期の始期として検出するような構成にしてもよい。
【００３０】
請求項１３のデータ合成処理のプログラムにおいて、請求項２１に記載したように、周期の始期であるか否かを示す識別情報（実施形態においては、図１９の周期パルスデータに相当する）を含む音声波形データを記憶している第４の記憶手段（実施形態においては、図１８の音声・周期メモリ２９に相当する）をさらに備え、第２のステップは、第４の記憶手段から読み出した音声波形データに周期の始期であることを示す識別情報が含まれている場合には、その識別情報を含んだ音声波形データから少なくとも１周期の音声波形データまでを第１の記憶手段に記憶するような構成にしてもよい。
【００３１】
請求項２１のデータ合成処理のプログラムにおいて、請求項２２に記載したように、第５のステップは、第４の記憶手段から読み出した音声波形データに対して第３の記憶手段に記憶された窓関数のパラメータを演算し、第２のステップは、第５のステップによって演算された音声波形データを第１の記憶手段に記憶するような構成にしてもよい。
【００３２】
請求項２１のデータ合成処理のプログラムにおいて、請求項２３に記載したように、第２のステップは、あらかじめ窓関数のパラメータが演算された音声波形データを第４の記憶手段から読み出して第１の記憶手段に記憶するような構成にしてもよい。
【００３３】
請求項１３のデータ合成処理のプログラムにおいて、請求項２４に記載したように、第４のステップは、第１の記憶手段のアドレスをインクリメントし、第２の記憶手段のアドレスをデクリメントしながら順次アドレスを指定するとともに、第２の記憶手段の指定したアドレスに楽音波形データが記憶されている場合にのみ楽音波形データと第１の記憶手段の指定したアドレスの音声波形データとを畳み込み演算するような構成にしてもよい。
第４のステップは、実施形態においては、図１のＣＰＵ１によって実行される図１７の畳み込み演算処理におけるステップＳＦ３ないしステップＳＦ５の処理に相当する。
【発明の効果】
【００３４】
本発明のデータ合成装置およびデータ合成処理のプログラムによれば、マイクから得られる音声波形データや、マイクから入力された音声を記録したメモリから読み出した音声波形データであっても、音声波形データの基音に基づいて、演奏波形データと位相ずれのないデータ合成を行うことにより、人間の声の特徴であるフォルマントを有する合成波形データを歪みのない状態で出力することができるという効果が得られる。
【発明を実施するための最良の形態】
【００３５】
以下、本発明によるデータ合成装置の第１実施形態、第２実施形態、および、これらの変形例について、電子鍵盤楽器を例に採って説明する。
図１は、第１実施形態における電子鍵盤楽器の構成を示すブロック図である。ＣＰＵ１は、システムバスを介して、鍵盤２、スイッチ部３、ＲＯＭ４、ＲＡＭ５、表示部６、Ａ／Ｄ変換器８、楽音生成部９に接続されており、これら各部との間で指令およびデータを授受して、この電子鍵盤楽器全体を制御する。さらに、Ａ／Ｄ変換器８には、音声を入力するマイク７が接続されている。また、楽音生成部９には、Ｄ／Ａ変換器１０が接続され、Ｄ／Ａ変換器１０には増幅器やスピーカ（図示せず）を有するサウンドシステム１１が接続されている。
【００３６】
鍵盤２は、押鍵に応じてその鍵に対応する音高、押鍵の強弱に応じたベロシティなどをＣＰＵ１に入力する。スイッチ部３は、スタートスイッチやデータ合成スイッチなどの複数のスイッチで構成されている。ＲＯＭ４には、ＣＰＵ１によって実行されるデータ合成処理のプログラム、種々の変数の初期値などがあらかじめ記憶されている。ＲＡＭ５は、ＣＰＵ１のワークエリアであり、データ合成処理の対象となるデータを一時的に記憶するエリア、データ合成処理の実行に必要なレジスタ、フラグ、および変数のエリアが設けられている。表示部６は、データ合成のメッセージなどを表示する。Ａ／Ｄ変換器８は、マイク７から入力された音声信号をディジタルの音声波形データに変換してＣＰＵ１に入力する。楽音生成部９は、ＣＰＵ１から入力された波形データに応じて楽音信号を生成してＤ／Ａ変換器１０に入力する。Ｄ／Ａ変換器１０は、楽音生成部９から入力された楽音信号をディジタルからアナログに変換してサウンドシステム１１に出力して発音させる。
【００３７】
図２は、第１実施形態におけるデータ合成処理機能を示すブロック図である。Ａ／Ｄ変換器８は、マイク７から入力された人間の声のアナログの音声信号を所定のサンプリング周波数（例えば、４４．１ｋＨｚ）でサンプリングして、所定のビットからなるサンプル（例えば、１６ビット／サンプル）ごとのディジタル化された音声波形データを音声波形メモリ２１に書き込むために出力する。音声波形データには、人間の声の高さに対応したレベルの山が周期ごとに繰り返される。すなわち、音声波形データには周期情報が含まれている。
【００３８】
音声波形データの書込みの際には、周期検出部２２は、音声波形データの周期を検出して、周期パルスを発生して書込制御部２３に入力する。書込制御部２３は、その周期パルスに基づいて、音声波形メモリ２１に対する書き込み制御を行う。その他、パルスジェネレータ２４、演奏波形メモリ２５、畳込演算部２６、窓関数テーブル２７が設けられている。なお、図２のデータ合成処理機能の各要素において、音声波形メモリ２１および演奏波形メモリ２５は図１のＲＡＭ５によって構成され、パルスジェネレータ２４、周期検出部２２、書込制御部２３、および畳込演算部２６は、図１のＣＰＵ１の制御処理によって構成され、窓関数テーブル２７は図１のＲＯＭ４によって構成される。
【００３９】
図３は、周期検出部２２によって周期を検出して周期パルスを発生する信号処理を示す図である。音声波形データは基音の他に倍音を含んでいる。正の山および負の山の振幅を取得するピークホールドの値は、山のピークが過ぎると所定の減衰係数で減衰し、音声波形データと交差すると音声波形データとともに増加し、次の山のピークが過ぎると再び減衰する動作を繰り返す。
【００４０】
すなわち、周期検出部２２は、図３の点線の矢印で示すように、正のエンベロープのピークホールドの値が減衰して音声波形データの振幅と交差するａ点を検出した後、負のエンベロープのピークホールドの値が減衰して音声波形データの振幅と交差するｂ点を検出すると、次に音声波形データが負から正に変化するゼロクロスポイントｃ点を検出する。そして、ゼロクロスポイントのタイミングで周期パルスを発生する。倍音の振幅は基音の振幅よりも小さいので、正のエンベロープのピークホールドの値が減衰して音声波形データの振幅と交差するａ点を検出した後、倍音の音声波形データの振幅と交差するａ’点を検出しても、負のエンベロープのピークホールドの値が減衰して音声波形データの振幅と交差するｂ点を検出するまでは、ゼロクロスポイントであるｃ点の検出は行わない。したがって、図３に示すように、基音の一定の周期Ｐｒｄで周期パルスを発生して書込制御部２３に入力する。
【００４１】
書込制御部２３は、この周期パルスを音声波形データの周期の始期として、音声波形メモリ２１に書き込み、インパルス応答として記憶する。したがって、音声波形メモリ２１は、音声波形データの少なくとも１周期以上のメモリサイズ（ＷａｖｅＳｉｚｅ）が必要である。図４は、音声波形メモリ２１のメモリサイズＷａｖｅＳｉｚｅと、音声波形データの周期Ｐｒｄとの関係を示す図である。図４（Ａ）は、Ｐｒｄ≦ＷａｖｅＳｉｚｅ＜２Ｐｒｄの場合であり、音声波形メモリ２１のメモリサイズが音声波形データの１周期以上で２周期未満の場合である。図４（Ｂ）は、２Ｐｒｄ≦ＷａｖｅＳｉｚｅ＜３Ｐｒｄの場合であり、音声波形メモリ２１のメモリサイズが音声波形データの２周期以上で３周期未満の場合である。
【００４２】
図２のパルスジェネレータ２４は、鍵盤２から入力される演奏データに含まれている音高すなわちピッチに応じてパルス波形を発生して演奏波形メモリ２５に書き込む。図５は、パルスジェネレータ２４の内部構成を示す図である。鍵盤２からは異なる鍵の同時押鍵による和音のピッチもあり、ある鍵が押鍵された後、離鍵される前に他の鍵が押鍵されて、異なるピッチが時間的に重なることもある。このような場合には、複数（これを「ポリ数」という）の演奏データが鍵盤２から入力される。このため、図５に示すように、複数の異なるピッチ１、ピッチ２、ピッチ３…ピッチｍに対応して、複数のパルスジェネレータ２４ａ、２４ｂ、２４ｃ…２４ｍが設けられている。各パルスジェネレータは周期が異なるパルス波形を発生する。加算器２４ｎは、その異なるパルス波形を合成して演奏メモリ２５に書き込む。なお、押鍵のベロシティ等で音量を制御する場合には、パルス波形に音量値を乗算してもよい。
【００４３】
図２の窓関数テーブル２７には、ハニング窓の窓関数のパラメータが記憶されている。図６は、変数をＮとするハニング窓の窓関数ｗｆを示す図である。この窓関数ｗｆは下記の式で表わされる。
ｗｆ＝｛１−ｃｏｓ（２π×ｗｍｐ１／ＷａｖｅＳｉｚｅ）｝／２
ここでｗｍｐ１は、音声波形メモリ２１において、１サンプルの書き込みごとにインクリメントする書き込みポインタであり、音声波形メモリ２１の先頭アドレスから０、１、…、ＷａｖｅＳｉｚｅ−１の値をとるものとする。
【００４４】
図７は、畳込演算部２６による畳み込み演算の原理を示す図である。畳込演算部２６は、音声波形メモリ２１に順次記憶されるメモリサイズ（ＷａｖｅＳｉｚｅ）分の音声波形データ、演奏波形メモリ２５に記憶された同じサイズ分のパルス波形、および窓関数テーブル２７に記憶された同じサイズ分の窓関数のパラメータをそれぞれ読み出して、ピッチのポリ数に対応する複数の乗算器２６ａおよび各乗算器２６ａの出力を加算する加算器２６ｂによって畳み込み演算を行って出力する。パルス波形にｖビットの音量値を乗算する場合には、ポリ数をｎとすると、演奏波形メモリ２５のメモリサイズＷａｖｅＳｉｚｅのビット数ｍは下記の式で表わされる。
ｍ＝ｖ＋ｌｏｇ２ｎ
【００４５】
図８は、図２に示したデータ合成処理機能の変形例を示す図である。図８においては、Ａ／Ｄ変換器８から出力される音声波形データに対して、窓関数テーブル２７に記憶されている窓関数のパラメータが乗算器２８によって乗算された後に、音声波形メモリ２１に書き込まれる。乗算器２８は、ＣＰＵ１の制御機能によって構成される。したがって、畳込演算部２６は、窓関数のパラメータが乗算された後に、音声波形メモリ２１に記憶された音声波形データ、および、演奏波形メモリ２５に記憶されたパルス波形をそれぞれ読み出して、畳み込み演算を行って出力する。さらに、図８においては、周期検出部２２の周期検出の動作が図３に示したものと異なっている。
【００４６】
図９は、図８の変形例における周期検出部２２によって周期を検出して周期パルスを発生する信号処理を示す図である。図９においても、点線の矢印で示すように、正のエンベロープのピークホールドの値が減衰して音声波形データと交差するａ点を検出した後、負のエンベロープのピークホールドの値が減衰して音声波形データと交差するｂ点を検出すると、次に音声波形データが負から正に変化するゼロクロスポイントｃ点を検出する。そして、基音の一定の周期Ｐｒｄで周期パルスを発生して書込制御部２３に入力する。ただし、ピークホールドの値が減衰するタイミングが、音声波形データのエンベロープのピークから一定時間（ＨｌｄＣｎｔ）の減衰停止時間だけ遅れる。この一定時間ＨｌｄＣｎｔは、周期パルスが取り得る範囲の半分程度に設定される。したがって、倍音で誤動作する確率が図３の場合よりも低くなる。さらに、この場合において、ＨｌｄＣｎｔの時間を前回の周期パルスの半分程度を動的に設定すれば、より効果的である。
【００４７】
図１０は、ＲＡＭ５の複数のエリアにストアされる各種のデータを示す図である。図１０（Ａ）は、制御パラメータを示す図である。各制御パラメータの用途については後述する。図１０（Ｂ）は、波形データをストアする波形メモリを示している。ここで、ＷａｖｅＭｅｍ１［］は、マイク７から入力された音声がＡ／Ｄ変換器８によってサンプリングされた音声波形データを書き込むためのエリアで、図２および図８の音声波形メモリ２１に相当する。また、ＷａｖｅＭｅｍ２［］は、鍵盤２の演奏に応じてパルスジェネレータ２４により発生されたパルス波形を含む演奏波形データを書き込むためのエリアで、図２および図８の演奏波形メモリ２５に相当する。
【００４８】
次に、第１実施形態におけるデータ合成処理の動作について、図８および図９に示した変形例、並びに、図１のＣＰＵ１によって実行される制御プログラムのフローチャートを参照して説明する。
図１１は、ＣＰＵ１によって実行されるメインルーチンのフローチャートである。初期処理（ステップＳＡ１）の後、スイッチ部３をサーチするスイッチ処理（ステップＳＡ２）、鍵盤２をサーチする鍵盤処理（ステップＳＡ３）、表示処理などのその他の処理（ステップＳＡ４）を繰り返し実行する。なお、ステップＳＡ１の初期設定においては、図１０（Ａ）に示した制御パラメータについて以下の初期設定を行う。
【００４９】
マイク７から入力された音声がＡ／Ｄ変換器８によってサンプリングされた音声波形データであるＩｎｐｕｔＷａｖｅ、および、１サンプリング前の音声波形データであるＰｒｅＩｎｐｕｔＷａｖｅをクリアする。位相検出段階を示すＳｔａｇｅを０（図９におけるａ点待ち）にセットする。音声波形データの正のエンベロープの値であるＰｌｕｓＥｎｖ、および、音声波形データの負のエンベロープの値であるＭｉｎｓＥｎｖをクリアする。エンベロープ減衰係数であるＥｎｖ＿ｇを０から１の間の所定値に設定する。正のエンベロープの値用のホールドカウンタであるＰｌｕｓＨｌｄＣｎｔ、および、負のエンベロープの値用のホールドカウンタであるＭｉｎｓＨｌｄＣｎｔをクリアする。ホールドカウンタ比較値であり、減衰停止時間であるＨｌｄＣｎｔに０をストアする。周期カウンタであるＰｒｄＣｎｔをクリアする。過去ＮＨＳＴ個分の周期カウンタの値を格納する配列であるＰｒｄＨｓｔ［］を全てクリアする。ＰｒｄＨｓｔ［］の指定インデックスであるＨｓｔＩｄｘを０にセットする。位相同期パルスの状態を表わすＰｈａｓｅＰｕｌｓｅを０（位相同期ポイントでない）にリセットする。ＷａｖｅＳｉｚｅに音声波形メモリ２１のメモリサイズをストアする。音声波形メモリ２１の読み出しポインタであるｒｍｐ１、音声波形メモリ２１の書き込みポインタであるｗｍｐ１、演奏波形メモリ２５の読み出しポインタであるｒｍｐ２、および、演奏波形メモリ２５の書き込みポインタであるｗｍｐ２を全て０にセットする。出力データであるＯｕｔｐｕｔをクリアする。また、図１０（Ｂ）に示したＷａｖｅＭｅｍ１［］、および、ＷａｖｅＭｅｍ２［］をクリアする。
【００５０】
図１２は、メインルーチンにおけるステップＳＡ３の鍵盤処理のフローチャートである。鍵盤２をサーチして、各鍵の状態が押鍵であるか、離鍵であるか、又は変化なしであるかを検出する（ステップＳＢ１）。任意の鍵が押鍵がされたときは、その押鍵に対応するピッチすなわち音高のパルス波形の発生を開始する（ステップＳＢ２）。ステップＳＢ１において、任意の鍵が離鍵されたときは、その離鍵に対応するピッチのパルス波形の発生を終了する（ステップＳＢ３）。ステップＳＢ２のパルス波形発生開始処理の後、ステップＳＢ３のパルス波形発生終了の後、又は、ステップＳＢ１において鍵盤２の状態に変化がない場合には、メインルーチンに戻る。
【００５１】
図１３および図１４は、Ａ／Ｄ変換器８のサンプリングによる音声波形データの入力の割込みで実行する音声波形処理のフローチャートである。図１３において、まず、Ａ／Ｄ変換値をＩｎｐｕｔＷａｖｅにストアする（ステップＳＣ１）。そして、ＩｎｐｕｔＷａｖｅの振幅が正のエンベロープの値であるＰｌｕｓＥｎｖに減衰係数Ｅｎｖ＿ｇを乗算した値よりも大きいか否かを判別する（ステップＳＣ２）。すなわち、図９においてａ点を超えたか否かを判別する。ＩｎｐｕｔＷａｖｅの正の値がＰｌｕｓＥｎｖにＥｎｖ＿ｇを乗算した値よりも大きい場合、すなわち、ＩｎｐｕｔＷａｖｅの正の値がａ点を超えたときは、ＰｌｕｓＥｎｖにＩｎｐｕｔＷａｖｅの正の値をストアする（ステップＳＣ３）。したがって、その後はＰｌｕｓＥｎｖは、ＩｎｐｕｔＷａｖｅの正の値がピークに達するまでは、ＩｎｐｕｔＷａｖｅの正の値に追従して増加し、ＩｎｐｕｔＷａｖｅの正の値がピークに達した後は、一定時間ＨｌｄＣｎｔの時間だけピークの値を維持する。
【００５２】
次に、Ｓｔａｇｅが０であるか否かを判別する（ステップＳＣ４）。Ｓｔａｇｅが０（ａ点待ち）である場合には、Ｓｔａｇｅを１（ｂ点待ち）にセットし、ＰｌｕｓＨｌｄＣｎｔを０にクリアする（ステップＳＣ５）。ステップＳＣ２において、ＩｎｐｕｔＷａｖｅの正の値がＰｌｕｓＥｎｖにＥｎｖ＿ｇを乗算した値以下である場合、すなわち、ＩｎｐｕｔＷａｖｅの正の値がａ点を超えていない場合には、ＰｌｕｓＨｌｄＣｎｔのカウント値がＨｌｄＣｎｔの値を超えたか否かを判別する（ステップＳＣ６）。ＰｌｕｓＨｌｄＣｎｔのカウント値がＨｌｄＣｎｔの値を超えたとき、すなわち、減衰停止時間が経過したときは、ＰｌｕｓＥｎｖにＥｎｖ＿ｇを乗算して、さらにＰｌｕｓＥｎｖを減衰する（ステップＳＣ７）。
【００５３】
ステップＳＣ５若しくはステップＳＣ７の処理後、又は、ステップＳＣ４においてＳｔａｇｅが０でない場合、又は、ステップＳＣ６においてＰｌｕｓＨｌｄＣｎｔのカウント値がＨｌｄＣｎｔの値を超えない場合には、ＩｎｐｕｔＷａｖｅの負の値であるＭｉｎｓＥｎｖに減衰係数Ｅｎｖ＿ｇを乗算した値よりも小さいか否かを判別する（ステップＳＣ８）。すなわち、図９においてｂ点を超えたか否かを判別する。ＩｎｐｕｔＷａｖｅの負の値がＭｉｎｓＥｎｖにＥｎｖ＿ｇを乗算した値よりも小さい場合、すなわち、ＩｎｐｕｔＷａｖｅの負の値がｂ点より小さくなったときは、ＭｉｎｓＥｎｖにＩｎｐｕｔＷａｖｅの負の値をストアする（ステップＳＣ９）。したがって、その後はＭｉｎｓＥｎｖは、ＩｎｐｕｔＷａｖｅの負の値がピークに達するまでは、ＩｎｐｕｔＷａｖｅの負の値に追従して減少し、ＩｎｐｕｔＷａｖｅの負の値がピークに達した後は、一定時間ＨｌｄＣｎｔの時間だけピークの値を維持する。
【００５４】
次に、Ｓｔａｇｅが１であるか否かを判別する（ステップＳＣ１０）。Ｓｔａｇｅが１（ｂ点待ち）である場合には、Ｓｔａｇｅを２（ｃ点待ち）にセットし、ＭｉｎｓＨｌｄＣｎｔを０にクリアする（ステップＳＣ１１）。ステップＳＣ８において、ＩｎｐｕｔＷａｖｅの負の値がＭｉｎｓＥｎｖにＥｎｖ＿ｇを乗算した値以上である場合、すなわち、ＩｎｐｕｔＷａｖｅの負の値がｂ点を超えていない場合には、ＭｉｎｓＨｌｄＣｎｔのカウント値がＨｌｄＣｎｔの値を超えたか否かを判別する（ステップＳＣ１２）。ＭｉｎｓＨｌｄＣｎｔのカウント値がＨｌｄＣｎｔの値を超えたとき、すなわち、減衰停止時間が経過したときは、ＭｉｎｓＥｎｖにＥｎｖ＿ｇを乗算して、さらにＭｉｎｓＥｎｖを減衰する（ステップＳＣ１３）。
ステップＳＣ１１若しくはステップＳＣ１３の処理後、又は、ステップＳＣ１０においてＳｔａｇｅが１でない場合、又は、ステップＳＣ１２においてＭｉｎｓＨｌｄＣｎｔのカウント値がＨｌｄＣｎｔの値を超えない場合には、ＰｌｕｓＨｌｄＣｎｔおよびＭｉｎｓＨｌｄＣｎｔのカウント値をそれぞれインクリメントする（ステップＳＣ１４）。
【００５５】
次に、図１４において、今回のサンプリングの音声波形データであるＩｎｐｕｔＷａｖｅが正の値、かつ、前回のサンプリングの音声波形データであるＰｒｅＩｎｐｕｔＷａｖｅが負の値、かつ、Ｓｔａｇｅが２（ｃ点待ち）であるか否かを判別する（ステップＳＣ１５）。すなわち、１サンプリング前の音声波形データが負、今回のサンプリングの音声波形データが正、かつ、ｃ点待ちである場合には、図９において、音声波形データの値が負から正に変化するｃ点のゼロクロスポイントを検出した場合である。一方、ｃ点のゼロクロスポイントを検出しない場合には、ＰｈａｓｅＰｕｌｓｅを０（位相同期ポイントでない）にリセットし、ＰｒｄＣｎｔのカウント値をインクリメントする（ステップＳＣ１６）。ステップＳＣ１５において、ｃ点のゼロクロスポイントを検出したときは、ＰｒｄＣｎｔの周期カウンタ値をＰｒｄＨｓｔ［ＨｓｔＩｄｘ］にストアして、ＨｓｔＩｄｘの値を更新し、ＰｒｄＨｓｔ［０］〜ＰｒｄＨｓｔ［ＮＨＳＴ−１］の平均値の半分をＨｌｄＣｎｔにストアして減衰停止時間を更新する。また、ＰｈａｓｅＰｕｌｓｅを１（位相同期ポイント）にセットし、Ｓｔａｇｅを０（ａ点待ち）にセットし、ＰｒｄＣｎｔを０にクリアする（ステップＳＣ１７）。ステップＳＣ１６の処理又はステップＳＣ１７の処理の後は、次の音声信号処理に備えて、今回のサンプリングの音声波形データＩｎｐｕｔＷａｖｅをＰｒｅＩｎｐｕｔＷａｖｅにストアする（ステップＳＣ１８）。そして、メインルーチンに戻る。
【００５６】
図１５は、図８の書込制御部２３による音声波形メモリ書き込み処理のフローチャートである。ＰｈａｓｅＰｕｌｓｅが１（位相同期ポイント）、かつ、ｗｍｐ１がＷａｖｅＳｉｚｅであるか否かを判別する（ステップＳＤ１）。すなわち、周期検出部２２から、音声波形データの周期の始期である図９の周期パルスが入力され、かつ、音声波形メモリ２１の最終アドレスを超えたか否かを判別する。ＰｈａｓｅＰｕｌｓｅが１、かつ、ｗｍｐ１がＷａｖｅＳｉｚｅである場合には、ｗｍｐ１を先頭のアドレスを表わす０にセットする（ステップＳＤ２）。次に、ｗｍｐ１がＷａｖｅＳｉｚｅより小さいか否かを判別する（ステップＳＤ３）。すなわち、書き込みポインタが最終アドレスを超えていないか否かを判別する。ｗｍｐ１がＷａｖｅＳｉｚｅより小さい場合には、窓関数テーブル２７の窓関数パラメータを読み出して、下記の式によって窓関数の演算を行って、ＷａｖｅＭｅｍ１［ｗｍｐ１］にストアする（ステップＳＤ４）。
ＩｎｐｕｔＷａｖｅ×｛１−ｃｏｓ（２π×ｗｍｐ１／ＷａｖｅＳｉｚｅ）｝／２
そして、ｗｍｐ１の値をインクリメントして（ステップＳＤ５）、メインルーチンに戻る。
【００５７】
図１６は、図１の鍵盤２の演奏に応じた割込み処理であり、図８のパルスジェネレータ２４によって演奏波形メモリ２５に書き込まれる演奏波形メモリ書き込み処理のフローチャートである。ピッチに応じて発生したパルス波形ＰｕｌｓｅＷａｖｅを書き込みポインタｗｍｐ２のエリアＷａｖｅＭｅｍ２［ｗｍｐ２］に書き込み、ｗｍｐ２をインクリメントする（ステップＳＥ１）。次に、書き込みポインタｗｍｐ２が演奏波形メモリ２５の最終アドレスを超えたか否かを判別する（ステップＳＥ２）。ｗｍｐ２が最終アドレスを超えたときは、ｗｍｐ２を演奏波形メモリ２５の先頭のアドレスを表わす０にセットする（ステップＳＥ３）。そして、メインルーチンに戻る。
【００５８】
図１７は、図８の畳込演算部２６による畳込演算処理のフローチャートである。まず、音声波形メモリ２１の読み出しポインタｒｍｐ１を先頭のアドレスである０にセットし、演奏波形メモリ２５の読み出しポインタｒｍｐ２を書き込みが終了した現在の書き込みポインタｗｍｐ２にセットし、Ｏｕｔｐｕｔをクリアする（ステップＳＦ１）。次に、音声波形メモリ２１の読み出しポインタｒｍｐ１がＷａｖｅＳｉｚｅより小さいか否かを判別する（ステップＳＦ２）。すなわち、音声波形メモリ２１に演算すべき音声波形データが残っているか否かを判別する。ｒｍｐ１がＷａｖｅＳｉｚｅより小さい場合、すなわち、演算すべき音声波形データがまだ残っている場合には、ＷａｖｅＭｅｍ２［ｒｍｐ２］が０であるか否かを判別する（ステップＳＦ３）。すなわち、演奏波形メモリ２５において音声波形データと演算すべき読み出しポインタｒｍｐ２の演奏波形データであるパルス波形のデータが０か否かを判別する。
【００５９】
ＷａｖｅＭｅｍ２［ｒｍｐ２］が０でない場合には、音声波形メモリ２１の読み出しポインタｒｍｐ１の音声波形データＷａｖｅＭｅｍ１［ｒｍｐ１］と、演奏波形メモリ２５の読み出しポインタｒｍｐ２の演奏波形データＷａｖｅＭｅｍ２［ｒｍｐ２］とを乗算して、その乗算結果である合成波形データをＯｕｔｐｕｔにストアして累算する（ステップＳＦ４）。この乗算処理の後、又は、ステップＳＦ３においてＷａｖｅＭｅｍ２［ｒｍｐ２］が０である場合、すなわち、演奏波形メモリ２５において音声波形データと演算すべき演奏波形データが０である場合には、音声波形メモリ２１の読み出しポインタｒｍｐ１をインクリメントし、演奏波形メモリ２５の読み出しポインタｒｍｐ２をデクリメントする（ステップＳＦ５）。
【００６０】
この後、ｒｍｐ２が負であるか否かを判別する（ステップＳＦ６）。すなわち、演奏波形メモリ２５の読み出しポインタが先頭の読み出しアドレスを過ぎてデクリメントされたか否かを判別する。ｒｍｐ２が負でない場合には、ステップＳＦ２に移行して上記演算処理のループを繰り返す。ステップＳＦ６においてｒｍｐ２が負になった場合、すなわち、演奏波形メモリ２５の読み出しポインタが先頭の読み出しアドレスを過ぎてデクリメントされた場合には、演奏波形メモリ２５の最終の読み出しアドレスであるＷａｖｅＳｉｚｅ−１をｒｍｐ２にセットして（ステップＳＦ７）、ステップＳＦ２に移行して上記演算処理のループを繰り返す。ステップＳＦ２において、音声波形メモリ２１の読み出しポインタｒｍｐ１がＷａｖｅＳｉｚｅに達した場合、すなわち、音声波形メモリ２１の全ての音声波形データを読み出して畳み込み演算が終了したときは、Ｏｕｔｐｕｔの合成波形データを出力する（ステップＳＦ８）。そして、メインルーチンに戻る。
【００６１】
以上のように、この第１実施形態によれば、ＣＰＵ１は、図２又は図８の書込制御部２３として、マイク７からの人間の音声に応じて、Ａ／Ｄ変換器８から入力される周期情報を含む音声波形データを音声波形メモリ２１に書き込み、鍵盤２の押鍵に応じて、パルスジェネレータ２４で押鍵のピッチに対応する特定の周期のパルス波形を発生して演奏波形メモリ２５に書き込み、畳込演算部２６によって音声波形メモリ２１の音声波形データと演奏波形メモリ２５のパルス波形とを畳み込み演算して合成波形データを出力する。
したがって、マイク７から得られる音声波形データであっても、音声波形データの基音に基づいて、演奏波形データと位相ずれのないデータ合成を行うことにより、人間の声のフォルマントを有する任意の音高の合成波形データを歪みのない状態で出力することができる。
また音声波形データは常に、検出された始期から音声波形メモリ２１に記憶するため、図７に示すように１つの音声波形メモリに音声波形データを上書きして書き込む場合でも、音声波形安定時は書き込みポインタのアドレスの前後での音声波形データの不連続性が小さく、したがって複数の音声波形メモリを用いることなく上述の動作を実現することができる。
【００６２】
この場合において、ＣＰＵ１は、畳み込み演算する波形データに対して、図２又は図８に示したように、窓関数テーブル２７に記憶されたハニング窓の窓関数のパラメータを乗算する。
したがって、より品質の高い合成波形データを生成することができる。
【００６３】
ＣＰＵ１は、窓関数のパラメータを乗算する場合には、図８に示したように、周期情報を含む音声波形データに対して、窓関数テーブル２７に記憶されたハニング窓の窓関数のパラメータを乗算し、乗算した音声波形データを音声波形メモリ２１に記憶する。
あるいは、ＣＰＵ１は、図２に示したように、音声波形データと演奏に応じて発生したパルス波形とを畳み込み演算する際に、窓関数テーブル２７に記憶されたハニング窓の窓関数のパラメータを乗算する。
【００６４】
ＣＰＵ１は、図２又は図８の周期検出部２２として、音声波形データの周期の始期を検出して、その検出した周期の始期から音声波形データを音声波形メモリ２１に記憶する。
したがって、人間の声の特徴であるフォルマントを有する音声波形データを演奏波形データに合成することができる。
【００６５】
ＣＰＵ１は、図２又は図８の周期検出部２２として、音声波形データの周期の始期を検出して、その検出した周期の始期から少なくとも１周期以上に亘って窓関数のパラメータを乗算する。
したがって、人間の声の特徴であるフォルマントを有する任意の音高の音声波形データに対して窓関数のパラメータを乗算することができる。
【００６６】
ＣＰＵ１は、図２又は図８の周期検出部２２として、図３および図９に示したように、音声波形データにおいて、音声波形データの正のエンベロープに対する正のピークホールドおよび音声波形データの負のエンベロープに対する負のピークホールドを生成し、正のピークホールドの値と音声波形データの値とが交差するａ点、負のピークホールドの値と音声波形データの値とが交差するｂ点、および音声波形データが負から正に変化するゼロクロスポイントであるｃ点を順次検出して、音声波形データの周期の始期を検出する。
したがって、音声波形データに含まれている基音および倍音の中から基音の周期だけを検出することができる。
【００６７】
この場合において、ＣＰＵ１は、図３および図９に示したように、周期情報を含む音声波形データの正のエンベロープに対するピークホールドが減衰係数Ｅｎｖ＿ｇで減衰した値と、音声波形データの値とが交差するａ点、負のエンベロープに対するピークホールドが減衰係数Ｅｎｖ＿ｇで減衰した値と、音声波形データの値とが交差するｂ点を検出する。
したがって、図１３のフローチャートに示したように、音声波形データに含まれている基音および倍音の中から基音の周期だけを簡単な音声波形処理によって検出することができる。
【００６８】
あるいはこの場合において、ＣＰＵ１は、図９に示したように、周期情報を含む音声波形データの正のエンベロープに対するピークホールドが音声波形データの正のエンベロープのピークから一定時間ＨｌｄＣｎｔが経過した後から、減衰係数Ｅｎｖ＿ｇで減衰した値と、音声波形データの値とが交差するａ点、負のエンベロープに対するピークホールドが音声波形データの負のエンベロープのピークから一定時間ＨｌｄＣｎｔが経過した後から、減衰係数Ｅｎｖ＿ｇで減衰した値と、音声波形データの値とが交差するｂ点を検出する。
したがって、音声波形データに含まれている倍音の振幅が比較的大きい場合でも、基音の周期だけを確実に検出することができる。
【００６９】
さらにこの場合に、ＣＰＵ１は図１４のステップＳＣ１７における処理に示したように、前回までに検出した周期の平均の半分を、ピークホールドの新たな一定時間ＨｌｄＣｎｔとして動的に設定する。
したがって、マイク７から入力される音声の音高すなわちピッチの周期が流動的である場合でも、柔軟に追従してその周期を確実に検出することができる。
【００７０】
ＣＰＵ１は、音声波形データが負から正に変化するゼロクロスポイントを周期の始期として検出する。
したがって、図４に示したように、音声波形データのゼロクロスポイントから音声波形メモリ２１に書き込むことにより、周期の始期をより確実に特定して音声波形データを書き込むことができる。
【００７１】
次に、本発明の第２実施形態について、図１８ないし図２２を参照して説明する。第２実施形態における電子鍵盤楽器の構成は、一部を除き図１に示した第１実施形態の構成と同じである。
図１８は、第２実施形態におけるデータ合成処理機能を示すブロック図である。図１８には、アナログの音声信号をディジタル化して、音声波形データおよび周期データをあらかじめ記憶した音声・周期メモリ２９が設けられている。この音声・周期メモリ２９には、図１９に示すように、音声波形データ（ＷａｖｅＭｅｍ３［］）が記憶され、その最下位ビットには周期パルスデータが記憶されている。この記憶においては、図２０に示すように、あらかじめ音声波形メモリ２１のメモリサイズＷａｖｅＳｉｚｅで音声波形データをインパルス応答として切り出しておき、それを連続して音声・周期メモリ２９に配置・記憶することで周期情報を記憶するのを省略できる。したがって、図２および図８に示したデータ合成処理機能とは異なり、Ａ／Ｄ変換器８および周期検出部２２は必要ない。また、図１０に示した第１実施形態のＲＡＭの構成においても、周期を検出するためのレジスタは必要ない。他の構成については、図８に示したデータ合成処理機能と同じであるので、重複する説明は省略する。
【００７２】
次に、第２実施形態におけるデータ合成処理の動作について、ＣＰＵ１によって実行される音声波形処理である図２１のフローチャートを参照して説明する。なお、第２実施形態におけるＣＰＵ１のメインルーチン、鍵盤処理、音声波形メモリ書き込み処理、演奏波形メモリ書き込み処理、および、畳み込み演算処理は、それぞれ、図１１、図１２、図１５、図１６、および図１７に示した第１実施形態のフローチャートの処理と同じである。
【００７３】
図２１において、音声・周期メモリ２９の読み出しポインタｒｍｐ３の音声波形データであるＷａｖｅＭｅｍ３［ｒｍｐ３］を図１０に示したＲＡＭのＩｎｐｕｔＷａｖｅにストアする（ステップＳＧ１）。次に、ＩｎｐｕｔＷａｖｅの最下位ビットをＲＡＭのＰｈａｓｅＰｕｌｓｅにセットして、ＩｎｐｕｔＷａｖｅを１ビット右シフトする（ステップＳＧ２）。すなわち、ＷａｖｅＭｅｍ３［ｒｍｐ３］の周期パルスデータを消去して音声波形データだけにする。そして、ｒｍｐ３をインクリメントする（ステップＳＧ３）。この後、ｒｍｐ３がＷａｖｅＳｉｚｅであるか否かを判別する（ステップＳＧ４）。すなわち、読み出しポインタｒｍｐ３が音声・周期メモリ２９の最終アドレスを超えたか否かを判別する。ｒｍｐ３がＷａｖｅＳｉｚｅである場合には、ｒｍｐ３に０すなわち先頭アドレスをセットする（ステップＳＧ５）。ｒｍｐ３に０をセットした後、又は、ｒｍｐ３がＷａｖｅＳｉｚｅでなく、最終アドレスを超えていない場合には、メインルーチンに戻る。
【００７４】
以上のように、この第２実施形態によれば、音声波形データの周期情報を記憶している音声・周期メモリ２９を備えている。ＣＰＵ１は、音声・周期メモリ２９から読み出した少なくとも１周期の音声波形データを音声波形メモリ２１に記憶する。
したがって、周期を検出する処理を行う必要がなくなり、データ合成処理の処理速度を速くできる。
【００７５】
また、この第２実施形態においては、ＣＰＵ１は、音声・周期メモリ２９から読み出した音声波形データに対して、窓関数のパラメータを乗算して音声波形メモリ２１に記憶する。
【００７６】
また、図２２に示すように、あらかじめ音声波形メモリ２１のメモリサイズＷａｖｅＳｉｚｅで切り出した音声波形データのインパルス応答に対して、窓関数のパラメータを乗算し、それを連続して音声・周期メモリ２９に配置・記憶することで、図１８の窓関数テーブル２７を省略できる。さらに、様々な人の声や、音節、歌などをボコーダ用のサウンドとして複数種類、音声・周期メモリ２９にあらかじめ記憶しておき、演奏者によって選択された所望のサウンドの音声波形データと、鍵盤２の演奏によって発生した演奏波形データとを合成することができる。
【００７７】
なお、上記第１実施形態および第２実施形態において、図１７のフローチャートにおけるステップＳＦ３からステップＳＦ５までの処理に示したように、ＣＰＵ１は、畳込演算部２６として、音声波形メモリ２１のアドレス（読み出しポインタｒｍｐ１）をインクリメントし、演奏波形メモリ２５のアドレス（読み出しポインタｒｍｐ２）をデクリメントしながら順次アドレスを指定するとともに、演奏波形メモリ２５の指定したアドレスにパルス波形が記憶されている場合にのみ、そのパルス波形と音声波形メモリ２１の指定したアドレスの音声波形データとを畳み込み演算する。
【００７８】
また、上記第１実施形態および第２実施形態においては、音声波形データと畳み込み演算する対象として、鍵盤２の演奏によって生成した演奏波形データを例に採って本発明を説明したが、音声波形データと畳み込み演算する対象としては、実施形態の演奏波形データに限定されるものではない。あらかじめ曲メモリなどの記憶手段に記憶されている自動演奏用データを読み出して演奏波形データを生成し、音声波形データと畳み込み演算するような構成でもよい。あるいは、外部のＭＩＤＩ機器から受信したＭＩＤＩデータに基づいて生成した演奏波形データと音声波形データとを畳み込み演算するような構成でもよい。すなわち、音高（ピッチ）に応じて生成されるパルス波形を含む演奏波形データと、音声波形データとを畳み込み演算するような構成であれば、本発明の実施形態と見なすことができる。
【００７９】
また、上記第１実施形態および第２実施形態においては、電子鍵盤楽器を例に採って本発明のデータ合成装置を説明したが、本発明のデータ合成装置は電子鍵盤楽器に限定されるものではない。例えば、電子管楽器、電子弦楽器、シンセサイザはもちろんのこと、電子的に楽音の音高を発生できるものであれば、ビブラホン、木琴、ハーモニカなどによっても本発明のデータ合成装置を構成することができる。
【００８０】
また、上記実施形態においては、ＲＯＭ４にあらかじめ記憶された楽音制御処理のプログラムをＣＰＵ１が実行する装置の発明について説明したが、汎用のパソコン、電子鍵盤装置、および外部音源を組み合わせたシステムによって本発明を実現することも可能である。すなわち、フレキシブルディスク（ＦＤ）、ＣＤ、ＭＤなどの記憶媒体に記録されている楽音制御処理のプログラムをパソコンのハードディスクなどの不揮発性メモリにインストールしたり、インターネットなどのネットワークからダウンロードした楽音制御処理のプログラムを不揮発性メモリにインストールして、そのプログラムをパソコンのＣＰＵが実行することも可能である。この場合には、プログラムの発明やそのプログラムを記録した記録媒体の発明を実現できる。
【００８１】
すなわち、本発明によるプログラムは、
音声波形データの周期の始期を検出する第１のステップと、前記第１のステップによって検出された周期の始期から、当該音声波形データを第１の記憶手段に記憶する第２のステップと、特定の周期のパルス情報を含む楽音波形データを第２の記憶手段に記憶する第３のステップと、前記第１の記憶手段に記憶された音声波形データと前記第２の記憶手段に記憶された楽音波形データとを畳み込み演算して、前記第２の記憶手段に記憶された特定の周期に同期した合成波形データを出力する第４のステップと、を実行する。
【００８２】
前記第４のステップによって畳み込み演算される波形データに対して、第３の記憶手段に記憶された窓関数のパラメータを演算する第５のステップをさらに実行する。
【００８３】
前記第５のステップは、音声波形データに対して窓関数のパラメータを演算し、前記第２のステップは、前記第５のステップによって演算された音声波形データを前記第１の記憶手段に記憶する。
【００８４】
前記第５のステップは、前記第１のステップによって検出された音声波形データの周期の始期から少なくとも１周期以上に亘って窓関数のパラメータを演算する。
【００８５】
前記第１のステップは、音声波形データにおいて、当該音声波形データの正のピークホールドおよび当該音声波形データの負のピークホールドを生成し、当該正のピークホールドの値と当該音声波形データの振幅とが交差する第１のポイント、当該負のピークホールドの値と当該音声波形データの振幅とが交差する第２のポイント、および当該音声波形データが負から正に変化するゼロクロスポイントを順次検出して、当該音声波形データの周期の始期を検出する。
【００８６】
前記第１のステップは、音声波形データにおいて、正のピークホールドが所定の減衰係数で減衰した値と当該音声波形データの振幅とが交差する第１のポイント、負のピークホールドが前記所定の減衰係数で減衰した値と当該音声波形データの振幅とが交差する第２のポイントを検出する。
【００８７】
前記第１のステップは、音声波形データにおいて、正のピークホールドが音声波形データの正のピークから一定時間が経過した後から所定の減衰係数で減衰した値と、当該音声波形データの振幅とが交差する第１のポイント、負のピークホールドが音声波形データの負のピークから前記一定時間が経過した後から前記所定の減衰係数で減衰した値と、当該音声波形データの振幅とが交差する第２のポイントを検出する。
【００８８】
前記第１のステップは、音声波形データが負から正に変化するゼロクロスポイントを周期の始期として検出する。
【００８９】
周期の始期であるか否かを示す識別情報を含む音声波形データを記憶している第４の記憶手段をさらに備え、前記第２のステップは、当該第４の記憶手段から読み出した音声波形データに周期の始期であることを示す識別情報が含まれている場合には、当該識別情報を含んだ音声波形データから少なくとも１周期の音声波形データまでを前記第１の記憶手段に記憶する。
【００９０】
前記第５のステップは、前記第４の記憶手段から読み出した音声波形データに対して前記第３の記憶手段に記憶された窓関数のパラメータを演算し、前記第２のステップは、前記第５のステップによって演算された音声波形データを前記第１の記憶手段に記憶する。
【００９１】
前記第２のステップは、あらかじめ窓関数のパラメータが演算された音声波形データを前記第４の記憶手段から読み出して前記第１の記憶手段に記憶する。
【００９２】
前記第４のステップは、前記第１の記憶手段のアドレスをインクリメントし、前記第２の記憶手段のアドレスをデクリメントしながら順次アドレスを指定するとともに、前記第２の記憶手段の指定したアドレスに楽音波形データが記憶されている場合にのみ当該楽音波形データと前記第１の記憶手段の指定したアドレスの音声波形データとを畳み込み演算する。
【図面の簡単な説明】
【００９３】
【図１】本発明の第１実施形態における電子鍵盤楽器の構成を示すブロック図。
【図２】本発明の第１実施形態におけるデータ合成機能に関するブロック図。
【図３】図２の周期検出部によって周期を検出して周期パルスを発生する信号処理を示す図。
【図４】図２の音声波形メモリのメモリサイズと音声波形データの周期との関係を示す図。
【図５】図２のパルスジェネレータの内部構成を示す図。
【図６】図２の窓関数テーブルに記憶されているハニング窓の窓関数を示す図。
【図７】図２の畳込演算部による畳み込み演算の原理を示す図。
【図８】図２に示した第１実施形態におけるデータ合成機能の変形例を示す図。
【図９】図８の変形例における周期検出部によって周期を検出して周期パルスを発生する信号処理を示す図。
【図１０】図１のＲＡＭの複数のエリアにストアされる各種のデータを示す図。
【図１１】図１のＣＰＵによって実行されるメインルーチンのフローチャート。
【図１２】図１１のメインルーチンにおける鍵盤処理のフローチャート。
【図１３】図１のＡ／Ｄ変換器のサンプリングによる音声波形データの入力の割込みで実行する音声波形処理のフローチャート。
【図１４】図１３に続く音声波形処理のフローチャート。
【図１５】図８の書込制御部による音声波形メモリ書き込み処理のフローチャート。
【図１６】図８のパルスジェネレータによる演奏波形メモリ書き込み処理のフローチャート。
【図１７】図８の畳込演算部による畳込演算処理のフローチャート。
【図１８】本発明の第２実施形態におけるデータ合成機能に関するブロック図。
【図１９】図１８の音声・周期メモリに記憶された音声波形データの構成を示す図。
【図２０】図１８の音声波形メモリのメモリサイズで切り出した音声波形データのインパルス応答の状態を示す図。
【図２１】本発明の第２実施形態における音声波形処理のフローチャート。
【図２２】図１８の音声波形メモリのメモリサイズで切り出した音声波形データのインパルス応答に窓関数のパラメータを乗算した状態を示す図。
【符号の説明】
【００９４】
１  ＣＰＵ
２  鍵盤
３  スイッチ部
４  ＲＯＭ
５  ＲＡＭ
６  表示部
７  マイク
８  Ａ／Ｄ変換器
９  楽音生成部
１０  Ｄ／Ａ変換器
１１  サウンドシステム
２１  音声波形メモリ
２２  周期検出部
２３  書込制御部
２４  パルスジェネレータ
２５  演奏波形メモリ
２６  畳込演算部
２７  窓関数テーブル
２８  乗算器
２９  音声・周期メモリ
【図１】
2006146095.tif 000003
【図２】
2006146095.tif 000004
【図３】
2006146095.tif 000005
【図４】
2006146095.tif 000006
【図５】
2006146095.tif 000007
【図６】
2006146095.tif 000008
【図７】
2006146095.tif 000009
【図８】
2006146095.tif 000010
【図９】
2006146095.tif 000011
【図１０】
2006146095.tif 000012
【図１１】
2006146095.tif 000013
【図１２】
2006146095.tif 000014
【図１３】
2006146095.tif 000015
【図１４】
2006146095.tif 000016
【図１５】
2006146095.tif 000017
【図１６】
2006146095.tif 000018
【図１７】
2006146095.tif 000019
【図１８】
2006146095.tif 000020
【図１９】
2006146095.tif 000021
【図２０】
2006146095.tif 000022
【図２１】
2006146095.tif 000023
【図２２】
2006146095.tif 000024