(57)【特許請求の範囲】
【請求項１】
与えられた音響信号に対して、時間軸上に複数の単位区間を設定する区間設定段階と、
前記単位区間における音響信号と複数の周期関数との相関を求めることにより、各周期関数に対応した強度値を算出し、各周期関数が有する周波数と、前記各周期関数に対応した強度値と、単位区間の始点に対応する区間開始時刻と、単位区間の終点に対応する区間終了時刻で構成される単位音素データを算出する単位音素データ算出段階と、
前記単位音素データ算出段階の処理を全単位区間に対して行うことにより得られる全単位音素データから、強度値が所定値に達していないものを削除して、残りの単位音素データを有効な強度値を有する有効音素データとして抽出する有効音素データ抽出段階と、
前記有効音素データ抽出段階により抽出された有効音素データに対して、周波数が同一であって、区間が連続するものを連結して連結音素データとし、連結音素データの属性として、強度値は構成する有効音素データの最大強度値を与え、開始時刻は先頭の有効音素データの区間開始時刻を与え、終了時刻は最後尾の有効音素データの区間終了時刻を与える音素データ連結段階と、
前記連結処理後の全音素データに対して、時間的に重複する音素データを探索し、前記時間的に重複する音素データ間において、その属性である周波数が他の音素データの周波数の整数倍になる音素データを削除する重複音素数調整段階と、
前記削除後の音素データの集合により音響信号を表現する符号化段階と、
を有することを特徴とする音響信号の符号化方法。
【請求項２】
前記重複音素数調整段階の後に、音素データの発音時間と強度値との積に基づいて、重要度の低い音素データを削除することにより音素データの総数を削減する総音素数調整段階を有することを特徴とする請求項１に記載の音響信号の符号化方法。
【請求項３】
前記重複音素数調整段階は、前記時間的に重複する音素データの中でその強度値が最小の音素データの終了時刻を開始時刻側に移動させることにより、時間的に重複する音素データの個数を所定値以下になるように調整するものであることを特徴とする請求項１または請求項２に記載の音響信号の符号化方法。
【請求項４】
前記重複音素数調整段階は、前記音素データの属性である開始時刻の順序に基づいて重複管理テーブルに前記音素データを順次登録すると共に、前記重複管理テーブルに既に登録されている音素データの中で、新規に登録しようとする音素データの開始時刻以前に区間終了時刻が設定されている音素データを前記重複管理テーブルから削除し、前記重複管理テーブルに登録されている音素データが所定数を超えた場合に、前記重複管理テーブルに登録されている音素データのうちの１つを選定し、音素データ群内の選定された音素データ自体に補正を行うと共に、選定された音素データを前記重複管理テーブルより削除することにより、時間的に重複する音素データの個数を所定値以下になるように調整するものであることを特徴とする請求項１から請求項３のいずれかに記載の音響信号の符号化方法。
【請求項５】
コンピュータに、与えられた音響信号に対して、時間軸上に複数の単位区間を設定する区間設定段階、前記単位区間における音響信号と複数の周期関数との相関を求めることにより、各周期関数に対応した強度値を算出し、各周期関数が有する周波数と、前記各周期関数に対応した強度値と、単位区間の始点に対応する区間開始時刻と、単位区間の終点に対応する区間終了時刻で構成される単位音素データを算出する単位音素データ算出段階、前記単位音素データ算出段階の処理を全単位区間に対して行うことにより得られる全単位音素データから、強度値が所定値に達していないものを削除して、残りの単位音素データを有効な強度値を有する有効音素データとして抽出する有効音素データ抽出段階、前記有効音素データ抽出段階により抽出された有効音素データに対して、周波数が同一であって、区間が連続するものを連結して連結音素データとし、連結音素データの属性として、強度値は構成する有効音素データの最大強度値を与え、開始時刻は先頭の有効音素データの区間開始時刻を与え、終了時刻は最後尾の有効音素データの区間終了時刻を与える音素データ連結段階、前記連結処理後の全音素データに対して、時間的に重複する音素データを調べ、前記時間的に重複する音素データ間において、その属性である周波数が他の音素データの周波数の整数倍になる音素データを削除する重複音素数調整段階、前記削除後の音素データの集合により音響信号を表現する符号化段階、を実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、音楽制作における採譜と呼ばれる以下のような業務を支援するのに適用することができる。採譜業務としては、例えば、譜面が入手できない場合の素材としての既存楽曲の引用・既存楽曲のカバー曲制作、ヒット曲のメロディ・和声進行・音色の分析研究等の楽曲分析、カラオケにおけるＭＩＤＩデータ形式の演奏データ作成、ゲーム機のＢＧＭデータの作成、携帯電話の着メロデータ作成、自動ピアノ・演奏ガイド機能付き鍵盤楽器向け演奏データの作成、楽譜出版・版下作成などがある。
【０００２】
【従来の技術】
音響信号に代表される時系列信号には、その構成要素として複数の周期信号が含まれている。このため、与えられた時系列信号にどのような周期信号が含まれているかを解析する手法は、古くから知られている。例えば、フーリエ解析は、与えられた時系列信号に含まれる周波数成分を解析するための方法として広く利用されている。
【０００３】
このような時系列信号の解析方法を利用すれば、音響信号を符号化することも可能である。コンピュータの普及により、原音となるアナログ音響信号を所定のサンプリング周波数でサンプリングし、各サンプリング時の信号強度を量子化してデジタルデータとして取り込むことが容易にできるようになってきており、こうして取り込んだデジタルデータに対してフーリエ解析などの手法を適用し、原音信号に含まれていた周波数成分を抽出すれば、各周波数成分を示す符号によって原音信号の符号化が可能になる。
【０００４】
一方、電子楽器による楽器音を符号化しようという発想から生まれたＭＩＤＩ（Musical Instrument Digital Interface）規格も、パーソナルコンピュータの普及とともに盛んに利用されるようになってきている。このＭＩＤＩ規格による符号データ（以下、ＭＩＤＩデータという）は、基本的には、楽器のどの鍵盤キーを、どの程度の強さで弾いたか、という楽器演奏の操作を記述したデータであり、このＭＩＤＩデータ自身には、実際の音の波形は含まれていない。そのため、実際の音を再生する場合には、楽器音の波形を記憶したＭＩＤＩ音源が別途必要になるが、その符号化効率の高さが注目を集めており、ＭＩＤＩ規格による符号化および復号化の技術は、現在、パーソナルコンピュータを用いて楽器演奏、楽器練習、作曲などを行うソフトウェアに広く採り入れられている。
【０００５】
そこで、音響信号に代表される時系列信号に対して、所定の手法で解析を行うことにより、その構成要素となる周期信号を抽出し、抽出した周期信号をＭＩＤＩデータを用いて符号化しようとする提案がなされている。例えば、特開平１０−２４７０９９号公報、特開平１１−７３１９９号公報、特開平１１−７３２００号公報、特開平１１−９５７５３号公報、特開２０００−９９００９号公報、特開２０００−９９０９２号公報、特開２０００−９９０９３号公報、特開２０００−２６１３２２号公報、特開２００１−５４５０号公報、特開２００１−１４８６３３号公報には、任意の時系列信号について、構成要素となる周波数を解析し、その解析結果からＭＩＤＩデータを作成することができる種々の方法が提案されている。
【０００６】
【発明が解決しようとする課題】
上記各公報または明細書において提案してきたＭＩＤＩ符号化方式により、演奏録音等から得られる音響信号の効率的な符号化が可能になった。従来の符号化方式では、特開平１１−９５７５３号公報において開示されているように、単位区間ごとに周波数解析を行って得られる音素（本明細書では、周波数とその周波数に対応する強度の組を音素と呼ぶことにする）を所定数に選別する手法をとっている。これは、通常のＭＩＤＩ音源では同時発音数が１６〜６４という制約があるため、解析により得られる音素をこれに合わせなければならないからである。そのため、各単位区間ごとに、その強度値を基準にして１６程度に選別を行っている。
【０００７】
しかしながら、このように単位区間ごとに選別を行うと、全体における音素の役割が考慮されていないため、音の立ち上がり、あるいは終了部分などのように、ある単位区間においては強度値が小さいが、重要な音の一部であるようなものでも削除されてしまうことになり、精度の良い符号化を行うことができない。
【０００８】
そこで、本出願人は、特願２００１−８７５０号明細書において、単位区間ごとに強度値の高い音素に１６程度の優先マークを付与しておき、その後、連続する区間の音素を連結して連結音素を得て、この連結音素を基に符号データを作成する手法について提案した。
【０００９】
この手法では、連結前の段階で同時発音数をある程度コントロールすることができ、上述のように、重要な音の一部を構成する音素を削除してしまうようなこともないが、連結後には、連結音素の同時刻における重複数が平均２倍程度に増加するため、指定した個数範囲に同時発音数を制限することができないという問題がある。
【００１０】
上記のような点に鑑み、本発明は、重要な音の一部を欠落させてしまうことなく、かつ、同時刻に重複する音素を同時発音可能な数に収めることが可能な音響信号の符号化方法を提供することを課題とする。
【００１１】
【課題を解決するための手段】
上記課題を解決するため、本発明では、与えられた音響信号に対して、時間軸上に複数の単位区間を設定し、設定された単位区間における音響信号と複数の周期関数との相関を求めることにより、各周期関数に対応した強度値を算出し、各周期関数が有する周波数と、前記各周期関数に対応した強度値と、単位区間の始点に対応する区間開始時刻と、単位区間の終点に対応する区間終了時刻で構成される単位音素データを算出し、この単位音素データの算出処理を全単位区間に対して行うことにより得られる全単位音素データから、強度値が所定値に達していないものを削除して、残りの単位音素データを有効な強度値を有する有効音素データとして抽出し、抽出された有効音素データに対して、周波数が同一であって、区間が連続するものを連結して連結音素データとし、連結音素データの属性として、強度値は構成する有効音素データの最大強度値を与え、開始時刻は先頭の有効音素データの区間開始時刻を与え、終了時刻は最後尾の有効音素データの区間終了時刻を与え、連結処理後の全音素データに対して、時間的に重複する音素データを探索し、前記時間的に重複する音素データ間において、その属性である周波数が他の音素データの周波数の整数倍になる音素データを削除し、削除後の音素データの集合により音響信号を表現するようにしたことを特徴とする。本発明によれば、音響信号に対して単位区間ごとに周波数解析を行なって、単位音素データを算出した後、連結処理を行い、連結処理後の音素データについて、時間的に重複する音素データを調べ、重複する音素データの属性である周波数が他の音素データの周波数の整数倍になる音素データを削除するようにしたので、重要な音の一部を欠落させてしまうことなく、かつ、同時刻に重複する音素を同時発音可能な数以下に収めることが可能となる。
【００１２】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００１３】
（音響信号符号化方法の基本原理）
はじめに、本発明に係る音響信号の符号化方法の基本原理を述べておく。この基本原理は、前掲の各公報あるいは明細書に開示されているので、ここではその概要のみを簡単に述べることにする。
【００１４】
図１（ａ）に示すように、時系列信号としてアナログ音響信号が与えられたものとする。図１の例では、横軸に時間ｔ、縦軸に振幅（強度）をとって、この音響信号を示している。ここでは、まずこのアナログ音響信号を、デジタルの音響データとして取り込む処理を行う。これは、従来の一般的なＰＣＭの手法を用い、所定のサンプリング周波数でこのアナログ音響信号をサンプリングし、振幅を所定の量子化ビット数を用いてデジタルデータに変換する処理を行えば良い。ここでは、説明の便宜上、ＰＣＭの手法でデジタル化した音響データの波形も図１（ａ）のアナログ音響信号と同一の波形で示すことにする。
【００１５】
続いて、この解析対象となる音響信号の時間軸上に、複数の単位区間を設定する。図１（ａ）に示す例では、時間軸ｔ上に等間隔に６つの時刻ｔ１〜ｔ６が定義され、これら各時刻を始点および終点とする５つの単位区間ｄ１〜ｄ５が設定されている。図１の例では、全て同一の区間長をもった単位区間が設定されているが、個々の単位区間ごとに区間長を変えるようにしてもかまわない。あるいは、隣接する単位区間が時間軸上で部分的に重なり合うような区間設定を行ってもかまわない。
【００１６】
こうして単位区間が設定されたら、各単位区間ごとの音響信号（以下、区間信号と呼ぶことにする）について、それぞれ代表周波数を選出する。各区間信号には、通常、様々な周波数成分が含まれているが、例えば、その中で成分の強度割合の大きな周波数成分を代表周波数として選出すれば良い。ここで、代表周波数とはいわゆる基本周波数が一般的であるが、音声のフォルマント周波数などの倍音周波数や、ノイズ音源のピーク周波数も代表周波数として扱うことがある。代表周波数は１つだけ選出しても良いが、音響信号によっては複数の代表周波数を選出した方が、より精度の高い符号化が可能になる。図１（ｂ）には、個々の単位区間ごとにそれぞれ３つの代表周波数を選出し、１つの代表周波数を１つの代表符号（図では便宜上、音符として示してある）として符号化した例が示されている。ここでは、代表符号（音符）を収容するために３つのトラックＴ１，Ｔ２，Ｔ３が設けられているが、これは個々の単位区間ごとに選出された３つずつの代表符号を、それぞれ異なるトラックに収容するためである。
【００１７】
例えば、単位区間ｄ１について選出された代表符号ｎ（ｄ１，１），ｎ（ｄ１，２），ｎ（ｄ１，３）は、それぞれトラックＴ１，Ｔ２，Ｔ３に収容されている。ここで、各符号ｎ（ｄ１，１），ｎ（ｄ１，２），ｎ（ｄ１，３）は、ＭＩＤＩ符号におけるノートナンバーを示す符号である。ＭＩＤＩ符号におけるノートナンバーは、０〜１２７までの１２８通りの値をとり、それぞれピアノの鍵盤の１つのキーを示すことになる。具体的には、例えば、代表周波数として４４０Ｈｚが選出された場合、この周波数はノートナンバーｎ＝６９（ピアノの鍵盤中央の「ラ音（Ａ３音）」に対応）に相当するので、代表符号としては、ｎ＝６９が選出されることになる。もっとも、図１（ｂ）は、上述の方法によって得られる代表符号を音符の形式で示した概念図であり、実際には、各音符にはそれぞれ強度に関するデータも付加されている。例えば、トラックＴ１には、ノートナンバーｎ（ｄ１，１），ｎ（ｄ２，１）・・・なる音高を示すデータとともに、ｅ（ｄ１，１），ｅ（ｄ２，１）・・・なる強度を示すデータが収容されることになる。この強度を示すデータは、各代表周波数の成分が、元の区間信号にどの程度の度合いで含まれていたかによって決定される。具体的には、各代表周波数をもった周期関数の区間信号に対する相関値に基づいて強度を示すデータが決定されることになる。また、図１（ｂ）に示す概念図では、音符の横方向の位置によって、個々の単位区間の時間軸上での位置が示されているが、実際には、この時間軸上での位置を正確に数値として示すデータが各音符に付加されていることになる。
【００１８】
音響信号を符号化する形式としては、必ずしもＭＩＤＩ形式を採用する必要はないが、この種の符号化形式としてはＭＩＤＩ形式が最も普及しているため、実用上はＭＩＤＩ形式の符号データを用いるのが好ましい。ＭＩＤＩ形式では、「ノートオン」データもしくは「ノートオフ」データが、「デルタタイム」データを介在させながら存在する。「ノートオン」データは、特定のノートナンバーＮとベロシティーＶを指定して特定の音の演奏開始を指示するデータであり、「ノートオフ」データは、特定のノートナンバーＮとベロシティーＶを指定して特定の音の演奏終了を指示するデータである。また、「デルタタイム」データは、所定の時間間隔を示すデータである。ベロシティーＶは、例えば、ピアノの鍵盤などを押し下げる速度（ノートオン時のベロシティー）および鍵盤から指を離す速度（ノートオフ時のベロシティー）を示すパラメータであり、特定の音の演奏開始操作もしくは演奏終了操作の強さを示すことになる。
【００１９】
前述の方法では、第ｉ番目の単位区間ｄｉについて、代表符号としてＪ個のノートナンバーｎ（ｄｉ，１），ｎ（ｄｉ，２），・・・，ｎ（ｄｉ，Ｊ）が得られ、このそれぞれについて強度ｅ（ｄｉ，１），ｅ（ｄｉ，２），・・・，ｅ（ｄｉ，Ｊ）が得られる。そこで、次のような手法により、ＭＩＤＩ形式の符号データを作成することができる。まず、「ノートオン」データもしくは「ノートオフ」データの中で記述するノートナンバーＮとしては、得られたノートナンバーｎ（ｄｉ，１），ｎ（ｄｉ，２），・・・，ｎ（ｄｉ，Ｊ）をそのまま用いれば良い。一方、「ノートオン」データもしくは「ノートオフ」データの中で記述するベロシティーＶとしては、得られた強度ｅ（ｄｉ，１），ｅ（ｄｉ，２），・・・，ｅ（ｄｉ，Ｊ）を所定の方法で規格化した値を用いれば良い。また、「デルタタイム」データは、各単位区間の長さに応じて設定すれば良い。
【００２０】
（周期関数との相関を求める具体的な方法）
上述した基本原理の基づく方法では、区間信号に対して、１つまたは複数の代表周波数が選出され、この代表周波数をもった周期信号によって、当該区間信号が表現されることになる。ここで、選出される代表周波数は、文字どおり、当該単位区間内の信号成分を代表する周波数である。この代表周波数を選出する具体的な方法には、後述するように、短時間フーリエ変換を利用する方法と、一般化調和解析の手法を利用する方法とがある。いずれの方法も、基本的な考え方は同じであり、あらかじめ周波数の異なる複数の周期関数を用意しておき、これら複数の周期関数の中から、当該単位区間内の区間信号に対する相関が高い周期関数を見つけ出し、この相関の高い周期関数の周波数を代表周波数として選出する、という手法を採ることになる。すなわち、代表周波数を選出する際には、あらかじめ用意された複数の周期関数と、単位区間内の区間信号との相関を求める演算を行うことになる。そこで、ここでは、周期関数との相関を求める具体的な方法を述べておく。
【００２１】
複数の周期関数として、図２に示すような三角関数が用意されているものとする。これらの三角関数は、同一周波数をもった正弦関数と余弦関数との対から構成されており、１２８通りの標準周波数ｆ（０）〜ｆ（１２７）のそれぞれについて、正弦関数および余弦関数の対が定義されていることになる。ここでは、同一の周波数をもった正弦関数および余弦関数からなる一対の関数を、当該周波数についての周期関数として定義することにする。すなわち、ある特定の周波数についての周期関数は、一対の正弦関数および余弦関数によって構成されることになる。このように、一対の正弦関数と余弦関数とにより周期関数を定義するのは、信号に対する周期関数の相関値を求める際に、相関値が位相の影響を受ける事を考慮するためである。なお、図２に示す各三角関数内の変数Ｆおよびｋは、区間信号Ｘについてのサンプリング周波数Ｆおよびサンプル番号ｋに相当する変数である。例えば、周波数ｆ（０）についての正弦波は、ｓｉｎ（２πｆ（０）ｋ／Ｆ）で示され、任意のサンプル番号ｋを与えると、区間信号を構成する第ｋ番目のサンプルと同一時間位置における周期関数の振幅値が得られる。
【００２２】
ここでは、１２８通りの標準周波数ｆ（０）〜ｆ（１２７）を図３に示すような式で定義した例を示すことにする。すなわち、第ｎ番目（０≦ｎ≦１２７）の標準周波数ｆ（ｎ）は、以下に示す〔数式１〕で定義されることになる。
【００２３】
〔数式１〕
ｆ（ｎ）＝４４０×２γ(n)
γ（ｎ）＝（ｎ−６９）／１２
【００２４】
このような式によって標準周波数を定義しておくと、最終的にＭＩＤＩデータを用いた符号化を行う際に便利である。なぜなら、このような定義によって設定される１２８通りの標準周波数ｆ（０）〜ｆ（１２７）は、等比級数をなす周波数値をとることになり、ＭＩＤＩデータで利用されるノートナンバーに対応した周波数になるからである。したがって、図２に示す１２８通りの標準周波数ｆ（０）〜ｆ（１２７）は、対数尺度で示した周波数軸上に等間隔（ＭＩＤＩにおける半音単位）に設定した周波数ということになる。
【００２５】
続いて、任意の区間の区間信号に対する各周期関数の相関の求め方について、具体的な説明を行う。例えば、図４に示すように、ある単位区間ｄについて区間信号Ｘが与えられていたとする。ここでは、区間長Ｌをもった単位区間ｄについて、サンプリング周波数Ｆでサンプリングが行なわれており、全部でｗ個のサンプル値が得られているものとし、サンプル番号を図示のように、０，１，２，３，・・・，ｋ，・・・，ｗ−２，ｗ−１とする（白丸で示す第ｗ番目のサンプルは、右に隣接する次の単位区間の先頭に含まれるサンプルとする）。この場合、任意のサンプル番号ｋについては、Ｘ（ｋ）なる振幅値がデジタルデータとして与えられていることになる。短時間フーリエ変換においては、Ｘ（ｋ）に対して各サンプルごとに中央の重みが１に近く、両端の重みが０に近くなるような窓関数Ｗ（ｋ）を乗ずることが通常である。すなわち、Ｘ（ｋ）×Ｗ（ｋ）をＸ（ｋ）と扱って以下のような相関計算を行うもので、窓関数の形状としては余弦波形状のハミング窓が一般に用いられている。ここで、ｗは以下の記述においても定数のような記載をしているが、一般にはｎの値に応じて変化させ、区間長Ｌを超えない範囲で最大となるＦ／ｆ（ｎ）の整数倍の値に設定することが望ましい。
【００２６】
このような区間信号Ｘに対して、第ｎ番目の標準周波数ｆ（ｎ）をもった正弦関数Ｒｎとの相関値を求める原理を示す。両者の相関値Ａ（ｎ）は、図５の第１の演算式によって定義することができる。ここで、Ｘ（ｋ）は、図４に示すように、区間信号Ｘにおけるサンプル番号ｋの振幅値であり、ｓｉｎ（２πｆ（ｎ）ｋ／Ｆ）は、時間軸上での同位置における正弦関数Ｒｎの振幅値である。この第１の演算式は、単位区間ｄ内の全サンプル番号ｋ＝０〜ｗ−１の次元について、それぞれ区間信号Ｘの振幅値と正弦関数Ｒｎの振幅ベクトルの内積を求める式ということができる。
【００２７】
同様に、図５の第２の演算式は、区間信号Ｘと、第ｎ番目の標準周波数ｆ（ｎ）をもった余弦関数との相関値を求める式であり、両者の相関値はＢ（ｎ）で与えられる。なお、相関値Ａ（ｎ）を求めるための第１の演算式も、相関値Ｂ（ｎ）を求めるための第２の演算式も、最終的に２／ｗが乗ぜられているが、これは相関値を規格化するためのものでり、前述のとおりｗはｎに依存して変化させるのが一般的であるため、この係数もｎに依存する変数である。
【００２８】
区間信号Ｘと標準周波数ｆ（ｎ）をもった標準周期関数との相関実効値は、図５の第３の演算式に示すように、正弦関数との相関値Ａ（ｎ）と余弦関数との相関値Ｂ（ｎ）との二乗和平方根値Ｅ（ｎ）によって示すことができる。この相関実効値の大きな標準周期関数の周波数を代表周波数として選出すれば、この代表周波数を用いて区間信号Ｘを符号化することができる。
【００２９】
すなわち、この相関値Ｅ（ｎ）が所定の基準以上の大きさとなる１つまたは複数の標準周波数を代表周波数として選出すれば良い。なお、ここで「相関値Ｅ（ｎ）が所定の基準以上の大きさとなる」という選出条件は、例えば、何らかの閾値を設定しておき、相関値Ｅ（ｎ）がこの閾値を超えるような標準周波数ｆ（ｎ）をすべて代表周波数として選出する、という絶対的な選出条件を設定しても良いが、例えば、相関値Ｅ（ｎ）の大きさの順にＱ番目までを選出する、というような相対的な選出条件を設定しても良い。
【００３０】
（一般化調和解析の手法）
ここでは、本発明に係る音響信号の符号化を行う際に有用な一般化調和解析の手法について説明する。既に説明したように、音響信号を符号化する場合、個々の単位区間内の区間信号について、相関値の高いいくつかの代表周波数を選出することになる。一般化調和解析は、より高い精度で代表周波数の選出を可能にする手法であり、その基本原理は次の通りである。
【００３１】
図６（ａ）に示すような単位区間ｄについて、信号Ｓ（ｊ）なるものが存在するとする。ここで、ｊは後述するように、繰り返し処理のためのパラメータである（ｊ＝１〜Ｊ）。まず、この信号Ｓ（ｊ）に対して、図２に示すような１２８通りの周期関数すべてについての相関値を求める。そして、最大の相関値が得られた１つの周期関数の周波数を代表周波数として選出し、当該代表周波数をもった周期関数を要素関数として抽出する。続いて、図６（ｂ）に示すような含有信号Ｇ（ｊ）を定義する。この含有信号Ｇ（ｊ）は、抽出された要素関数に、その振幅として、当該要素関数の信号Ｓ（ｊ）に対する相関値を乗じることにより得られる信号である。例えば、周期関数として図２に示すように、一対の正弦関数と余弦関数とを用い、周波数ｆ（ｎ）が代表周波数として選出された場合、振幅Ａ（ｎ）をもった正弦関数Ａ（ｎ）ｓｉｎ（２πｆ（ｎ）ｋ／Ｆ）と、振幅Ｂ（ｎ）をもった余弦関数Ｂ（ｎ）ｃｏｓ（２πｆ（ｎ）ｋ／Ｆ）との和からなる信号が含有信号Ｇ（ｊ）ということになる（図６（ｂ）では、図示の便宜上、一方の関数しか示していない）。ここで、Ａ（ｎ），Ｂ（ｎ）は、図５の式で得られる規格化された相関値であるから、結局、含有信号Ｇ（ｊ）は、信号Ｓ（ｊ）内に含まれている周波数ｆ（ｎ）をもった信号成分ということができる。
【００３２】
こうして、含有信号Ｇ（ｊ）が求まったら、信号Ｓ（ｊ）から含有信号Ｇ（ｊ）を減じることにより、差分信号Ｓ（ｊ＋１）を求める。図６（ｃ）は、このようにして求まった差分信号Ｓ（ｊ＋１）を示している。この差分信号Ｓ（ｊ＋１）は、もとの信号Ｓ（ｊ）の中から、周波数ｆ（ｎ）をもった信号成分を取り去った残りの信号成分からなる信号ということができる。そこで、パラメータｊを１だけ増加させることにより、この差分信号Ｓ（ｊ＋１）を新たな信号Ｓ（ｊ）として取り扱い、同様の処理を、パラメータｊをｊ＝１〜Ｊまで１ずつ増やしながらＪ回繰り返し実行すれば、Ｊ個の代表周波数を選出することができる。
【００３３】
このような相関計算の結果として出力されるＪ個の含有信号Ｇ（１）〜Ｇ（Ｊ）は、もとの区間信号Ｘの構成要素となる信号であり、もとの区間信号Ｘを符号化する場合には、これらＪ個の含有信号の周波数を示す情報および振幅（強度）を示す情報を符号データとして用いるようにすれば良い。尚、Ｊは代表周波数の個数であると説明してきたが、標準周波数ｆ（ｎ）の個数と同一すなわちＪ＝１２８であってもよく、周波数スペクトルを求める目的においてはそのように行うのが通例である。
【００３４】
こうして、各単位区間について、所定数の周波数群が選出されたら、この周波数群の各周波数に対応する「音の高さを示す情報」、選出された各周波数の信号強度に対応する「音の強さを示す情報」、当該単位区間の始点に対応する「音の発音開始時刻を示す情報」、当該単位区間に後続する単位区間の始点に対応する「音の発音終了時刻を示す情報」、の４つの情報を含む所定数の符号データを作成すれば、当該単位区間内の区間信号Ｘを所定数の符号データにより符号化することができる。符号データとして、ＭＩＤＩデータを作成するのであれば、「音の高さを示す情報」としてノートナンバーを用い、「音の強さを示す情報」としてベロシティーを用い、「音の発音開始時刻を示す情報」としてノートオン時刻を用い、「音の発音終了時刻を示す情報」としてノートオフ時刻を用いるようにすれば良い。
【００３５】
（本発明に係る音響信号の符号化方法）
ここまでに説明した従来技術とも共通する本発明の基本原理を要約すると、原音響信号に単位区間を設定し、単位区間ごとに複数の周波数に対応する信号強度を算出し、得られた信号強度を基に用意された周期関数を利用して１つまたは複数の代表周波数を選出し、選出された代表周波数に対応する音の高さ情報と、選出された代表周波数の強度に対応する音の強さ情報と、単位区間の始点に対応する発音開始時刻と、単位区間の終点に対応する発音終了時刻で構成される符号データを作成することにより、音響信号の符号化が行われていることになる。
【００３６】
本発明の音響信号符号化方法は、上記基本原理において、得られた信号強度を基に、用意された周期関数に対応する周波数を全て利用し、これら各周波数と、各周波数の強度と、単位区間の始点に対応する区間開始時刻と、単位区間の終点に対応する区間終了時刻で構成されるデータを「音素データ」と定義し、この音素データをさらに加工することにより最終的な符号化データを得るようにしたものである。
【００３７】
ここからは、本発明の音響信号符号化方法について、図７に示すフローチャートを用いて説明する。まず、音響信号の時間軸上の全区間に渡って単位区間を設定する（ステップＳ１）。このステップＳ１における手法は、上記基本原理において、図１（ａ）を用いて説明した通りである。
【００３８】
続いて、各単位区間ごとの音響信号、すなわち区間信号について、周波数解析を行って各周波数に対応する強度値を算出し、周波数、強度値、単位区間の始点、終点の４つの情報からなる単位音素データを算出する（ステップＳ２）。具体的には、図２に示したような１２８種の周期関数に対して区間信号の相関強度を求め、その周期関数の周波数、求めた相関強度、単位区間の始点、終点の４つの情報を「単位音素データ」と定義する。この単位音素データとは、音素データのうち、特に最初の単位区間において作成されたものとする。本実施形態では、上記基本原理で説明した場合のように、代表周波数を選出するのではなく、用意した周期関数全てに対応する単位音素データを取得する。このステップＳ２の処理を全単位区間に対して行うことにより、単位音素データ[ｍ，ｎ]（０≦ｍ≦Ｍ−１，０≦ｎ≦Ｎ−１）群が得られる。ここで、Ｎは周期関数の総数（上述の例ではＮ＝１２８）、Ｍは音響信号において設定された単位区間の総数である。つまり、Ｍ×Ｎ個の単位音素データからなる単位音素データ群が得られることになる。
【００３９】
単位音素データ群が得られたら、この単位音素データ群のうち、その強度値が所定値に達していない音素データを削除し、残った音素データを有効な強度値を有する有効音素データとして抽出する（ステップＳ３）。このステップＳ３において、強度値が所定値に達しない音素データを削除するのは、信号レベルがほとんど０であって、実際には音が存在していないと判断される音素を削除するためである。そのため、この所定値としては、音が実際に存在しないレベルとみなされる値が設定される。
【００４０】
このようにして有効音素データの集合である有効音素データ群が得られたら、同一周波数で時系列方向に連続する複数の有効音素データを１つの連結音素データとして連結する（ステップＳ４）。図８は有効音素データの連結を説明するための概念図である。図８（ａ）は連結前の音素データ群の様子を示す図である。図８（ａ）において、格子状に仕切られた各矩形は音素データを示しており、網掛けがされている矩形は、上記ステップＳ３において強度値が所定値に達しないために削除された音素データであり、その他の矩形は有効音素データを示す。ステップＳ４においては、同一周波数（同一ノートナンバー）で時間ｔ方向に連続する有効音素データを連結するため、図８（ａ）に示す有効音素データ群に対して連結処理を実行すると、図８（ｂ）に示すような複数の連結音素データ、複数の有効音素データからなる音素データ群が得られる。例えば、図８（ａ）に示した有効音素データＡ１、Ａ２、Ａ３は連結されて、図８（ｂ）に示すような連結音素データＡが得られることになる。このとき、新たに得られる連結音素データＡの周波数としては、有効音素データＡ１、Ａ２、Ａ３に共通の周波数が与えられ、強度値としては、有効音素データＡ１、Ａ２、Ａ３の強度値のうち最大のものが与えられ、開始時刻としては、先頭の有効音素データＡ１の区間開始時刻ｔ１が与えられ、終了時刻としては、最後尾の有効音素データＡ３の区間終了時刻ｔ４が与えられる。有効音素データ、連結音素データ共に、周波数（ノートナンバー）、強度値、開始時刻、終了時刻の４つの情報で構成されるため、３つの有効音素データが１つの連結音素データに統合されることにより、データ量は３分の１に削減される。このことは、最終的にＭＩＤＩ符号化される場合には、短い音符３つではなく、長い音符１つとして表現されることを意味している。また、図８（ａ）に示した有効音素データＢのように、同一周波数で時系列方向に連続する有効音素データがない場合には、図８（ｂ）に示すように、連結されずにそのまま残ることになるが、以降の処理においては、連結音素データも、連結されなかった単位区間長の有効音素データもまとめて「音素データ」として扱う。
【００４１】
続いて、各時刻ごとに重複している音素データの数を調べ、重複数が同時発音可能数より多い場合に調整処理を行う（ステップＳ５）。具体的な処理としては、まず、重複管理テーブルを用意し、この重複管理テーブルに、発音開始時刻順に音素データを登録していく。ここで、重複管理テーブルを用いた重複している音素データの調整処理を図９を用いて説明する。図９（ａ）は、音素データ群における音素データを開始時刻順に並べたものを示している。
【００４２】
図９（ａ）においては、各音素データについて、その開始時刻および終了時刻のみを示している。例えば、音素Ａは、時刻「０」に発音を開始して時刻「３」まで発音が持続することを示している。このような音素データ群に対して、時刻単位で重複管理テーブルに音素を登録していく。なお、以下の説明において、同時発音数は「４」に設定されているものとする。まず、発音開始時刻順に音素を重複管理テーブルに登録していく。同時発音数が「４」に設定されているため、図９（ｂ）に示すように、音素Ｄまでは、単純に重複管理テーブルに音素が登録されることになる。
【００４３】
音素Ｅが重複管理テーブルに登録されると、図９（ｃ）に示すように重複管理テーブルには５つの音素が並べられることになる。この場合、設定されている同時発音数「４」になるように、音素を１つ減らす処理を行う。具体的には、重複管理テーブルに登録されている５つの音素の中から優先度の低い音素を１つ選定し、選定された音素に対して変更を行うことになる。図９（ｃ）の例では、終了時刻が最も早い音素Ａと音素Ｂが候補となる。音素Ａと音素Ｂは終了時刻が「３」で同時であるため、その音素データの強度値が低い方に対して変更を行う。例えば、音素Ｂの強度値の方が低いとすると、図９（ｃ）に示すように音素Ｂの終了時刻を、新たに重複管理テーブルに登録された音素Ｅの開始時刻と同一の時刻「２」に変更する。重複管理テーブルにおいて、変更する音素データが決まったら、実際の音素データ群における音素データについても変更が行われる。また、変更により重複管理テーブル上の他の４つの音素と時間的に重複しなくなった音素Ｂは、重複管理テーブルより削除される。
【００４４】
次の音素データである音素Ｆが重複管理テーブルに登録されると、図９（ｄ）に示すように重複管理テーブルには、また５つの音素が登録されることになる。終了時刻が最も早い音素Ａが特定できるので、音素Ａの終了時刻を、新たに重複管理テーブルに登録された音素Ｆの開始時刻と同一の時刻「２」に変更する。同時に、音素データ群における音素データも変更される。この時点で、音素データ群における音素データの様子は、図９（ｅ）に示すようになる。図９（ａ）の重複調整処理を行う前と、図９（ｅ）の重複調整処理を行った後を比較するとわかるように、音素Ａと音素Ｂの終了時刻が変更されている。また、重複管理テーブルにおいては、音素Ａが削除され、次の音素が重複管理テーブルに登録されて、上述のような処理が繰り返されることになる。上記のような重複音素の調整処理を、音素データ群内の全ての音素データに対して行うことにより、全ての時刻において、設定された同時発音数を超えない音素データ群が得られることになる。
【００４５】
ここで、上記ステップＳ５における重複音素の調整処理について、図１０に示すフローチャートを用いて整理して説明する。まず、音素データ群の音素データを開始時刻順に重複管理テーブルに１つ登録する（ステップＳ１１）。続いて、新たに登録した音素データの開始時刻までに終了する音素データを重複管理テーブルから削除する（ステップＳ１２）。ここで、重複管理テーブル上に並べられた音素データの数が制限値ｎを超えたかどうかを判断する（ステップＳ１３）。この制限数ｎとしては、通常は、ＭＩＤＩ規格の同時発音可能数である１６程度が設定される。重複管理テーブル上に登録された音素数がｎ以下の場合には、ステップＳ１１に戻って処理を繰り返す。図９を用いて説明した例は、ｎ＝４の場合であり、図９（ｃ）に示すように重複管理テーブル上の音素数が５になるまで、ステップＳ１１からステップＳ１３の処理が繰り返されたことになる。
【００４６】
ステップＳ１３において、重複管理テーブル上に登録された音素数がｎを超えたと判断された場合には、重複管理テーブル上に登録されているｎ＋１個の音素の中から優先度の低い音素を選定する（ステップＳ１４）。図９を用いて説明した例では、図９（ｃ）に示したように音素数が５となった場合に、音素Ｂが最も優先度が低いものとして選定される。優先度は、図９の例では、その強度値を基に決定されている。
【００４７】
優先度が最も低い音素が選定されたら、選定された音素の終了時刻を変更するか、もしくは選定された音素自体を削除する（ステップＳ１５）。基本的には、音素の終了時刻の変更が優先される。具体的には、選定された音素の終了時刻を、新たに重複管理テーブルに登録された音素の開始時刻と同一になるように変更することになる。これにより、選定された音素と新たに登録された音素との時間的な重複がなくなり、設定された制限数を超えないことになる。図９を用いて説明した例では、図９（ｃ）に示すように音素Ｂの終了時刻が、新たに重複管理テーブルに登録された音素Ｅの開始時刻「２」と同一になるように変更され、図９（ｄ）に示すように音素Ａの終了時刻が、新たに重複管理テーブルに登録された音素Ｆの開始時刻「２」と同一になるように変更されている。音素自体を削除する場合とは、音素の終了時刻を変更することにより、音素自体がなくなってしまうような場合である。例えば、開始時刻が「１」で終了時刻が「２」の音素について、終了時刻を変更すると、終了時刻も「１」となり、音の発音時間は「０」となる。このような場合は、データが存在していても意味がないので、その音素自体を削除するのである。上記ステップＳ１１〜ステップＳ１５の処理を全音素、すなわち音素データ群に存在する全ての音素データについて行ったら、処理を終了する（ステップＳ１６）。
【００４８】
図１０のフローチャートに示した手順により、ステップＳ５の処理が終了したら、そのままＭＩＤＩ形式の符号データに符号化しても良いが、本実施形態では、データ量の削減のため、音素データの総数の調整を行う（ステップＳ６）。具体的には、音素データ群における音素データの総数が、設定された数を超えている場合、重要度の低い音素を削除することにより、音素データの総数を所定内に収める。本実施形態では、優先度として、各音素データの（終了時刻−開始時刻）×強度値、により算出される値を採用する。すなわち、この値が低いものを順次削除していくことになる。音素データの総数の調整が行われたら、ＭＩＤＩ形式に符号化を行う（ステップＳ７）。
【００４９】
（倍音成分の除去処理）
上記のような本発明に係る符号化方法により、重要な音の一部を欠落させることなく、また、同時刻に重複する音素を同時発音可能な数に収めることが可能となるが、本発明においては、その手法の特徴から、倍音成分の除去処理を行うことも可能である。倍音とは、本来の音である基本音の周波数の整数倍の周波数を有する音であり、この倍音成分をそのまま符号化してしまうと、本来の音を正確に再現できないことになる。倍音成分は、上記〔数式１〕に示した関係からＭＩＤＩノートナンバーでいえば、基本音の＋１２、＋１９、＋２４、＋２８、＋３１、・・・といった値をとるものとなる。
【００５０】
次に、倍音成分の除去処理を行う場合について説明する。具体的には、上記ステップＳ５において重複音素の処理を行う際に、重複管理テーブルに登録された複数の音素の中で、一方の音素の周波数が、他の音素の周波数の整数倍となっているような関係があるかどうかを調べる。そのような関係が発見されたら、周波数が高い方の音素の強度値の、周波数が低い方の音素（基本音と考えられる）の強度値に対する比率を算出する。この比率が所定の値以下である場合、周波数が高い方の音素を、倍音であると判断して削除する。強度値の比率が所定値以下でない場合は、その音素は倍音成分でなく、基本音である可能性が高いので、削除は行わない。
【００５１】
以上、本発明の好適な実施形態について説明したが、上記符号化方法は、コンピュータ等で実行されることは当然である。具体的には、図７および図１０のフローチャートに示したようなステップを上記手順で実行するためのプログラムをコンピュータに搭載しておく。そして、音響信号をＰＣＭ方式等でデジタル化した後、コンピュータに取り込み、ステップＳ１〜ステップＳ６、およびステップＳ１１〜ステップＳ１６の処理を行った後、ＭＩＤＩ形式等の符号データをコンピュータより出力する。出力された符号データは、例えば、ＭＩＤＩデータの場合、ＭＩＤＩシーケンサ、ＭＩＤＩ音源を用いて音声として再生される。また、上記重複管理テーブルは、コンピュータ内のＲＡＭ等の所定の記憶領域を割り当てることにより実現される。
【００５２】
【発明の効果】
以上、説明したように本発明によれば、与えられた音響信号に対して、時間軸上に複数の単位区間を設定し、設定された単位区間における音響信号と複数の周期関数との相関を求めることにより、各周期関数に対応した強度値を算出し、各周期関数が有する周波数と、前記各周期関数に対応した強度値と、単位区間の始点に対応する区間開始時刻と、単位区間の終点に対応する区間終了時刻で構成される単位音素データを算出し、この単位音素データの算出処理を全単位区間に対して行うことにより得られる全単位音素データから、強度値が所定値に達していないものを削除して、残りの単位音素データを有効な強度値を有する有効音素データとして抽出し、抽出された有効音素データに対して、周波数が同一であって、区間が連続するものを連結して連結音素データとし、連結音素データの属性として、強度値は構成する有効音素データの最大強度値を与え、開始時刻は先頭の有効音素データの区間開始時刻を与え、終了時刻は最後尾の有効音素データの区間終了時刻を与え、連結処理後の全音素データに対して、時間的に重複する音素データを探索し、前記時間的に重複する音素データ間において、その属性である周波数が他の音素データの周波数の整数倍になる音素データを削除し、削除後の音素データの集合により音響信号を表現するようにしたので、重要な音の一部を欠落させてしまうことなく、かつ、同時刻に重複する音素を同時発音可能な数以下に収めることが可能となるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の音響信号の符号化方法の基本原理を示す図である。
【図２】本発明で利用される周期関数の一例を示す図である。
【図３】図２に示す各周期関数の周波数とＭＩＤＩノートナンバーｎとの関係式を示す図である。
【図４】解析対象となる信号と周期信号との相関計算の手法を示す図である。
【図５】図４に示す相関計算を行うための計算式を示す図である。
【図６】一般化調和解析の基本的な手法を示す図である。
【図７】本発明の音響信号符号化方法のフローチャートである。
【図８】有効音素データの連結を説明するための概念図である。
【図９】音素データ群および重複管理テーブルの様子を示す図である。
【図１０】図７のステップＳ５の詳細を示すフローチャートである。
【符号の説明】
Ａ（ｎ），Ｂ（ｎ）・・・相関値
ｄ，ｄ１〜ｄ５・・・単位区間
Ｅ（ｎ）・・・相関値
Ｇ（ｊ）・・・含有信号
ｎ，ｎ１〜ｎ６・・・ノートナンバー
Ｓ（ｊ），Ｓ（ｊ＋１）・・・差分信号
Ｘ，Ｘ（ｋ）・・・区間信号
【図１】
0004697919.tif 000002
【図２】
0004697919.tif 000003
【図３】
0004697919.tif 000004
【図４】
0004697919.tif 000005
【図５】
0004697919.tif 000006
【図６】
0004697919.tif 000007
【図７】
0004697919.tif 000008
【図８】
0004697919.tif 000009
【図９】
0004697919.tif 000010
【図１０】
0004697919.tif 000011