説明

音高認識方法、音高認識プログラム、記録媒体、及び音高認識システム

【課題】和音を含む音楽から、和音の構成音数に依存せずに音高を認識することができる音高認識方法、音高認識プログラム、及び音高認識システムを提供する。
【解決手段】音の倍音構造に着目し、それぞれの音高が持つ倍音をそのまま比較することによって、和音の構成音数に依存せずに音高を認識することができる音高認識方法、音高認識プログラム、及び音高認識システムとする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、和音を含む音楽から、和音の構成音数に依存せずに発音音高を認識することができる音高認識方法、音高認識プログラム、該プログラムを記録した記録媒体、及び該プログラムを実行する音高認識システムに関する。
【背景技術】
【0002】
音楽から楽譜を作成(採譜)するには、音楽的知識が必要である。また、専門家であったとしても、膨大な時間を要する。楽音(音楽の音響信号)から採譜するためには、発音されている音の音高(基本周波数)と音符長(発音継続時間)を検出する必要がある。単音の楽音については、基本周波数や音符長を認識できる技術がこれまでに実用されている。しかしながら、和音を含む楽音を認識することは困難であった。和音の場合は、ある音高の倍音(高調波)の周波数が他の音高や他の音高の倍音と近い値となり、発音されている音を単に振幅とその周波数とから推定するだけでは、いずれの音が発音されているのかを認識することが困難になる場合があるためである。例えば、単音C2(ド、131Hz)であれば、第3倍音がG3(ソ、392Hz)、第5倍音がE4(ミ、654Hz)に近い値となり、これらの音が同時に発音された場合には、それぞれを別々に認識することが非常に困難であった。
【0003】
これまでに開示されている音高認識に関する技術としては、例えば、音高ごとにスペクトルのテンプレートを利用するもの、倍音のパワーの総和で比較するもの(例えば、特許文献1)、倍音を除去して処理を行うもの(例えば、特許文献2)など多くの技術が提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−33479号公報
【特許文献2】特開2000−293188号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、これまでに提案されている技術は、和音の構成音数が多い場合には適さなかった。そこで、本発明者らは、鋭意検討を重ねた結果、音の倍音構造に着目し、それぞれの音高が持つ倍音をそのまま比較することによって、和音の構成音数に依存せずに発音音高を認識することができることを見出した。
【0006】
本発明は、和音を含む音楽から、和音の構成音数に依存せずに発音音高を認識することができる音高認識方法、音高認識プログラム、該プログラムを記録した記録媒体、及び該プログラムを実行できる音高認識システムを提供することを課題とする。
【課題を解決するための手段】
【0007】
第一の本発明は、和音を含む音楽に含まれる音の音高を認識できる音高認識方法であって、
(1)音楽のデジタル信号を所定の長さ分切り出して、周波数毎の音量データに変換した解析フレームを設定する、フレーム設定工程と、
(2)解析フレーム内の周波数スペクトルについて、振幅が閾値VT1より大きく、かつ、振幅が閾値VT2より大きい倍音を連続して所定数以上有するピークの周波数を、低い周波数側から検索して発音音高候補として抽出する、発音候補検出工程と、
(3)最初の発音候補検出工程で抽出した発音音高候補を根音とする1オクターブ内において発音候補検出工程を繰り返す、第2候補検出工程と、
(4)ピークを検索する検索範囲の周波数をオクターブ単位で上げつつ、1オクターブ内で発音候補検出工程を繰り返すことを、検索範囲が所定の解析予定上限値を超えるまで繰り返す、第3候補検出工程と、
(5)全ての発音候補検出工程で抽出された発音音高候補のうち周波数の高い側から選択した発音音高候補である高音発音音高候補の基本周波数の1オクターブ以下にある発音音高候補の中に、高音発音音高候補の基本周波数と重なる周波数の倍音を持つ発音音高候補である低音発音音高候補があれば、高音発音音高候補の複数の倍音の振幅を、全ての低音発音音高候補の複数の倍音の振幅と比較し、高音発音音高候補の倍音の振幅が高音発音音高候補の倍音の間に存在する低音発音音高候補の倍音の振幅よりも大きければ、高音発音音高候補を発音音高として抽出する、発音音高抽出工程と、
(6)全ての発音候補検出工程で抽出された発音音高候補から、これまでの工程で発音音高として抽出された発音音高候補の基本周波数および倍音の周波数に重なる発音音高候補を除きつつ、比較できる発音音高候補がなくなるまで発音音高抽出工程を繰り返す、第2発音音高抽出工程と、
(7)解析フレームの設定回数が所定の回数に達するまで、フレーム設定工程で既に設定した解析フレームに対して所定量ずらした位置から音楽のデジタル信号を切り出して新たな解析フレームを設定し、発音候補検出工程、第2候補検出工程、第3候補検出工程、発音音高抽出工程、及び第2発音音高抽出工程を実行することを繰り返す、解析フレーム設定回数判定工程と、
(8)所定数以上の解析フレームで連続して抽出された発音音高を実際に発音されていた発音音高であると認識する、発音音高認識工程と、
を備える音高認識方法を提供することによって、上記課題を解決する。
【0008】
上記第一の本発明の音高認識方法において、さらに、発音音高認識工程によって認識された発音音高の発音時刻及び継続時間を検出する発音時間検出工程を備えることが好ましい。また、利用者が入力した最小の音符長を基に、発音時間検出工程で得た継続時間から音符長を決定する音符長決定工程を備えることが好ましい。また、発音音高認識工程で実際に発音されていた発音音高であると認識された発音音高と、音符長決定工程で決定された音符長から楽譜を作成する楽譜作成工程を備えることが好ましい。また、楽譜作成工程で作成された楽譜を確認しながら修正する修正工程を備えることが好ましい。
【0009】
第二の本発明は、和音を含む音楽に含まれる音の音高を認識できる音高認識システムに実装される音高認識プログラムであって、
(1)音楽のデジタル信号を所定の長さ分切り出して、周波数毎の音量データに変換した解析フレームを設定する、フレーム設定処理と、
(2)解析フレーム内の周波数スペクトルについて、振幅が閾値VT1より大きく、かつ、振幅が閾値VT2より大きい倍音を連続して所定数以上有するピークの周波数を、低い周波数側から検索して発音音高候補として抽出する、発音候補検出処理と、
(3)最初の発音候補検出処理で抽出した発音音高候補を根音とする1オクターブ内において発音候補検出処理を繰り返す、第2候補検出処理と、
(4)ピークを検索する検索範囲の周波数をオクターブ単位で上げつつ、1オクターブ内で発音候補検出処理を繰り返すことを、検索範囲が所定の解析予定上限値を超えるまで繰り返す、第3候補検出処理と、
(5)全ての発音候補検出処理で抽出された発音音高候補のうち周波数が高い側から選択した発音音高候補である高音発音音高候補の基本周波数の1オクターブ以下にある発音音高候補の中に、高音発音音高候補の基本周波数と重なる周波数の倍音を持つ発音音高候補である低音発音音高候補があれば、高音発音音高候補の複数の倍音の振幅を、全ての低音発音音高候補の複数の倍音の振幅と比較し、高音発音音高候補の倍音の振幅が高音発音音高候補の倍音の間に存在する低音発音音高候補の倍音の振幅よりも大きければ、高音発音音高候補を発音音高として抽出する、発音音高抽出処理と、
(6)全ての発音候補検出処理で抽出された発音音高候補から、これまでの処理で発音音高として抽出された発音音高候補の基本周波数および倍音の周波数に重なる発音音高候補を除きつつ、比較できる発音音高候補がなくなるまで発音音高抽出工程を繰り返す、第2発音音高抽出処理と、
(7)解析フレームの設定回数が所定の回数に達するまで、フレーム設定処理で既に設定した解析フレームに対して所定量ずらした位置から音楽のデジタル信号を切り出して新たな解析フレームを設定し、発音候補検出処理、第2候補検出処理、第3候補検出処理、発音音高抽出処理、及び第2発音音高抽出処理を実行することを繰り返す、解析フレーム設定回数判定処理と、
(8)所定数以上の解析フレームで連続して抽出された発音音高を実際に発音されていた発音音高であると認識する、発音音高認識処理と、
を音高認識システムに実行させる音高認識プログラムを提供することによって、上記課題を解決する。
【0010】
上記第二の本発明の音高認識プログラムにおいて、発音音高認識処理によって認識された発音音高の発音時刻及び継続時間を検出する発音時間検出処理を、音高認識システムに実行させられることが好ましい。また、利用者が入力した最小の音符長を基に、発音時間検出処理で得た継続時間から音符長を決定する音符長決定処理を、音高認識システムに実行させられることが好ましい。また、発音音高認識処理で実際に発音されていた発音音高であると認識された発音音高と、音符長決定処理で決定された音符長から楽譜を作成する楽譜作成処理を、音高認識システムに実行させられることが好ましい。また、楽譜作成処理で作成された楽譜を確認しながら修正する修正処理を、音高認識システムに実行させられることが好ましい。
【0011】
第三の本発明は、第二の本発明の音高認識プログラムを記録した記録媒体を提供することによって、上記課題を解決する。
【0012】
第四の本発明は、音楽のデジタル信号を入力できる入力部と、第二の本発明の音高認識プロフラムを実行できる処理部と、該処理部での処理結果を表示できる表示部と、を備える、音高認識システムを提供することによって、上記課題を解決する。
【発明の効果】
【0013】
本発明によれば、和音を含む音楽から、和音の構成音数に依存せずに該音楽に含まれる発音音高を認識することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の音高認識方法に備えられる工程を概略的に示すフローチャートである。
【図2】発音候補検出工程S2の流れの一例を概略的に示すフローチャートである。
【図3】横軸を周波数とし、縦軸を音の大きさとした解析フレームの一例を概略的に示す図である。
【図4】第3候補検出工程S4の流れの一例を概略的に示すフローチャートである。
【図5】発音音高候補抽出工程S5の流れの一例を概略的に示すフローチャートである。
【図6】第2発音音高候補抽出工程S6の流れの一例を概略的に示すフローチャートである。
【図7】本発明の音高認識システムの構成を概略的に示すブロック図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態について、図面を参照しつつ説明する。本発明は、音の倍音構造に着目し、それぞれの音高が持つ倍音をそのまま比較することによって、和音の構成音数に依存せずに発音音高を認識することができる音高認識方法、音高認識システム、該システムに備えられるコンピュータを制御するコンピュータプログラム、及び該プログラムを記録した記録媒体を提供する。なお、本発明は、鍵盤楽器(ピアノなど)、ギターなどの振幅の立ち上がりが比較的早い楽器音に対して好適に用いることができる。楽音の解析には、短時間フーリエ変換(STFT)による時間−周波数解析を用いた。
【0016】
<音高認識方法>
図1は、本発明の音高認識方法に備えられる工程を概略的に示すフローチャートである。本発明の音高認識方法は、和音を含む音楽に含まれる音の音高を認識できる方法であって、フレーム設定工程S1、発音候補検出工程S2、第2候補検出工程S3、第3候補検出工程S4、発音音高抽出工程S5、第2発音音高抽出工程S6、解析フレーム設定回数判定工程S7、及び発音音高認識工程S8を備えており、さらに、発音時間検出工程S9、音符長決定工程S10、楽譜作成工程S11、及び修正工程S12のうち少なくともいずれか1つを備えていることが好ましい。特に、音符長決定工程S10は発音時間検出工程S9より後に、楽譜作成工程S11は音符長決定工程S10より後に、修正工程S12は楽譜作成工程S11より後に行われることが好ましい。以下、各工程について説明する。
【0017】
(フレーム設定工程S1)
工程S1は、認識する対象である音楽のデジタル信号を所定の長さ分切り出して、周波数毎の音量データに変換した解析フレームを設定する工程である。
【0018】
音楽のデジタル信号を切り出す長さ(以下、「フレーム長」ということがある。)は特に限定されないが、フレーム長を長くした場合、周波数分解能は良くなるが、時間分解能が悪くなる。一方、短くした場合、時間分解能は良くなるが、周波数分解能が悪くなる。最適なフレーム長は、対象となる楽音の最低音高、テンポ、および最小音符長に応じて、適宜、決定することができる。例えば、最低検索周波数A1(55Hz)とE1(82.4Hz)が同時に発音されたときに区別できるように(一般的な音楽では、十分な分解能であると考えられる。)、また最大テンポを150(1分間に4分音符を150拍)とした場合に16分音符を検出できるようにするためには、サンプリング周波数44.1kHz以上、フレーム長を100msとし(ハニング窓を使用)、後に説明するフレーム周期(解析フレームをずらす時間)を10msとすることができる。
【0019】
(発音候補検出工程S2)
工程S2は、工程S1で設定した解析フレーム内の周波数スペクトルについて、振幅が閾値VT1より大きく、かつ、振幅が閾値VT2より大きい倍音を連続して所定数以上有するピークの周波数を低い周波数側から検索して発音音高候補として抽出する工程である。
【0020】
解析フレーム内には複数のピークが現れ、それらの中にはノイズも含まれている。適当な閾値を設け、該閾値を超えるもののみ検出することによって、該閾値以下のものをノイズとして無視することができる。なお、閾値VT1は、楽音の中の最小振幅の音高を検出できるように設定すればよい。また、閾値VT1、及び閾値VT2の大きさは楽音に応じて適宜決定することができる。すなわち、閾値は、取り込んだ楽音、あるいは処理系のSNR(信号対雑音比)と関係する。例えば、閾値VT1を最大振幅値の1/10(−20dB)として、閾値VT2を1/50(−34dB)や1/100(−40dB)などとすることができる。工程S2の具体的な流れの一例を図2に示す。
【0021】
図2に示すように、工程S2では、閾値VT1より大きい振幅のピークの周波数を低い周波数側から検出し(S21)、検出した周波数の倍音の有無を調べ、閾値VT2を超える振幅の倍音が連続して所定数以上あるかを判定する(S22)。「倍音が連続して所定数以上ある」とは、S21において検出された周波数を基本周波数として、その基本周波数の2次、3次、…の高調波のピークが連続して存在していることを意味する。例えば、図3に示すように、S21において閾値VT1を超えるピークとしてピークfc2が検出された場合、その高調波である2fc2、3fc2などの存在を確認する。図3は、横軸を周波数とし、縦軸を音の大きさとした解析フレームの一例を概略的に示す図である。図3に示した例では、2次高調波2fc2、3次高調波3fc2、4次高調波4fc2、5次高調波5fc2、及び6次高調波6fc2を確認することができる。
【0022】
S21においてピークを検出する具体的な方法は特に限定されないが、例えば、平均律などの音律を利用して、音高毎のピークの検出周波数範囲を決めておき、その範囲内に閾値VT1より大きい振幅のピークがあるかを確認する方法を考えられる。すなわち、ある音高について、隣り合う音高との中間の周波数の間に閾値VT1より大きい振幅のピークがあるかを確認する。平均律の場合、音高は下記式(1)で表される。
【0023】
【数1】

