しかし、上述した技術は、単に歌唱に際して検出された最高音高および最低音高の範囲を該当ユーザの音域と判定しているため、適切に発声されたものであるか否かに拘わらず、検出された音高をユーザが適切に発声可能な音高と判定してしまい、さらには、検出された音高で規定される音域をユーザの音域と判定してしまう。
具体的にいえば、あるユーザにとって発声しにくい音高の区間を有する楽曲が歌唱された場合を想定すると、その区間においてたとえ一時的に適切な音高に到達したとしても、その区間における音高の推移パターンは、その区間を適切に歌唱した場合における推移パターンから大きく異なったものになってしまう可能性が高い。
このような音高については、そのユーザが無理に発声している音高といえ、歌唱に適した状態で発声できる音高とは言い難いため、この音高がユーザの発声可能な音高と判定されないようにし、また、この音高を含まないようにユーザの音域を判定することが望ましい。
本発明は、このような課題を解決するためになされたものであり、その目的は、より適切にユーザが発声可能な音高,音域を判定するための技術を提供することである。
上記課題を解決するため第1の構成は、
ユーザによる楽曲の歌唱に伴う時間軸に沿った音高の推移を示す歌唱データ,および,該歌唱データに係る歌唱楽曲を適切に歌唱した場合における時間軸に沿った音高の推移を示すガイドデータ,に基づいて、前記歌唱データで示される時間軸上の各単位区間(以降「歌唱区間」という)における音高(以降「歌唱音高」という)の推移パターンそれぞれを、前記ガイドデータで示される時間軸上の各単位区間(以降「ガイド区間」という)のうち、該当歌唱区間に対応するガイド区間における音高(以降「ガイド音高」という)の推移パターンと対比することにより、両推移パターンの誤差を、そのガイド区間において発声すべきガイド音高k(=1〜nのいずれか)に対する歌唱音高の誤差d[k]としてそれぞれ算出する誤差算出手段と、
複数のユーザそれぞれに対して用意され、該ユーザの前記ガイド音高に対する前記歌唱音高の誤差を前記ガイド音高毎に分布させてなる誤差分布のうち、前記誤差算出手段によ
る算出の契機となる歌唱を行ったユーザに対応する誤差分布に、その算出された誤差それぞれを、該算出に際して参照されたガイド区間におけるガイド音高kに対する歌唱音高の誤差d[k]として追加的に分布させることにより、前記誤差分布を更新する分布更新手段と、
前記分布更新手段に更新された誤差分布におけるガイド音高kのうち、低い側に隣接するガイド音高k−1における誤差d[k−1]との差分Δd[k−1](=d[k]−d[k−1])を高い側に隣接するガイド音高k+1における誤差d[k+1]との差分Δd[k](=d[k+1]−d[k])と対比した誤差比|Δd[k−1]/Δd[k]|が最小となるガイド音高kを抽出し、該抽出したガイド音高kを、その誤差成分に対応するユーザの音域における最高音kupと判定する最高音判定手段と、を備えている。
この構成における音高判定システムでは、まず、ユーザの歌唱に伴う時間軸に沿った音高(歌唱音高)の推移パターンを、楽曲を適切に歌唱した場合における音高(ガイド音高)の推移パターンと対比することで、これら推移パターンの誤差dを算出し、これをユーザの誤差分布に反映させる。
そして、誤差分布におけるガイド音高1〜nのうち、隣接するガイド音高における誤差dとの差分Δdそれぞれを対比した誤差比|Δd[k−1]/Δd[k]|が最小となるガイド音高kを、その誤差分布に対応するユーザの音域における最高音kupと判定している。
誤差分布は、特定ガイド区間のガイド音高kに対する歌唱音高の推移パターンとしての誤差d[k]をガイド音高k毎に分布させたものであるため、その誤差d[k]が小さいガイド音高kは、該当ユーザが同じような推移パターンで適切に発声できている音高といえるのに対し、その誤差d[k]が大きいガイド音高は、該当ユーザが無理に発声している音高といえる。
そうすると、ユーザが適切に発声できているガイド音高kから無理に発声しているガイド音高k+1へと至る高音側の変曲領域では、低い側に隣接するガイド音高k−1における誤差d[k−1]との差分Δd[k−1]に対し、高い側に隣接するガイド音高k+1における誤差d[k]との差分Δd[k]が急増する傾向を示す。この傾向は、ユーザが適切に発声できている最も高いガイド音高k付近で最も顕著に表れることが予想され、この場合、差分Δd同士を対比した誤差比|Δd[k−1]/Δd[k]|は、分母である差分Δd[k]が著しく大きくなることで最小値を示すことになる。
このようなことから、上記構成では、誤差比|Δd[k−1]/Δd[k]|が最小となっているガイド音高kを、ユーザが適切に発声できているガイド音高kのうち、最も高い音高kupと判定することができる。
また、この構成においては、最高音kupの判定時に参照するガイド音高kの範囲をある程度限定することが、処理負荷や判定精度の観点で望ましい。このための構成としては、例えば、上記構成を以下に示す第2の構成(請求項2)のようにすることが考えられる。
この構成において、前記最高音判定手段は、前記分布更新手段に更新された誤差分布におけるガイド音高kのうち、前記差分Δd[k]が0より大きく、かつ、前記誤差比|Δd[k−1]/Δd[k]|が最小となるガイド音高を抽出する。
この構成では、最高音kupの判定時に参照するガイド音高kの範囲を、差分Δd[k]が0より大きいものに限定している。
上述した変曲領域では、ガイド音高kが適切に発声できている最高音より高くなるにつれて、高い側に隣接するガイド音高k+1における誤差d[k]が増加していくことが予想されるため、誤差d[k]と誤差d[k+1]との差分Δd[k](=d[k+1]−d[k]は当然0より大きくなる。
そうすると、対象となるガイド音高kを差分Δd[k]が0より大きいものに限定しても、最高音kupとして抽出されるべきガイド音高kが抽出対象から除かれることはないため、適切に処理負荷を抑えることができる。
さらにいえば、適切なガイド音高kのみが対象となるため、不適切なガイド音高kを抽出してしまうことなどに起因して最高音kupの判定精度が低くなってしまうことも防止することができる。
また、上記各構成において、最高音kupとなるガイド音高kは、誤差分布における全てのガイド音高のうち、高音側の変曲領域にあるため、最高音kupの判定時に参照するガイド音高kの範囲を、高音側の変曲領域を形成する帯域に限定することとしてもよい。このための構成としては、例えば、上記各構成を以下に示す第3の構成(請求項3)のようにすることが考えられる。
この構成においては、前記分布更新手段に更新された誤差分布における複数のガイド音高のうち、音高が高い側に位置する所定数のガイド音高からなる帯域を高域誤差変曲帯域として抽出する高域誤差変曲帯域抽出手段,を備えている。そして、前記最高音判定手段は、前記高域誤差変曲帯域抽出手段により抽出された高域誤差変曲帯域におけるガイド音高の中から前記最高音kupとなるガイド音高を抽出する。
この構成では、最高音kupの判定時に参照するガイド音高kの範囲を、あらかじめ高音側の誤差変曲帯域に限定することにより、その判定に要する処理負荷を抑えることができる。
また、この構成において、高音誤差変曲帯域を抽出するための具体的な構成は特に限定されないが、例えば、以下に示す第4の構成(請求項4)のようにするとよい。
この構成において、前記高域誤差変曲帯域抽出手段は、前記分布更新手段に更新された誤差分布における複数のガイド音高のうち、音高が高い側に位置しており,かつ,それぞれ隣接するガイド音高との間での誤差の変化率が一定以上となっているガイド音高それぞれからなる高音誤差変曲帯域を抽出する。
誤差分布における高音側の帯域では、ガイド音高kが適切に発声できる音高より高くなるにつれて誤差が大きくなっていくことが予想されるため、このように誤差が大きくなっていくことに伴い、それぞれ隣接するガイド音高における誤差の変化度合も大きくなっていく。
そのため、上記構成においては、帯域を抽出する際の変化率として、ユーザが適切に発声できるガイド音高以上の音高における変化率として想定される値を「一定の変化率」としておくことにより、高音誤差変曲帯域として適切な帯域を抽出することができる。
この構成は、より具体的に以下に示す第5の構成(請求項5)のようにするとよい。
この構成において、前記高域誤差変曲帯域抽出手段は、前記分布更新手段に更新された誤差分布における複数のガイド音高のうち、少なくとも音高が高い側に位置しているガイド音高を所定数のガイド音高毎のグループに分類すると共に、同一グループに分類されたガイド音高の誤差をグループ毎に平均化したうえで、各グループのうち、該グループにおける平均誤差で高音側に隣接するグループにおける平均誤差を除した隣接誤差比が最大となるグループを含む1以上のグループについて、これらグループに分類されたガイド音高それぞれからなる帯域を抽出する。
この構成であれば、所定数のガイド音高からなるグループ毎のガイド音高の誤差を平均化し、それぞれ隣接するグループ間の隣接誤差比が最大となっている1以上のグループについて、このグループにおけるガイド音高それぞれからなる高音誤差変曲領域を抽出することができる。
なお、この構成において、グループとして分類する対象となる「音高が高い側に位置しているガイド音高」とは、誤差分布において音高が高い側に位置していればよく、例えば、ガイド音高全域における高音側の一定割合(例えば、数十%など)とすることなどが考えられる。
また、上記課題を解決するため第6の構成は、
ユーザによる楽曲の歌唱に伴う時間軸に沿った音高の推移を示す歌唱データ,および,該歌唱データに係る歌唱楽曲を適切に歌唱した場合における時間軸に沿った音高の推移を示すガイドデータ,に基づいて、前記歌唱データで示される時間軸上の各単位区間(以降「歌唱区間」という)における音高(以降「歌唱音高」という)の推移パターンそれぞれを、前記ガイドデータで示される時間軸上の各単位区間(以降「ガイド区間」という)のうち、該当歌唱区間に対応するガイド区間における音高(以降「ガイド音高」という)の推移パターンと対比することにより、両推移パターンの誤差を、そのガイド区間において発声すべきガイド音高k(=1〜nのいずれか)に対する歌唱音高の誤差d[k]としてそれぞれ算出する誤差算出手段と、
複数のユーザそれぞれに対して用意され、該ユーザの前記ガイド音高に対する前記歌唱音高の誤差を前記ガイド音高毎に分布させてなる誤差分布のうち、前記誤差算出手段による算出の契機となる歌唱を行ったユーザに対応する誤差分布に、その算出された誤差それぞれを、該算出に際して参照されたガイド区間におけるガイド音高kに対する歌唱音高の誤差d[k]として追加的に分布させることにより、前記誤差分布を更新する分布更新手段と、
前記分布更新手段に更新された誤差分布におけるガイド音高kのうち、高い側に隣接するガイド音高k+1における誤差d[k+1]との差分Δd[k](=d[k+1]−d[k])を低い側に隣接するガイド音高k−1における誤差d[k−1]との差分Δd[k−1](=d[k]−d[k−1])と対比した誤差比|Δd[k]/Δd[k−1]|が最小となるガイド音高kを抽出し、該抽出したガイド音高kを、その誤差成分に対応するユーザの音域における最低音kloと判定する最低音判定手段と、を備えている。
この構成における音高判定システムでは、上記構成と同様に、ユーザにおける誤差分布を更新したうえで、この誤差分布におけるガイド音高1〜nのうち、隣接するガイド音高における誤差との差分それぞれを対比した誤差比|Δd[k]/Δd[k−1]|が最小となるガイド音高kを、その誤差成分に対応するユーザの音域における最低音kloと判定している。
上述したとおり、誤差Δd[k]が小さいガイド音高kは、該当ユーザが同じような推移パターンで適切に発声できている音高といえるのに対し、その誤差Δd[k]が大きいガイド音高は、該当ユーザが無理に発声している音高といえる。
そうすると、ユーザが無理に発声しているガイド音高から適切に発声できているガイド音高へと至る低音側の変曲領域では、高い側に隣接するガイド音高k+1における誤差d[k+1]との差分Δd[k]に対し、低い側に隣接するガイド音高k−1における誤差d[k−1]との差分Δd[k−1]が急増する傾向を示す。この傾向は、ユーザが適切に発声できている最も低いガイド音高k付近で最も顕著に表れることが予想され、この場合、差分Δd同士を対比した誤差比|Δd[k]/Δd[k−1]|は、分母である差分Δd[k−1]が著しく大きくなることで最小値を示すことになる。
このようなことから、上記構成では、誤差比|Δd[k]/Δd[k−1]|が最小となっているガイド音高kを、ユーザが適切に発声できているガイド音高kのうち、最も低い音高kloと判定することができる。
また、この構成においては、最低音kloの判定時に参照するガイド音高kの範囲をある程度限定することが、処理負荷や判定精度の観点で望ましい。このための構成としては、例えば、上記構成を以下に示す第7の構成(請求項7)のようにすることが考えられる。
この構成において、前記最低音判定手段は、前記分布更新手段に更新された誤差分布におけるガイド音高kのうち、前記差分Δd[k]が0より小さく、かつ、誤差比|Δd[k]/Δd[k−1]|が最小となるガイド音高kを抽出する。
この構成では、最低音kloの判定時に参照するガイド音高kの範囲を、差分Δd[k]が0より小さいものに限定している。
上述した変曲領域では、ガイド音高kが適切に発声できている最低音より低くなるにつれて、高い側に隣接するガイド音高k+1における誤差d[k]が増加していくことが予想されるため、誤差d[k]と誤差d[k+1]との差分Δd[k](=d[k+1]−d[k])は当然0より小さくなる。
そうすると、対象となるガイド音高kを差分Δd[k]が0より小さいものに限定しても、最低音kloとして抽出されるべきガイド音高kが抽出対象から除かれることはないため、適切に処理負荷を抑えることができる。
さらにいえば、適切なガイド音高kのみが対象となるため、不適切なガイド音高kを抽出してしまうことなどに起因して最低音kloの判定精度が低くなってしまうことも防止することができる。
また、上記各構成において、最低音kloとなるガイド音高kは、誤差分布における全てのガイド音高のうち、低音側の変曲領域にあるため、最低音kloの判定時に参照するガイド音高kの範囲を、低音側の変曲領域を形成する帯域に限定することとしてもよい。このための構成としては、例えば、上記各構成を以下に示す第8の構成(請求項8)のようにすることが考えられる。
この構成において、前記分布更新手段に更新された誤差分布における複数のガイド音高のうち、音高が低い側に位置する所定数のガイド音高からなる帯域を低域誤差変曲帯域として抽出する低域誤差変曲帯域抽出手段,を備えている。そして、前記最低音判定手段は、前記低域誤差変曲帯域抽出手段により抽出された低域誤差変曲帯域におけるガイド音高の中から前記最低音kloとなるガイド音高を抽出する。
この構成では、最低音kloの判定時に参照するガイド音高kの範囲を、あらかじめ低音側の誤差変曲帯域に限定することにより、その抽出および判定に要する処理負荷を抑えることができる。
また、この構成において、高音帯域を抽出するための具体的な構成は特に限定されないが、例えば、以下に示す第9の構成(請求項9)のようにするとよい。
この構成において、前記低域誤差変曲帯域抽出手段は、前記分布更新手段に更新された誤差分布における複数のガイド音高のうち、音高が低い側に位置しており,かつ,それぞれ隣接するガイド音高との間での誤差の変化率が一定以上となっているガイド音高それぞれからなる低音帯域を抽出する。
誤差分布における低音側の帯域では、ガイド音高kが適切に発声できる音高より低くなるにつれて誤差が大きくなっていくことが予想されるため、このように誤差が大きくなっていくことに伴い、それぞれ隣接するガイド音高における誤差の変化度合も大きくなっていく。
そのため、上記構成においては、帯域を抽出する際の変化率として、ユーザが適切に発声できるガイド音高以下の音高における変化率として想定される値を「一定の変化率」としておくことにより、高音誤差変曲帯域として適切な帯域を抽出することができる。
この構成は、より具体的に以下に示す第10の構成(請求項10)のようにするとよい。
この構成において、前記低域誤差変曲帯域抽出手段は、前記分布更新手段に更新された誤差分布における複数のガイド音高のうち、少なくとも音高が低い側に位置しているガイド音高を所定数のガイド音高毎のグループに分類すると共に、同一グループに分類されたガイド音高の誤差をグループ毎に平均化したうえで、各グループのうち、該グループにおける平均誤差で高音側に隣接するグループにおける平均誤差を除した隣接誤差比が最小となるグループを含む1以上のグループについて、これらグループに分類されたガイド音高それぞれからなる帯域を抽出する。
この構成であれば、所定数のガイド音高からなるグループ毎にガイド音高の誤差を平均化し、それぞれ隣接するグループ間における隣接誤差比が最小となっている1以上のグループについて、このグループにおけるガイド音高それぞれからなる低域誤差変曲領域を抽出することができる。
なお、この構成において、グループとして分類する対象となる「音高が低い側に位置しているガイド音高」とは、誤差分布において音高が低い側に位置していればよく、例えば、ガイド音高全域における低音側の一定割合(例えば、数十%など)とすることなどが考えられる。
また、上記各構成において、特定のガイド区間におけるガイド音高に対する歌唱音高の誤差は、どのような値であってもよく、例えば、歌唱音高の推移パターンとガイド音高の推移パターンとのパターンとしての形状の違いを数値化したものや、歌唱音高の推移パターンおよびガイド音高の推移パターンにおいて最終的に到達した音高それぞれの音高としての違いを数値化したものなどを採用することができる。
また、上記構成においてガイドデータを取得するに際しては、あらかじめ用意された複数のガイドデータの中から、歌唱データにおいてユーザが歌唱した楽曲に対応するものを取得することとすればよい。ここで「ユーザが歌唱した楽曲に対応するもの」であることは、歌唱データに、ユーザにより歌唱された楽曲を対応づけておき、その対応関係に基づいて特定することとすればよい。
また、上記構成において、該当ユーザに対応する誤差分布を更新するに際しては、歌唱データに、その歌唱をしたユーザを対応づけておき、その対応関係に基づいて特定したユーザの誤差分布を更新することとすればよい。
また、上記構成において歌唱データを取得するに際しては、ユーザによる楽曲の歌唱に伴って別途生成したものをシステム外部から取得することとすればよいし、ユーザによる楽曲の歌唱が行われる都度生成してこれを取得することとしてもよい。
この後者のように歌唱データを生成するにあたっては、ユーザが楽曲を歌唱してなる音声データに基づいて歌唱データを生成することとすればよく、そのためには、上記構成を以下に示すような第Aの構成のようにするとよい。
この構成では、ユーザが楽曲を歌唱してなる音声データにつき、該音声データにおいて時間軸に沿った位置それぞれの音高を算出し、該音高の時間軸に沿った推移を示すデータを歌唱データとして取得する。
この構成であれば、ユーザによる楽曲の歌唱に係る音声データから歌唱データを生成し、これに基づいて音高の判定を行うことができる。
ところで、上述した歌唱データは、その歌唱に伴う時間軸に沿った音高の推移を示すものであるが、歌唱区間それぞれでみると、実際に音高の変化が開始されたタイミングが、その楽曲を適切に歌唱した場合におけるタイミングに対してズレていることもありうる。
この場合、上述したように単に推移パターンの対比により誤差を算出すると、そのようなタイミングのズレが要因となって誤差が大きくなってしまう。しかし、ユーザの音高を判定するという目的に照らせば、そのようなタイミングよりも、実際に音高が推移する推移パターンそのものが重要といえるため、そのようなタイミングのズレについてあらかじめ補償しておくことが望ましい。
そのように、タイミングのズレを補償するためには、上記各構成を以下に示す第Bの構成のようにすることが考えられる。
この構成においては、前記歌唱データで示される歌唱区間それぞれについて、該歌唱区間における歌唱音高の推移パターンと、前記ガイドデータで示される該当ガイド区間におけるガイド音高の推移パターンと、の近似度が最大となるように、その歌唱区間における時間軸上の位置を修正する。そして、前記誤差算出手段は、こうして修正された歌唱データで示される各単位区間における歌唱音高の推移パターンそれぞれを、前記ガイドデータで示される各ガイド区間のうち、該当する歌唱区間に対応するガイド区間におけるガイド音高の推移パターンと対比することにより、両推移パターンの誤差を、そのガイド区間において発声すべきガイド音高に対する歌唱音高の誤差としてそれぞれ算出する。
この構成であれば、歌唱音高の推移パターンとガイド音高の推移パターンとが最も近似するように、歌唱音高における時間軸上の位置が修正される。このように推移パターンが近似するということは、その音高の変化するタイミングも近似した状態になることを意味するため、こうして、音高の変化が開始されたタイミングのズレを補償することができる。
なお、この構成において、推移パターンが近似するように時間軸上の位置を修正するためには、どのような手法を採用してもよいが、例えば、特開2005−107330号公報に記載されているような手法を採用することが考えられる。
また、上記課題を解決するため第11の構成(請求項11)は、第1から第5のいずれかの構成,および,第6から第10のいずれかの構成の全ての手段を供えた音域判定システムであって、前記最高音判定手段により判定された最高音から、前記最低音判定手段により判定された最低音までの音高の範囲を、これら判定に際して参照された誤差分布に対応するユーザの音域と判定する音域判定手段,を備えている。
この構成であれば、上述したように、無理に発声している音高を除いた音高として判定されたユーザの音域における最高音kupおよび最低音kloに基づいて、このユーザの音域を適切に判定することができる。
また、上記課題を解決するため請求項12の構成(請求項12)は、上記第1から第5のいずれかの構成に係る全ての手段として機能させるための各種処理手順をコンピュータに実行させるためのプログラムである。
このプログラムにより制御されるコンピュータは、上記第1から第5のいずれかの構成の一部として機能することができる。
また、上記課題を解決するため請求項13の構成(請求項13)は、上記第6から第12のいずれかの構成に係る全ての手段として機能させるための各種処理手順をコンピュータに実行させるためのプログラムである。
このプログラムにより制御されるコンピュータは、上記第6から第12のいずれかの構成の一部として機能することができる。
また、上記課題を解決するため請求項14の構成(請求項14)は、上記第111の構成に係る全ての手段として機能させるための各種処理手順をコンピュータに実行させるためのプログラムである。
このプログラムにより制御されるコンピュータは、上記第11の構成の一部として機能することができる。
なお、上述したプログラムは、コンピュータシステムによる処理に適した命令の順番付けられた列からなるものであって、各種記録媒体や通信回線を介して音高判定システムや、これらを利用するユーザ等に提供されるものである。
以下に本発明の実施形態を図面と共に説明する。
(1)ハードウェア構成
音域判定システム1は、周知のコンピュータシステムからなる端末装置やカラオケ装置にプログラムを実装することにより実現されるものである。
まず、「端末装置」にプログラムを実装する場合のハードウェア構成は、図1(a)に示すように、システム全体を制御する制御部11,各種情報を記憶する記憶部13,ネットワーク2を介した通信を制御する通信部15,キーボードやディスプレイなどからなるユーザインタフェース(U/I)部17,記録メディアを介して情報を入出力するメディアドライブ19などを備えた構成となる。
この構成では、ユーザインタフェース部17または通信部15を介して外部からの所定の指令を受けた際に、制御部11が記憶部13に記憶されたプログラムに従って各種処理を実行することによって、本発明の音域判定システムとしての機能を発揮する。
また、「カラオケ装置」にプログラムを実装する場合のハードウェア構成は、図1(b)に示すように、システム全体を制御する制御部11,演奏楽曲の伴奏内容および歌詞を示す楽曲データや映像データなどを記憶する記憶部13,ネットワーク2を介した通信を制御する通信部15,各種映像の表示を行う表示部21,複数のキー・スイッチなどからなる操作部23,マイク25からの音声の入力とスピーカ27からの音声の出力とを制御する音声入出力部29などを備えた構成となる。
この構成では、操作部23または通信部15を介して外部からの所定の指令を受けた際に、制御部11が記憶部13に記憶されたプログラムに従って各種処理を実行することによって、本発明の音域判定システムとしての機能を発揮する。
なお、本実施形態では、音域判定システム1が単体の装置(端末装置,カラオケ装置)により構成されているが、それぞれ協調して動作する複数の装置により構成できることはいうまでもない。
(2)制御部11による処理
以下に、制御部11が記憶部13に記憶されたプログラムに従って実行する各種処理手順を説明する。
(2−1)誤差集計処理
はじめに、誤差集計処理の処理手順を図2に基づいて説明する。
この誤差集計処理は、本音域判定システム1が端末装置により実現された構成であれば、ユーザインタフェース部17を介して規定の操作が行われた,または,通信部15を介してネットワーク2からの指令を受けた際に起動される。一方、本音域判定システム1がカラオケ装置により実現された構成であれば、カラオケ装置の動作モードが音域判定モードに切り替えられている状態で、ユーザによる楽曲の歌唱(楽曲データに基づく楽曲の再生)が行われる毎に起動される。
この誤差集計処理が起動されると、まず、ユーザによる楽曲の歌唱に伴う時間軸に沿った音高の推移を示す歌唱データが取得される(s110)。この歌唱データは、ユーザが楽曲を歌唱した際の音高(以降「歌唱音高」という)の推移を時間軸に沿って示したものであり、具体的には、ユーザの歌唱に係る音声に含まれた基本周波数を時間軸に沿って推移させた推移パターンを示すものである(図3(a)参照)。
このs110では、本音域判定システム1が端末装置により実現された構成であれば、ユーザインタフェース部17への操作を介して指定された歌唱データが記憶部13やメディアドライブ19(つまり記録メディア)から取得される、または、通信部15を介して受信された歌唱データが取得される。なお、こうして取得される歌唱データは、その歌唱に係るユーザ,楽曲をそれぞれ識別するためのユーザ識別情報,楽曲識別情報が付加されたものとなっている。
また、本音域判定システム1がカラオケ装置により実現された構成であれば、ユーザによる楽曲の歌唱に際して生成された歌唱データが取得される。この場合には、楽曲の歌唱に伴って音声入出力部29から入力されるユーザの音声データ(図4(a)参照)を取得しておき、この音声データにおいて時間軸に沿った位置それぞれの音高を算出し、この音高の時間軸に沿った推移(図4(b)参照)を示すデータが歌唱データとして生成されることとなる。なお、こうして取得される歌唱データは、その歌唱に際してカラオケ装置にログインしているユーザを識別するためのユーザ識別情報と、その歌唱に係る楽曲を識別するためのユーザ識別情報,楽曲識別情報が付加されたものとなっている。
次に、上記s110にて取得された歌唱データにおける歌唱に係る楽曲につき、この楽曲を適切に歌唱した場合における時間軸に沿った音高の推移を示すガイドデータが取得される(s120)。このガイドデータとは、楽曲を適切に歌唱した場合における時間軸に沿った音高の推移を示したものであり、具体的には、適切に歌唱した場合の音声に含まれるべき基本周波数を時間軸に沿って推移させた推移パターンを示すものである(図3(a)参照)。
本実施形態においては、複数の楽曲それぞれに対し、その楽曲を適切に歌唱した場合における時間軸に沿った音高の推移を示すガイドデータが記憶部13に複数記憶されており、このs120では、それらガイドデータのうち、上記s110にて取得された歌唱データに付加された楽曲識別情報で識別される楽曲に対応するガイドデータが読み出され、これが取得される。なお、このガイドデータは、ネットワーク2を介して接続されたサーバ装置などからの提供を受けて、これを取得することとしてもよい。
次に、上記s110にて取得された歌唱データで示される推移パターンにおける時間軸に沿った各単位区間(以降「歌唱区間」という)それぞれの位置が、上記s120にて取得されたガイドデータに基づいて修正される(s130)。
ここでは、歌唱データで示される歌唱区間それぞれについて、この歌唱区間における歌唱音高の推移パターンが、ガイドデータで示される時間軸上の各単位区間(以降「ガイド区間」という)のうち、その歌唱区間に対応するガイド区間における音高(以降「ガイド音高」という)の推移パターンと最も近似する(近似度が最大となる)ように、その歌唱区間における時間軸上の位置が修正(時間軸に沿って前後にシフト)される(図3(b)参照)。
このように推移パターンが近似するように時間軸上の位置を修正する手法としては、どのような手法を採用してもよいが、例えば、特開2005−107330号公報に記載されているような手法を採用することが考えられる。
なお、上述した歌唱区間,ガイド区間それぞれは、楽曲の時間軸に沿った全体を2以上に分割したそれぞれの区間を示すものであるが、楽曲全体を分割することなく全体として1つの歌唱区間,ガイド区間として取り扱うこととしてもよい。
次に、上記s130にて時間軸上の位置が修正された歌唱データで示される歌唱音高の推移パターンと、上記s120にて取得されたガイドデータで示されるガイド音高の推移パターンと、の対比により、ガイド音高に対する歌唱音高の誤差が算出される(s140)。
ここでは、歌唱データで示される歌唱区間における歌唱音高の推移パターンそれぞれが、ガイドデータで示されるガイド区間のうち、該当歌唱区間に対応するガイド区間における推移パターンと対比され、そのガイド区間において発声すべきガイド音高k(=1〜nのいずれか)に対する歌唱音高の誤差d[k]それぞれが算出される。
ここでいう「誤差」とは、例えば、歌唱音高の推移パターンとガイド音高の推移パターンとのパターンとしての形状の違いを数値化したものや、歌唱音高の推移パターンおよびガイド音高の推移パターンにおいて最終的に到達した音高それぞれの音高としての違い(または歌唱音高がガイド音高と同一の音高となっている期間の違い)を数値化したものなどである。
次に、ユーザ毎に用意された情報であり、ガイド音高に対する歌唱音高の誤差をガイド音高毎に分布させてなる誤差分布を示す誤差分布情報のうち、上記s110にて取得された歌唱データにおける歌唱に係るユーザに対応する誤差分布情報が取得される(s150)。ここでは、歌唱データに付加されたユーザ識別情報に基づき、これにより識別されるユーザに対応する誤差分布情報が取得される。
この誤差分布情報で示される「誤差分布」は、図5(a)に示すように、縦軸に誤差の累積値をとり、横軸に基本周波数で規定されるガイド音高kをとって、ガイド音高kに対する歌唱音高の誤差を分布させたものである。なお、図5は、ガイド音高kそれぞれにおける誤差の累積値をつなぐ包絡線により誤差の分布を表している。
次に、上記s150にて取得された誤算分布情報が、上記s140にて算出された誤差それぞれを誤差分布に追加的に分布させたものを示すように更新される(s160)。ここでは、上記s140にて算出されたガイド音高毎の誤差それぞれが、上記s150にて取得された誤算分布情報で示される誤差分布のうち、該当ガイド音高の誤差として積算され、こうして積算された誤差分布を示す誤差分布情報に更新される。
次に、上記s160にて更新された誤差分布情報に基づいて、この誤差分布情報で示される誤差分布に対応するユーザの音域が判定される(s170)。ここでは、上記s160にて更新された誤差分布情報を引数として後述する音域判定処理が行われ、ここでユーザの音域が判定される。
そして、上記s180にて判定されたユーザの音域が通知または記憶される(s180)。ここでは、装置の動作設定が、上記s170にて判定されたユーザの音域を通知すべき旨の設定となっている場合であれば、その音域がユーザインタフェース部17や表示部21に表示される、または、通信部15を介して外部の装置へと送信される。また、ユーザの音域を蓄積しておくべき旨の設定となっている場合であれば、その音域を示す情報が記憶部13や記録メディアに記憶される。
(2−2)音域判定処理
続いて、誤差集計処理のs170である音域判定処理の処理手順を図6に基づいて説明する。
この音域判定処理では、まず、誤差集計処理から渡された誤差分布情報で示される誤差分布が、所定数のガイド音高毎のグループに分類される(s210)。ここでは、図5(b)に示すように、誤差分布の横軸が所定数のガイド音高kに相当する帯域毎に区切られ、こうして区切られた同一の帯域におけるガイド音高それぞれが、同じグループm(mは、グループを示すインデックス)のものとして分類される。
次に、上記s210で分類されたグループ毎に、同一グループに分類されたガイド音高kの誤差d[k]を平均化した平均誤差d[m]が算出される(s220)。ここでは、図5(c)に示すように、誤差分布における全ガイド音高kの誤差d[k]が、グループm毎に平均化した平均誤差d[m]とされる。
次に、上記s210で分類されたグループそれぞれについて、該当グループmに隣接するガイド音高との間での誤差の変化率が算出される(s230)。本実施形態では、該当グループmと隣接するグループの平均誤差を、該当グループmの平均誤差d[m]で除してなる隣接誤差比が変化率を表すパラメータとして算出される。
より具体的には、図5(d)に示すように、該当グループmと低音側で隣接するグループm−1の平均誤差d[m−1]を、該当グループmの平均誤差d[m]で除した値d[m−1]/d[m]が算出され、これが誤差分布における該当グループmの隣接誤差比となる。この隣接誤差比は、変化率が大きくなるほど「1」から離れた値となる。なお、ここでは、該当グループmと低音側に隣接するグループm−1との関係で隣接誤差比を算出しているが、高音側に隣接するグループm+1との関係で隣接誤差比を算出することとしてもよい。
次に、上記s210で分類されたグループのうち、上記s230で算出された変化率が一定以上となっているグループを含む1以上のグループで構成される帯域が、以降の処理で音域の最高音を特定する際の対象帯域として抽出される(s240)。本実施形態では、図5(e)に示すように、高音側において、変化率として算出された隣接誤差比が最大となっている(「1」から正方向に最も離れている)グループmと、その隣接誤差比を算出する際に参照された平均誤差d[m−1]に対応するグループm−1と、で構成される高域側の帯域(高域側誤差変曲帯域)が、対象帯域として抽出される(同図の網掛け部A参照)。
なお、ここでは、該当グループmとグループm−1との関係で隣接誤差比が算出されることを前提に、隣接誤差比が最大となっているグループmとグループm−1とで構成される帯域が抽出されている。しかし、該当グループmとグループm+1との関係で隣接誤差比が算出される場合には、隣接誤差比が最大となっているグループmとグループm+1とで構成される帯域を、高域側誤差変曲帯域として抽出することとしてもよい。
こうして、上記s240で対象帯域が抽出された後、対象帯域を構成するグループのガイド音高それぞれについて、それぞれ隣接するガイド音高における誤差との差分Δdが算出される(s310)。
本実施形態では、ガイド音高kそれぞれについて、まず、該当ガイド音高kの高音側に隣接するガイド音高k+1における誤差d[k+1]と、該当ガイド音高kにおける誤差d[k]と、の差分Δd[k](=d[k+1]−d[k])が算出される。そして、該当ガイド音高kにおける誤差d[k]と、該当ガイド音高kの低音側に隣接するガイド音高k−1における誤差d[k−1]と、の差分Δd[k](=d[k]−d[k−1])が算出される。
次に、対象帯域を構成するグループのガイド音高それぞれについて、該当ガイド音高kについて上記s310で算出された差分Δd[k−1]と差分Δd[k]とを対比してなる誤差比|Δd[k−1]/Δd[k]|が算出される(s320)。
次に、対象帯域を構成するグループのガイド音高のうち、上記s310にて算出された差分Δd[k]が0より大きく、かつ、上記s320にて算出された誤差比|Δd[k−1]/Δd[k]|が最小となっているガイド音高kが抽出され、これがユーザの音域における最高音kupとして判定される(s330)。
誤差分布情報で示される誤差分布は、ガイド音高kに対する歌唱音高の推移パターンとしての誤差d[k]をガイド音高毎に分布させたものであるため、誤差d[k]が小さいガイド音高kは、該当ユーザが同じような推移パターンで適切に発声できている音高といえるのに対し、その誤差d[k]が大きいガイド音高は、該当ユーザが無理に発声している音高といえる。
そうすると、ユーザが適切に発声できているガイド音高から無理に発声しているガイド音高へと至る高音側誤差変曲帯域では、適切に発声できている最高音のガイド音高kと低音側に隣接するガイド音高k−1における誤差d[k−1]に対し、高音側に隣接するガイド音高k+1における誤差d[k]が急増する傾向を示す(図7(a)参照)。
この場合、このガイド音高kについての誤差d[k]と、高音側に隣接するガイド音高k+1についての誤差d[k+1]との差分Δd[k]は当然0より大きくなる。また、低音側に隣接するガイド音高k−1との比である誤差比|Δd[k−1]/Δd[k]|は一定の小さい値を示すことになる。具体的にいえば、この誤差比は、上記誤差変曲帯域においてユーザが適切に発声できている最高音のガイド音高kを変曲点として、分母であるΔd[k]が著しく大きくなることで最小値を示すこととなる。
こうして、差分Δd[k]が0より大きく、かつ、誤差比|Δd[k−1]/Δd[k]|が最小となっているガイド音高kを最高音kupと判定できる(図7(b)の網掛け部A参照)。
次に、上記s210で分類されたグループのうち、上記s230で算出された変化率が一定以上となっている1以上のグループで構成される帯域が、以降の処理で音域の最低音を特定する際の対象帯域として抽出される(s250)。本実施形態では、図5(e)に示すように、低音側において、変化率として算出された隣接誤差比が最小となっている(「1」から負方向に最も離れている)グループmと、その隣接誤差比を算出する際に参照された平均誤差d[m−1]に対応するグループm−1と、で構成される低域側の帯域(低域側誤差変曲帯域)が、対象帯域として抽出される(同図の網掛け部B参照)。
なお、ここでは、該当グループmとグループm−1との関係で隣接誤差比が算出されることを前提に、隣接誤差比が最小となっているグループmとグループm−1とで構成される帯域が抽出されている。しかし、該当グループmとグループm+1との関係で隣接誤差比が算出される場合には、隣接誤差比が最小となっているグループmとグループm+1とで構成される帯域を、最小側誤差変曲帯域として抽出することとしてもよい。
こうして、上記s250で対象帯域が抽出された後、対象帯域を構成するグループのガイド音高それぞれについて、それぞれ隣接するガイド音高における誤差との差分Δdが算出される(s410)。本実施形態では、上記310と同様、差分Δd[k](=d[k+1]−d[k])と、差分Δd[k](=d[k]−d[k−1])とが算出される。
次に、対象帯域を構成するグループのガイド音高それぞれについて、該当ガイド音高kについて上記s310で算出された差分Δd[k]と差分Δd[k−1]とを対比してなる誤差比|Δd[k]/Δd[k−1]|が算出される(s420)。
次に、対象帯域を構成するグループのガイド音高のうち、上記s410にて算出された差分Δd[k]が0より小さく、かつ、上記s420にて算出された誤差比|Δd[k−1]/Δd[k]|が最小となっているガイド音高kが抽出され、これがユーザの音域における最低音kloと判定される(s430)。
上記のとおり、誤差d[k]が小さいガイド音高kは、該当ユーザが同じような推移パターンで適切に発声できている音高といえるのに対し、その誤差d[k]が大きいガイド音高は、該当ユーザが無理に発声している音高といえるため、低音側の誤差変曲帯域では、適切に発声できている最低音のガイド音高kより高音側に隣接するガイド音高k+1における誤差d[k+1]に対し、ガイド音高kにおける誤差d[k]が急増する傾向を示す(図7(a)参照)。
この場合、このガイド音高kについての誤差d[k]と、高音側に隣接するガイド音高k+1についての誤差d[k+1]との差分Δd[k]は当然0より小さくなる。また、低音側に隣接するガイド音高k−1との比である誤差比|Δd[k−1]/Δd[k]|は一定の小さい値を示すことになる。具体的にいえば、この誤差比は、上記誤差変曲帯域においてユーザが適切に発声できている最高音のガイド音高kを変曲点として、分母であるΔd[k−1]が著しく大きくなることで最小値を示すこととなる。
こうして、差分Δd[k]が0より小さく、かつ、誤差比|Δd[k−1]/Δd[k]|が最小となっているガイド音高kを最高音kloと判定できる(図7(b)の網掛け部B参照)。
そして、上記s330にて判定された最高音kupから、s430にて判定された最低音kloまでの音高の範囲が、ユーザの音域と判定される(図7(b)(s260)。
こうして、s260を終えた後、プロセスが誤差集計処理(s180)へ戻る。
(3)作用,効果
本実施形態における音域判定システム1であれば、無理に発声している音高を除いた音高として判定されたユーザの音域における最高音kupおよび最低音kloに基づいて、このユーザの音域を適切に判定することができる(図s260)。
この最高音kup,最低音kloの判定に際しては、まず、ユーザの歌唱に伴う時間軸に沿った音高(歌唱音高)の推移パターンを、楽曲を適切に歌唱した場合における音高(ガイド音高)の推移パターンと対比することで、これら推移パターンの誤差dを算出し(図6のs140)、これをユーザの誤差分布に反映させる(同図s160)。
そして、誤差分布におけるガイド音高1〜nのうち、隣接するガイド音高における誤差dとの差分Δdそれぞれを対比した誤差比|Δd[k−1]/Δd[k]|が最小となるガイド音高kを、その誤差分布に対応するユーザの音域における最高音kupと判定している(同図s310〜s330)。同様に、隣接するガイド音高における誤差との差分それぞれを対比した誤差比|Δd[k]/Δd[k−1]|が最小となるガイド音高kを、その誤差成分に対応するユーザの音域における最低音kloと判定している(同図s410〜s430)。
このように、上記実施形態では、誤差比|Δd[k−1]/Δd[k]|が最小となっているガイド音高kを、最高音kupとして判定することができ、また、誤差比|Δd[k]/Δd[k−1]|が最小となっているガイド音高kを、最高音kloとして判定することができる。
また、上記実施形態では、最高音kupの判定時に参照するガイド音高kの範囲を、差分Δd[k]が0より大きいものに限定している(図6のs330)。
上述した変曲領域では、ガイド音高Kが適切に発声できている最高音より高くなるにつれて、高い側に隣接するガイド音高k+1における誤差d[k]が増加していくことが予想されるため、誤差d[k]と誤差d[k+1]との差分Δd[k]は当然0より大きくなる。
そうすると、対象となるガイド音高kを差分Δd[k]が0より大きいものに限定しても、最高音kupとして抽出されるべきガイド音高kが抽出対象から除かれることはないため、適切に処理負荷を抑えることができる。さらにいえば、適切なガイド音高kのみが対象となるため、不適切なガイド音高kを抽出してしまうことなどに起因して最高音kupの判定精度が低くなってしまうことも防止することができる。
また、上記実施形態では、最低音kloの判定時に参照するガイド音高kの範囲を、差分Δd[k]が0より小さいものに限定している(図6のs430)。
上述した変曲領域では、ガイド音高kが適切に発声できている最低音より高くなるにつれて、高い側に隣接するガイド音高k+1における誤差d[k]が減少していくことが予想されるため、誤差d[k]と誤差d[k+1]との差分Δd[k]は当然0より小さくなる。
そうすると、対象となるガイド音高kを差分Δd[k]が0より小さいものに限定しても、最低音kloとして抽出されるべきガイド音高kが抽出対象から除かれることはないため、適切に処理負荷を抑えることができる。さらにいえば、適切なガイド音高kのみが対象となるため、不適切なガイド音高kを抽出してしまうことなどに起因して最低音kloの判定精度が低くなってしまうことも防止することができる。
また、上記実施形態では、誤差分布におけるガイド音高kのうち、音高が高い側に位置する所定数のガイド音高からなる帯域を高音側の誤差変曲帯域として抽出したうえで、最高音kupの判定を行っている(s240〜s330)。最高音kupとなるガイド音高kは、誤差分布における全てのガイド音高のうち、高音側の変曲領域にあるため、最高音kupの判定時に参照するガイド音高kの範囲を、高音側の変曲領域を形成する帯域に限定しても問題なく、これにより最高音kupの判定に要する処理負荷を抑えることができる。
また、上記実施形態では、誤差分布におけるガイド音高kのうち、音高が低い側に位置する所定数のガイド音高からなる帯域を低音側の誤差変曲帯域として抽出したうえで、最低音kloの判定を行っている(s250〜s430)。最低音kloとなるガイド音高kは、誤差分布における全てのガイド音高のうち、低音側の変曲領域にあるため、最低音kloの判定時に参照するガイド音高kの範囲を、低音側の変曲領域を形成する帯域に限定しても問題なく、これにより最低音kloの判定に要する処理負荷を抑えることができる。
また、上記実施形態では、誤差分布のガイド音高のうち、音高が高い側に位置しており,かつ,それぞれ隣接するガイド音高との間での誤差の変化率が一定以上となっているガイド音高それぞれからなる高音誤差変曲帯域を抽出している(図6のs240)。
誤差分布における高音側の帯域では、ガイド音高kが適切に発声できる音高より高くなるにつれて誤差が大きくなっていくことが予想されるため、このように誤差が大きくなっていくことに伴い、それぞれ隣接するガイド音高における誤差の変化度合も大きくなっていく。
そのため、上述のように、帯域を抽出する際の変化率として、ユーザが適切に発声できるガイド音高以上の音高における変化率として想定される値(本実施形態においては「隣接誤差比が最大」となる値)を「一定の変化率」としておくことにより、高音誤差変曲帯域として適切な帯域を抽出することができる。
また、上記実施形態では、誤差分布のガイド音高のうち、音高が低い側に位置しており,かつ,それぞれ隣接するガイド音高との間の誤差の変化率が一定以上となっているガイド音高それぞれからなる低音誤差変曲帯域を抽出している(図6のs250)。
誤差分布における低音側の帯域では、ガイド音高kが適切に発声できる音高より低くなるにつれて誤差が大きくなっていくことが予想されるため、このように誤差が大きくなっていくことに伴い、それぞれ隣接するガイド音高における誤差の変化度合も大きくなっていく。
そのため、上述のように、帯域を抽出する際の変化率として、ユーザが適切に発声できるガイド音高以下の音高における変化率として想定される値(本実施形態においては「隣接誤差比が最小」となる値)を「一定の変化率」としておくことにより、低音誤差変曲帯域として適切な帯域を抽出することができる。
また、上記実施形態においては、所定数のガイド音高からなるグループ毎のガイド音高の誤差を平均化し(図6のs220)、それぞれ隣接するグループ間の隣接誤差比が最大となっている1以上のグループについて、このグループにおけるガイド音高それぞれからなる高音誤差変曲領域を抽出することができる(同図s240)。同様に、隣接誤差比が最小となっている1以上のグループについて、このグループにおけるガイド音高それぞれからなる低音誤差変曲領域を抽出することができる。
また、上記実施形態においては、歌唱音高の推移パターンとガイド音高の推移パターンとが最も近似するように、歌唱音高における時間軸上の位置が修正されたうえで音高の誤差が算出される(図2のs140)。このように推移パターンが近似するということは、その音高の変化するタイミングも近似した状態になることを意味するため、こうして、音高の変化が開始されたタイミングのズレを補償することができる。
(4)変形例
以上、本発明の実施の形態について説明したが、本発明は、上記実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態をとり得ることはいうまでもない。
例えば、上記実施形態においては、最低音kupの判定時に参照するガイド音高kの範囲を、差分Δd[k]が0より大きいものに限定するように構成されている(図6のs330)。しかし、ここで参照するガイド音高kは、誤差分布における高音側のガイド音高であればよく、差分Δd[k]とは無関係に決めてもよい。具体的な例としては、ガイド音高全域における高音側の一定割合(例えば、数十%など)とすることが考えられる。
また、上記実施形態においては、最低音kloの判定時に参照するガイド音高kの範囲を、差分Δd[k]が0より小さいものに限定するように構成されている(図6のs430)。しかし、ここで参照するガイド音高kは、誤差分布における低音側のガイド音高であればよく、差分Δd[k]とは無関係に決めてもよい。具体的な例としては、ガイド音高全域における低音側の一定割合(例えば、数十%など)とすることが考えられる。
(5)本発明との対応関係
以上説明した実施形態において、図2のs140が本発明における誤差算出手段であり、同図s160が本発明における分布更新手段であり、図6のs330が本発明における最高音判定手段であり、同図s240が本発明における高域誤差変曲帯域抽出手段であり、同図s430が本発明における最低音判定手段であり、同図s250が本発明における低域誤差変曲帯域抽出手段であり、同図s260が本発明における音域判定手段である。