(57)【要約】【課題】推定された周波数推移において連続性を有さない区間について、入力音声から検出されるべき基本周波数の推移に近似させる。【解決手段】ｆ０補正処理では、不連続領域として倍音誤検出領域や短期不連続領域が検出されると（Ｓ４４６０：ＮＯまたはＳ４３７０：ＮＯ）、それら倍音誤検出領域または短期不連続領域を時間進行に沿って挟む直前の単位区間における音声基本周波数ｆ０から、一定の変動幅で変動しながら順に、直後の単位区間における音声基本周波数ｆ０へと到達するように補正する（Ｓ４４８０、またはＳ４３８０）。一方、不連続領域として長期不連続領域が検出されると（Ｓ４３５０：ＹＥＳ）、その長期不連続領域に対して時間進行上直前の単位区間における音声基本周波数ｆ０を、長期不連続領域を形成する単位区間における音声基本周波数ｆ０とする（Ｓ４３６０）。【選択図】図８
2011065042.tif 000002
【特許請求の範囲】
【請求項１】
対象音声において時間軸に沿って連続する単位区間毎に、その単位区間における音声の基本周波数を検出する基本周波数検出手段と、
前記基本周波数検出手段により検出された基本周波数それぞれに基づいて、前記基本周波数の時間軸に沿った推移である周波数推移を特定する推移特定手段と、
前記推移特定手段により特定された周波数推移のうち、連続する単位区間同士の間で基本周波数が規定比率以上で変動した特定変動を示し、各特定変動以降にて連続する単位区間同士における基本周波数の比が前記規定比率満である特定状態が、予め規定された規定数未満の単位区間にわたって継続する不連続領域を検出する不連続検出手段と、
前記推移特定手段により特定された周波数推移を、前記不連続検出手段により検出された不連続領域に対応する単位区間それぞれの基本周波数が、その不連続領域の直前の単位区間の基本周波数である直前周波数から、前記規定比率未満で変動しながら順に、該不連続領域の直後の単位区間の基本周波数である直後周波数へと到達するように補正する周波数補正を実行する周波数補正手段と、
を備えることを特徴とする音声処理装置。
【請求項２】
前記不連続検出手段は、
前記特定変動以降にて連続する単位区間を特定区間とし、その特定区間における基本周波数と、前記特定変動直前の単位区間における基本周波数との比が前記規定比率以下となると、前記特定区間にて前記特定状態の継続が終了したものとすることを特徴とする請求項１に記載の音声処理装置。
【請求項３】
前記周波数補正手段は、
前記直前周波数から、一定の変動幅で変動しながら順に前記直後周波数へと直線的に到達するように補正することを前記周波数補正として実行することを特徴とする請求項１または請求項２に記載の音声処理装置。
【請求項４】
前記不連続検出手段は、
前記推移特定手段により特定された周波数推移のうち、前記基本周波数が検出されていない単位区間が前記規定数未満にわたってのみ継続している領域を前記不連続領域として検出する
ことを特徴とする請求項１ないし請求項３のいずれか一項に記載の音声処理装置。
【請求項５】
前記推移特定手段により特定された周波数推移のうち、前記基本周波数が検出されていない単位区間が前記規定数以上にわたって継続している長期不連続領域を検出する長期不連続検出手段を備え、
前記周波数補正手段は、
前記長期不連続検出手段で検出された長期不連続領域において時間軸に沿った早い時間側に位置する単位区間から連続する１以上の単位区間それぞれの基本周波数が、前記長期不連続領域の時間軸に沿った早い時間側に隣接する単位区間の基本周波数となるように、前記推移特定手段により特定された周波数推移を補正することを前記周波数補正として実行することを特徴とする請求項１ないし請求項４のいずれか一項に記載の音声処理装置。
【請求項６】
前記対象音声において時間軸に沿って同一音高が継続しているとみなせる発音区間それぞれを特定する発音区間特定手段と、
前記推移特定手段により特定された周波数推移または前記周波数補正手段により補正された周波数推移のうち、前記発音区間特定手段により特定された発音区間に対応する周波数推移を形成する単位区間の基本周波数を、その発音区間において発音された音の音高として特定する採譜手段と、
を備えていることを特徴とする請求項１ないし請求項５のいずれか一項に記載の音声処理装置。
【請求項７】
対象音声において時間軸に沿って連続する単位区間毎に、その単位区間における音声の基本周波数を検出する基本周波数検出手順と、
前記基本周波数検出手順により検出された基本周波数それぞれに基づいて、前記基本周波数の時間軸に沿った推移である周波数推移を特定する推移特定手順と、
前記推移特定手順により特定された周波数推移のうち、連続する単位区間同士の間で基本周波数が規定比率以上変動した特定変動を示し、各特定変動以降にて連続する単位区間同士における基本周波数の比が前記規定比率未満である特定状態が、予め規定された規定数未満の単位区間にわたって継続する不連続領域を検出する不連続検出手順と、
前記推移特定手順により特定された周波数推移を、前記不連続検出手順により検出された不連続領域に対応する単位区間それぞれの基本周波数が、その不連続領域の直前の単位区間の基本周波数である直前周波数から、前記規定比率未満で変動しながら順に、該不連続領域の直後の単位区間の基本周波数である直後周波数へと到達するように補正する周波数補正を実行する周波数補正手順とを、
コンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力音声から推定した基本周波数を補正する音声処理装置、及びプログラムに関する。
【背景技術】
【０００２】
従来、時間の進行に沿って連続する入力音声から、その入力音声に設定された時間窓毎に入力音声の音声基本周波数を推定し、その推定した音声基本周波数に基づいて採譜する採譜装置が知られている（例えば、特許文献１参照）。
【０００３】
一般的に、この種の採譜装置では、入力音声の時間窓における平均音圧が予め規定された規定音圧以上であれば、時間窓の入力音声を周波数解析（通常、ＦＦＴ（ｆａｓｔ  Ｆｏｕｒｉｅｒ  ｔｒａｎｓｆｏｒｍ））する。そして、その周波数解析により導出された振幅スペクトルの自己相関値を用いて、音声基本周波数を推定することがなされている（以下、従来推定技術とする）。
【０００４】
この従来推定技術にて用いられる自己相関値は、１つの時間窓から導出された振幅スペクトル（以下、基準スペクトルとする）の各周波数成分における振幅値と、その基準スペクトルにおける各周波数成分から規定周波数幅だけ増加させた周波数成分における振幅値との積和である。このため、規定周波数幅だけ変位させた際に、基本周波数成分、またはその基本周波数成分の倍音成分が一致すると、自己相関値は大きな値となる。
【０００５】
つまり、自己相関値は、基準スペクトル同士を、周波数軸に沿って規定周波数幅ずつ変位させた際の相関の強さであり、基本周波数成分の確からしさを表すものである。
なお、従来推定技術では、変位幅そのものを周波数として捉え、自己相関値が最大となるポジションの周波数が音声基本周波数として推定されることが一般的である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１４８１３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、発音開始直後に設定された時間窓における振幅スペクトルを用いた自己相関値は、基本周波数に対応する値と、倍音成分に対応する値とが、近似することがある。
このような場合、従来推定手法では、基本周波数成分の倍音成分を音声基本周波数として誤推定してしまうという問題がある。
【０００８】
一般的に、この課題を解決するために、基本周波数の時間進行に沿った推移（以下、周波数推移とする）をローパスフィルタに通す（即ち、移動平均の値を算出する）ことで、その周波数推移を平滑化することがなされている（以下、従来補正技術と称す）。
【０００９】
このようにローパスフィルタに周波数推移を通過させると、倍音成分を基本周波数として誤推定した時間窓に対応する期間については、本来検出されるべき基本周波数に、周波数推移を近づけることが可能である。
【００１０】
しかしながら、時間進行に沿って隣接する時間窓間に対応する区間（以下、特定区間とする）において、もともと入力音声に規定値以上の音高変動が存在する（即ち、周波数推移が周波数軸に沿って不連続である）場合がある。このような場合、従来補正技術により、特定区間に対応する周波数推移をローパスフィルタに通過させると、本来正しく推定されるべき周波数に対しても修正されて間違いとなってしまうという問題がある。
【００１１】
また、上述した従来推定技術では、入力音声の時間窓における平均音圧が規定音圧未満であると、周波数解析がなされない。このため、平均音圧が規定音圧未満である期間に設定された時間窓については、本来、推定されるべき基本周波数が推定されず、推定結果としての周波数推移が時間進行に沿って不連続となる。
【００１２】
このように不連続となる期間における周波数推移を、ローパスフィルタに通したとしても、ローパスフィルタ通過後の周波数推移は、本来、基本周波数の推移として検出されるべき周波数とは異なる周波数のままであるという問題があった。
【００１３】
つまり、周波数推移を平滑化する従来補正技術では、推定された基本周波数の推移が連続性を有さない区間について、本来、推定されるべき基本周波数の推移に近似させることができないという問題がある。
【００１４】
そこで、本発明は、推定された周波数推移が連続性を有さない区間について、入力音声から検出されるべき基本周波数の推移に近似させる技術を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するためになされた本発明の音声処理装置は、基本周波数検出手段が、対象音声において時間軸に沿って連続する単位区間毎に、その単位区間における音声の基本周波数を検出し、その検出された基本周波数それぞれに基づいて、推移特定手段が、基本周波数の時間軸に沿った推移である周波数推移を特定する。
【００１６】
これと共に、不連続検出手段が、推移特定手段により特定された周波数推移のうち、連続する単位区間同士の間で基本周波数が規定比率以上で変動した特定変動を示し、各特定変動以降にて連続する単位区間同士における基本周波数の比が規定比率未満である特定状態が、規定数未満の単位区間にわたって継続する不連続領域を検出する。
【００１７】
そして、周波数補正手段が、推移特定手段により特定された周波数推移を、不連続検出手段により検出された不連続領域に対応する単位区間それぞれの基本周波数が、その不連続領域の直前の単位区間の基本周波数である直前周波数から、規定比率未満で変動しながら順に、該不連続領域の直後の単位区間の基本周波数である直後周波数へと到達するように補正する周波数補正を実行する。
【００１８】
つまり、本発明の音声処理装置では、周波数推移から、連続する単位区間同士の間で基本周波数が規定比率以上で変動（即ち、特定変動）した以降、特定状態が規定数未満の単位区間にわたって継続する領域を不連続領域として検出している。このように検出された不連続領域は、単位区間にて本来推定されるべき基本周波数が推定されず、周波数推移が時間進行に沿って不連続となった領域（以下、短期不連続領域と称す）や、基本周波数を検出する際に、基本周波数の倍音成分を偶発的に基本周波数として誤検出したことで周波数推移が不連続となった領域（以下、倍音誤検出領域）である可能性が高い。
【００１９】
この不連続領域に対応する単位区間それぞれの基本周波数を、直前周波数から、規定比率未満で変動しながら順に、直後周波数へと到達するように補正する、本発明の音声処理装置によれば、不連続領域における基本周波数を、従来周波数補正技術に比べて、本来、推定されるべき基本周波数に近似させることができる。すなわち、不連続領域における音高を、入力音声の音高に近似させて推定することができる。
【００２０】
また、本発明の音声処理装置における不連続検出手段は、請求項２に記載のように、特定区間における基本周波数と、特定変動直前の単位区間における基本周波数との比が規定比率以下となると、該特定区間にて特定状態の継続が終了したものとするように構成されていても良い。ただし、ここでいう特定区間とは、特定変動以降にて連続するそれぞれの単位区間である。
【００２１】
このように構成された本発明の音声処理装置によれば、特定変動の後、時間進行に沿って連続する単位区間における周波数が、直前周波数と同じ周波数となるまで規定比率未満で緩やかに変動する領域であっても、不連続領域として検出することができる。
【００２２】
ところで、例えば、不連続領域が倍音誤検出領域や短期不連続領域であれば、これらの不連続領域における基本周波数は、本来、不連続領域を時間軸に沿って挟む一方の単位区間の基本周波数から、他方の単位区間の基本周波数へと滑らかに遷移している可能性が高い。
【００２３】
このため、本発明の音声処理装置における周波数補正手段は、請求項３に記載のように、直前周波数から、一定の変動幅で変動しながら順に直後周波数へと直線的に到達するように補正することを周波数補正として実行するように構成されていることが望ましい。
【００２４】
このように構成された本発明の音声処理装置によれば、倍音検出領域における周波数推移を、入力音声の音高の推移により近似させることができる。
ところで、周波数補正装置における基本周波数検出手段の中には、周波数解析の結果に対する信頼性が低いと判定した場合に、対応する単位時間における基本周波数を検出しないようにされているものがある。
【００２５】
このような基本周波数検出手段に、多くのノイズが含まれた入力音声が入力されると、該当する単位区間における基本周波数が検出されず、基本周波数検出手段での検出結果を、その単位区間における基本周波数が未検出であることを表す未検出区間とすることがある。そして、例えば、未検出区間の基本周波数を、０［Ｈｚ］や検出対象の周波数帯よりも大きな周波数とした場合、基本周波数が検出された単位区間と未検出区間との間の基本周波数の変動は、規定比率以上とみなせる。
【００２６】
このため、本発明の音声処理装置における不連続検出手段は、請求項４に記載のように、推移特定手段により特定された周波数推移のうち、基本周波数が検出されていない単位区間が規定数未満にわたってのみ継続している領域を不連続領域として検出するように構成されていることが望ましい。
【００２７】
このように構成された本発明の音声処理装置によれば、入力音声にノイズが含まれることによって本来検出されるべき基本周波数が検出されなかった領域（いわゆる音飛びした区間、即ち、上述した短期不連続領域）を不連続領域として検出することができる。
【００２８】
ところで、本発明の音声処理装置は、請求項５に記載のように、長期不連続検出手段が、推移特定手段により特定された周波数推移のうち、基本周波数が検出されていない単位区間が規定数以上にわたって継続している長期不連続領域を検出するように構成されていても良い。そして、このように構成された音声処理装置では、周波数補正手段は、長期不連続検出手段で検出された長期不連続領域において時間軸に沿った早い時間側に位置する単位区間から連続する１以上の単位区間それぞれの基本周波数が、長期不連続領域の時間軸に沿った早い時間側に隣接する単位区間の基本周波数となるように、推移特定手段により特定された周波数推移を補正することを周波数補正として実行するように構成されていても良い。
【００２９】
このように構成された周波数補正装置によれば、短期不連続領域よりも時間長が長い長期不連続領域における基本周波数を補正することができ、長期不連続領域における補正後の周波数推移を、利用者が入力音声を発声した際に想定した音高（以下、想定音高と称す）の推移に近似させることができる。
【００３０】
本発明の音声処理装置は、請求項５に記載のように、発音区間特定手段が、対象音声において時間軸に沿って同一音高が継続しているとみなせる発音区間それぞれを特定し、採譜手段が、その特定された周波数推移または周波数補正手段により補正された周波数推移のうち、発音区間特定手段により特定された発音区間に対応する周波数推移を形成する単位区間の基本周波数を、その発音区間において発音された音の音高として特定するように構成されていても良い。つまり、本発明は、採譜装置としてなされたものでも良い。
【００３１】
このように構成された本発明の音声処理装置によれば、周波数推移を想定音高に近似させることができるため、採譜手段にて特定される音高も想定音高に近似させることができる。
【００３２】
本発明は、コンピュータに実行させるプログラムとしてなされたものでも良い。
ただし、本発明のプログラムは、請求項７に記載のように、対象音声において時間軸に沿って連続する単位区間毎に、その単位区間における音声の基本周波数を検出する基本周波数検出手順と、その検出された基本周波数それぞれに基づいて、周波数推移を特定する推移特定手順と、その特定された周波数推移のうち、不連続領域を検出する不連続検出手順と、推移特定手順により特定された周波数推移を、不連続検出手順により検出された不連続領域に対応する単位区間それぞれの基本周波数が、直前周波数から、規定比率未満で変動しながら順に、直後周波数へと到達するように補正する周波数補正を実行する周波数補正手順とをコンピュータに実行させる必要がある。
【００３３】
本発明がこのようになされたプログラムであれば、例えば、ＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ、ハードディスクやフラッシュメモリ等のコンピュータ読み取り可能な記録媒体に記録し、必要に応じてコンピュータにロードさせて起動することや、必要に応じて通信回線を介してコンピュータに取得させて起動することにより用いることができる。そして、コンピュータに各手順を実行させることで、そのコンピュータを、請求項１に記載された音声処理装置として機能させることができる。
【図面の簡単な説明】
【００３４】
【図１】楽曲検索システムの概略構成を示すブロック図である。
【図２】楽曲検索処理の処理手順を示したフローチャートである。
【図３】音高推定処理の処理手順を示したフローチャートである。
【図４】相関ピークの検出方法を模式的に示した説明図である。
【図５】音声基本周波数ｆ０の決定方法を模式的に示した説明図である。
【図６】信頼度算出処理の処理手順を示したフローチャートである。
【図７】ｆ０候補信頼度の導出過程を例示した説明図である。
【図８】ｆ０補正処理の処理手順を示したフローチャートである。
【図９】ｆ０補正処理の動作例を説明するための説明図である。
【図１０】開始・終了タイミング推定処理の処理手順を示したフローチャートである。
【図１１】開始・終了タイミングの推定過程を例示した説明図である。
【図１２】開始・終了タイミングの推定過程を例示した説明図である。
【図１３】採譜処理の処理手順を示したフローチャートである。
【図１４】採譜処理おいて、音符音高の決定過程を例示した説明図である。
【図１５】採譜結果照合処理の処理手順を示したフローチャートである。
【発明を実施するための形態】
【００３５】
以下、本発明の実施形態を図面と共に説明する。
まず、図１は、本発明が適用された音声処理装置を備えた楽曲検索システムの概略構成を示すブロック図である。
〈楽曲検索システムについて〉
楽曲検索システム１は、利用者が発声することで入力された入力音声から、その音声を入力する際に利用者が意図したと推定される楽曲（以下、意図予想曲と称す）を検索するものである。
【００３６】
このため、図１に示すように、楽曲検索システム１は、楽曲毎に予め用意された楽曲データを格納するサーバ４０と、入力音声を採譜し、その採譜した結果を楽曲データに照合することで意図予想曲を検索する音声処理装置２０とを備えている。なお、音声処理装置２０は、ネットワーク（例えば、専用回線やＷＡＮ）を介してサーバ４０に接続されている。
【００３７】
このうち、サーバ４０は、楽曲データを格納する記憶装置４１と、ＲＯＭ，ＲＡＭ，ＣＰＵを少なくとも有した周知のマイクロコンピュータ４２とを備えた情報処理装置を中心に構成された周知のサービス用サーバ装置である。
〈楽曲データについて〉
次に、記憶装置４１に格納される楽曲データについて説明する。
【００３８】
この楽曲データは、当該楽曲を識別するためのデータである楽曲情報と、当該楽曲の演奏開始から演奏終了までに要する時間を示す時間情報と、当該楽曲の旋律に関するデータであるガイドメロディとを有している。
【００３９】
そして、楽曲情報には、楽曲を特定するための曲番号データと、その楽曲の曲名を示す曲名データとが少なくとも含まれている。
また、ガイドメロディは、楽曲の主旋律（以下、基準旋律と称す）を形成する各構成音について、それぞれの音高及び音価が表された周知のデータである。具体的に、本実施形態における構成音の音長は、楽音出力開始時間及び楽音出力終了時間によって表されている。ただし、ここで言う楽音出力開始時間とは、その構成音の出力を開始するまでの当該楽曲の演奏開始からの時間であり、楽音出力終了時間とは、その構成音の出力を終了するまでの当該楽曲の演奏開始からの時間である。つまり、楽音出力開始時間と楽音出力終了時間との間の時間長が、当該構成音の音長となる。
【００４０】
以下、ガイドメロディにおいて、各構成音の音高及び音価を表す情報を、基準音符データと称す。ただし、この基準音符データは、各構成音の音高及び音価が、その構成音の基準旋律における時間進行上の順番と対応付けられたものである。
〈音声処理装置について〉
次に、音声処理装置２０について説明する。
【００４１】
ここで図１へと戻り、音声処理装置２０は、通信部２１と、表示部２２と、操作受付部２３と、マイクロホン２４と、音声入力部２５と、音声出力部２６と、スピーカ２７と、記憶部２８と、制御部３０とを備えている。
【００４２】
このうち、通信部２１は、音声処理装置２０をネットワーク（例えば、専用回線や、ＷＡＮ）に接続し、その接続されたネットワークを介して外部（即ち、サーバ４０）と通信を行うための通信インタフェースである。
【００４３】
そして、表示部２２は、例えば、液晶ディスプレイ等から構成された周知の表示装置である。また、操作受付部２３は、例えば、キーボードやポインティングデバイス（例えば、マウス）等の周知の入力装置からなる。
【００４４】
マイクロホン２４は、音声を入力するための周知の装置である。そして、音声入力部２５は、マイクロホン２４を介して入力された音声（アナログ信号）をサンプリングし、そのサンプリング値（標本値）を制御部３０に入力するＡＤ変換器として構成されている。なお、以下では、音声入力部２５にてサンプリング値へと変換された音声を音声データと称す。
【００４５】
さらに、音声出力部２６は、制御部３０からの指令に基づく制御信号を、スピーカ２７に出力するように構成されている。そして、スピーカ２７は、音声出力部２６からの制御信号を音に変換して放音するように構成されている。
【００４６】
また、記憶部２８は、電源が切断されても記憶内容を保持すると共に、記憶内容を読み書き可能に構成された記憶装置（例えば、ハードディスクドライブ）であり、プログラムや通信部２１を介してサーバ４０から取得した楽曲データ等が格納される。
【００４７】
次に、制御部３０は、ＲＯＭ３１と、ＲＡＭ３２と、ＣＰＵ３３とを少なくとも有した周知のマイクロコンピュータを中心に構成されている。
このうち、ＲＯＭ３１は、電源が切断されても記憶内容を保持する必要のあるプログラムやデータを格納するものである。また、ＲＡＭ３２は、プログラムやデータを一時的に格納するものであり、記憶部２８からの処理プログラムが転送されて格納されるものである。
【００４８】
そして、ＣＰＵ３３は、ＲＯＭ３１やＲＡＭ３２に記憶された処理プログラムに従って各処理（各種演算）を実行して、音声処理装置２０を構成する各部２１，２２，２３，２５（２４），２６（２７）,２８に対する制御を実行する。
【００４９】
なお、本実施形態では、処理プログラムとして、利用者がマイクロホン２４を介して入力した入力音声に基づいて、その入力音声を採譜した音声音符データを生成し、その生成した音声音符データを基準音符データそれぞれに照合した結果に従って意図予想曲を検索する楽曲検索処理を制御部３０（より正確には、ＣＰＵ３３）が実行するためのものが用意されている。
〈楽曲検索処理について〉
次に、制御部３０が実行する楽曲検索処理について説明する。
【００５０】
ここで、図２は、楽曲検索処理の処理手順を示したフローチャートである。
この楽曲検索処理は、マイクロホン２４を介して入力された入力音声に基づく音声データが、少なくとも１つ記憶部２８に格納された後、操作受付部２３介して起動指令を受け付けると起動される。ここでの入力音声は、時間の進行に沿って、一定時間以上連続（継続）したものである。
【００５１】
そして、図２に示すように、楽曲検索処理は、起動されると、まず、Ｓ１１０にて、記憶部２８に記憶された音声データの中から、１つの音声データを取得する。
続く、Ｓ１２０では、Ｓ１１０にて取得した音声データに対して、それぞれ周知のダウンサンプリング、直流成分の除去、ノイズ除去処理、コンプレッサ処理、及びノーマライズを事前処理として実行する。以下、Ｓ１２０にて事前処理が完了した音声データを処理済音声データと称す。
【００５２】
そして、Ｓ１３０では、処理済音声データにおいて入力音声の時間進行に沿って規定された単位区間毎に、その単位区間における入力音声の音高（音声基本周波数ｆ０）を推定する音高推定処理を実行する。
【００５３】
さらに、Ｓ１５０では、入力音声において、規定の音圧以上で発声を継続した期間である発音期間それぞれの開始タイミング及び終了タイミングを推定する開始・終了タイミング推定処理を実行する。以下、開始・終了タイミング推定処理にて推定される開始タイミング、終了タイミングを、それぞれ、発音開始タイミング、発音終了タイミングと称す。
【００５４】
続く、Ｓ１９０では、Ｓ１５０にて推定された発音開始タイミング及び発音終了タイミングに基づいて、１つの音符とみなせる期間（以下、音符期間と称す）を推定し、その推定した音符期間における音高（以下、音符音高と称す）を、Ｓ１３０にて推定された単位区間毎の音声基本周波数ｆ０に基づいて特定する採譜処理を実行する。この採譜処理により、各音符期間の期間長（即ち、音長、または、この音長を量子化した音価）と、音符音高とが対応付けられたデータ、即ち、音声音符データとして、入力音声を音符化したデータが生成される。
【００５５】
そして、Ｓ２１０では、Ｓ１９０で生成された音声音符データを、基準音符データに照合し、その照合した結果に基づいて意図予想曲を特定すると共に、その特定した意図予想曲を音声処理装置２０の利用者に報知する採譜結果照合処理を実行する。
【００５６】
その後、本楽曲検索処理を終了する。
〈音高推定処理について〉
次に、楽曲検索処理のＳ１３０にて起動される音高推定処理について説明する。
【００５７】
ここで、図３は、音高推定処理の処理手順を示したフローチャートである。
この音高推定処理は、図３に示すように、起動されると、Ｓ３１０にて、処理済音声データを周波数解析する。この周波数解析として、本実施形態では、処理済音声データにおける予め規定されたサンプリング数の標本値をＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）する。なお、サンプリング数分の標本値は、処理済音声データの開始から終了までの間を、時間進行に沿った一部を重複させながら繰り返し取得される。これにより、入力音声の振幅スペクトル（即ち、周波数成分の分布）が、サンプリング数に対応する単位区間毎に導出される。
【００５８】
続く、Ｓ３３０では、Ｓ３１０にて導出した振幅スペクトルに基づいて、振幅スペクトルの周波数成分が基本周波数成分であることの確からしさを表す自己相関値を導出する。
具体的には、１つの振幅スペクトルの各周波数成分における振幅値と、その振幅スペクトルにおける各周波数成分から規定周波数幅だけ増加させた周波数成分における振幅値との積和を、自己相関値として導出している。このため、規定周波数幅だけ変位させる毎に導出される自己相関値は、規定周波数幅だけ変位させた際に、基本周波数成分、またはその基本周波数の倍音成分が一致すると大きな値となる。
【００５９】
なお、Ｓ３３０では、振幅スペクトル（即ち、単位区間）毎に、その振幅スペクトルから導出された全ての自己相関値の平均値（以下、自己相関平均値と称す）も導出する。
さらに、Ｓ３５０では、先のＳ３３０にて導出された自己相関値を平滑化微分することで、各単位区間における音声基本周波数ｆ０の候補となる周波数を表す区間ｆ０候補を検出する。
【００６０】
その区間ｆ０候補は、図４に示すように、自己相関値の軌跡における極大値（以下、相関ピークとする）に対応する周波数である。ここでの自己相関値の軌跡とは、規定周波数毎の自己相関値を周波数軸に沿って配置してなるものである。
【００６１】
ただし、本実施形態では、自己相関値が自己相関平均値以上である相関ピークのみを、区間ｆ０候補としている（すなわち、図４に示す例では、第４相関ピークが自己相関平均値未満であるため、第４相関ピークに対応する周波数は、区間ｆ０候補として検出されない）。さらに、本実施形態におけるＳ３５０では、区間ｆ０候補として検出されない周波数成分における自己相関値は、その値を０としている。
【００６２】
このＳ３５０は、処理済音声データに規定された全単位区間について終了するまで繰り返し実行される。
続くＳ３７０では、Ｓ３５０にて検出された区間ｆ０候補それぞれの音声基本周波数ｆ０としての尤度を表すｆ０候補信頼度を算出する信頼度算出処理を実行する。この信頼度算出処理にて導出されるｆ０候補信頼度は、尤度が高いほど大きな値となる。
【００６３】
なお、この信頼度算出処理は、単位区間毎に実行される。このため、一回の信頼度算出処理により、１つの振幅スペクトルから導出された区間ｆ０候補それぞれについて、ｆ０候補信頼度が算出される。
【００６４】
そして、Ｓ３９０では、Ｓ３７０にて導出された単位区間毎のｆ０候補信頼度に基づいて、その単位区間における音声基本周波数ｆ０を決定する。その音声基本周波数ｆ０として決定される区間ｆ０候補は、図５に示すように、Ｓ３７０にて導出された全てのｆ０候補信頼度の中で、値が最も高いｆ０候補信頼度に対応するものである（図５に示す例では、第１区間ｆ０候補が、音声基本周波数ｆ０として決定される）。
【００６５】
ただし、本実施形態のＳ３９０では、予め規定された信頼度閾値未満であるｆ０候補信頼度は、その値を０としている（図５に示す例では、第３区間ｆ０候補のｆ０候補信頼度が信頼度閾値未満であるため、そのｆ０候補信頼度の値が０となる）。そして、単位区間における全てのｆ０候補信頼度が信頼度閾値未満であれば、その単位区間における音声基本周波数ｆ０を０［Ｈｚ］に決定する。つまり、ｆ０候補信頼度が低い場合、そのｆ０候補信頼度に対応する区間ｆ０候補が、音声基本周波数ｆ０として決定されないようにしている。
【００６６】
さらに、Ｓ４１０では、処理済音声データに規定された全ての単位区間について、Ｓ３７０及びＳ３９０のステップを実行したか否かを判定する。
そのＳ４１０での判定の結果、全ての単位区間について、Ｓ３７０及びＳ３９０を実行していなければ、Ｓ３７０へと戻る。そのようにして移行したＳ３７０では、前回のＳ３７０にてｆ０候補信頼度を算出した単位区間から、処理済音声データにおける時間進行に沿って次の単位区間を対象としてｆ０候補信頼度を算出し、その後、Ｓ３９０へと進む。
【００６７】
そして、全ての単位区間について、Ｓ３７０及びＳ３９０の実行が終了すると、Ｓ４３０へと進む。
そのＳ４３０では、Ｓ３９０にて決定された単位区間毎の音声基本周波数ｆ０を補正するｆ０補正処理を実行する。このｆ０補正処理は、単位区間毎の音声基本周波数ｆ０を、入力音声における時間進行に沿って配置してなる周波数推移分布において、音声基本周波数ｆ０が不連続とみなせる不連続領域に対して実行される。
【００６８】
続く、Ｓ４５０では、Ｓ４３０にて補正が実行された後の各単位区間における音声基本周波数ｆ０を、半音単位で量子化する。これにより、音声基本周波数ｆ０が、半音毎に吸着されることになる。なお、この量子化は、周知の処理であるため、ここでの詳しい説明は省略する。
【００６９】
その後、本音高推定処理を終了して、楽曲検索処理のＳ１５０へと進む。
〈信頼度算出処理について〉
次に、音高推定処理のＳ３７０にて起動される信頼度算出処理について説明する。
【００７０】
ここで、図６は、信頼度算出処理の処理手順を示したフローチャートである。
この信頼度算出処理は、図６に示すように、音高推定処理のＳ３７０にて起動されると、Ｓ３７１０では、１つの単位区間における全ての区間ｆ０候補の中から、特定周波数帯に含まれる区間ｆ０候補（以下、特定ｆ０候補と称す）の自己相関値を抽出する。ただし、本実施形態における特定ｆ０候補は、特定周波数帯に含まれる区間ｆ０候補の中で、最低周波数に対応するものである。なお、特定周波数帯とは、自己相関値の導出によって自動的に規定される下限周波数から上限周波数までの周波数帯である。
【００７１】
続く、Ｓ３７２０では、Ｓ３７１０にて抽出した自己相関値に対応する特定ｆ０候補の倍音範囲に含まれる区間ｆ０候補（以下、倍音ｆ０候補と称す）の自己相関値を１つ取得する。ただし、倍音範囲とは、Ｓ３７１０にて取得された自己相関値に対応する特定ｆ０候補の倍音成分を中心として、その倍音成分を挟むように規定された周波数範囲である。
【００７２】
そして、Ｓ３７３０では、Ｓ３７２０にて取得した倍音ｆ０候補の自己相関値から、Ｓ３７１０にて抽出された特定ｆ０候補の自己相関値を減算する。そして、その減算結果を、Ｓ３７２０にて取得した倍音ｆ０候補の自己相関値として新規に規定（即ち、変更）する。
【００７３】
続く、Ｓ３７４０では、１つの単位区間における全ての倍音ｆ０候補の自己相関値に対して、Ｓ３７３０のステップを実行したか否かを判定する。その判定の結果、全ての倍音ｆ０候補の自己相関値に対して、Ｓ３７３０のステップを実行していなければ、Ｓ３７２０へと戻る。
【００７４】
そのようにして移行したＳ３７２０では、前回Ｓ３７２０にて取得した自己相関値に対応する区間ｆ０候補の次に高い倍音範囲に含まれる区間ｆ０候補を倍音ｆ０候補とし、その倍音ｆ０候補の自己相関値を取得して、Ｓ３７３０へと進む。
【００７５】
つまり、このＳ３７２０からＳ３７４０のステップを繰り返すことにより、図７（Ａ）に示すように、倍音ｆ０候補の自己相関値は、先の音高推定処理におけるＳ３３０にて導出された値から、特定ｆ０候補の自己相関値が減算された値に変更される。
【００７６】
さらに、Ｓ３７５０では、自己相関値に減衰係数を乗算する。この減衰係数は、図７（Ｂ）に示すように、乗算される自己相関値に対応する周波数が低いほど値が大きく、周波数が高いほど値が小さなものである。
【００７７】
ただし、減衰係数が乗算される自己相関値は、特定ｆ０候補の自己相関値と、Ｓ３７２０からＳ３７４０のステップの繰り返しにより変更された全ての倍音ｆ０候補の自己相関値とを含む、単位区間における全ての区間ｆ０候補の自己相関値である。
【００７８】
続く、Ｓ３７６０では、Ｓ３７５０にて減衰係数が乗算された後の自己相関値に、各自己相関値に対応する区間ｆ０候補のスペクトル振幅値を乗算する。そして、乗算した結果を、各区間ｆ０候補についてのｆ０候補信頼度として導出する。
【００７９】
なお、区間ｆ０候補以外の周波数成分（以下、非候補周波数と称す）に対応する自己相関値は、先の音高推定処理におけるＳ３５０にて、その値が０とされる。このため、非候補周波数の自己相関値について、Ｓ３７５０での減衰係数の乗算や、Ｓ３７６０でのｆ０候補信頼度の演算を実行しても、その演算結果は０になる。
【００８０】
したがって、Ｓ３７５０での減衰係数の乗算、及びＳ３７６０でのｆ０候補信頼度の演算により、単位区間における区間ｆ０候補についてのｆ０候補信頼度のみが算出される。
その後、本信頼度算出処理を終了して、音高推定処理のＳ３９０へと戻る。
【００８１】
つまり、本実施形態の信頼度算出処理では、各周波数成分の自己相関値に減衰係数を乗じることで、音声基本周波数ｆ０の倍音成分が含まれる可能性の高い高周波帯における区間ｆ０候補の自己相関値が抑制される。よって、その値が抑制された自己相関値に、各自己相関値に対応する区間ｆ０候補の振幅値を乗じたｆ０候補信頼度は、基本周波数の周波数成分に対応するものほど大きな値となる。
〈ｆ０補正処理について〉
次に、音高推定処理のＳ４３０にて起動されるｆ０補正処理について説明する。
【００８２】
ここで、図８は、ｆ０補正処理の処理手順を示したフローチャートである。
このｆ０補正処理は、図８に示すように、起動されると、まず、Ｓ４３１０では、先の音高推定処理のＳ３１０にて周波数解析を実行した全ての単位区間の中から、１つの単位区間を選択する。このＳ４３１０では、単位区間は、Ｓ４３１０に移行する毎に、処理済音声データの開始から、処理済音声データにおける時間進行に沿って１つずつ選択される。
【００８３】
続く、Ｓ４３２０では、先のＳ４３１０にて選択された単位区間における音声基本周波数ｆ０が０［Ｈｚ］であるか否かを判定する。
その判定の結果、音声基本周波数ｆ０が０［Ｈｚ］であれば、Ｓ４３３０へと進む。そのＳ４３３０では、区間カウンタを１つインクリメントして、Ｓ４３１０へと戻る。
【００８４】
つまり、Ｓ４３１０からＳ４３３０のステップが実行されることで、音声基本周波数ｆ０が０［Ｈｚ］である単位区間（以下、非正規周波数区間と称す）が、処理済音声データの時間進行に沿って連続する数が計測される。
【００８５】
一方、Ｓ４３２０での判定の結果、音声基本周波数が０［Ｈｚ］以外の周波数であれば、Ｓ４３４０へと進む。
そのＳ４３４０では、今回Ｓ４３４０に移行するまでの間、第１区間ｆ０としていた音声基本周波数ｆ０を第２区間ｆ０とし、今回Ｓ４３４０へと移行する契機となり、かつＳ４３１０で選択された単位区間における音声基本周波数ｆ０を第１区間ｆ０として設定する。つまり、このＳ４３４０へと移行すると、処理済音声データの時間進行に沿って取得済みである音声基本周波数ｆ０の中で、音声開始に近い単位区間における音声基本周波数ｆ０を第２区間ｆ０とし、音声終了に近い単位区間における音声基本周波数ｆ０を第１区間ｆ０としている。
【００８６】
続く、Ｓ４３５０では、区間カウンタの値であるカウント値が、予め規定された第１規定値以上であるか否かを判定する。
そして、Ｓ４３５０での判定の結果、カウント値が第１規定値以上であれば、Ｓ４３６０へと進む。すなわち、処理済音声データの時間進行に沿って連続する非正規周波数区間の数が、第１規定値以上であれば、その連続する非正規周波数区間を、周波数推移分布における不連続領域として検出する。以下、第１規定値以上連続する非正規周波数区間を、長期不連続領域と称す。
【００８７】
そして、Ｓ４３６０では、処理済音声データの時間進行において、第２区間ｆ０に対応する単位区間の直後の単位区間から、直近のＳ４３１０にて選択された単位区間の直前の単位区間までの基本周波数ｆ０が、第２区間ｆ０となるように補正する。その後、Ｓ４３９０へと進む。
【００８８】
つまり、Ｓ４３６０では、長期不連続領域を形成する非正規周波数区間における音声基本周波数ｆ０を、０［Ｈｚ］から第２区間ｆ０へと変更する。
ところで、Ｓ４３５０での判定の結果、カウント値が第１規定値未満であれば、Ｓ４３７０へと進む。そのＳ４３７０では、カウント値が１以上であるか否かを判定する。その判定の結果、カウント値が１以上であれば、Ｓ４３８０へと進む。つまり、入力音声の時間進行に沿って連続する非正規周波数区間の数が、１つ以上であり、かつ第１規定値未満であれば、その連続する非正規周波数区間を、周波数推移分布における不連続領域として検出する。以下、１つ以上かつ第１規定値未満連続する非正規周波数区間を、短期不連続領域と称す。
【００８９】
そして、Ｓ４３８０では、短期不連続領域に対応する単位区間の音声基本周波数ｆ０を、第２区間ｆ０から、一定の変動幅で変動しながら順に第１区間ｆ０へと直線的に到達するように補正する。その後、Ｓ４３９０へと進む。
【００９０】
つまり、Ｓ４３８０では、短期不連続領域を形成する非正規周波数区間における音声基本周波数ｆ０を、０［Ｈｚ］から、第２区間ｆ０と第１区間ｆ０とを結ぶ直線上の周波数へと変更する。
【００９１】
続くＳ４３９０では、区間カウンタを初期化（ここでは、値を０）する。
その後、Ｓ４４００にて、処理済音声データに規定された全ての単位区間を、Ｓ４３１０にて選択済みであるか否かを判定する。その判定の結果、未選択の単位区間が存在すれば、Ｓ４３１０へと戻る。
【００９２】
ところで、Ｓ４３７０での判定の結果、カウント値が１未満であれば、Ｓ４４１０へと進む。すなわち、周波数推移分布において、第２区間ｆ０に対応する単位区間と第１区間ｆ０に対応する単位区間との間に、非正規周波数区間が存在しなければ、Ｓ４４１０へと進む。
【００９３】
そのＳ４４１０では、音飛フラグが設定済みであるか否かを判定する。なお、音飛フラグとは、設定済みであれば、周波数推移分布における不連続領域の１つである倍音誤検出領域の開始時点が検出されたことを表す。
【００９４】
つまり、Ｓ４４１０以降のステップでは、周波数推移分布において、処理済音声データの時間進行に沿って隣接する単位区間における音声基本周波数ｆ０同士の比率が、予め設定された比率の範囲を表す特別範囲（本発明の規定比率の一例）を超えることで、周波数推移が不連続となる不連続領域（即ち、倍音誤検出領域）を検出する。これと共に、Ｓ４４１０以降のステップでは、倍音誤検出領域を形成する単位区間に対応する音声基本周波数ｆ０を補正する。
【００９５】
そして、Ｓ４４１０での判定の結果、音飛フラグが未設定であれば、Ｓ４４２０へと進む。そのＳ４４２０では、第２区間ｆ０を第１区間ｆ０にて除した結果（以下、第１周波数比率と称す）が、特別範囲を超えているか否かを判定する。
【００９６】
そして、Ｓ４４２０での判定の結果、第１周波数比率が特別範囲を超えていれば、Ｓ４４３０へと進む。そのＳ４４３０では、音飛フラグを設定する。つまり、処理済音声データの時間進行に沿って隣接する単位区間における音声基本周波数ｆ０同士の比率が、特別範囲を超えると、それら隣接する単位区間のうち、時間進行に沿った後の単位区間を、倍音誤検出領域の開始時点とする。
【００９７】
続く、Ｓ４４４０では、第２区間ｆ０を第３区間ｆ０とする。その後、Ｓ４４００へと進む。
なお、Ｓ４４２０での判定の結果、第１周波数比率が特別範囲以内であれば、周波数推移分布において、倍音誤検出領域が開始されていないものと判定して、Ｓ４４００へと進む。そのＳ４４００では、全ての単位区間の中に、未選択の単位区間が存在すれば（Ｓ４４００：ＮＯ）、Ｓ４３１０へと戻る。
【００９８】
ところで、Ｓ４４１０での判定の結果、音飛フラグが設定済みであれば、Ｓ４４５０へと進む。そのＳ４４５０では、周波数推移分布において、倍音誤検出領域が継続中であるものとして、音飛カウンタを１つインクリメントする。
【００９９】
その後、Ｓ４４６０では、第３区間ｆ０を第１区間ｆ０にて除した結果（以下、第２周波数比率と称す）が、特別範囲を超えているか否かを判定する。その判定の結果、第２周波数比率が特別範囲を超えていれば、Ｓ４４７０へと進む。
【０１００】
そして、Ｓ４４７０では、音飛カウンタの値である音飛値が、予め規定された第２規定値以上であるか否かを判定する。その判定の結果、音飛値が第２規定値未満であれば、周波数推移分布において、倍音誤検出領域が継続中であるものとして、Ｓ４４００へと進む。
【０１０１】
ところで、Ｓ４４６０での判定の結果、第２周波数比率が特別範囲以内であれば、周波数推移分布において、倍音誤検出領域の継続が終了したものとして、Ｓ４４８０へと進む。つまり、倍音誤検出領域は、周波数推移分布において、時間進行に沿って隣接する単位区間における音声基本周波数ｆ０が特別範囲を超えて変動（以下、特定変動と称す）した時点から、その特定変動の後に時間進行に沿って隣接する単位区間における音声基本周波数ｆ０が、第３区間ｆ０を基準とした特別範囲以内へと戻った時点までの領域である。ただし、倍音誤検出領域は、その領域を構成する単位区間の数が第２規定数未満である領域である。
【０１０２】
そのＳ４４８０では、倍音誤検出領域に対応する単位区間の音声基本周波数ｆ０を、第３区間ｆ０から、一定の変動幅で変動しながら順に第１区間ｆ０へと直線的に到達するように補正する。その後、Ｓ４４９０へと進む。
【０１０３】
なお、Ｓ４４７０での判定の結果、音飛値が第２規定値以上であれば、対応する特定変動以降に隣接する単位区間からなる領域は、不連続領域ではなく、入力音声における音声基本周波数ｆ０の推移そのものを表しているものとして、Ｓ４４９０へと進む。そのＳ４４９０では、音飛カウンタを初期化すると共に、音飛フラグを解除して、Ｓ４４００へと進む。
【０１０４】
そのＳ４４００では、全ての単位区間の中に、未選択の単位区間が存在すれば（Ｓ４４０：ＮＯ）、Ｓ４３１０へと戻る。なお、Ｓ４４００に移行した際に、未選択の単位区間が存在しなければ、ｆ０補正処理を終了して、音高推定処理のＳ４５０へと進む。
【０１０５】
次に、本実施形態におけるｆ０補正処理を実行した場合の動作例について説明する。
ここで、図９（Ａ）は、ｆ０補正処理を実行する前の周波数推移分布を示した図面であり、図９（Ｂ）は、ｆ０補正処理を実行した後の周波数推移分布を示した図面である。
【０１０６】
図９（Ａ）に示すような周波数推移分布を示す各単位区間における音声基本周波数ｆ０に対して、ｆ０補正処理が実行されると、まず、周波数推移分布における入力音声の時間進行に沿った単位区間が選択される（Ｓ４３１０）。その選択された単位区間における音声基本周波数ｆ０は、単位区間ｔ１における音声基本周波数ｆ０＿ｔ１までは、全て０［Ｈｚ］以外の周波数であり、かつ時間進行に沿って連続する単位区間における音声基本周波数ｆ０同士の比率が、特別範囲以内である。このため、周波数推移分布における開始時点から単位区間ｔ１までは、周波数補正が行われること無く、音高推移処理のＳ３９０にて決定された音声基本周波数ｆ０が維持される。
【０１０７】
ところが、単位区間ｔ１における音声基本周波数ｆ０＿ｔ１と、単位区間ｔ２における音声基本周波数ｆ０＿ｔ２との比率は、特別範囲を超える。
このため、Ｓ４３１０にて単位区間ｔ２が選択されると、Ｓ４４２０にて否定判定され、音飛フラグが設定される。次に、Ｓ４３１０にて選択された単位区間ｔ３における音声基本周波数ｆ０＿ｔ３は、音声基本周波数ｆ０＿ｔ１との比率が特別範囲を超える。このため、Ｓ４４６０にて肯定判定され、しかも、この時点での音飛値が第２規定値未満（このｆ０補正処理の動作の説明では、第２規定値を２以上とする）であることから、Ｓ４４７０では、否定判定となる。
【０１０８】
そして、Ｓ４３１０にて、処理済音声データの時間進行に沿って次に選択された単位区間ｔ４における音声基本周波数ｆ０＿ｔ４は、音声基本周波数ｆ０＿ｔ１との比率が特別範囲以内である。よって、Ｓ４４６０にて否定判定され、単位区間ｔ２から単位区間ｔ３までの区間が、倍音誤検出領域として検出される。このようにして検出された倍音誤検出領域における音声基本周波数ｆ０＿ｔ２，ｆ０＿ｔ３を、図９（Ｂ）に示すように、音声基本周波数ｆ０＿ｔ１から、一定の変動幅で変動しながら順に音声基本周波数ｆ０＿ｔ４へと直線的に到達するように補正する。
【０１０９】
ここで、図９（Ａ）へと戻り、ｆ０補正処理において、入力音声の時間進行に沿って単位区間の選択を繰り返す。このとき、図９（Ａ）に示す周波数推移分布において、単位区間ｔ５から単位区間ｔ９までの間の領域は、全ての単位区間にて音声基本周波数ｆ０（図中、ｆ０＿ｔ５〜ｔ９）が０［Ｈｚ］である。
【０１１０】
このことから、ｆ０補正処理では、Ｓ４３１０にて、単位区間ｔ５〜ｔ１０が選択された際には、それらの単位区間ｔ５〜ｔ１０が選択される毎に、Ｓ４３３０へと移行し、区間カウンタを５まで増加させる。なお、Ｓ４３１０にて、入力音声に沿って次に選択される単位区間ｔ１０における音声基本周波数ｆ０＿ｔ１０は、０［Ｈｚ］以外の周波数であるため、Ｓ４３２０にて肯定判定される。そして、カウント値が、第１規定値未満であり（このｆ０補正処理の動作の説明では、第１規定値を６以上とする）、かつ１以上であることから、Ｓ４３７０では否定判定となる。よって、単位区間ｔ５から単位区間ｔ１０が、短期不連続領域として検出される。このようにして検出された短期不連続領域における音声基本周波数ｆ０＿ｔ５〜ｔ９を、図９（Ｂ）に示すように、音声基本周波数ｆ０＿ｔＡから、一定の変動幅で変動しながら順に音声基本周波数ｆ０＿ｔ１０へと直線的に到達するように補正する。
【０１１１】
つまり、本実施形態のｆ０補正処理では、周波数推移分布における不連続領域として、倍音誤検出領域や、短期不連続領域、長期不連続領域を検出する。
そして、不連続領域として倍音誤検出領域や短期不連続領域が検出されると、ｆ０補正処理では、それらの倍音誤検出領域や短期不連続領域を時間進行に沿って挟む直前の単位区間における音声基本周波数ｆ０から、一定の変動幅で変動しながら順に、直後の単位区間における音声基本周波数ｆ０へと到達するように補正する。一方、不連続領域として長期不連続領域が検出されると、ｆ０補正処理では、その長期不連続領域に対して時間進行上直前の単位区間における音声基本周波数ｆ０を、長期不連続領域を形成する単位区間における音声基本周波数ｆ０とする。
〈開始・終了タイミング推定処理について〉
次に、楽曲検索処理のＳ１５０にて起動される開始・終了タイミング推定処理について説明する。
【０１１２】
ここで、図１０は、開始・終了タイミング推定処理の処理手順を示したフローチャートである。
この開始・終了タイミング推定処理は、図１０に示すように、起動されると、まず、Ｓ５１０にて、先の音高推定処理のＳ３１０にて周波数解析を実行した単位区間それぞれについて、各単位区間における音圧を導出する。その導出される音圧は、先のＳ３１０にて導出された振幅スペクトルにおけるスペクトル振幅値の総和である。
【０１１３】
続いて、Ｓ５２０では、Ｓ５１０にて導出された単位区間毎の音圧に基づいて、入力音声の時間進行に沿った音圧の推移を表す音圧推移を導出する。これと共に、Ｓ５２０では、導出された音圧推移を移動平均によって平滑化する。ただし、本実施形態における移動平均は、規定数の単位区間を、音圧推移における時間進行に沿って互いに重複するように繰り返し規定して実施される。なお、繰り返し規定される規定数の単位区間は、単位区間を１つずつ変位させることで達成される。これにより、平滑化された後の音圧推移（以下、平滑化音圧推移と称す）は、平滑化される前の音圧推移と同様、全ての単位区間にて対応する音圧を有することになる。
【０１１４】
そして、Ｓ５３０では、図１１（Ａ）に示すように、平滑化音圧推移において、各単位区間に対応する音圧それぞれから、予め規定された大きさの騒音音圧を減算する。このとき、減算結果が負の値（マイナス）となる音圧については、その値を０とする。
【０１１５】
続く、Ｓ５４０では、音圧推移における全ての単位区間の中から、１つの単位区間を選択する。これと共に、Ｓ５４０では、その選択された単位区間における音圧を取得する。このＳ５４０では、単位区間は、Ｓ５４０に移行する毎に、処理済音声データの開始から、その処理済音声データの時間進行に沿って順次選択される。
【０１１６】
そして、Ｓ５５０では、今回Ｓ５５０に移行するまでの間、第１音圧Ｐｖ１としていた音圧を第２音圧Ｐｖ２とし、Ｓ５５０へと移行する際にＳ５４０にて選択した単位区間における音圧を第１音圧Ｐｖ１として設定する。つまり、このＳ５５０へと移行すると、処理済音声データの時間進行に沿って取得済みである音圧の中で、音声開始に近い単位区間における音圧を第２音圧Ｐｖ２とし、音声終了に近い単位区間における音圧を第１音圧Ｐｖ１としている。
【０１１７】
さらに、Ｓ５６０では、第１音圧Ｐｖ１を第２音圧Ｐｖ２にて除する（以下、この演算結果を音圧増加率と称す）。
続く、Ｓ５７０では、Ｓ５６０にて導出された音圧増加率が、予め規定された規定閾値Ｔｈ以上であるか否かを判定する。そのＳ５７０での判定の結果、音圧増加率が規定閾値Ｔｈ以上であれば、Ｓ５８０へと進む。そして、Ｓ５８０では、発音カウンタを１つインクリメントする。
【０１１８】
続く、Ｓ５９０では、発音カウンタの値である発音カウント値が、予め規定された第１閾値以上であるか否かを判定し、判定の結果、発音カウント値が第１閾値未満であれば、Ｓ６００へと進む。そのＳ６００では、発音カウント値が、第１閾値よりも１つ小さな値として予め規定された第２閾値以上であるか否かを判定する。そのＳ６００での判定の結果、発音カウント値が第２閾値未満であれば、Ｓ５４０へと戻り、Ｓ５４０〜Ｓ５９０のステップを繰り返す。
【０１１９】
一方、Ｓ６００での判定の結果、発音カウント値が第２閾値以上であれば、即ち、Ｓ５４０〜Ｓ５９０のステップを繰り返す際に、第２閾値の値だけ連続してＳ５７０にて肯定判定されると、Ｓ６１０へと進む。つまり、Ｓ６００にて肯定判定されることにより、音圧増加率が規定閾値Ｔｈ以上となる単位区間が、第１閾値の値に１を加えた数だけ連続する領域（以下、開始判定対象区間と称す）が検出される。
【０１２０】
そして、Ｓ６１０では、開始判定対象区間を形成する単位区間のうち、入力音声の時間進行に沿った最初の単位区間を発音開始タイミングとして特定する。これと共に、その特定された発音開始タイミングにおける音圧（以下、発音開始音圧と称す）を取得する。さらに、Ｓ６１０では、それら特定された発音開始タイミング及び取得された発音開始音圧を記憶部２８に記憶する。なお、図１０〜１２では、開始タイミングを「ＳＴ」と表記する。
【０１２１】
なお、Ｓ５９０での判定の結果、発音カウント値が第１閾値以上であれば、Ｓ６００及びＳ６１０のステップを実行することなく、Ｓ６３０へと進む。つまり、平滑化音圧推移において、発音開始タイミング以降における音圧増加率が、その発音開始タイミングから継続して規定閾値Ｔｈ以上である場合には、Ｓ５９０にて否定判定される。
【０１２２】
ところで、Ｓ５７０での判定の結果、音圧増加率が規定閾値Ｔｈ未満であれば、Ｓ６２０にて、発音カウンタを初期化（ここでは、０と）する。つまり、規定閾値Ｔｈ以上の音圧増加率が継続する単位区間の数の計測を終了する。その後、Ｓ６３０へと進む。
【０１２３】
そして、Ｓ６３０では、第１音圧Ｐｖ１が、直近のＳ６１０にて記憶部２８に記憶された発音開始音圧（以下、終了判定音圧と称す）以下であるか否かを判定する。その判定の結果、第１音圧Ｐｖ１が終了判定音圧未満であれば、Ｓ６４０へと進む。
【０１２４】
そのＳ６４０では、第１音圧Ｐｖ１に対応する単位区間を発音終了タイミングとして記憶部２８に記憶する。その後、Ｓ６５０へと進む。なお、図１０〜図１２では、終了タイミングを「ＥＴ」と表記する。
【０１２５】
なお、Ｓ６３０での判定の結果、第１音圧Ｐｖ１が終了判定音圧以上であれば、Ｓ５４０にて選択された単位区間が発音終了タイミングではないものと判定して、Ｓ６４０を実行することなく、Ｓ６５０へと進む。
【０１２６】
そのＳ６５０では、処理済音声データに規定された全ての単位区間を、Ｓ５４０にて選択済みであるか否かを判定する。その判定の結果、未選択の単位区間が存在すれば、Ｓ５４０へと戻る。一方、Ｓ６５０での判定の結果、Ｓ５４０にて未選択の単位区間が存在しなければ、Ｓ６６０へと進む。
【０１２７】
つまり、図１１（Ｂ）に示すように、音圧増加率が継続して規定閾値以上となる音圧の単調増加区間が平滑化音圧推移に含まれている場合、開始・終了タイミング推定処理において、Ｓ５４０〜Ｓ６５０のステップを繰り返すことにより、その単調増加区間における最初の単位区間それぞれが発音開始タイミング（図中、第１，第２，第３，第４発音ＳＴ）として特定される。ただし、ここで言う単調増加区間とは、開始判定対象区間を形成する単位区間数以上連続する単位区間である。
【０１２８】
さらに、Ｓ５４０〜Ｓ６５０のステップを繰り返すことにより、平滑化音圧推移において、処理済音声データの時間進行に沿った発音開始タイミング以降の単位区間の中で、各単位区間に対応する音圧が、最初に終了判定音圧以下となった単位区間が発音終了タイミング（図中、第１，第２発音ＥＴ）として特定される。
【０１２９】
ここで、図１０へと戻り、続くＳ６６０では、処理済音声データに設定された単位区間の中で、処理済音声データの時間進行に沿った最終の単位区間を発音終了タイミングとして、記憶部２８に記憶する。
【０１３０】
続く、Ｓ６７０では、処理済音声データに規定された全ての単位区間の中から、判定対象区間における音声基本周波数ｆ０を取得する。このＳ６７０にて音声基本周波数ｆ０が取得される判定対象区間は、予め規定された規定数の単位区間からなるものである。その規定数の単位区間は、処理済音声データにおける時間進行に沿って互いに連続かつ重複するように繰り返し規定される。
【０１３１】
そして、Ｓ６８０では、Ｓ６７０にて取得した判定対象区間における音声基本周波数ｆ０に基づき、それらの音声基本周波数ｆ０の変動幅を導出する。このＳ６８０にて導出される変動幅は、判定対象区間における最大周波数の音声基本周波数ｆ０と、最小周波数の音声基本周波数ｆ０との差である。
【０１３２】
続く、Ｓ６９０では、Ｓ６８０にて導出した変動幅が、予め規定された周波数の幅である規定幅未満であるか否かを判定する。その判定の結果、変動幅が規定幅未満であれば、Ｓ７００へと進む。
【０１３３】
そして、Ｓ７００では、判定対象区間における全ての音声基本周波数ｆ０を、処理済音声データの時間進行に沿って配置してなる周波数軌跡を導出する。これと共に、その導出された周波数軌跡を平滑化微分して、周波数軌跡における極値を検出する。
【０１３４】
続く、Ｓ７１０では、Ｓ７００での平滑化微分の結果、周波数軌跡における極値が検出されたか否かを判定する。その判定の結果、極値が検出されていれば、Ｓ７２０へと進み。
【０１３５】
そのＳ７２０では、Ｓ７００にて検出された判定対象区間内での極値の数を集計する。そして、Ｓ７３０では、Ｓ７２０にて集計された極値の数であるビブラート値が、予め規定された第３閾値以上であるか否かを判定する。そのＳ７３０での判定の結果、ビブラート値が第３閾値以上であれば、Ｓ７４０へと進む。
【０１３６】
つまり、Ｓ６７０からＳ７３０でのステップを実行することにより、音声基本周波数ｆ０の変動幅が規定幅未満である判定対象区間の中で、音声基本周波数ｆ０が増加する増加区間及び減少する減少区間の和が第３閾値以上である判定対象区間が、ビブラート期間として検出される。なお、このビブラート期間とは、音声処理装置２０の利用者がビブラートにて発声した期間を意味する。
【０１３７】
続く、Ｓ７４０では、Ｓ７２０にて集計されたビブラート値を初期化（ここでは、０と）する。さらに、Ｓ７５０では、記憶部２８に記憶されている発音開始タイミングの中から、ビブラート期間内に対応する発音開始タイミング（以下、期間内タイミングと称す）を消去（除去）する。その後、Ｓ７７０へと進む。
【０１３８】
なお、Ｓ６９０での判定の結果、判定対象区間内における音声基本周波数ｆ０の変動幅が規定幅以上である場合や、Ｓ７１０での判定の結果、判定対象区間内に極値が含まれていない場合には、Ｓ７６０へと進む。さらに、Ｓ７３０での判定の結果、ビブラート値が第３閾値未満である場合にも、Ｓ７６０へと進む。
【０１３９】
つまり、Ｓ６７０にて規定された判定対象区間がビブラート期間でなければ、Ｓ７６０へと進む。そのＳ７６０では、ビブラート値を初期化した後、Ｓ７７０へと進む。
そのＳ７７０では、処理済音声データに設定された全ての単位区間を、判定対象区間として規定したか否かを判定する。その判定の結果、全ての単位区間が判定対象区間として規定されていなければ、Ｓ６８０へと戻り、新たな判定対象区間を設定して、Ｓ６８０へと進む。そして、全ての単位区間が判定対象区間として規定されるまで、Ｓ６８０〜Ｓ７７０を繰り返す。
【０１４０】
例えば、本開始・終了タイミング推定処理を実行することで、図１２（Ａ）に示すような発音開始タイミング（第１〜第４発音開始タイミング）、及び発音終了タイミング（第１，第２発音終了タイミング）が特定されると共に、第３発音開始タイミング、及び第４発音開始タイミングを含む判定対象区間をビブラート期間として特定した場合を想定する。このような場合、第３発音開始タイミング及び第４発音開始タイミングは、期間内タイミングとして除去されるため、図１２（Ｂ）に示すように、第１発音開始タイミングと第２発音開始タイミングとの２つのみが残される。なお、発音終了タイミングは、除去されずに全て残される。
【０１４１】
なお、Ｓ７７０での判定の結果、全ての単位区間が判定対象として規定されていれば、本開始・終了タイミング推定処理を終了して、楽曲検索処理のＳ１９０へと進む。
つまり、本実施形態の開始・終了タイミング推定処理では、入力音声の音圧推移に基づいて、発音開始タイミングと発音終了タイミングとを検出すると共に、入力音声における音声基本周波数ｆ０の時間進行に沿った推移（即ち、周波数軌跡）から、ビブラート期間を特定する。そして、開始・終了タイミング推定処理では、特定されたビブラート期間内に対応する発音開始タイミングを消去し、ビブラート期間外に対応する発音開始タイミングのみを残す。
〈採譜処理について〉
次に、楽曲検索処理のＳ１９０にて起動される採譜処理について説明する。
【０１４２】
ここで、図１３は、採譜処理の処理手順を示したフローチャートである。
この採譜処理は、図１３に示すように、起動されると、まず、Ｓ９１０にて、先の音高推定処理のＳ３１０にて周波数解析を実行した全ての単位区間の中から、１つの単位区間を選択する。このＳ９１０では、単位区間は、Ｓ９１０へと移行する毎に、処理済音声データの開始から、処理済音声データの時間進行に沿って順次選択される。
【０１４３】
続く、Ｓ９２０では、Ｓ９１０にて選択された単位区間が発音開始タイミングであるか否かを判定する。その判定の結果、選択された単位区間が発音開始タイミングでなければ、Ｓ９３０へと進む。
【０１４４】
そのＳ９３０では、Ｓ９１０にて選択された単位区間が発音終了タイミングであるか否かを判定する。その判定の結果、選択された単位区間が発音終了タイミングでなければ、Ｓ９１０へと戻る。つまり、Ｓ９１０にて選択された単位区間が、発音開始タイミングまたは発音終了タイミングでなければ、Ｓ９１０からＳ９３０のステップを繰り返す。
【０１４５】
一方、Ｓ９２０での判定の結果、Ｓ９１０にて選択された単位区間が発音開始タイミングであれば、Ｓ９４０へと進む。そのＳ９４０では、今回Ｓ９４０に移行する前の間、第１開始タイミングとしていた発音開始タイミングを第２開始タイミングとし、Ｓ５５０へと移行する際にＳ９１０にて選択した単位区間（即ち、発音開始タイミング）を第１開始タイミングとして設定する。つまり、このＳ９４０へと移行すると、処理済音声データの時間進行に沿った発音開始タイミングの中で、発声開始に近い発音開始タイミングを第２とし、音声終了に近い単位区間における音圧を第１開始タイミングとしている。なお、図１３では、開始タイミングをＳＴと表記する。
【０１４６】
続く、Ｓ９５０では、開始取得フラグ（以下、開始取得Ｆと表記する）が設定済みであるか否かを判定する。その判定の結果、開始取得フラグが未設定であれば、Ｓ９６０へと進む。そのＳ９６０では、開始取得フラグを設定する。その後、Ｓ９１０へと戻る。
【０１４７】
ところで、Ｓ９３０での判定の結果、Ｓ９１０にて選択された単位区間が発音終了タイミングであれば、Ｓ９７０へと進む。つまり、Ｓ９７０への移行は、処理済音声データの時間進行に沿って、発音開始タイミングと、その発音開始タイミングと対となるべき発音終了タイミングとが取得された場合である。そして、Ｓ９７０では、開始取得フラグを解除してＳ９８０へと進む。
【０１４８】
なお、Ｓ９５０での判定の結果、開始取得フラグが設定されていれば、Ｓ９８０へと進む。つまり、処理済音声データの時間進行に沿って、２つの発音開始タイミングが、それらの発音開始タイミングの間に発音終了タイミングを挟むことなく存在する場合、Ｓ９５０にて肯定判定される。
【０１４９】
そして、Ｓ９８０では、そのＳ９８０へと移行した時点で取得済みの発音開始タイミングまたは発音終了タイミングに基づいて、音符期間を特定する。
具体的に、本実施形態では、Ｓ９３０にて肯定判定されることで、Ｓ９８０へと進んだ場合には、第１開始タイミングを音符開始タイミングとし、発音終了タイミングを音符終了タイミングとする。一方、Ｓ９５０にて否定判定されることで、Ｓ９８０へと進んだ場合には、第２開始タイミングを音符開始タイミングとし、第１開始タイミングよりも処理済音声データの時間進行に沿って第１開始タイミングよりも設定時間長だけ前の時点を音符終了タイミングとする。そして、何れの場合にも、それら音符開始タイミングと音符終了タイミングとの間の期間を、音符期間として特定する。なお、本実施形態におけるＳ９８０では、特定した音符期間の期間長を音長として導出する。
【０１５０】
続く、Ｓ９９０では、Ｓ９８０にて特定された音符期間に対応する全ての単位区間における音高（即ち、音高推定処理のＳ４５０にて量子化された音声基本周波数ｆ０、以下、量子化周波数とも称す）を取得する。つまり、音符期間を構成する単位区間の数だけ、量子化周波数が取得される。
【０１５１】
そして、Ｓ１０００では、Ｓ９９０にて取得された量子化周波数に基づき、第１音高周波数、第２音高周波数を特定すると共に、第１音高数、及び第２音高数を集計する。このＳ１０００にて特定される第１音高周波数は、Ｓ９８０にて特定された音符期間に占める割合が最も高い量子化周波数であり、第２周波数とは、その音符期間に占める割合が二番目に高い量子化周波数である。なお、本実施形態のＳ１０００では、Ｓ９８０にて特定された音符期間に第２周波数が複数存在する場合、周波数が最も高いものを第２周波数とする。
【０１５２】
そして、Ｓ１０００にて集計される第１音高数は、Ｓ９８０にて特定された音符期間に含まれる単位区間の中で、第１音高周波数に対応する単位区間の数である。また、第２音高数は、Ｓ９８０にて特定された音符期間に含まれる単位区間の中で、第２周波数に対応する単位区間の数である。
【０１５３】
次に、Ｓ１０１０では、Ｓ１０００にて特定された第２音高周波数が、第１音高周波数よりも周波数が高いか否かを判定する。その判定の結果、第２音高周波数が第１音高周波数よりも高ければ、Ｓ１０２０へと進む。
【０１５４】
そのＳ１０２０では、第２音高数が音高判定閾値以上であるか否かを判定する。この判定に用いられる音高判定閾値は、予め規定された規定割合Ａ（本実施形態では、１／２．３とする）と第１音高数とを乗算した値である。そのＳ１０２０での判定の結果、第２音高数が音高判定閾値以上であれば、Ｓ１０３０へと進む。
【０１５５】
そして、Ｓ１０３０では、第２音高周波数に対応する音高を、Ｓ９８０にて特定された音符期間における音高（即ち、音符音高）として特定する。そして、その特定された音符音高と、Ｓ９８０にて導出された音長を音符音長とした音声音符データを生成する。その後、Ｓ１０５０へと進む。
【０１５６】
ところで、Ｓ１０１０での判定の結果、第２音高周波数が第１音高周波数以下である場合や、Ｓ１０２０での判定の結果、第２音高数が音高判定閾値未満であれば、Ｓ１０４０へと進む。
【０１５７】
そのＳ１０４０では、第１音高周波数に対応する音高を、Ｓ９８０にて特定された音符期間における音高（即ち、音符音高）として特定する。そして、その特定された音符音高と、Ｓ９８０にて導出された音長を音符音長とした音声音符データを生成する。その後、Ｓ１０５０へと進む。
【０１５８】
例えば、Ｓ９１０からＳ９８０のステップを繰り返した後、Ｓ９８０にて、図１４（Ａ）に示すような第１音符開始タイミングと第１音符終了タイミングとの間の期間を第１音符期間として特定したとする。この特定した第１音符期間における第２音高周波数ｆ０２t1＿ｈｉは、第１音高周波数ｆ０１t1よりも高い周波数である。また、第２音高数は、「３」であり、第１音高数である「５」に規定割合Ａ（本実施形態では、Ａ＝１／（２．３））を乗じた値よりも大きい。
【０１５９】
この場合、図１４（Ｂ）に示すように、第１音符期間についての音符音高は、Ｓ１０３０にて、第２音高周波数ｆ０２t1＿ｈｉに対応する音高（図中、第１音符音高）に特定される。
【０１６０】
なお、第２音高周波数ｆ０２t1＿ｌｏｗも、第１音符中に占める割合が第２音高周波数ｆ０２t1＿ｈｉと同一である。しかし、第２音高周波数ｆ０２t1＿ｈｉの方が高い周波数であるため、第１音符期間の音高は、第２音高周波数ｆ０２t1＿ｈｉとなる。
【０１６１】
さらに、Ｓ９１０からＳ９８０のステップを繰り返した後、Ｓ９８０にて、図１４（Ａ）に示すような第２音符開始タイミングと第２音符終了タイミングとの間の期間を第２音符期間として特定したとする。この特定した第２音符期間における第２音高周波数ｆ０２t2＿ｈｉは、第１音高周波数ｆ０１t2よりも低い周波数である。また、第２音高数は、「３」であり、第１音高数である「４」に規定割合Ａ（本実施形態では、Ａ＝１／（２．３））を乗じた値よりも小さい。
【０１６２】
この場合、図１４（Ｂ）に示すように、第２音符期間についての音符音高（図中、第２音符音高）は、Ｓ１０４０にて、第１音高周波数ｆ０１t2に対応する音高に特定される。
続く、Ｓ１０５０では、処理済音声データに規定された全ての単位区間について、Ｓ９１０にて選択済みであるか否かを判定する。その判定の結果、未選択の単位区間が存在すれば、Ｓ９１０へと戻り、Ｓ９１０〜Ｓ１０５０を繰り返す。
【０１６３】
一方、Ｓ１０５０での判定の結果、未選択の単位区間が存在しなければ、本採譜処理を終了して、楽曲検索処理のＳ２１０へと進む。
つまり、本採譜処理では、処理済音声データの時間進行に沿って、発音開始タイミングと、その発音開始タイミングと対となるべき発音終了タイミングとが存在する場合には、その発音開始タイミングを音符開始タイミングとし、その発音終了タイミングを音符終了タイミングとする。また、処理済音声データの時間進行に沿って、２つの発音開始タイミングが、それらの発音開始タイミングの間に発音終了タイミングを挟むことなく存在する場合には、時間進行に沿った前の発音開始タイミングを音符開始タイミングとし、時間進行に沿った後の発音開始タイミングを音符終了タイミングとする。そして、何れの場合にも、それら音符開始タイミングと音符終了タイミングとの間の期間を、音符期間として特定する。
【０１６４】
これに加えて、本採譜処理では、第２音高周波数が第１音高周波数よりも周波数が高く、かつ第２音高数が第１音高数に対して規定割合Ａ以上であれば、第２音高周波数に対応する音高を、その音符期間における音符音高として特定する。これと共に、本採譜処理では、第２音高周波数が第１音高周波数よりも周波数が低い場合、または第２音高数が第１音高数に対して規定割合Ａ未満である場合には、第１音高周波数に対応する音高を、その音符期間における音符音高として特定している。
〈採譜結果照合処理について〉
次に、楽曲検索処理のＳ２１０にて起動される採譜結果照合処理について説明する。
【０１６５】
ここで、図１５は、採譜結果照合処理の処理手順を示したフローチャートである。
この採譜結果照合処理は、図１５に示すように、起動されると、Ｓ１２１０では、先の採譜処理にて生成された音声音符データを、処理済音声データの時間進行に沿って連続する予め規定された音符規定数毎に単語化（即ち、グループ化）する。この単語化に際しては、音声音符データの一部が互いに重複するように実施する。以下、単語化された音声音符データそれぞれを、単語音符データと称す。
【０１６６】
さらに、Ｓ１２２０では、サーバ４０から取得され記憶部２８に記憶されている楽曲データに対応する楽曲の中から、単語音符データを基準音符データ（即ち、ガイドメロディ）に照合する楽曲（以下、音符照合楽曲と称す）を１つ決定する。
【０１６７】
続く、Ｓ１２３０では、Ｓ１２１０にて生成された全ての単語音符データの中から、１つの単語音符データを取得する。ただし、単語音符データを取得する際には、処理済音声データの時間進行において、音声開始に近い音声音符データを含むものを取得する。
【０１６８】
そして、Ｓ１２４０では、Ｓ１２２０にて決定された音符照合楽曲に対応する基準音符データの中から、時間進行に沿って連続する音符規定数分だけ単語化して取得する。この音符規定数分の基準音符データを単語化する際には、基準旋律の時間進行において、その基準旋律の開始に近い構成音についての基準音符データから実行する。以下、Ｓ１２４０にて単語化して取得した音符規定数分の基準音符データを、比較音符データとする。
【０１６９】
続いて、Ｓ１２５０では、Ｓ１２３０にて取得した単語音符データを、Ｓ１２４０にて取得した比較音符データに照合する。その照合の結果、単語音符データと比較音符データとが一致すれば（Ｓ１２６０：ＹＥＳ）、Ｓ１２７０へと進む。
【０１７０】
そのＳ１２７０では、詳しくは後述する音符一致度、及び累積楽曲内一致度を導出すると共に、その導出した累積楽曲内一致度を構成音の番号と対応付けて記憶し、その後、Ｓ１２８０へと進む。この累積楽曲内一致度と対応付けられる構成音の番号は、比較音符データを形成する音符規定数の構成音の中で、基準旋律の時間進行に沿った最初の構成音に対応付けられたものである。
【０１７１】
一方、Ｓ１２５０での照合の結果、単語音符データと比較音符データとが一致しなければ（Ｓ１２６０：ＮＯ）、Ｓ１２８０へと進む。
そのＳ１２８０では、全ての基準音符データを単語化して、その単語化によって生成された比較音符データに、Ｓ１２３０にて取得した単語音符データを照合したか否かを判定する。その判定の結果、全ての比較音符データに単語音符データを照合していなければ、Ｓ１２４０へと戻る。そのようにして移行したＳ１２４０では、前回のＳ１２４０にて単語化した基準音符データと、基準旋律の時間進行に沿った一部が重複するように音符規定数分だけ、基準音符データを単語化して取得する。すなわち、新たな比較音符データを生成して、Ｓ１２５０へと進む。
【０１７２】
これにより、１つの楽曲における全ての基準音符データに対して、１つの単語音符データの照合が完了するまで、Ｓ１２４０からＳ１２８０が繰り返し実行される。
なお、Ｓ１２８０での判定の結果、全ての基準音符データを単語化して、その単語化によって生成された比較音符データに、単語音符データを照合していれば、Ｓ１２９０へと進む。そのＳ１２９０では、全ての単語音符データを取得して、比較音符データに照合済みであるか否かを判定する。
【０１７３】
そのＳ１２９０での判定の結果、全ての単語音符データを比較音符データに照合していなければ、Ｓ１２３０へと戻る。そのＳ１２３０では、比較音符データに対して未照合の単語音符データの中から、１つの単語音符データを取得する。ただし、単語音符データを取得する際には、入力音声の時間進行において、音声開始に近い音声音符データからなる単語音符データを取得する。
【０１７４】
その後、Ｓ１２９０にて肯定判定されるまで、Ｓ１２３０〜Ｓ１２９０までのステップを繰り返す。以下、Ｓ１２３０〜Ｓ１２９０までの一回の流れを、別音符照合サイクルと称す。また、別音符照合サイクルにて、単語音符データを取得してから新たな単語音符データを取得するまでのＳ１２４０〜Ｓ１２８０の一回の流れを、同一音符照合サイクルと称す。
【０１７５】
この同一音符照合サイクルを繰り返す過程の中で、Ｓ１２６０にて肯定判定されると、Ｓ１２７０へと進む。そのようにして移行したＳ１２７０では、今回の別音符照合サイクルにて単語音符データと一致した比較音符データが、前回の別音符照合サイクルにて単語音符データと一致した比較音符データと、基準旋律の時間進行上連続するものであるか否かを判定（以下、音符接続判定とする）する。具体的には、前回の別音符照合サイクルにて音符一致度に対応付けられた構成音の番号の中に、今回Ｓ１２７０へと進んだ際に、単語音符データに一致したと判定された比較音符データを形成する構成音の番号よりも、基準旋律における時間進行上１つ前の構成音であることを示す番号があれば、音符接続判定における判定結果が肯定されたものとする。
【０１７６】
その音符接続判定の判定結果が肯定であれば、連続して肯定判定された別音符照合サイクルの回数を「べき指数」として、初期規定値を累乗した値を音符一致度として導出する。一方、音符接続判定の判定結果が否定であれば、初期規定値そのものを音符一致度として導出する。
【０１７７】
つまり、音符一致度は、処理済音声データの時間進行に沿った単語音符データが連続して、音符照合楽曲の基準旋律における時間進行に沿った比較音符データに一致するほど、大きな値となる。
【０１７８】
さらに、導出された音符一致度の和を楽曲内累積一致度として導出する。
なお、Ｓ１２９０にて肯定判定されると、Ｓ１３００へと進む。そのＳ１３００では、先のＳ１２２０にて決定された音符照合楽曲に対する楽曲内累積一致度の中で、値が最大のものを、その音符照合楽曲に対応する曲名データと対応付けて、記憶部２８に記憶する。つまり、Ｓ１３００にて曲名データと対応付けられる楽曲内累積一致度は、一つの音符照合楽曲に対する別音符照合サイクルの繰り返しにて導出された全楽曲内累積一致度の中で、値が最大のものである。
【０１７９】
続く、Ｓ１３１０では、記憶部２８に記憶されている楽曲データに対応する全ての楽曲を、音符照合楽曲として決定済みであるか否かを判定する。その判定の結果、全ての楽曲を音符照合楽曲として決定済みでなければ、Ｓ１２２０へと戻る。そのようにして移行したＳ１２２０では、音符照合楽曲として未決定の楽曲の中から、新たな楽曲を音符照合楽曲として決定して、Ｓ１２３０へと進む。つまり、Ｓ１２３０からＳ１３１０までのステップを、記憶部２８に記憶されている全ての楽曲データ中の基準音符データに、単語音符データの照合が完了するまで繰り返す。
【０１８０】
なお、Ｓ１３１０での判定の結果、記憶部２８に記憶されている全ての楽曲を音符照合楽曲として決定済みであれば、Ｓ１３２０へと進む。
そのＳ１３２０では、Ｓ１３００にて記憶部２８に記憶された楽曲内累積一致度の中で、値が最大である楽曲内累積一致度に対応する楽曲を意図予想曲として特定する。さらに、Ｓ１３２０では、その特定された意図予想曲についての曲名データを取得し、取得された曲名データに対応する曲名を表示部２２に表示すると共に、その曲名をスピーカ２７から音声にて出力する。すなわち、意図予想曲の曲名が報知される。
【０１８１】
そして、その後、採譜結果照合処理を終了し、さらに、楽曲検索処理を終了する。
つまり、本実施形態の採譜結果照合処理では、採譜処理にて生成された音声音符データを、楽曲毎に予め用意された基準音符データに照合する。そして、その照合結果として、処理済音声データの時間進行に沿って連続する音声音符データが、音符照合楽曲の基準旋律における時間進行に沿って連続して一致する比較音符データの数が多いほど、大きな値の楽曲内累積一致度を導出する。そして、本実施形態の採譜結果照合処理では、導出された楽曲内累積一致度の中で、値が最も高いものに対応する楽曲を、意図予想曲として検出している。
［実施形態の効果］
以上説明したように、本実施形態のｆ０補正処理では、周波数推移分布における不連続領域として、倍音誤検出領域や、短期不連続領域を検出することができる。
【０１８２】
そして、不連続領域として検出される倍音誤検出領域は、音声基本周波数ｆ０を検出する際に、基本周波数の倍音成分を偶発的に音声基本周波数ｆ０として誤検出したことで周波数推移が不連続となった領域である可能性が高い。また、不連続領域として検出される短期不連続領域は、入力音声にノイズが重畳することで、振幅スペクトルが倍音構造とならず、音声基本周波数ｆ０が検出されなかった領域である。
【０１８３】
これらの倍音誤検出領域や短期不連続領域における音声基本周波数ｆ０は、本来、それら倍音誤検出領域または短期不連続領域を、時間進行に沿って挟む直前の単位区間（以下、直前区間とする）における音声基本周波数ｆ０から、直後の単位区間（以下、直後区間とする）における音声基本周波数ｆ０へと滑らかに遷移している可能性が高い。
【０１８４】
このため、本実施形態のｆ０補正処理では、その直前区間における音声基本周波数ｆ０から、直後区間における音声基本周波数ｆ０へと、一定の変動幅で変動しながら到達するように補正している。
【０１８５】
この結果、本実施形態のｆ０補正処理によれば、検出された倍音誤検出領域や短期不連続領域における音声基本周波数ｆ０を、本来、推定されるべき想定音高（利用者が入力音声を発声した際に想定した音高）における音声基本周波数ｆ０に近似させることができる。
【０１８６】
なお、不連続領域として長期不連続領域が検出されると、ｆ０補正処理では、その長期不連続領域に対して時間進行上直前の単位区間における音声基本周波数ｆ０を、長期不連続領域を形成する単位区間における音声基本周波数ｆ０とする。
【０１８７】
したがって、本実施形態の音声処理装置によれば、従来、未検出であった長期不連続領域における音声基本周波数ｆ０を、想定音高における音声基本周波数ｆ０の推移に近似させることができる。
【０１８８】
ところで、本実施形態の採譜処理では、従来技術に比べて、想定音高における音声基本周波数ｆ０に近似した音声基本周波数ｆ０を用いて音符音高を推定する。この結果、本実施形態の採譜処理によれば、音符音高を想定音高に近似させることができる。
【０１８９】
そして、本実施形態の楽曲検索処理では、従来技術に比べて、想定音高に近似した音符音高を用いて意図予測曲を検索する。この結果、本実施形態の楽曲検索処理によれば、その楽曲検索処理によって導出される意図推定曲が、音声処理装置２０の利用者が音声を入力した際に想定した楽曲に一致したものとなる可能性を向上させることができる。
［その他の実施形態］
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において、様々な態様にて実施することが可能である。
【０１９０】
例えば、上記楽曲検索処理において実行される開始・終了タイミング推定処理、及び採譜処理は、上記実施形態に記載したものに限らず、入力音声から音符期間（即ち、音符音長）を推定し、単位区間毎の音声基本周波数ｆ０に基づいて、音符期間における音高（即ち、音符音高）を特定するものであれば、どのようなものでも良い。
【０１９１】
特に、上記実施形態では、開始・終了タイミング推定処理として、入力音声の音圧の時間進行に沿った変動から、発音開始タイミング及び発音終了タイミングを推定すると共に、期間内タイミングを除去していたが、期間内タイミングを除去しなくとも良いし、発音終了タイミングを検出しなくとも良い。
【０１９２】
また、上記実施形態のｆ０補正処理では、不連続領域の１つである倍音誤検出領域として、時間進行に沿って隣接する単位区間における音声基本周波数ｆ０が特定変動した時点から、その特定変動の後に時間進行に沿って隣接する単位区間における音声基本周波数ｆ０が、第３区間ｆ０を基準とした特別範囲以内へと戻った時点までの領域であり、かつその領域における単位区間の数が第２規定数未満である領域を検出していたが、ｆ０補正処理にて、倍音誤検出領域として検出される領域は、これに限るものではない。例えば、時間進行に沿って隣接する単位区間における音声基本周波数ｆ０が特定変動を示し、その特定変動の後に時間進行に沿って隣接する単位区間における音声基本周波数ｆ０が、さらに、特定変動した場合、２つの特定変動の間の領域を倍音誤検出領域としても良い。これにより、周波数推移分布において、一度特定変動した後、滑らかに推移した音声基本周波数ｆ０が、さらに特定変動した場合（第３区間ｆ０を基準とした特別範囲内に戻らない場合）であっても、倍音誤検出領域として検出することができる。
【０１９３】
つまり、ｆ０補正処理にて検出する倍音誤検出領域は、少なくとも、時間進行に沿って隣接する単位区間における音声基本周波数同士の比率が特別範囲を超えることで、周波数推移が不連続となる領域であれば、どのようなものでも良い。
【０１９４】
ところで、上記実施形態における楽曲検索処理では、マイクロホン２４を介して入力された後、記憶部２８に記憶された音声データを処理対象としていたが、楽曲検索処理にて処理対象とする音声データは、マイクロホン２４を介して入力されたものに限らず、例えば、サーバ４０や、他の音声処理装置２０から取得した音声データでも良い。このため、音声処理装置２０では、マイクロホン２４と、音声入力部２５とが省略されていても良い。
【０１９５】
それとは反対に、上記実施形態における楽曲検索処理では、音声入力部２５にてサンプリングされた直後の音声データを直接処理対象としても良い。つまり、楽曲検索処理では、マイクロホン２４を介して入力された音声をリアルタイムに処理していても良い。
【０１９６】
また、上記実施形態における音声処理装置２０は、スピーカ２７と音声出力部２６とを備えていなくとも良い。
なお、上記実施形態では、音声処理装置２０にて楽曲検索処理を実行していたが、楽曲検索処理は、サーバ４０にて実行されていても良い。この場合、音声データが、音声処理装置２０からサーバ４０に転送される必要がある。
【０１９７】
また、楽曲検索システム１は、音声処理装置２０のみから構成されていても良い。この場合、楽曲データは、予め記憶部２８に記憶されている必要がある。
上記実施形態における楽曲検索処理では、Ｓ２１０にて採譜結果照合処理を実行していたが、楽曲検索処理として実行される内容として、このＳ２１０は省略されていても良い。つまり、上記実施形態における音声処理装置２０は、いわゆる採譜装置として構成されたものでも良い。
［実施形態と特許請求の範囲との対応関係］
最後に、上記実施形態の記載と、特許請求の範囲の記載との関係を説明する。
【０１９８】
上記実施形態の音高推定処理におけるＳ３１０〜Ｓ３９０を実行することで得られる機能が、本発明の基本周波数検出手段に相当し、ｆ０補正処理におけるＳ４３１０〜Ｓ４３４０を実行することで得られる機能が、本発明の推移特定手段に相当する。また、ｆ０補正処理のＳ４３５０，Ｓ４３７０，Ｓ４４１０〜Ｓ４４７０を実行することで得られる機能が、本発明の不連続検出手段に相当する。さらに、ｆ０補正処理におけるＳ４３６０，Ｓ４３８０，Ｓ４４８０を実行することで得られる機能が、本発明の周波数補正手段に相当し、ｆ０補正処理におけるＳ４３５０にて否定判定されることで得られる機能が、本発明の長期不連続検出手段に相当する。
【０１９９】
なお、楽曲検索処理のＳ１５０、及び採譜処理のＳ９１０〜Ｓ９８０を実行することで得られる機能が、本発明の発音区間特定手段に相当し、採譜処理のＳ９８０〜Ｓ１０４０を実行することで得られる機能が、本発明の採譜手段に相当する。
【符号の説明】
【０２００】
１…楽曲検索システム  ２０…音声処理装置  ２１…通信部  ２２…表示部  ２３…操作受付部  ２４…マイクロホン  ２５…音声入力部  ２６…音声出力部  ２７…スピーカ  ２８…記憶部  ３０…制御部  ３１…ＲＯＭ  ３２…ＲＡＭ  ３３…ＣＰＵ  ４０…サーバ  ４１…記憶装置  ４２…マイクロコンピュータ
【図１】
2011065042.tif 000003
【図２】
2011065042.tif 000004
【図３】
2011065042.tif 000005
【図４】
2011065042.tif 000006
【図５】
2011065042.tif 000007
【図６】
2011065042.tif 000008
【図７】
2011065042.tif 000009
【図８】
2011065042.tif 000010
【図１０】
2011065042.tif 000011
【図１１】
2011065042.tif 000012
【図１２】
2011065042.tif 000013
【図１３】
2011065042.tif 000014
【図１５】
2011065042.tif 000015
【図９】
2011065042.tif 000016
【図１４】
2011065042.tif 000017