はA4(ラ、440Hz)を基準に決められる。本発明では、境界の周波数を下記式(2)で決めることができる。
【0024】
【数2】

C2(ド、130.8Hz)であれば、A2を基準とするとf=110Hzなので、127.1〜134.6Hz(
【0025】
【数3】

)内のピークを探す。
【0026】
音律が明らかな場合は、上記のようにして、音律に合わせて音高毎の検出周波数範囲を決め、低い周波数側からピークを検出することができる。現在のポピュラー音楽は平均律であり、上記のような方法を用いれば、音階の決定が容易になる。一方、音律が不明な場合は周波数範囲を決められないため、適当な周波数範囲に細かく分割してその範囲内に閾値VT1より大きい振幅のピークがあるかを確認する方法や、周波数範囲を設定しないで閾値VT1より大きい振幅のピークを検出する方法を考えられる。なお、S22での倍音の有無の確認は、S21で検出した基本周波数の整数倍の周波数付近のピークの有無を確認することによって行うことができる。
【0027】
このようにして倍音の存在を確認するのは、S21で検出した周波数が他の音高の倍音であるのかどうかを確認するためである。ほとんどの楽器の音は波形が複雑であり、必ず倍音が存在する(楽器によってその包絡線が異なる。これは、音色と関係する)。S21で検出したピークの倍音が連続して存在することを確認することによって、そのピークの音を発音音高候補とすることができる。倍音が連続ではなく、ある倍音にのみピークが存在したとすると、それは発音音高ではなく、ある倍音の周波数で別の音高の音が発音されていると考えられるからである。確認できる倍音数は、基本周波数が低い音では多いが、高い音になると減衰が大きくなり、確認できる倍音数が減っていく。確認する倍音の数は特に限定されないが、確認する数が少なければ工程S2で検出したピークが他の音高の倍音である可能性を排除しきれない虞があり、確認する数が多すぎれば処理に時間がかかることになる。
【0028】
S22において閾値VT2を超える振幅の倍音を所定数以上確認できなかった場合(S22NO)、振幅が閾値VT1より大きい他のピークを周波数が低い側から検索し、そのピークの周波数を検出する(S21)。その後、検出した周波数について倍音の有無を調べ、閾値VT2を超える振幅の倍音が連続して所定数以上あるかを判定する(S22)。
【0029】
S22において閾値VT2を超える振幅の倍音を所定数以上確認できた場合(S22YES)、その周波数を発音音高候補とする(S23)。ここで発音音高「候補」とするのは、実際に発音された発音音高であるという認識は、後の工程で行うためである。発音音高候補を決定(S23)した後、工程S2を終了し、工程S3に移る。
【0030】
(第2候補検出工程S3)
工程S3は、工程S1で設定した解析フレーム内の周波数スペクトルについて最初の工程S2を実行した後、最初の工程S2で検出した発音音高候補を根音とする1オクターブ内において工程S2を繰り返す工程である。
【0031】
工程S3では、上記したように工程S2を繰り返す。したがって、まず、振幅が閾値VT1よりも大きなピークを検出する(S21)。ノイズ(および既検出音の小さい振幅を持つ倍音)を無視するためである。その後、検出した周波数について倍音の有無を調べ、閾値VT2を超える振幅の倍音が連続して所定数以上あるかを判定し(S22)、発音音高候補を決定する(S23)。このように、工程S3では、最初の工程S2で検出した発音音高候補を根音とする1オクターブ内において工程S2を繰り返すことにより、振幅が閾値VT1より大きく、かつ、振幅が閾値VT2より大きい倍音を連続して所定数以上有するという条件を満たすピークの周波数を、該1オクターブ内から全て検出することができる。なお、複数回行われる工程S2で用いる閾値は、同じ値とすることによって処理を簡略化することができる。
【0032】
最初の工程S2では、発音音高である可能性がある周波数のうち、基本周波数が最も低いものを発音音高候補として検出している。すなわち、最初の工程S2で検出された発音音高候補より低い基本周波数の発音音高はないと考えられる。したがって、最初の工程S2で検出された発音音高候補を根音とする1オクターブ内には、倍音は存在しないと考えられ、その範囲で工程S2を繰り返すことによって、誤って他の発音音高の倍音を検出することを抑制しつつ、発音音高の基本周波数を検出することができる。
【0033】
(第3候補検出工程S4)
工程S4は、工程S1で設定した解析フレーム内の周波数スペクトルについて工程S3を実行した後、ピークを検索する検索範囲の周波数をオクターブ単位で上げつつ、1オクターブ内で工程S2を繰り返すことを、検索範囲が所定の解析予定上限値を超えるまで繰り返す工程である。工程S4の具体的な流れの一例を図4に示す。
【0034】
工程S4では、工程S3の後、まず、ピークを検索する検索範囲の周波数を1オクターブ上げる(S41)。S41において検索範囲を変更したのち、その1オクターブ内において工程S2を繰り返し、発音音高候補を検出する(S42)。すなわち、S42は工程S3と同様の工程である。1オクターブ内において発音音高候補を全て検出した後は、S42での検索範囲の上限が解析予定上限値を超えているかどうかの判定を行う(S43)。「解析予定上限値」とは、工程S4においてどの周波数までピークの検索を行うかを決める値である。すなわち、発音音高の基本周波数の検索範囲を決める値である。発音音高の基本周波数の検出範囲は、使用する楽器の音階の範囲とすれば、処理量を最小にすることができる。なお、88鍵ピアノのA1〜C8(55〜8,372Hz)に対応させる場合には、サンプリング周波数96kHz以上で楽音を取り込む必要がある。現在のCDやDATなどで使用されているサンプリング周波数44.1あるいは48kHz(上限周波数を約20kHz)に合わせるとすれば、6倍音を検出する場合、検出範囲はA1〜A7になる。
【0035】
S43においてS42での検索範囲の上限が解析予定上限値を超えているかどうかの判定を行い、S42での検索範囲の上限が解析予定上限値より低い周波数である場合(S43NO)は、検索範囲を1オクターブ上げ(S41)、再度S42を行う。S43においてS42での検索範囲の上限が解析予定上限値以上であることが確認された場合(S43YES)は、工程S4を終了する。
【0036】
(発音音高抽出工程S5)
工程S5は、全ての工程S2(すなわち、最初の工程S2、工程S3及び工程S4で繰り返される工程S2。)で検出された発音音高候補のうち周波数が高い側から選択した発音音高候補である高音発音音高候補(すなわち、最初の工程S5では、最も高い基本周波数を持つ発音音高候補。)の基本周波数の1オクターブ以下にある発音音高候補の中に、高音発音音高候補の基本周波数と重なる周波数の倍音を持つ発音音高候補である低音発音音高候補があれば、高音発音音高候補の複数の倍音の振幅を、全ての低音発音音高候補の複数の倍音の振幅と比較し、高音発音音高候補の倍音の振幅が高音発音音高候補の倍音の間に存在する低音発音音高候補の倍音の振幅よりも大きければ、高音発音音高候補を発音音高として抽出する工程である。なお、「重なる」周波数とは、厳密に一致する周波数のみを意味するのではなく、ほぼ同じとみなせる周波数を含む意味であり、解析条件によって分離できずに1つのピークとして検出される周波数も含まれる。例えば、サンプリング周波数44.1kHz、フレーム長100msのハニング窓で波形を切り出し、16,384点FFTで行った場合、10Hz程度の差であれば、1つのピークとして(重なって)検出される場合がある。
【0037】
工程S5及び以下に説明する工程S6では、基本周波数が高い発音音高候補から順に、その発音音高候補の1オクターブ以下で発音音高候補とされている音高の周波数スペクトルと比較して、発音音高を決定する工程である。例えば、1オクターブ異なる2つの音高のうち高い音高の倍音の周波数は、低い音高の倍音と一致する。また、楽器音によっては、第2倍音の方が基本周波数の振幅より大きい場合もある。このような音が同時に発音された場合、これまでの工程S2だけでは実際に発音されている音高とその他の音高の倍音とを識別することがでない。そのため、以下に説明するように、高次の倍音の振幅で比較する。工程S5の具体的な流れの一例を図5に示す。
【0038】
工程S5では、まず、工程S2、工程S3、及び工程S4で検出された全ての発音音高候補のうち、最も高い基本周波数を持つ発音音高候補(低音発音音高候補)について、その基本周波数の1オクターブ以下にあり、倍音の周波数が高音発音音高候補の基本周波数に重なる発音音高候補(低音発音音高候補)を全て検索する(S51)。低音発音音高候補がなかった場合(S51NO)、その低音発音音高候補を発音音高として抽出し(S53)、工程S5を終える。一方、低音発音音高候補が1つ以上見つかった場合(S51YES)、S52に進む。
【0039】
S52では、高音発音音高候補の複数の倍音の振幅と、S51で見つけられた1つ以上低音発音音高候補の複数の倍音の振幅と比較する。そして、高音発音音高候補の倍音の振幅が、その高音発音音高候補の倍音の間に存在する低音発音音高候補の倍音の振幅よりも大きいかどうかの判定を行う。高音発音音高候補の倍音の間に低音発音音高候補の倍音が複数ある場合は、それら全てについて当該判定を行う。例えば、ある高音発音音高候補(音高A)の1オクターブ下に低音発音音高候補(音高B)が検出されている場合、音高Aの4、5、6次の倍音はそれぞれ音高Bの8、10、12次の倍音と一致し、音高Aの4次の倍音の周波数と音高Aの3次の倍音の周波数との間には、音高Bの7次の倍音の周波数が存在し、音高Aの4次の倍音の周波数と音高Aの5次の倍音の周波数との間には、音高Bの9次の倍音の周波数が存在するので、音高Aの4次の倍音の振幅と、音高Bの7次及び9次の倍音の振幅とを比較する。同様にして、音高Aの5、6次の倍音と音高Bの9、11、13次の倍音の振幅を比較する。そして、その全ての比較において、音高Aの倍音の振幅が音高Bの倍音の振幅よりも大きければ(S52YES)、音高Aを発音音高として抽出し(S53)、工程S5を終える。一方、一部または全ての比較において、音高Aの倍音の振幅が音高Bの倍音の振幅よりも小さければ(S52NO)、音高Aを発音音高とはせずに、S51に戻り、音高Aの次に基本周波数が高い発音音高候補(高音発音音高候補)について、その基本周波数の1オクターブ以下にあるすべての発音音高候補(低音発音音高候補)を検索する。
【0040】
上記具体例の説明では、音高Aの4、5、6次の倍音の3つの倍音について比較する方法を説明したが、本発明はかかる形態に限定されない。高次の倍音であれば、同じ周波数の倍音を比較すると高い音の倍音の振幅が大きくなる。また、低い周波数では多くの倍音が確認できるが、高い音になると減衰が大きくなり、確認できる倍音数が少なくなる。また、サンプリング周波数による検出可能範囲も関係する。比較する倍音の位置と数は特に限定されないが、比較する数が少ない場合は誤検出が多くなると考えられる。
【0041】
(第2発音音高抽出工程S6)
工程S6は、全ての工程S2(すなわち、最初の工程S2、工程S3及び工程S4で繰り返される工程S2。)で検出された発音音高候補から、これまでの工程で既に発音音高として抽出された発音音高候補の基本周波数および倍音の周波数に重なる発音音高候補を除きつつ、比較できる発音音高候補がなくなるまで工程S5と同様の工程を繰り返す工程である。工程S6の具体的な流れの一例を図6に示す。
【0042】
工程S6では、まず、工程S2、工程S3、及び工程S4で検出された全ての発音音高候補の中から、これまでの工程で既に発音音高として抽出された発音音高候補の基本周波数および倍音の周波数に重なる発音音高候補を除外する(S61)。その後、工程S5と同様に、発音音高候補のうち周波数が高い側から選択した発音音高候補(高音発音音高候補)の基本周波数の1オクターブ以下にある発音音高候補の中に、高音発音音高候補の基本周波数と重なる周波数の倍音を持つ発音音高候補(低音発音音高候補)があれば、高音発音音高候補の複数の倍音の振幅を、低音発音音高候補の複数の倍音の振幅と比較し、高音発音音高候補の倍音の振幅が高音発音音高候補の倍音の間に存在する低音発音音高候補の倍音の振幅よりも大きければ、高音発音音高候補を発音音高として抽出する(S62)。
【0043】
S61において、工程S2、工程S3、及び工程S4で検出された全ての発音音高候補の中から、これまでの工程で既に発音音高として抽出された発音音高候補の基本周波数および倍音の周波数に重なる発音音高候補を除外するのは、比較する倍音が、これまでの工程で既に発音音高として抽出された発音音高候補の基本周波数、あるいはその倍音と重なる場合は、振幅が大きくなるためである。例えば、上記音高AがC3、上記音高BがC2(1オクターブ下)であった場合、C3の第4〜6倍音はそれぞれC5、E5、G5(G4の第2倍音)、C2の第9倍音はD5とほぼ一致する。C5、E5、G5、D5が発音されていると、それらの振幅が必ず大きくなり、誤認識の要因になる。したがって、それらの音高のどれかが発音音高候補になっている場合、比較対象から除外し、残りの倍音のみで比較する。音高Aの第4〜6倍音が全て発音音高候補の場合は、第7倍音(他の音階と重ならない倍音)を利用することが考えられる。
【0044】
S62において発音音高を抽出した後、工程S2、工程S3、及び工程S4で検出された発音音高候補のうち、工程S5およびS62で検討されていない発音音高候補が残されているかを判定する(S63)。まだ残されている場合(S63YES)はS61に戻る。既に全ての発音音高候補について、検討済みであれば(S63NO)、工程S6を終了する。
【0045】
このようにして工程S5及び工程S6を経ることによって、工程S2、工程S3、及び工程S4で検出された発音音高候補のうち、実際に発音されていた発音音高の基本周波数ではなかったと考えられるものを排除することができる。工程S2、工程S3、及び工程S4で検出された発音音高候補の中には、実際に発音された発音音高の基本周波数ではなく、その他の音高の倍音であるものが含まれている可能性がある。例えば、ある発音音高候補(音高A)の1オクターブ下に発音音高候補(音高B)が検出されている場合、音高Aの4次の倍音は音高Bの8次の倍音であり、音高Aの4次の倍音と音高Aの5次の倍音との間には音高Bの9次の倍音が存在し、音高Aの4次の倍音と音高Aの3次の倍音との間には音高Bの7次の倍音が存在することになる。ここで音高Aが実際の発音音高の基本周波数であった場合、音高Aの4次の倍音と音高Bの8次の倍音が重なっているはずの周波数での振幅は、音高Bの7次および9次の倍音より大きくなると考えられる。一方、音高Aが実際の発音音高の基本周波数でなく、音高Bの2次の倍音であった場合、音高Aの4次の倍音は、実際には音高Bの8次の倍音であるため、音高Bの7次および9次の倍音と同程度の大きさになると考えられる。したがって、音高Aの4次の倍音と音高Bの7次および9次の倍音とを比較し、音高Aの4次の倍音が音高Bの7次および9次の倍音より大きければ、音高Aは実際に発音されていた発音音高の基本周波数である可能性が高いと判定できる。この判定の確実性を上げるため、複数の倍音について同様の比較を行うことが好ましい。
【0046】
(解析フレーム設定回数判定工程S7)
工程S7は、解析フレームの設定回数が所定の回数に達するまで、工程S1で既に設定した解析フレームに対して所定量ずらした位置から音楽のデジタル信号を切り出して新たな解析フレームを設定し、工程S2、工程S3、工程S4、工程S5、及び工程S6を実行することを繰り返す工程である。
【0047】
工程S7では、工程S6の後、まず、解析フレームの設定回数が所定の回数に達したかどうかの判定を行う。工程S7でいう「所定の回数」とは、解析フレームをずらす回数の上限値のことであり、採譜する音楽の長さや解析フレームをずらす量(フレーム周期)に応じて適当に設定することができる。また、「所定量(フレーム周期)」とは、楽音のテンポ、および最小音符長に依存するものであり、対象とする音楽に応じて適宜、決定することができる量である。例えば、最大テンポを150(1分間に4分音符を150拍)とした場合に16分音符を検出できるように、フレーム長を100ms、フレーム周期を10msとすることができる。
【0048】
工程S7では、解析フレームの設定回数が所定の回数に達していなければ(S7NO)、工程S1に戻って、前回の工程S1で選択した解析フレームに対して所定量ずらした位置の音楽のデジタル信号を切り出し、新たな解析フレームとする。
【0049】
工程S7において、解析フレームの設定回数が所定の回数に達していないと判定された場合(S7NO)はS1に戻り、上記のようにして新たな解析フレームを設定するとともに、工程S2、工程S3、工程S4、工程S5、及び工程S6を実行する。一方、解析フレーム設定回数が所定の回数に達した判定された場合(S7YES)は、工程S8に進む。
【0050】
(発音音高認識工程S8)
工程S8は、工程S1〜工程S7を経て、所定数以上の解析フレームで連続して抽出された発音音高を実際に発音されていた発音音高であると認識する工程である。
【0051】
工程S1〜工程S7を経て、複数の解析フレームにおいて発音音高が抽出されている。しかしながら、その発音音高の中には、実際には発音音高ではなくてパルス的にピークが現れていたもの(以下、「非発音音高」ということがある。)が含まれている可能性がある。そこで、工程S8において、工程S1〜工程S7を経て抽出された発音音高が実際の発音音高であるか非発音音高であるかの判定を行う。すなわち、所定数以上の解析フレームで連続して抽出されていた場合は、長く発音されていたと考えられるため、実際の発音音高であると判定できる。一方、所定数未満の解析フレームでしか連続して抽出されていなかった場合は、パルス的にピークが現われていた非発音音高であると判定できる。工程S8において「所定数」とは、2度目以降の工程S1で解析フレームをずらす大きさ(フレーム周期)などに応じて適当に決められる値である。発音音高が連続して抽出された解析フレームの数とフレーム周期との積が、発音音高が発音されていたと考えられる時間となる。発音音高が発音されていたと考えられる時間が所定の長さ以上である場合は、その発音音高が実際の発音音高であったと判定してよいと考えられる。ここに「所定の長さ」とは、対象とする楽音や解析条件に応じて適宜決定できる長さであり、特に限定されず、例えば、50ms程度とすることができる。
【0052】
また、工程S8では、上記S21で設定した音律の音高に変換する。例えば、平均律を用いた場合は、検出された基本周波数が129Hzのとき、最終的に認識される音高はC2(130.8Hz)となる。つまり、平均律の音階の周波数に量子化することになる。このような処理によって、楽器のチューニングの若干のずれや音の揺らぎなどによる影響を除けると考えられる。なお、音律が不明な場合は、検出した基本周波数をそのまま音高として認識することができる。
【0053】
(発音時間検出工程S9)
工程S9は、工程S8によって認識された発音音高の発音時刻及び継続時間を検出する工程である。
【0054】
発音時刻及び継続時間は、例えば、以下の方法で検出することができる。まず、発音音高を最初に検出した解析フレームの時刻を発音開始時刻とする。この時刻から発音が確認されなくなるまでの時間tONを測る(フレーム数n,フレーム周期tとするとtON=n×t)。ここで、tONは実際の発音時間よりフレーム長分tだけ長く検出される。したがって、発音継続時間tは、t=tON−tで求められると考えられる。
【0055】
(音符長決定工程S10)
工程S10は、利用者が入力した最小の音符長を基に、工程S9で得た継続時間から音符長を決定する工程である。ある発音音高の継続時間がわかったとしても、その長さがどの音符に対応する長さであるのかは判定できない。本発明を利用する人が最小の音符長を入力することによって、その音符長に基づいて、工程S9で得た継続時間がどの音符に対応するのかを判断することができる。
【0056】
(楽譜作成工程S11)
工程S11は、工程S8で実際に発音されていた発音音高であると認識された発音音高と、工程S10で決定された音符長から楽譜を作成する工程である。工程S11が備えられることによって、音楽を楽譜に起こすことができる。
【0057】
(修正工程S12)
工程S12は、工程11で作成された楽譜を確認しながら修正する工程である。工程S12が備えられることによって、工程11で作成された楽譜に誤りがあった場合などに、適当に修正することができる。
【0058】
このような本発明の音高認識方法によれば、和音を含む音楽から、和音の構成音数に依存せずに音高を認識することができる。
【0059】
<音高認識プログラム>
本発明の音高認識プログラムは、和音を含む音楽に含まれる音の音高を認識できる音高認識システムに実装される音高認識プログラムである。本発明の音高認識プログラムはROM、CD−ROM、DVD−ROM、ハードディスク等の記録媒体に格納することができる。例えば、これらの記録媒体から本発明の音高認識プログラムを音高認識システムに備えられたコンピュータに読み込ませて実行することで、または、通信手段を介して本発明の音高認識プログラムをダウンロードして音高認識システムに備えられたコンピュータに実行させることで、フレーム設定処理、発音候補検出処理、第2候補検出処理、第3候補検出処理、発音音高抽出処理、第2発音音高抽出処理、解析フレーム設定回数判定処理、及び発音音高認識処理を、音高認識システムに実行させることができる。本発明の音高認識プログラムは、さらに、発音時間検出処理、音符長決定処理、楽譜作成処理、及び修正処理のうち少なくともいずれか1つを音高認識システムに実行させられるものであることが好ましい。特に、音符長決定処理は発音時間検出処理より後に、楽譜作成処理は音符長決定処理より後に、修正工処理は楽譜作成処理より後に行われることが好ましい。
【0060】
なお、解析フレーム設定処理は上記工程S1を実行する処理であり、発音候補検出処理は上記工程S2を実行する処理であり、第2候補検出処理は上記工程S3を実行する処理であり、第3候補検出処理は上記工程S4を実行する処理であり、発音音高抽出処理は上記工程S5を実行する処理であり、第2発音音高抽出処理は上記工程S6を実行する処理であり、解析フレーム設定回数判定処理は上記工程S7を実行する処理であり、発音音高認識処理は上記工程S8を実行する処理であり、発音時間検出処理は上記工程S9を実行する処理であり、音符長決定処理は上記工程S10を実行する処理であり、楽譜作成処理は上記工程S11を実行する処理であり、修正処理は上記工程S12を実行する処理である。これら各工程の説明は本発明の音高認識方法の説明において行っているため、説明を省略する。
【0061】
したがって、本発明の音高認識プログラムによれば、音高認識システムに本発明の音高認識方法を実行させることができ、和音を含む音楽から、和音の構成音数に依存せずに音高を認識させることができる。
【0062】
<音高認識システム>
図7は本発明の音高認識システム10の構成を概略的に示すブロック図である。音高認識システム10は、音楽入力部1と、処理部2と、表示部3とを備えている。音楽入力部1は、音楽の音響信号を処理部2に入力できる手段であれば特に限定されないが、例えば、マイク及びサウンドボードによって構成することができる。また、処理部2は、音響信号をデジタル化し、本発明の音高認識プログラムを読み込んで実行することができるものであれば特に限定されず、市販のコンピュータによって構成することができる。表示部3は、処理部2による処理結果を表示できるものであれば特に限定されず、例えばディスプレイによって構成することができる。
【0063】
したがって、本発明の音高認識システムによれば、本発明の音高認識方法を実行することができ、和音を含む音楽から、和音の構成音数に依存せずに音高を認識することができる。
【0064】
以上、実践的で好ましいと思われる実施形態に関連して本発明を説明したが、本発明は本願明細書中に開示された実施形態に限定されるものではない。請求の範囲および明細書全体から読み取れる発明の要旨或いは思想に反しない範囲で適宜変更可能であり、そのような変更を伴う音高認識方法、音高認識プログラム、記憶媒体、及び音高認識システムもまた本発明の技術的範囲に包含されるものとして理解されなければならない。
【符号の説明】
【0065】
1 音楽入力部
2 発音音高認識部
3 表示部
10 音高認識システム

【特許請求の範囲】
【請求項1】
和音を含む音楽に含まれる音の音高を認識できる音高認識方法であって、
前記音楽のデジタル信号を所定の長さ分切り出して、周波数毎の音量データに変換した解析フレームを設定する、フレーム設定工程と、
前記解析フレーム内の周波数スペクトルについて、振幅が閾値VT1より大きく、かつ、振幅が閾値VT2より大きい倍音を連続して所定数以上有するピークの周波数を、低い周波数側から検索して発音音高候補として抽出する、発音候補検出工程と、
最初の前記発音候補検出工程で抽出した前記発音音高候補を根音とする1オクターブ内において前記発音候補検出工程を繰り返す、第2候補検出工程と、
ピークを検索する検索範囲の周波数をオクターブ単位で上げつつ、1オクターブ内で前記発音候補検出工程を繰り返すことを、前記検索範囲が所定の解析予定上限値を超えるまで繰り返す、第3候補検出工程と、
全ての前記発音候補検出工程で抽出された前記発音音高候補のうち周波数が高い側から選択した前記発音音高候補である高音発音音高候補の基本周波数の1オクターブ以下にある前記発音音高候補の中に、前記高音発音音高候補の基本周波数と重なる周波数の倍音を持つ前記発音音高候補である低音発音音高候補があれば、前記高音発音音高候補の複数の倍音の振幅を、全ての前記低音発音音高候補の複数の倍音の振幅と比較し、前記高音発音音高候補の倍音の振幅が前記高音発音音高候補の倍音の間に存在する前記低音発音音高候補の倍音の振幅よりも大きければ、前記高音発音音高候補を発音音高として抽出する、発音音高抽出工程と、
全ての前記発音候補検出工程で抽出された前記発音音高候補から、これまでの工程で前記発音音高として抽出された前記発音音高候補の基本周波数および倍音の周波数に重なる前記発音音高候補を除きつつ、比較できる前記発音音高候補がなくなるまで前記発音音高抽出工程を繰り返す、第2発音音高抽出工程と、
前記解析フレームの設定回数が所定の回数に達するまで、前記フレーム設定工程で既に設定した前記解析フレームに対して所定量ずらした位置から前記音楽のデジタル信号を切り出して新たな解析フレームを設定し、前記発音候補検出工程、前記第2候補検出工程、前記第3候補検出工程、前記発音音高抽出工程、及び前記第2発音音高抽出工程を実行することを繰り返す、解析フレーム設定回数判定工程と、
所定数以上の前記解析フレームで連続して抽出された前記発音音高を実際に発音されていた発音音高であると認識する、発音音高認識工程と、
を備える、音高認識方法。
【請求項2】
さらに、前記発音音高認識工程によって認識された前記発音音高の発音時刻及び継続時間を検出する発音時間検出工程を備える、請求項1に記載の音高認識方法。
【請求項3】
利用者が入力した最小の音符長を基に、前記発音時間検出工程で得た前記継続時間から音符長を決定する音符長決定工程を備える、請求項2に記載の音高認識方法。
【請求項4】
前記発音音高認識工程で実際に発音されていた発音音高であると認識された前記発音音高と、前記音符長決定工程で決定された前記音符長から楽譜を作成する楽譜作成工程を備える、請求項3に記載の音高認識方法。
【請求項5】
前記楽譜作成工程で作成された前記楽譜を確認しながら修正する修正工程を備える、請求項4に記載の音高認識方法。
【請求項6】
和音を含む音楽に含まれる音の音高を認識できる音高認識システムに実装される音高認識プログラムであって、
前記音楽のデジタル信号を所定の長さ分切り出して、周波数毎の音量データに変換した解析フレームを設定する、フレーム設定処理と、
前記解析フレーム内の周波数スペクトルについて、振幅が閾値VT1より大きく、かつ、振幅が閾値VT2より大きい倍音を連続して所定数以上有するピークの周波数を、低い周波数側から検索して発音音高候補として抽出する、発音候補検出処理と、
最初の前記発音候補検出処理で抽出した前記発音音高候補を根音とする1オクターブ内において前記発音候補検出処理を繰り返す、第2候補検出処理と、
ピークを検索する検索範囲の周波数をオクターブ単位で上げつつ、1オクターブ内で前記発音候補検出処理を繰り返すことを、前記検索範囲が所定の解析予定上限値を超えるまで繰り返す、第3候補検出処理と、
全ての前記発音候補検出処理で抽出された前記発音音高候補のうち周波数が高い側から選択した前記発音音高候補である高音発音音高候補の基本周波数の1オクターブ以下にある前記発音音高候補の中に、前記高音発音音高候補の基本周波数と重なる周波数の倍音を持つ前記発音音高候補である低音発音音高候補があれば、前記高音発音音高候補の複数の倍音の振幅を、全ての前記低音発音音高候補の複数の倍音の振幅と比較し、前記高音発音音高候補の倍音の振幅が前記高音発音音高候補の倍音の間に存在する前記低音発音音高候補の倍音の振幅よりも大きければ、前記高音発音音高候補を発音音高として抽出する、発音音高抽出処理と、
全ての前記発音候補検出処理で抽出された前記発音音高候補から、これまでの処理で前記発音音高として抽出された前記発音音高候補の基本周波数および倍音の周波数に重なる前記発音音高候補を除きつつ、比較できる前記発音音高候補がなくなるまで前記発音音高抽出工程を繰り返す、第2発音音高抽出処理と、
前記解析フレームの設定回数が所定の回数に達するまで、前記フレーム設定処理で既に設定した前記解析フレームに対して所定量ずらした位置から前記音楽のデジタル信号を切り出して新たな解析フレームを設定し、前記発音候補検出処理、前記第2候補検出処理、前記第3候補検出処理、前記発音音高抽出処理、及び前記第2発音音高抽出処理を実行することを繰り返す、解析フレーム設定回数判定処理と、
所定数以上の前記解析フレームで連続して抽出された前記発音音高を実際に発音されていた発音音高であると認識する、発音音高認識処理と、
を前記音高認識システムに実行させる、音高認識プログラム。
【請求項7】
前記発音音高認識処理によって認識された前記発音音高の発音時刻及び継続時間を検出する発音時間検出処理を、前記音高認識システムに実行させることができる、請求項6に記載の音高認識プログラム。
【請求項8】
利用者が入力した最小の音符長を基に、前記発音時間検出処理で得た前記継続時間から音符長を決定する音符長決定処理を、前記音高認識システムに実行させることができる、請求項7に記載の音高認識プログラム。
【請求項9】
前記発音音高認識処理で実際に発音されていた発音音高であると認識された前記発音音高と、前記音符長決定処理で決定された前記音符長から楽譜を作成する楽譜作成処理を、前記音高認識システムに実行させることができる、請求項8に記載の音高認識プログラム。
【請求項10】
前記楽譜作成処理で作成された前記楽譜を確認しながら修正する修正処理を、前記音高認識システムに実行させることができる、請求項9に記載の音高認識プログラム。
【請求項11】
請求項6〜10のいずれかに記載の音高認識プログラムを記録した記録媒体。
【請求項12】
音楽のデジタル信号を入力できる入力部と、
請求項6〜10のいずれかに記載の音高認識プログラムを実行できる処理部と、
前記処理部での処理結果を表示できる表示部と、
を備える、音高認識システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2011−22489(P2011−22489A)
【公開日】平成23年2月3日(2011.2.3)
【国際特許分類】
【出願番号】特願2009−169185(P2009−169185)
【出願日】平成21年7月17日(2009.7.17)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 平成21年2月12日 国立大学法人秋田大学工学資源学部電気電子工学科発行の「平成20年度卒業論文発表会プログラム」に発表
【出願人】(504409543)国立大学法人秋田大学 (210)
【Fターム(参考)】