JP2011065041A - 基本周波数推定装置、採譜装置、及びプログラム - Google Patents
基本周波数推定装置、採譜装置、及びプログラム Download PDFInfo
- Publication number
- JP2011065041A JP2011065041A JP2009217170A JP2009217170A JP2011065041A JP 2011065041 A JP2011065041 A JP 2011065041A JP 2009217170 A JP2009217170 A JP 2009217170A JP 2009217170 A JP2009217170 A JP 2009217170A JP 2011065041 A JP2011065041 A JP 2011065041A
- Authority
- JP
- Japan
- Prior art keywords
- frequency
- value
- correlation
- deriving
- note
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Auxiliary Devices For Music (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
【課題】音声基本周波数の推定精度を向上させること。
【解決手段】信頼度算出処理では、各周波数成分の自己相関値に減衰係数を乗じる(S3750)。これにより、音声基本周波数f0の倍音成分が含まれる可能性の高い高周波帯における区間f0候補の自己相関値が抑制される。その値が抑制された自己相関値に、各自己相関値に対応する区間f0候補の振幅値を乗じることで、f0候補信頼度が導出される(S3760)。このf0候補信頼度は、基本周波数に対応するものほど大きな値となる。そして、各周波数に対応するf0候補信頼度の中で、値が最も大きいものに対応する周波数を音声基本周波数f0とする。
【選択図】図6
【解決手段】信頼度算出処理では、各周波数成分の自己相関値に減衰係数を乗じる(S3750)。これにより、音声基本周波数f0の倍音成分が含まれる可能性の高い高周波帯における区間f0候補の自己相関値が抑制される。その値が抑制された自己相関値に、各自己相関値に対応する区間f0候補の振幅値を乗じることで、f0候補信頼度が導出される(S3760)。このf0候補信頼度は、基本周波数に対応するものほど大きな値となる。そして、各周波数に対応するf0候補信頼度の中で、値が最も大きいものに対応する周波数を音声基本周波数f0とする。
【選択図】図6
Description
本発明は、入力音声から音声基本周波数を推定する基本周波数推定装置、プログラム、及びその基本周波数推定装置にて推定された音声基本周波数に従って採譜する採譜装置に関する。
従来、時間進行に沿って連続する入力音声から、その入力音声の音声基本周波数を推定し、推定された音声基本周波数の軌跡(即ち、メロディ)に従って、予め用意された楽曲の中から入力音声に対応する曲を検索する装置が知られている(例えば、特許文献1参照)。
この種の装置では、音声基本周波数を推定するために、規定された時間窓毎に入力音声を周波数解析(ここでは、FFT(Fast Fourier Transform))することで導出された振幅スペクトルの自己相関値を用いることがなされている(以下、従来推定手法とする)。
この従来推定手法にて用いられる自己相関値は、1つの時間窓から導出された振幅スペクトル(以下、基準スペクトル)の各周波数成分における振幅値と、その基準スペクトルにおける各周波数成分から規定周波数幅だけ増加させた周波数成分における振幅値との積和である。このため、規定周波数幅だけ変位させた際に、基本周波数成分、またはその基本周波数成分の倍音成分が一致すると、自己相関値は大きな値となる。
つまり、自己相関値は、基準スペクトル同士を、周波数軸に沿って規定周波数幅ずつ変位させた際の相関の強さであり、基本周波数成分の確からしさを表すものである。
なお、従来推定手法では、変位幅そのものを周波数として捉え、自己相関値が最大となるポジションの周波数が音声基本周波数として推定されることが一般的である。
なお、従来推定手法では、変位幅そのものを周波数として捉え、自己相関値が最大となるポジションの周波数が音声基本周波数として推定されることが一般的である。
しかしながら、自己相関値は、基本周波数に対応する値と、倍音成分に対応する値とが、近似することがある。
このような場合、従来推定手法では、基本周波数成分の倍音成分を音声基本周波数として推定してしまうという問題があった。つまり、従来推定手法では、入力音声の音声基本周波数の推定精度が低いという問題があった。
このような場合、従来推定手法では、基本周波数成分の倍音成分を音声基本周波数として推定してしまうという問題があった。つまり、従来推定手法では、入力音声の音声基本周波数の推定精度が低いという問題があった。
そこで、本発明は、音声基本周波数の推定精度を向上可能な基本周波数推定装置、プログラム、及びその基本周波数推定装置を用いた採譜装置を提供することを目的とする。
上記目的を達成するためになされた本発明は、時間の進行に沿って連続して入力された入力音声から、予め規定された規定期間毎の入力音声(以下、単位入力音声と称す)毎に音声基本周波数を推定する基本周波数推定装置に関するものである。
本発明の基本周波数推定装置では、相関値導出手段が、単位入力音声の振幅スペクトルを導出すると共に、その導出された振幅スペクトルに基づき、規定された周波数である規定周波数毎に特定相関値を導出し、修正相関値導出手段が、その導出された特定相関値それぞれに、対応する周波数が高いほど値が小さな減衰係数を乗じた修正相関値を導出する。ただし、ここでいう特定相関値とは、その規定周波数が音声基本周波数であることの尤度を表し、かつその規定周波数及び該規定周波数の倍音成分のスペクトル振幅値が大きいほど値が大きいものである。
さらに、本発明の基本周波数推定装置では、信頼度導出手段が、修正相関値導出手段で導出された修正相関値それぞれに、各修正相関値に対応する周波数のスペクトル振幅値を乗じた基音信頼度を導出し、基本周波数推定手段が、その導出された基音信頼度の中で、値が最大である基音信頼度に対応する周波数を、音声基本周波数として推定する。
つまり、本発明の基本周波数推定装置では、特定相関値それぞれに減衰係数を乗じることで、倍音成分が含まれる可能性の高い高周波帯に対応する特定相関値の値が抑制された修正相関値が導出される。よって、その修正相関値に、各修正相関値に対応する周波数のスペクトル振幅値を乗じた基音信頼度は、基本周波数の周波数に対応するものほど、大きな値となる可能性が高い。
このため、本発明の基本周波数推定装置によれば、基本周波数成分の倍音成分、即ち、基本周波数成分以外の周波数を音声基本周波数として誤推定することを低減できる。換言すれば、本発明の基本周波数推定装置によれば、音声基本周波数の推定精度を向上させることができる。
本発明の基本周波数推定装置における相関値導出手段では、請求項2に記載のように、自己相関値導出手段が、規定周波数毎に自己相関値を導出し、相関ピーク検出手段が、その導出された自己相関値それぞれを対応する規定周波数毎に周波数軸に沿って配置してなる自己相関値の軌跡から、その軌跡における極大値を表す相関ピークを検出する。これと共に、特定ピーク抽出手段が、相関ピーク検出手段にて検出された相関ピークの中から、特定周波数帯に含まれる規定周波数に対応する相関ピーク(以下、特定相関ピークとする)を抽出し、相関値減算手段が、その抽出された特定相関ピークの自己相関値を、その特定相関ピークに対応する周波数を整数倍した周波数に対応する相関ピークの自己相関値から減算する。そして、相関値導出手段は、相関値減算手段での減算結果それぞれを、特定相関値とする。ただし、ここでいう自己相関値とは、同一の単位入力音声から導出された振幅スペクトルを周波数軸方向に変位した際の振幅スペクトル同士の相関が強いほど値が大きな相関値である。また、ここでいう特定周波数とは、予め設定された下限周波数から上限周波数までの周波数帯である。
このように構成された基本周波数推定装置によれば、基本周波数成分の倍音成分に対応する特定相関値について、その値を低減することができる。この結果、本発明の基本周波数推定装置によれば、倍音成分が音声基本周波数として誤推定されることをより低減できる。
ところで、自己相関値の平均値よりも値が小さな自己相関値に対応する周波数は、単位入力音声に含まれていたノイズの周波数成分や、入力音声から振幅スペクトルを導出する際に包含されることになるノイズ(例えば、折り返し雑音)である可能性が高い。
このため、本発明の基本周波数推定装置における自己相関値導出手段は、請求項3に記載のように、自己相関値の平均値である相関平均値を導出すると共に、その相関平均値よりも値が小さい自己相関値を0とするように構成されていることが望ましい。
つまり、このように構成された基本周波数推定装置によれば、音声基本周波数である可能性が明らかに低い周波数を、音声基本周波数の候補から除外することができる。よって、このように構成された本発明の基本周波数推定装置によれば、ノイズなどの周波数成分が音声基本周波数として誤推定される可能性を低減できる。
本発明は、入力音声から採譜する採譜装置としてなされたものでも良い。
ただし、本発明の採譜装置は、請求項4に記載のように、請求項1ないし請求項3のいずれか一項に記載の基本周波数推定装置と、入力音声から、入力音声において同一音高が継続しているとみなせる期間を表す発音区間それぞれを特定する発音区間特定手段と、その特定された発音区間を音長とし、基本周波数推定手段で推定された基本周波数を音高として採譜する採譜手段とを備えている必要がある。
ただし、本発明の採譜装置は、請求項4に記載のように、請求項1ないし請求項3のいずれか一項に記載の基本周波数推定装置と、入力音声から、入力音声において同一音高が継続しているとみなせる期間を表す発音区間それぞれを特定する発音区間特定手段と、その特定された発音区間を音長とし、基本周波数推定手段で推定された基本周波数を音高として採譜する採譜手段とを備えている必要がある。
このように構成された採譜装置によれば、音声基本周波数の検出精度が向上しているため、入力音声の音高に近い音高にて採譜できる。
本発明は、入力音声から、単位入力音声毎に、単位入力音声の音声基本周波数を推定するために、コンピュータに実行させるプログラムとしてなされたものでも良い。
本発明は、入力音声から、単位入力音声毎に、単位入力音声の音声基本周波数を推定するために、コンピュータに実行させるプログラムとしてなされたものでも良い。
ただし、本発明のプログラムは、請求項5に記載のように、単位入力音声の振幅スペクトルに基づき、規定された周波数である規定周波数毎に、特定相関値を導出する相関値導出手順と、その導出された特定相関値それぞれに、対応する周波数が高いほど値が小さな減衰係数を乗じた修正相関値を導出する修正相関値導出手順と、その導出された修正相関値それぞれに、各修正相関値に対応する周波数のスペクトル振幅値を乗じた基音信頼度を導出する信頼度導出手順と、その導出された基音信頼度の中で、値が最大である基音信頼度に対応する周波数を、音声基本周波数として推定する基本周波数推定手順とをコンピュータに実行させる必要がある。
本発明がこのようになされたプログラムであれば、例えば、DVD−ROM、CD−ROM、ハードディスクやフラッシュメモリ等のコンピュータ読み取り可能な記録媒体に記録し、必要に応じてコンピュータにロードさせて起動することや、必要に応じて通信回線を介してコンピュータに取得させて起動することにより用いることができる。そして、コンピュータに各手順を実行させることで、そのコンピュータを、請求項1に記載された基本周波数推定装置として機能させることができる。
以下、本発明の実施形態を図面と共に説明する。
まず、図1は、本発明が適用された音声処理装置を備えた楽曲検索システムの概略構成を示すブロック図である。
〈楽曲検索システムについて〉
楽曲検索システム1は、利用者が発声することで入力された入力音声から、その音声を入力する際に利用者が意図したと推定される楽曲(以下、意図予想曲と称す)を検索するものである。
まず、図1は、本発明が適用された音声処理装置を備えた楽曲検索システムの概略構成を示すブロック図である。
〈楽曲検索システムについて〉
楽曲検索システム1は、利用者が発声することで入力された入力音声から、その音声を入力する際に利用者が意図したと推定される楽曲(以下、意図予想曲と称す)を検索するものである。
このため、図1に示すように、楽曲検索システム1は、楽曲毎に予め用意された楽曲データを格納するサーバ40と、入力音声を採譜し、その採譜した結果を楽曲データに照合することで意図予想曲を検索する音声処理装置20とを備えている。なお、音声処理装置20は、ネットワーク(例えば、専用回線やWAN)を介してサーバ40に接続されている。
このうち、サーバ40は、楽曲データを格納する記憶装置41と、ROM,RAM,CPUを少なくとも有した周知のマイクロコンピュータ42とを備えた情報処理装置を中心に構成された周知のサービス用サーバ装置である。
〈楽曲データについて〉
次に、記憶装置41に格納される楽曲データについて説明する。
〈楽曲データについて〉
次に、記憶装置41に格納される楽曲データについて説明する。
この楽曲データは、当該楽曲を識別するためのデータである楽曲情報と、当該楽曲の演奏開始から演奏終了までに要する時間を示す時間情報と、当該楽曲の旋律に関するデータであるガイドメロディとを有している。
そして、楽曲情報には、楽曲を特定するための曲番号データと、その楽曲の曲名を示す曲名データとが少なくとも含まれている。
また、ガイドメロディは、楽曲の主旋律(以下、基準旋律と称す)を形成する各構成音について、それぞれの音高及び音価が表された周知のデータである。具体的に、本実施形態における構成音の音長は、楽音出力開始時間及び楽音出力終了時間によって表されている。ただし、ここで言う楽音出力開始時間とは、その構成音の出力を開始するまでの当該楽曲の演奏開始からの時間であり、楽音出力終了時間とは、その構成音の出力を終了するまでの当該楽曲の演奏開始からの時間である。つまり、楽音出力開始時間と楽音出力終了時間との間の時間長が、当該構成音の音長となる。
また、ガイドメロディは、楽曲の主旋律(以下、基準旋律と称す)を形成する各構成音について、それぞれの音高及び音価が表された周知のデータである。具体的に、本実施形態における構成音の音長は、楽音出力開始時間及び楽音出力終了時間によって表されている。ただし、ここで言う楽音出力開始時間とは、その構成音の出力を開始するまでの当該楽曲の演奏開始からの時間であり、楽音出力終了時間とは、その構成音の出力を終了するまでの当該楽曲の演奏開始からの時間である。つまり、楽音出力開始時間と楽音出力終了時間との間の時間長が、当該構成音の音長となる。
以下、ガイドメロディにおいて、各構成音の音高及び音価を表す情報を、基準音符データと称す。ただし、この基準音符データは、各構成音の音高及び音価が、その構成音の基準旋律における時間進行上の順番と対応付けられたものである。
〈音声処理装置について〉
次に、音声処理装置20について説明する。
〈音声処理装置について〉
次に、音声処理装置20について説明する。
ここで図1へと戻り、音声処理装置20は、通信部21と、表示部22と、操作受付部23と、マイクロホン24と、音声入力部25と、音声出力部26と、スピーカ27と、記憶部28と、制御部30とを備えている。
このうち、通信部21は、音声処理装置20をネットワーク(例えば、専用回線や、WAN)に接続し、その接続されたネットワークを介して外部(即ち、サーバ40)と通信を行うための通信インタフェースである。
そして、表示部22は、例えば、液晶ディスプレイ等から構成された周知の表示装置である。また、操作受付部23は、例えば、キーボードやポインティングデバイス(例えば、マウス)等の周知の入力装置からなる。
マイクロホン24は、音声を入力するための周知の装置である。そして、音声入力部25は、マイクロホン24を介して入力された音声(アナログ信号)をサンプリングし、そのサンプリング値(標本値)を制御部30に入力するAD変換器として構成されている。なお、以下では、音声入力部25にてサンプリング値へと変換された音声を音声データと称す。
さらに、音声出力部26は、制御部30からの指令に基づく制御信号を、スピーカ27に出力するように構成されている。そして、スピーカ27は、音声出力部26からの制御信号を音に変換して放音するように構成されている。
また、記憶部28は、電源が切断されても記憶内容を保持すると共に、記憶内容を読み書き可能に構成された記憶装置(例えば、ハードディスクドライブ)であり、プログラムや通信部21を介してサーバ40から取得した楽曲データ等が格納される。
次に、制御部30は、ROM31と、RAM32と、CPU33とを少なくとも有した周知のマイクロコンピュータを中心に構成されている。
このうち、ROM31は、電源が切断されても記憶内容を保持する必要のあるプログラムやデータを格納するものである。また、RAM32は、プログラムやデータを一時的に格納するものであり、記憶部28からの処理プログラムが転送されて格納されるものである。
このうち、ROM31は、電源が切断されても記憶内容を保持する必要のあるプログラムやデータを格納するものである。また、RAM32は、プログラムやデータを一時的に格納するものであり、記憶部28からの処理プログラムが転送されて格納されるものである。
そして、CPU33は、ROM31やRAM32に記憶された処理プログラムに従って各処理(各種演算)を実行して、音声処理装置20を構成する各部21,22,23,25(24),26(27),28に対する制御を実行する。
なお、本実施形態では、処理プログラムとして、利用者がマイクロホン24を介して入力した入力音声に基づいて、その入力音声を採譜した音声音符データを生成し、その生成した音声音符データを基準音符データそれぞれに照合した結果に従って意図予想曲を検索する楽曲検索処理を制御部30(より正確には、CPU33)が実行するためのものが用意されている。
〈楽曲検索処理について〉
次に、制御部30が実行する楽曲検索処理について説明する。
〈楽曲検索処理について〉
次に、制御部30が実行する楽曲検索処理について説明する。
ここで、図2は、楽曲検索処理の処理手順を示したフローチャートである。
この楽曲検索処理は、マイクロホン24を介して入力された入力音声に基づく音声データが、少なくとも1つ記憶部28に格納された後、操作受付部23介して起動指令を受け付けると起動される。ここでの入力音声は、時間の進行に沿って、一定時間以上連続(継続)したものである。
この楽曲検索処理は、マイクロホン24を介して入力された入力音声に基づく音声データが、少なくとも1つ記憶部28に格納された後、操作受付部23介して起動指令を受け付けると起動される。ここでの入力音声は、時間の進行に沿って、一定時間以上連続(継続)したものである。
そして、図2に示すように、楽曲検索処理は、起動されると、まず、S110にて、記憶部28に記憶された音声データの中から、1つの音声データを取得する。
続く、S120では、S110にて取得した音声データに対して、それぞれ周知のダウンサンプリング、直流成分の除去、ノイズ除去処理、コンプレッサ処理、及びノーマライズを事前処理として実行する。以下、S120にて事前処理が完了した音声データを処理済音声データと称す。
続く、S120では、S110にて取得した音声データに対して、それぞれ周知のダウンサンプリング、直流成分の除去、ノイズ除去処理、コンプレッサ処理、及びノーマライズを事前処理として実行する。以下、S120にて事前処理が完了した音声データを処理済音声データと称す。
そして、S130では、処理済音声データにおいて入力音声の時間進行に沿って規定された単位区間毎に、その単位区間における入力音声の音高(音声基本周波数f0)を推定する音高推定処理を実行する。
さらに、S150では、入力音声において、規定の音圧以上で発声を継続した期間である発音期間それぞれの開始タイミング及び終了タイミングを推定する開始・終了タイミング推定処理を実行する。以下、開始・終了タイミング推定処理にて推定される開始タイミング、終了タイミングを、それぞれ、発音開始タイミング、発音終了タイミングと称す。
続く、S190では、S150にて推定された発音開始タイミング及び発音終了タイミングに基づいて、1つの音符とみなせる期間(以下、音符期間と称す)を推定し、その推定した音符期間における音高(以下、音符音高と称す)を、S130にて推定された単位区間毎の音声基本周波数f0に基づいて特定する採譜処理を実行する。この採譜処理により、各音符期間の期間長(即ち、音長、または、この音長を量子化した音価)と、音符音高とが対応付けられたデータ、即ち、音声音符データとして、入力音声を音符化したデータが生成される。
そして、S210では、S190で生成された音声音符データを、基準音符データに照合し、その照合した結果に基づいて意図予想曲を特定すると共に、その特定した意図予想曲を音声処理装置20の利用者に報知する採譜結果照合処理を実行する。
その後、本楽曲検索処理を終了する。
〈音高推定処理について〉
次に、楽曲検索処理のS130にて起動される音高推定処理について説明する。
〈音高推定処理について〉
次に、楽曲検索処理のS130にて起動される音高推定処理について説明する。
ここで、図3は、音高推定処理の処理手順を示したフローチャートである。
この音高推定処理は、図3に示すように、起動されると、S310にて、処理済音声データを周波数解析する。この周波数解析として、本実施形態では、処理済音声データにおける予め規定されたサンプリング数の標本値をFFT(Fast Fourier Transform)する。なお、サンプリング数分の標本値は、処理済音声データの開始から終了までの間を、時間進行に沿った一部を重複させながら繰り返し取得される。これにより、入力音声の振幅スペクトル(即ち、周波数成分の分布)が、サンプリング数に対応する単位区間毎に導出される。
この音高推定処理は、図3に示すように、起動されると、S310にて、処理済音声データを周波数解析する。この周波数解析として、本実施形態では、処理済音声データにおける予め規定されたサンプリング数の標本値をFFT(Fast Fourier Transform)する。なお、サンプリング数分の標本値は、処理済音声データの開始から終了までの間を、時間進行に沿った一部を重複させながら繰り返し取得される。これにより、入力音声の振幅スペクトル(即ち、周波数成分の分布)が、サンプリング数に対応する単位区間毎に導出される。
続く、S330では、S310にて導出した振幅スペクトルに基づいて、振幅スペクトルの周波数成分が基本周波数成分であることの確からしさを表す自己相関値を導出する。
具体的には、1つの振幅スペクトルの各周波数成分における振幅値と、その振幅スペクトルにおける各周波数成分から規定周波数幅だけ増加させた周波数成分における振幅値との積和を、自己相関値として導出している。このため、規定周波数幅だけ変位させる毎に導出される自己相関値は、規定周波数幅だけ変位させた際に、基本周波数成分、またはその基本周波数の倍音成分が一致すると大きな値となる。
具体的には、1つの振幅スペクトルの各周波数成分における振幅値と、その振幅スペクトルにおける各周波数成分から規定周波数幅だけ増加させた周波数成分における振幅値との積和を、自己相関値として導出している。このため、規定周波数幅だけ変位させる毎に導出される自己相関値は、規定周波数幅だけ変位させた際に、基本周波数成分、またはその基本周波数の倍音成分が一致すると大きな値となる。
なお、S330では、振幅スペクトル(即ち、単位区間)毎に、その振幅スペクトルから導出された全ての自己相関値の平均値(以下、自己相関平均値と称す)も導出する。
さらに、S350では、先のS330にて導出された自己相関値を平滑化微分することで、各単位区間における音声基本周波数f0の候補となる周波数を表す区間f0候補を検出する。
さらに、S350では、先のS330にて導出された自己相関値を平滑化微分することで、各単位区間における音声基本周波数f0の候補となる周波数を表す区間f0候補を検出する。
その区間f0候補は、図4に示すように、自己相関値の軌跡における極大値(以下、相関ピークとする)に対応する周波数である。ここでの自己相関値の軌跡とは、規定周波数毎の自己相関値を周波数軸に沿って配置してなるものである。
ただし、本実施形態では、自己相関値が自己相関平均値以上である相関ピークのみを、区間f0候補としている(すなわち、図4に示す例では、第4相関ピークが自己相関平均値未満であるため、第4相関ピークに対応する周波数は、区間f0候補として検出されない)。さらに、本実施形態におけるS350では、区間f0候補として検出されない周波数成分における自己相関値は、その値を0としている。
このS350は、処理済音声データに規定された全単位区間について終了するまで繰り返し実行される。
続くS370では、S350にて検出された区間f0候補それぞれの音声基本周波数f0としての尤度を表すf0候補信頼度(本発明の基音信頼度に相当)を算出する信頼度算出処理を実行する。この信頼度算出処理にて導出されるf0候補信頼度は、尤度が高いほど大きな値となる。
続くS370では、S350にて検出された区間f0候補それぞれの音声基本周波数f0としての尤度を表すf0候補信頼度(本発明の基音信頼度に相当)を算出する信頼度算出処理を実行する。この信頼度算出処理にて導出されるf0候補信頼度は、尤度が高いほど大きな値となる。
なお、この信頼度算出処理は、単位区間毎に実行される。このため、一回の信頼度算出処理により、1つの振幅スペクトルから導出された区間f0候補それぞれについて、f0候補信頼度が算出される。
そして、S390では、S370にて導出された単位区間毎のf0候補信頼度に基づいて、その単位区間における音声基本周波数f0を決定する。その音声基本周波数f0として決定される区間f0候補は、図5に示すように、S370にて導出された全てのf0候補信頼度の中で、値が最も高いf0候補信頼度に対応するものである(図5に示す例では、第1区間f0候補が、音声基本周波数f0として決定される)。
ただし、本実施形態のS390では、予め規定された信頼度閾値未満であるf0候補信頼度は、その値を0としている(図5に示す例では、第3区間f0候補のf0候補信頼度が信頼度閾値未満であるため、そのf0候補信頼度の値が0となる)。そして、単位区間における全てのf0候補信頼度が信頼度閾値未満であれば、その単位区間における音声基本周波数f0を0[Hz]に決定する。つまり、f0候補信頼度が低い場合、そのf0候補信頼度に対応する区間f0候補が、音声基本周波数f0として決定されないようにしている。
さらに、S410では、処理済音声データに規定された全ての単位区間について、S370及びS390のステップを実行したか否かを判定する。
そのS410での判定の結果、全ての単位区間について、S370及びS390を実行していなければ、S370へと戻る。そのようにして移行したS370では、前回のS370にてf0候補信頼度を算出した単位区間から、処理済音声データにおける時間進行に沿って次の単位区間を対象としてf0候補信頼度を算出し、その後、S390へと進む。
そのS410での判定の結果、全ての単位区間について、S370及びS390を実行していなければ、S370へと戻る。そのようにして移行したS370では、前回のS370にてf0候補信頼度を算出した単位区間から、処理済音声データにおける時間進行に沿って次の単位区間を対象としてf0候補信頼度を算出し、その後、S390へと進む。
そして、全ての単位区間について、S370及びS390の実行が終了すると、S430へと進む。
そのS430では、S390にて決定された単位区間毎の音声基本周波数f0を補正するf0補正処理を実行する。このf0補正処理は、単位区間毎の音声基本周波数f0を、入力音声における時間進行に沿って配置してなる周波数推移分布において、音声基本周波数f0が不連続とみなせる不連続領域に対して実行される。
そのS430では、S390にて決定された単位区間毎の音声基本周波数f0を補正するf0補正処理を実行する。このf0補正処理は、単位区間毎の音声基本周波数f0を、入力音声における時間進行に沿って配置してなる周波数推移分布において、音声基本周波数f0が不連続とみなせる不連続領域に対して実行される。
続く、S450では、S430にて補正が実行された後の各単位区間における音声基本周波数f0を、半音単位で量子化する。これにより、音声基本周波数f0が、半音毎に吸着されることになる。なお、この量子化は、周知の処理であるため、ここでの詳しい説明は省略する。
その後、本音高推定処理を終了して、楽曲検索処理のS150へと進む。
つまり、音声処理装置20は、音高推定処理のS310からS410までのステップを実行することによって、本発明の基本周波数推定装置として機能する。
〈信頼度算出処理について〉
次に、音高推定処理のS370にて起動される信頼度算出処理について説明する。
つまり、音声処理装置20は、音高推定処理のS310からS410までのステップを実行することによって、本発明の基本周波数推定装置として機能する。
〈信頼度算出処理について〉
次に、音高推定処理のS370にて起動される信頼度算出処理について説明する。
ここで、図6は、信頼度算出処理の処理手順を示したフローチャートである。
この信頼度算出処理は、図6に示すように、音高推定処理のS370にて起動されると、S3710では、1つの単位区間における全ての区間f0候補の中から、特定周波数帯に含まれる区間f0候補(以下、特定f0候補と称す)の自己相関値(本発明の特定相関ピークに相当)を抽出する。ただし、本実施形態における特定f0候補は、特定周波数帯に含まれる区間f0候補の中で、最低周波数に対応するものである。なお、特定周波数帯とは、自己相関値の導出によって自動的に規定される下限周波数から上限周波数までの周波数帯である。
この信頼度算出処理は、図6に示すように、音高推定処理のS370にて起動されると、S3710では、1つの単位区間における全ての区間f0候補の中から、特定周波数帯に含まれる区間f0候補(以下、特定f0候補と称す)の自己相関値(本発明の特定相関ピークに相当)を抽出する。ただし、本実施形態における特定f0候補は、特定周波数帯に含まれる区間f0候補の中で、最低周波数に対応するものである。なお、特定周波数帯とは、自己相関値の導出によって自動的に規定される下限周波数から上限周波数までの周波数帯である。
続く、S3720では、S3710にて抽出した自己相関値に対応する特定f0候補の倍音範囲に含まれる区間f0候補(以下、倍音f0候補と称す)の自己相関値を1つ取得する。ただし、倍音範囲とは、S3710にて取得された自己相関値に対応する特定f0候補の倍音成分を中心として、その倍音成分を挟むように規定された周波数範囲である。
そして、S3730では、S3720にて取得した倍音f0候補の自己相関値から、S3710にて抽出された特定f0候補の自己相関値を減算する。そして、その減算結果を、S3720にて取得した倍音f0候補の自己相関値として新規に規定(即ち、変更)する。
続く、S3740では、1つの単位区間における全ての倍音f0候補の自己相関値に対して、S3730のステップを実行したか否かを判定する。その判定の結果、全ての倍音f0候補の自己相関値に対して、S3730のステップを実行していなければ、S3720へと戻る。
そのようにして移行したS3720では、前回S3720にて取得した自己相関値に対応する区間f0候補の次に高い倍音範囲に含まれる区間f0候補を倍音f0候補とし、その倍音f0候補の自己相関値を取得して、S3730へと進む。
つまり、このS3720からS3740のステップを繰り返すことにより、図7(A)に示すように、倍音f0候補の自己相関値は、先の音高推定処理におけるS330にて導出された値から、特定f0候補の自己相関値が減算された値に変更される。
さらに、S3750では、自己相関値に減衰係数を乗算する。この減衰係数は、図7(B)に示すように、乗算される自己相関値に対応する周波数が低いほど値が大きく、周波数が高いほど値が小さなものである。
ただし、減衰係数が乗算される自己相関値は、特定f0候補の自己相関値と、S3720からS3740のステップの繰り返しにより変更された全ての倍音f0候補の自己相関値とを含む、単位区間における全ての区間f0候補の自己相関値である。
続く、S3760では、S3750にて減衰係数が乗算された後の自己相関値に、各自己相関値に対応する区間f0候補のスペクトル振幅値を乗算する。そして、乗算した結果を、各区間f0候補についてのf0候補信頼度として導出する。
なお、区間f0候補以外の周波数成分(以下、非候補周波数と称す)に対応する自己相関値は、先の音高推定処理におけるS350にて、その値が0とされる。このため、非候補周波数の自己相関値について、S3750での減衰係数の乗算や、S3760でのf0候補信頼度の演算を実行しても、その演算結果は0になる。
したがって、S3750での減衰係数の乗算、及びS3760でのf0候補信頼度の演算により、単位区間における区間f0候補についてのf0候補信頼度のみが算出される。
その後、本信頼度算出処理を終了して、音高推定処理のS390へと戻る。
その後、本信頼度算出処理を終了して、音高推定処理のS390へと戻る。
つまり、本実施形態の信頼度算出処理では、各周波数成分の自己相関値に減衰係数を乗じることで、音声基本周波数f0の倍音成分が含まれる可能性の高い高周波帯における区間f0候補の自己相関値が抑制される。よって、その値が抑制された自己相関値に、各自己相関値に対応する区間f0候補の振幅値を乗じたf0候補信頼度は、基本周波数の周波数成分に対応するものほど大きな値となる。
〈f0補正処理について〉
次に、音高推定処理のS430にて起動されるf0補正処理について説明する。
〈f0補正処理について〉
次に、音高推定処理のS430にて起動されるf0補正処理について説明する。
ここで、図8は、f0補正処理の処理手順を示したフローチャートである。
このf0補正処理は、図8に示すように、起動されると、まず、S4310では、先の音高推定処理のS310にて周波数解析を実行した全ての単位区間の中から、1つの単位区間を選択する。このS4310では、単位区間は、S4310に移行する毎に、処理済音声データの開始から、処理済音声データにおける時間進行に沿って1つずつ選択される。
このf0補正処理は、図8に示すように、起動されると、まず、S4310では、先の音高推定処理のS310にて周波数解析を実行した全ての単位区間の中から、1つの単位区間を選択する。このS4310では、単位区間は、S4310に移行する毎に、処理済音声データの開始から、処理済音声データにおける時間進行に沿って1つずつ選択される。
続く、S4320では、先のS4310にて選択された単位区間における音声基本周波数f0が0[Hz]であるか否かを判定する。
その判定の結果、音声基本周波数f0が0[Hz]であれば、S4330へと進む。そのS4330では、区間カウンタを1つインクリメントして、S4310へと戻る。
その判定の結果、音声基本周波数f0が0[Hz]であれば、S4330へと進む。そのS4330では、区間カウンタを1つインクリメントして、S4310へと戻る。
つまり、S4310からS4330のステップが実行されることで、音声基本周波数f0が0[Hz]である単位区間(以下、非正規周波数区間と称す)が、処理済音声データの時間進行に沿って連続する数が計測される。
一方、S4320での判定の結果、音声基本周波数が0[Hz]以外の周波数であれば、S4340へと進む。
そのS4340では、今回S4340に移行するまでの間、第1区間f0としていた音声基本周波数f0を第2区間f0とし、今回S4340へと移行する契機となり、かつS4310で選択された単位区間における音声基本周波数f0を第1区間f0として設定する。つまり、このS4340へと移行すると、処理済音声データの時間進行に沿って取得済みである音声基本周波数f0の中で、音声開始に近い単位区間における音声基本周波数f0を第2区間f0とし、音声終了に近い単位区間における音声基本周波数f0を第1区間f0としている。
そのS4340では、今回S4340に移行するまでの間、第1区間f0としていた音声基本周波数f0を第2区間f0とし、今回S4340へと移行する契機となり、かつS4310で選択された単位区間における音声基本周波数f0を第1区間f0として設定する。つまり、このS4340へと移行すると、処理済音声データの時間進行に沿って取得済みである音声基本周波数f0の中で、音声開始に近い単位区間における音声基本周波数f0を第2区間f0とし、音声終了に近い単位区間における音声基本周波数f0を第1区間f0としている。
続く、S4350では、区間カウンタの値であるカウント値が、予め規定された第1規定値以上であるか否かを判定する。
そして、S4350での判定の結果、カウント値が第1規定値以上であれば、S4360へと進む。すなわち、処理済音声データの時間進行に沿って連続する非正規周波数区間の数が、第1規定値以上であれば、その連続する非正規周波数区間を、周波数推移分布における不連続領域として検出する。以下、第1規定値以上連続する非正規周波数区間を、長期不連続領域と称す。
そして、S4350での判定の結果、カウント値が第1規定値以上であれば、S4360へと進む。すなわち、処理済音声データの時間進行に沿って連続する非正規周波数区間の数が、第1規定値以上であれば、その連続する非正規周波数区間を、周波数推移分布における不連続領域として検出する。以下、第1規定値以上連続する非正規周波数区間を、長期不連続領域と称す。
そして、S4360では、処理済音声データの時間進行において、第2区間f0に対応する単位区間の直後の単位区間から、直近のS4310にて選択された単位区間の直前の単位区間までの基本周波数f0が、第2区間f0となるように補正する。その後、S4390へと進む。
つまり、S4360では、長期不連続領域を形成する非正規周波数区間における音声基本周波数f0を、0[Hz]から第2区間f0へと変更する。
ところで、S4350での判定の結果、カウント値が第1規定値未満であれば、S4370へと進む。そのS4370では、カウント値が1以上であるか否かを判定する。その判定の結果、カウント値が1以上であれば、S4380へと進む。つまり、入力音声の時間進行に沿って連続する非正規周波数区間の数が、1つ以上であり、かつ第1規定値未満であれば、その連続する非正規周波数区間を、周波数推移分布における不連続領域として検出する。以下、1つ以上かつ第1規定値未満連続する非正規周波数区間を、短期不連続領域と称す。
ところで、S4350での判定の結果、カウント値が第1規定値未満であれば、S4370へと進む。そのS4370では、カウント値が1以上であるか否かを判定する。その判定の結果、カウント値が1以上であれば、S4380へと進む。つまり、入力音声の時間進行に沿って連続する非正規周波数区間の数が、1つ以上であり、かつ第1規定値未満であれば、その連続する非正規周波数区間を、周波数推移分布における不連続領域として検出する。以下、1つ以上かつ第1規定値未満連続する非正規周波数区間を、短期不連続領域と称す。
そして、S4380では、短期不連続領域に対応する単位区間の音声基本周波数f0を、第2区間f0から、一定の変動幅で変動しながら順に第1区間f0へと直線的に到達するように補正する。その後、S4390へと進む。
つまり、S4380では、短期不連続領域を形成する非正規周波数区間における音声基本周波数f0を、0[Hz]から、第2区間f0と第1区間f0とを結ぶ直線上の周波数へと変更する。
続くS4390では、区間カウンタを初期化(ここでは、値を0にする)する。
その後、S4400にて、処理済音声データに規定された全ての単位区間を、S4310にて選択済みであるか否かを判定する。その判定の結果、未選択の単位区間が存在すれば、S4310へと戻る。
その後、S4400にて、処理済音声データに規定された全ての単位区間を、S4310にて選択済みであるか否かを判定する。その判定の結果、未選択の単位区間が存在すれば、S4310へと戻る。
ところで、S4370での判定の結果、カウント値が1未満であれば、S4410へと進む。すなわち、周波数推移分布において、第2区間f0に対応する単位区間と第1区間f0に対応する単位区間との間に、非正規周波数区間が存在しなければ、S4410へと進む。
そのS4410では、音飛フラグが設定済みであるか否かを判定する。なお、音飛フラグとは、設定済みであれば、周波数推移分布における不連続領域の1つである倍音誤検出領域の開始時点が検出されたことを表す。
つまり、S4410以降のステップでは、周波数推移分布において、処理済音声データの時間進行に沿って隣接する単位区間における音声基本周波数f0同士の比率が、予め設定された比率の範囲を表す特別範囲を超えることで、周波数推移が不連続となる不連続領域(即ち、倍音誤検出領域)を検出する。これと共に、S4410以降のステップでは、倍音誤検出領域を形成する単位区間に対応する音声基本周波数f0を補正する。
そして、S4410での判定の結果、音飛フラグが未設定であれば、S4420へと進む。そのS4420では、第2区間f0を第1区間f0にて除した結果(以下、第1周波数比率と称す)が、特別範囲を超えているか否かを判定する。
そして、S4420での判定の結果、第1周波数比率が特別範囲を超えていれば、S4430へと進む。そのS4430では、音飛フラグを設定する。つまり、処理済音声データの時間進行に沿って隣接する単位区間における音声基本周波数f0同士の比率が、特別範囲を超えると、それら隣接する単位区間のうち、時間進行に沿った後の単位区間を、倍音誤検出領域の開始時点とする。
続く、S4440では、第2区間f0を第3区間f0とする。その後、S4400へと進む。
なお、S4420での判定の結果、第1周波数比率が特別範囲以内であれば、周波数推移分布において、倍音誤検出領域が開始されていないものと判定して、S4400へと進む。そのS4400では、全ての単位区間の中に、未選択の単位区間が存在すれば(S4400:NO)、S4310へと戻る。
なお、S4420での判定の結果、第1周波数比率が特別範囲以内であれば、周波数推移分布において、倍音誤検出領域が開始されていないものと判定して、S4400へと進む。そのS4400では、全ての単位区間の中に、未選択の単位区間が存在すれば(S4400:NO)、S4310へと戻る。
ところで、S4410での判定の結果、音飛フラグが設定済みであれば、S4450へと進む。そのS4450では、周波数推移分布において、倍音誤検出領域が継続中であるものとして、音飛カウンタを1つインクリメントする。
その後、S4460では、第3区間f0を第1区間f0にて除した結果(以下、第2周波数比率と称す)が、特別範囲を超えているか否かを判定する。その判定の結果、第2周波数比率が特別範囲を超えていれば、S4470へと進む。
そして、S4470では、音飛カウンタの値である音飛値が、予め規定された第2規定値以上であるか否かを判定する。その判定の結果、音飛値が第2規定値未満であれば、周波数推移分布において、倍音誤検出領域が継続中であるものとして、S4400へと進む。
ところで、S4460での判定の結果、第2周波数比率が特別範囲以内であれば、周波数推移分布において、倍音誤検出領域の継続が終了したものとして、S4480へと進む。つまり、倍音誤検出領域は、周波数推移分布において、時間進行に沿って隣接する単位区間における音声基本周波数f0が、特別範囲を超えて変動(以下、特別変動と称す)した後、その特別変動後に時間進行に沿って第2規定数未満隣接する単位区間における音声基本周波数f0が、第3区間f0を基準とした特別範囲以内へと戻った領域である。
そのS4480では、倍音誤検出領域に対応する単位区間の音声基本周波数f0を、第3区間f0から、一定の変動幅で変動しながら順に第1区間f0へと直線的に到達するように補正する。その後、S4490へと進む。
なお、S4470での判定の結果、音飛値が第2規定値以上であれば、対応する特別変動以降に隣接する単位区間からなる領域は、不連続領域ではなく、入力音声における音声基本周波数f0の推移そのものを表しているものとして、S4490へと進む。そのS4490では、音飛カウンタを初期化すると共に、音飛フラグを解除して、S4400へと進む。
そのS4400では、全ての単位区間の中に、未選択の単位区間が存在すれば(S440:NO)、S4310へと戻る。なお、S4400に移行した際に、未選択の単位区間が存在しなければ、f0補正処理を終了して、音高推定処理のS450へと進む。
次に、本実施形態におけるf0補正処理を実行した場合の動作例について説明する。
ここで、図9(A)は、f0補正処理を実行する前の周波数推移分布を示した図面であり、図9(B)は、f0補正処理を実行した後の周波数推移分布を示した図面である。
ここで、図9(A)は、f0補正処理を実行する前の周波数推移分布を示した図面であり、図9(B)は、f0補正処理を実行した後の周波数推移分布を示した図面である。
図9(A)に示すような周波数推移分布を示す各単位区間における音声基本周波数f0に対して、f0補正処理が実行されると、まず、周波数推移分布における入力音声の時間進行に沿った単位区間が選択される(S4310)。その選択された単位区間における音声基本周波数f0は、単位区間t1における音声基本周波数f0_t1までは、全て0[Hz]以外の周波数であり、かつ時間進行に沿って連続する単位区間における音声基本周波数f0同士の比率が、特別範囲以内である。このため、周波数推移分布における開始時点から単位区間t1までは、周波数補正が行われること無く、音高推移処理のS390にて決定された音声基本周波数f0が維持される。
ところが、単位区間t1における音声基本周波数f0_t1と、単位区間t2における音声基本周波数f0_t2との比率は、特別範囲を超える。
このため、S4310にて単位区間t2が選択されると、S4420にて否定判定され、音飛フラグが設定される。次に、S4310にて選択された単位区間t3における音声基本周波数f0_t3は、音声基本周波数f0_t1との比率が特別範囲を超える。このため、S4460にて肯定判定され、しかも、この時点での音飛値が第2規定値未満(このf0補正処理の動作の説明では、第2規定値を2以上とする)であることから、S4470では、否定判定となる。
このため、S4310にて単位区間t2が選択されると、S4420にて否定判定され、音飛フラグが設定される。次に、S4310にて選択された単位区間t3における音声基本周波数f0_t3は、音声基本周波数f0_t1との比率が特別範囲を超える。このため、S4460にて肯定判定され、しかも、この時点での音飛値が第2規定値未満(このf0補正処理の動作の説明では、第2規定値を2以上とする)であることから、S4470では、否定判定となる。
そして、S4310にて、処理済音声データの時間進行に沿って次に選択された単位区間t4における音声基本周波数f0_t4は、音声基本周波数f0_t1との比率が特別範囲以内である。よって、S4460にて否定判定され、単位区間t2から単位区間t3までの区間が、倍音誤検出領域として検出される。このようにして検出された倍音誤検出領域における音声基本周波数f0_t2,f0_t3を、図9(B)に示すように、音声基本周波数f0_t1から、一定の変動幅で変動しながら順に音声基本周波数f0_t4へと直線的に到達するように補正する。
ここで、図9(A)へと戻り、f0補正処理において、入力音声の時間進行に沿って単位区間の選択を繰り返す。このとき、図9(A)に示す周波数推移分布において、単位区間t5から単位区間t9までの間の領域は、全ての単位区間にて音声基本周波数f0(図中、f0_t5〜t9)が0[Hz]である。
このことから、f0補正処理では、S4310にて、単位区間t5〜t10が選択された際には、それらの単位区間t5〜t10が選択される毎に、S4330へと移行し、区間カウンタを5まで増加させる。なお、S4310にて、入力音声に沿って次に選択される単位区間t10における音声基本周波数f0_t10は、0[Hz]以外の周波数であるため、S4320にて肯定判定される。そして、カウント値が、第1規定値未満であり(このf0補正処理の動作の説明では、第1規定値を6以上とする)、かつ1以上であることから、S4370では否定判定となる。よって、単位区間t5から単位区間t10が、短期不連続領域として検出される。このようにして検出された短期不連続領域における音声基本周波数f0_t5〜t9を、図9(B)に示すように、音声基本周波数f0_tAから、一定の変動幅で変動しながら順に音声基本周波数f0_t10へと直線的に到達するように補正する。
つまり、本実施形態のf0補正処理では、周波数推移分布における不連続領域として、倍音誤検出領域や、短期不連続領域、長期不連続領域を検出する。
そして、不連続領域として倍音誤検出領域や短期不連続領域が検出されると、f0補正処理では、それらの倍音誤検出領域や短期不連続領域を時間進行に沿って挟む直前の単位区間における音声基本周波数f0から、一定の変動幅で変動しながら順に、直後の単位区間における音声基本周波数f0へと到達するように補正する。一方、不連続領域として長期不連続領域が検出されると、f0補正処理では、その長期不連続領域に対して時間進行上直前の単位区間における音声基本周波数f0を、長期不連続領域を形成する単位区間における音声基本周波数f0とする。
〈開始・終了タイミング推定処理について〉
次に、楽曲検索処理のS150にて起動される開始・終了タイミング推定処理について説明する。
そして、不連続領域として倍音誤検出領域や短期不連続領域が検出されると、f0補正処理では、それらの倍音誤検出領域や短期不連続領域を時間進行に沿って挟む直前の単位区間における音声基本周波数f0から、一定の変動幅で変動しながら順に、直後の単位区間における音声基本周波数f0へと到達するように補正する。一方、不連続領域として長期不連続領域が検出されると、f0補正処理では、その長期不連続領域に対して時間進行上直前の単位区間における音声基本周波数f0を、長期不連続領域を形成する単位区間における音声基本周波数f0とする。
〈開始・終了タイミング推定処理について〉
次に、楽曲検索処理のS150にて起動される開始・終了タイミング推定処理について説明する。
ここで、図10は、開始・終了タイミング推定処理の処理手順を示したフローチャートである。
この開始・終了タイミング推定処理は、図10に示すように、起動されると、まず、S510にて、先の音高推定処理のS310にて周波数解析を実行した単位区間それぞれについて、各単位区間における音圧を導出する。その導出される音圧は、先のS310にて導出された振幅スペクトルにおけるスペクトル振幅値の総和である。
この開始・終了タイミング推定処理は、図10に示すように、起動されると、まず、S510にて、先の音高推定処理のS310にて周波数解析を実行した単位区間それぞれについて、各単位区間における音圧を導出する。その導出される音圧は、先のS310にて導出された振幅スペクトルにおけるスペクトル振幅値の総和である。
続いて、S520では、S510にて導出された単位区間毎の音圧に基づいて、入力音声の時間進行に沿った音圧の推移を表す音圧推移を導出する。これと共に、S520では、導出された音圧推移を移動平均によって平滑化する。ただし、本実施形態における移動平均は、規定数の単位区間を、音圧推移における時間進行に沿って互いに重複するように繰り返し規定して実施される。なお、繰り返し規定される規定数の単位区間は、単位区間を1つずつ変位させることで達成される。これにより、平滑化された後の音圧推移(以下、平滑化音圧推移と称す)は、平滑化される前の音圧推移と同様、全ての単位区間にて対応する音圧を有することになる。
そして、S530では、図11(A)に示すように、平滑化音圧推移において、各単位区間に対応する音圧それぞれから、予め規定された大きさの騒音音圧を減算する。このとき、減算結果が負の値(マイナス)となる音圧については、その値を0とする。
続く、S540では、音圧推移における全ての単位区間の中から、1つの単位区間を選択する。これと共に、S540では、その選択された単位区間における音圧を取得する。このS540では、単位区間は、S540に移行する毎に、処理済音声データの開始から、その処理済音声データの時間進行に沿って順次選択される。
そして、S550では、今回S550に移行するまでの間、第1音圧Pv1としていた音圧を第2音圧Pv2とし、S550へと移行する際にS540にて選択した単位区間における音圧を第1音圧Pv1として設定する。つまり、このS550へと移行すると、処理済音声データの時間進行に沿って取得済みである音圧の中で、音声開始に近い単位区間における音圧を第2音圧Pv2とし、音声終了に近い単位区間における音圧を第1音圧Pv1としている。
さらに、S560では、第1音圧Pv1を第2音圧Pv2にて除する(以下、この演算結果を音圧増加率と称す)。
続く、S570では、S560にて導出された音圧増加率が、予め規定された規定閾値Th以上であるか否かを判定する。そのS570での判定の結果、音圧増加率が規定閾値Th以上であれば、S580へと進む。そして、S580では、発音カウンタを1つインクリメントする。
続く、S570では、S560にて導出された音圧増加率が、予め規定された規定閾値Th以上であるか否かを判定する。そのS570での判定の結果、音圧増加率が規定閾値Th以上であれば、S580へと進む。そして、S580では、発音カウンタを1つインクリメントする。
続く、S590では、発音カウンタの値である発音カウント値が、予め規定された第1閾値以上であるか否かを判定し、判定の結果、発音カウント値が第1閾値未満であれば、S600へと進む。そのS600では、発音カウント値が、第1閾値よりも1つ小さな値として予め規定された第2閾値以上であるか否かを判定する。そのS600での判定の結果、発音カウント値が第2閾値未満であれば、S540へと戻り、S540〜S590のステップを繰り返す。
一方、S600での判定の結果、発音カウント値が第2閾値以上であれば、即ち、S540〜S590のステップを繰り返す際に、第2閾値の値だけ連続してS570にて肯定判定されると、S610へと進む。つまり、S600にて肯定判定されることにより、音圧増加率が規定閾値Th以上となる単位区間が、第2閾値の値に1を加えた数だけ連続する領域(以下、開始判定対象区間と称す)が検出される。
そして、S610では、開始判定対象区間を形成する単位区間のうち、入力音声の時間進行に沿った最初の単位区間を発音開始タイミングとして特定する。これと共に、その特定された発音開始タイミングにおける音圧(以下、発音開始音圧と称す)を取得する。さらに、S610では、それら特定された発音開始タイミング及び取得された発音開始音圧を記憶部28に記憶する。なお、図10〜12では、開始タイミングを「ST」と表記する。
なお、S590での判定の結果、発音カウント値が第1閾値以上であれば、S600及びS610のステップを実行することなく、S630へと進む。つまり、平滑化音圧推移において、発音開始タイミング以降における音圧増加率が、その発音開始タイミングから継続して規定閾値Th以上である場合には、S590にて否定判定される。
ところで、S570での判定の結果、音圧増加率が規定閾値Th未満であれば、S620にて、発音カウンタを初期化(ここでは、0と)する。つまり、規定閾値Th以上の音圧増加率が継続する単位区間の数の計測を終了する。その後、S630へと進む。
そして、S630では、第1音圧Pv1が、直近のS610にて記憶部28に記憶された発音開始音圧(以下、終了判定音圧と称す)以下であるか否かを判定する。その判定の結果、第1音圧Pv1が終了判定音圧未満であれば、S640へと進む。
そのS640では、第1音圧Pv1に対応する単位区間を発音終了タイミングとして記憶部28に記憶する。その後、S650へと進む。なお、図10〜図12では、終了タイミングを「ET」と表記する。
なお、S630での判定の結果、第1音圧Pv1が終了判定音圧以上であれば、S540にて選択された単位区間が発音終了タイミングではないものと判定して、S640を実行することなく、S650へと進む。
そのS650では、処理済音声データに規定された全ての単位区間を、S540にて選択済みであるか否かを判定する。その判定の結果、未選択の単位区間が存在すれば、S540へと戻る。一方、S650での判定の結果、S540にて未選択の単位区間が存在しなければ、S660へと進む。
つまり、図11(B)に示すように、音圧増加率が継続して規定閾値以上となる音圧の単調増加区間が平滑化音圧推移に含まれている場合、開始・終了タイミング推定処理において、S540〜S650のステップを繰り返すことにより、その単調増加区間における最初の単位区間それぞれが発音開始タイミング(図中、第1,第2,第3,第4発音ST)として特定される。ただし、ここで言う単調増加区間とは、開始判定対象区間を形成する単位区間数以上連続する単位区間である。
さらに、S540〜S650のステップを繰り返すことにより、平滑化音圧推移において、処理済音声データの時間進行に沿った発音開始タイミング以降の単位区間の中で、各単位区間に対応する音圧が、最初に終了判定音圧以下となった単位区間が発音終了タイミング(図中、第1,第2発音ET)として特定される。
ここで、図10へと戻り、続くS660では、処理済音声データに設定された単位区間の中で、処理済音声データの時間進行に沿った最終の単位区間を発音終了タイミングとして、記憶部28に記憶する。
続く、S670では、処理済音声データに規定された全ての単位区間の中から、判定対象区間における音声基本周波数f0を取得する。このS670にて音声基本周波数f0が取得される判定対象区間は、予め規定された規定数の単位区間からなるものである。その規定数の単位区間は、処理済音声データにおける時間進行に沿って互いに連続かつ重複するように繰り返し規定される。
そして、S680では、S670にて取得した判定対象区間における音声基本周波数f0に基づき、それらの音声基本周波数f0の変動幅を導出する。このS680にて導出される変動幅は、判定対象区間における最大周波数の音声基本周波数f0と、最小周波数の音声基本周波数f0との差である。
続く、S690では、S680にて導出した変動幅が、予め規定された周波数の幅である規定幅未満であるか否かを判定する。その判定の結果、変動幅が規定幅未満であれば、S700へと進む。
そして、S700では、判定対象区間における全ての音声基本周波数f0を、処理済音声データの時間進行に沿って配置してなる周波数軌跡を導出する。これと共に、その導出された周波数軌跡を平滑化微分して、周波数軌跡における極値を検出する。
続く、S710では、S700での平滑化微分の結果、周波数軌跡における極値が検出されたか否かを判定する。その判定の結果、極値が検出されていれば、S720へと進み。
そのS720では、S700にて検出された判定対象区間内での極値の数を集計する。そして、S730では、S720にて集計された極値の数であるビブラート値が、予め規定された第3閾値以上であるか否かを判定する。そのS730での判定の結果、ビブラート値が第3閾値以上であれば、S740へと進む。
そのS720では、S700にて検出された判定対象区間内での極値の数を集計する。そして、S730では、S720にて集計された極値の数であるビブラート値が、予め規定された第3閾値以上であるか否かを判定する。そのS730での判定の結果、ビブラート値が第3閾値以上であれば、S740へと進む。
つまり、S670からS730でのステップを実行することにより、音声基本周波数f0の変動幅が規定幅未満である判定対象区間の中で、音声基本周波数f0が増加する増加区間及び減少する減少区間の和が第3閾値以上である判定対象区間が、ビブラート期間として検出される。なお、このビブラート期間とは、音声処理装置20の利用者がビブラートにて発声した期間を意味する。
続く、S740では、S720にて集計されたビブラート値を初期化(ここでは、0と)する。さらに、S750では、記憶部28に記憶されている発音開始タイミングの中から、ビブラート期間内に対応する発音開始タイミング(以下、期間内タイミングと称す)を消去(除去)する。その後、S770へと進む。
なお、S690での判定の結果、判定対象区間内における音声基本周波数f0の変動幅が規定幅以上である場合や、S710での判定の結果、判定対象区間内に極値が含まれていない場合には、S760へと進む。さらに、S730での判定の結果、ビブラート値が第3閾値未満である場合にも、S760へと進む。
つまり、S670にて規定された判定対象区間がビブラート期間でなければ、S760へと進む。そのS760では、ビブラート値を初期化した後、S770へと進む。
そのS770では、処理済音声データに設定された全ての単位区間を、判定対象区間として規定したか否かを判定する。その判定の結果、全ての単位区間が判定対象区間として規定されていなければ、S680へと戻り、新たな判定対象区間を設定して、S680へと進む。そして、全ての単位区間が判定対象区間として規定されるまで、S680〜S770を繰り返す。
そのS770では、処理済音声データに設定された全ての単位区間を、判定対象区間として規定したか否かを判定する。その判定の結果、全ての単位区間が判定対象区間として規定されていなければ、S680へと戻り、新たな判定対象区間を設定して、S680へと進む。そして、全ての単位区間が判定対象区間として規定されるまで、S680〜S770を繰り返す。
例えば、本開始・終了タイミング推定処理を実行することで、図12(A)に示すような発音開始タイミング(第1〜第4発音開始タイミング)、及び発音終了タイミング(第1,第2発音終了タイミング)が特定されると共に、第3発音開始タイミング、及び第4発音開始タイミングを含む判定対象区間をビブラート期間として特定した場合を想定する。このような場合、第3発音開始タイミング及び第4発音開始タイミングは、期間内タイミングとして除去されるため、図12(B)に示すように、第1発音開始タイミングと第2発音開始タイミングとの2つのみが残される。なお、発音終了タイミングは、除去されずに全て残される。
なお、S770での判定の結果、全ての単位区間が判定対象として規定されていれば、本開始・終了タイミング推定処理を終了して、楽曲検索処理のS190へと進む。
つまり、本実施形態の開始・終了タイミング推定処理では、入力音声の音圧推移に基づいて、発音開始タイミングと発音終了タイミングとを検出すると共に、入力音声における音声基本周波数f0の時間進行に沿った推移(即ち、周波数軌跡)から、ビブラート期間を特定する。そして、開始・終了タイミング推定処理では、特定されたビブラート期間内に対応する発音開始タイミングを消去し、ビブラート期間外に対応する発音開始タイミングのみを残す。
〈採譜処理について〉
次に、楽曲検索処理のS190にて起動される採譜処理について説明する。
つまり、本実施形態の開始・終了タイミング推定処理では、入力音声の音圧推移に基づいて、発音開始タイミングと発音終了タイミングとを検出すると共に、入力音声における音声基本周波数f0の時間進行に沿った推移(即ち、周波数軌跡)から、ビブラート期間を特定する。そして、開始・終了タイミング推定処理では、特定されたビブラート期間内に対応する発音開始タイミングを消去し、ビブラート期間外に対応する発音開始タイミングのみを残す。
〈採譜処理について〉
次に、楽曲検索処理のS190にて起動される採譜処理について説明する。
ここで、図13は、採譜処理の処理手順を示したフローチャートである。
この採譜処理は、図13に示すように、起動されると、まず、S910にて、先の音高推定処理のS310にて周波数解析を実行した全ての単位区間の中から、1つの単位区間を選択する。このS910では、単位区間は、S910へと移行する毎に、処理済音声データの開始から、処理済音声データの時間進行に沿って順次選択される。
この採譜処理は、図13に示すように、起動されると、まず、S910にて、先の音高推定処理のS310にて周波数解析を実行した全ての単位区間の中から、1つの単位区間を選択する。このS910では、単位区間は、S910へと移行する毎に、処理済音声データの開始から、処理済音声データの時間進行に沿って順次選択される。
続く、S920では、S910にて選択された単位区間が発音開始タイミングであるか否かを判定する。その判定の結果、選択された単位区間が発音開始タイミングでなければ、S930へと進む。
そのS930では、S910にて選択された単位区間が発音終了タイミングであるか否かを判定する。その判定の結果、選択された単位区間が発音終了タイミングでなければ、S910へと戻る。つまり、S910にて選択された単位区間が、発音開始タイミングまたは発音終了タイミングでなければ、S910からS930のステップを繰り返す。
一方、S920での判定の結果、S910にて選択された単位区間が発音開始タイミングであれば、S940へと進む。そのS940では、今回S940に移行する前の間、第1開始タイミングとしていた発音開始タイミングを第2開始タイミングとし、S950へと移行する際にS910にて選択した単位区間(即ち、発音開始タイミング)を第1開始タイミングとして設定する。つまり、このS940へと移行すると、処理済音声データの時間進行に沿った発音開始タイミングの中で、発声開始に近い発音開始タイミングを第2とし、音声終了に近い単位区間における音圧を第1開始タイミングとしている。なお、図13では、開始タイミングをSTと表記する。
続く、S950では、開始取得フラグ(以下、開始取得Fと表記する)が設定済みであるか否かを判定する。その判定の結果、開始取得フラグが未設定であれば、S960へと進む。そのS960では、開始取得フラグを設定する。その後、S910へと戻る。
ところで、S930での判定の結果、S910にて選択された単位区間が発音終了タイミングであれば、S970へと進む。つまり、S970への移行は、処理済音声データの時間進行に沿って、発音開始タイミングと、その発音開始タイミングと対となるべき発音終了タイミングとが取得された場合である。そして、S970では、開始取得フラグを解除してS980へと進む。
なお、S950での判定の結果、開始取得フラグが設定されていれば、S980へと進む。つまり、処理済音声データの時間進行に沿って、2つの発音開始タイミングが、それらの発音開始タイミングの間に発音終了タイミングを挟むことなく存在する場合、S950にて肯定判定される。
そして、S980では、そのS980へと移行した時点で取得済みの発音開始タイミングまたは発音終了タイミングに基づいて、音符期間を特定する。
具体的に、本実施形態では、S930にて肯定判定されることで、S980へと進んだ場合には、第1開始タイミングを音符開始タイミングとし、発音終了タイミングを音符終了タイミングとする。一方、S950にて否定判定されることで、S980へと進んだ場合には、第2開始タイミングを音符開始タイミングとし、第1開始タイミングよりも処理済音声データの時間進行に沿って第1開始タイミングよりも設定時間長だけ前の時点を音符終了タイミングとする。そして、何れの場合にも、それら音符開始タイミングと音符終了タイミングとの間の期間を、音符期間として特定する。なお、本実施形態におけるS980では、特定した音符期間の期間長を音長として導出する。
具体的に、本実施形態では、S930にて肯定判定されることで、S980へと進んだ場合には、第1開始タイミングを音符開始タイミングとし、発音終了タイミングを音符終了タイミングとする。一方、S950にて否定判定されることで、S980へと進んだ場合には、第2開始タイミングを音符開始タイミングとし、第1開始タイミングよりも処理済音声データの時間進行に沿って第1開始タイミングよりも設定時間長だけ前の時点を音符終了タイミングとする。そして、何れの場合にも、それら音符開始タイミングと音符終了タイミングとの間の期間を、音符期間として特定する。なお、本実施形態におけるS980では、特定した音符期間の期間長を音長として導出する。
続く、S990では、S980にて特定された音符期間に対応する全ての単位区間における音高(即ち、音高推定処理のS450にて量子化された音声基本周波数f0、以下、量子化周波数とも称す)を取得する。つまり、音符期間を構成する単位区間の数だけ、量子化周波数が取得される。
そして、S1000では、S990にて取得された量子化周波数に基づき、第1音高周波数、第2音高周波数を特定すると共に、第1音高数、及び第2音高数を集計する。このS1000にて特定される第1音高周波数は、S980にて特定された音符期間に占める割合が最も高い量子化周波数であり、第2音高周波数とは、その音符期間に占める割合が二番目に高い量子化周波数である。なお、本実施形態のS1000では、S980にて特定された音符期間に第2音高周波数が複数存在する場合、周波数が最も高いものを第2音高周波数とする。
そして、S1000にて集計される第1音高数は、S980にて特定された音符期間に含まれる単位区間の中で、第1音高周波数に対応する単位区間の数である。また、第2音高数は、S980にて特定された音符期間に含まれる単位区間の中で、第2音高周波数に対応する単位区間の数である。
次に、S1010では、S1000にて特定された第2音高周波数が、第1音高周波数よりも周波数が高いか否かを判定する。その判定の結果、第2音高周波数が第1音高周波数よりも高ければ、S1020へと進む。
そのS1020では、第2音高数が音高判定閾値以上であるか否かを判定する。この判定に用いられる音高判定閾値は、予め規定された規定割合A(本実施形態では、1/2.3とする)と第1音高数とを乗算した値である。そのS1020での判定の結果、第2音高数が音高判定閾値以上であれば、S1030へと進む。
そして、S1030では、第2音高周波数に対応する音高を、S980にて特定された音符期間における音高(即ち、音符音高)として特定する。そして、その特定された音符音高と、S980にて導出された音長を音符音長とした音声音符データを生成する。その後、S1050へと進む。
ところで、S1010での判定の結果、第2音高周波数が第1音高周波数以下である場合や、S1020での判定の結果、第2音高数が音高判定閾値未満であれば、S1040へと進む。
そのS1040では、第1音高周波数に対応する音高を、S980にて特定された音符期間における音高(即ち、音符音高)として特定する。そして、その特定された音符音高と、S980にて導出された音長を音符音長とした音声音符データを生成する。その後、S1050へと進む。
例えば、S910からS980のステップを繰り返した後、S980にて、図14(A)に示すような第1音符開始タイミングと第1音符終了タイミングとの間の期間を第1音符期間として特定したとする。この特定した第1音符期間における第2音高周波数f02t1_hiは、第1音高周波数f01t1よりも高い周波数である。また、第2音高数は、「3」であり、第1音高数である「5」に規定割合A(本実施形態では、A=1/(2.3))を乗じた値よりも大きい。
この場合、図14(B)に示すように、第1音符期間についての音符音高は、S1030にて、第2音高周波数f02t1_hiに対応する音高(図中、第1音符音高)に特定される。
なお、第2音高周波数f02t1_lowも、第1音符中に占める割合が第2音高周波数f02t1_hiと同一である。しかし、第2音高周波数f02t1_hiの方が高い周波数であるため、第1音符期間の音高は、第2音高周波数f02t1_hiとなる。
さらに、S910からS980のステップを繰り返した後、S980にて、図14(A)に示すような第2音符開始タイミングと第2音符終了タイミングとの間の期間を第2音符期間として特定したとする。この特定した第2音符期間における第2音高周波数f02t2_hiは、第1音高周波数f01t2よりも低い周波数である。また、第2音高数は、「3」であり、第1音高数である「4」に規定割合A(本実施形態では、A=1/(2.3))を乗じた値よりも小さい。
この場合、図14(B)に示すように、第2音符期間についての音符音高(図中、第2音符音高)は、S1040にて、第1音高周波数f01t2に対応する音高に特定される。
続く、S1050では、処理済音声データに規定された全ての単位区間について、S910にて選択済みであるか否かを判定する。その判定の結果、未選択の単位区間が存在すれば、S910へと戻り、S910〜S1050を繰り返す。
続く、S1050では、処理済音声データに規定された全ての単位区間について、S910にて選択済みであるか否かを判定する。その判定の結果、未選択の単位区間が存在すれば、S910へと戻り、S910〜S1050を繰り返す。
一方、S1050での判定の結果、未選択の単位区間が存在しなければ、本採譜処理を終了して、楽曲検索処理のS210へと進む。
つまり、本採譜処理では、処理済音声データの時間進行に沿って、発音開始タイミングと、その発音開始タイミングと対となるべき発音終了タイミングとが存在する場合には、その発音開始タイミングを音符開始タイミングとし、その発音終了タイミングを音符終了タイミングとする。また、処理済音声データの時間進行に沿って、2つの発音開始タイミングが、それらの発音開始タイミングの間に発音終了タイミングを挟むことなく存在する場合には、時間進行に沿った前の発音開始タイミングを音符開始タイミングとし、時間進行に沿った後の発音開始タイミングを音符終了タイミングとする。そして、何れの場合にも、それら音符開始タイミングと音符終了タイミングとの間の期間を、音符期間として特定する。
つまり、本採譜処理では、処理済音声データの時間進行に沿って、発音開始タイミングと、その発音開始タイミングと対となるべき発音終了タイミングとが存在する場合には、その発音開始タイミングを音符開始タイミングとし、その発音終了タイミングを音符終了タイミングとする。また、処理済音声データの時間進行に沿って、2つの発音開始タイミングが、それらの発音開始タイミングの間に発音終了タイミングを挟むことなく存在する場合には、時間進行に沿った前の発音開始タイミングを音符開始タイミングとし、時間進行に沿った後の発音開始タイミングを音符終了タイミングとする。そして、何れの場合にも、それら音符開始タイミングと音符終了タイミングとの間の期間を、音符期間として特定する。
これに加えて、本採譜処理では、第2音高周波数が第1音高周波数よりも周波数が高く、かつ第2音高数が第1音高数に対して規定割合A以上であれば、第2音高周波数に対応する音高を、その音符期間における音符音高として特定する。これと共に、本採譜処理では、第2音高周波数が第1音高周波数よりも周波数が低い場合、または第2音高数が第1音高数に対して規定割合A未満である場合には、第1音高周波数に対応する音高を、その音符期間における音符音高として特定している。
〈採譜結果照合処理について〉
次に、楽曲検索処理のS210にて起動される採譜結果照合処理について説明する。
〈採譜結果照合処理について〉
次に、楽曲検索処理のS210にて起動される採譜結果照合処理について説明する。
ここで、図15は、採譜結果照合処理の処理手順を示したフローチャートである。
この採譜結果照合処理は、図15に示すように、起動されると、S1210では、先の採譜処理にて生成された音声音符データを、処理済音声データの時間進行に沿って連続する予め規定された音符規定数毎に単語化(即ち、グループ化)する。この単語化に際しては、音声音符データの一部が互いに重複するように実施する。以下、単語化された音声音符データそれぞれを、単語音符データと称す。
この採譜結果照合処理は、図15に示すように、起動されると、S1210では、先の採譜処理にて生成された音声音符データを、処理済音声データの時間進行に沿って連続する予め規定された音符規定数毎に単語化(即ち、グループ化)する。この単語化に際しては、音声音符データの一部が互いに重複するように実施する。以下、単語化された音声音符データそれぞれを、単語音符データと称す。
さらに、S1220では、サーバ40から取得され記憶部28に記憶されている楽曲データに対応する楽曲の中から、単語音符データを基準音符データ(即ち、ガイドメロディ)に照合する楽曲(以下、音符照合楽曲と称す)を1つ決定する。
続く、S1230では、S1210にて生成された全ての単語音符データの中から、1つの単語音符データを取得する。ただし、単語音符データを取得する際には、処理済音声データの時間進行において、音声開始に近い音声音符データを含むものを取得する。
そして、S1240では、S1220にて決定された音符照合楽曲に対応する基準音符データの中から、時間進行に沿って連続する音符規定数分だけ単語化して取得する。この音符規定数分の基準音符データを単語化する際には、基準旋律の時間進行において、その基準旋律の開始に近い構成音についての基準音符データから実行する。以下、S1240にて単語化して取得した音符規定数分の基準音符データを、比較音符データとする。
続いて、S1250では、S1230にて取得した単語音符データを、S1240にて取得した比較音符データに照合する。その照合の結果、単語音符データと比較音符データとが一致すれば(S1260:YES)、S1270へと進む。
そのS1270では、詳しくは後述する音符一致度、及び累積楽曲内一致度を導出すると共に、その導出した累積楽曲内一致度を構成音の番号と対応付けて記憶し、その後、S1280へと進む。この累積楽曲内一致度と対応付けられる構成音の番号は、比較音符データを形成する音符規定数の構成音の中で、基準旋律の時間進行に沿った最初の構成音に対応付けられたものである。
一方、S1250での照合の結果、単語音符データと比較音符データとが一致しなければ(S1260:NO)、S1280へと進む。
そのS1280では、全ての基準音符データを単語化して、その単語化によって生成された比較音符データに、S1230にて取得した単語音符データを照合したか否かを判定する。その判定の結果、全ての比較音符データに単語音符データを照合していなければ、S1240へと戻る。そのようにして移行したS1240では、前回のS1240にて単語化した基準音符データと、基準旋律の時間進行に沿った一部が重複するように音符規定数分だけ、基準音符データを単語化して取得する。すなわち、新たな比較音符データを生成して、S1250へと進む。
そのS1280では、全ての基準音符データを単語化して、その単語化によって生成された比較音符データに、S1230にて取得した単語音符データを照合したか否かを判定する。その判定の結果、全ての比較音符データに単語音符データを照合していなければ、S1240へと戻る。そのようにして移行したS1240では、前回のS1240にて単語化した基準音符データと、基準旋律の時間進行に沿った一部が重複するように音符規定数分だけ、基準音符データを単語化して取得する。すなわち、新たな比較音符データを生成して、S1250へと進む。
これにより、1つの楽曲における全ての基準音符データに対して、1つの単語音符データの照合が完了するまで、S1240からS1280が繰り返し実行される。
なお、S1280での判定の結果、全ての基準音符データを単語化して、その単語化によって生成された比較音符データに、単語音符データを照合していれば、S1290へと進む。そのS1290では、全ての単語音符データを取得して、比較音符データに照合済みであるか否かを判定する。
なお、S1280での判定の結果、全ての基準音符データを単語化して、その単語化によって生成された比較音符データに、単語音符データを照合していれば、S1290へと進む。そのS1290では、全ての単語音符データを取得して、比較音符データに照合済みであるか否かを判定する。
そのS1290での判定の結果、全ての単語音符データを比較音符データに照合していなければ、S1230へと戻る。そのS1230では、比較音符データに対して未照合の単語音符データの中から、1つの単語音符データを取得する。ただし、単語音符データを取得する際には、入力音声の時間進行において、音声開始に近い音声音符データからなる単語音符データを取得する。
その後、S1290にて肯定判定されるまで、S1230〜S1290までのステップを繰り返す。以下、S1230〜S1290までの一回の流れを、別音符照合サイクルと称す。また、別音符照合サイクルにて、単語音符データを取得してから新たな単語音符データを取得するまでのS1240〜S1280の一回の流れを、同一音符照合サイクルと称す。
この同一音符照合サイクルを繰り返す過程の中で、S1260にて肯定判定されると、S1270へと進む。そのようにして移行したS1270では、今回の別音符照合サイクルにて単語音符データと一致した比較音符データが、前回の別音符照合サイクルにて単語音符データと一致した比較音符データと、基準旋律の時間進行上連続するものであるか否かを判定(以下、音符接続判定とする)する。具体的には、前回の別音符照合サイクルにて音符一致度に対応付けられた構成音の番号の中に、今回S1270へと進んだ際に、単語音符データに一致したと判定された比較音符データを形成する構成音の番号よりも、基準旋律における時間進行上1つ前の構成音であることを示す番号があれば、音符接続判定における判定結果が肯定されたものとする。
その音符接続判定の判定結果が肯定であれば、連続して肯定判定された別音符照合サイクルの回数を「べき指数」として、初期規定値を累乗した値を音符一致度として導出する。一方、音符接続判定の判定結果が否定であれば、初期規定値そのものを音符一致度として導出する。
つまり、音符一致度は、処理済音声データの時間進行に沿った単語音符データが連続して、音符照合楽曲の基準旋律における時間進行に沿った比較音符データに一致するほど、大きな値となる。
さらに、導出された音符一致度の和を楽曲内累積一致度として導出する。
なお、S1290にて肯定判定されると、S1300へと進む。そのS1300では、先のS1220にて決定された音符照合楽曲に対する楽曲内累積一致度の中で、値が最大のものを、その音符照合楽曲に対応する曲名データと対応付けて、記憶部28に記憶する。つまり、S1300にて曲名データと対応付けられる楽曲内累積一致度は、一つの音符照合楽曲に対する別音符照合サイクルの繰り返しにて導出された全楽曲内累積一致度の中で、値が最大のものである。
なお、S1290にて肯定判定されると、S1300へと進む。そのS1300では、先のS1220にて決定された音符照合楽曲に対する楽曲内累積一致度の中で、値が最大のものを、その音符照合楽曲に対応する曲名データと対応付けて、記憶部28に記憶する。つまり、S1300にて曲名データと対応付けられる楽曲内累積一致度は、一つの音符照合楽曲に対する別音符照合サイクルの繰り返しにて導出された全楽曲内累積一致度の中で、値が最大のものである。
続く、S1310では、記憶部28に記憶されている楽曲データに対応する全ての楽曲を、音符照合楽曲として決定済みであるか否かを判定する。その判定の結果、全ての楽曲を音符照合楽曲として決定済みでなければ、S1220へと戻る。そのようにして移行したS1220では、音符照合楽曲として未決定の楽曲の中から、新たな楽曲を音符照合楽曲として決定して、S1230へと進む。つまり、S1230からS1310までのステップを、記憶部28に記憶されている全ての楽曲データ中の基準音符データに、単語音符データの照合が完了するまで繰り返す。
なお、S1310での判定の結果、記憶部28に記憶されている全ての楽曲を音符照合楽曲として決定済みであれば、S1320へと進む。
そのS1320では、S1300にて記憶部28に記憶された楽曲内累積一致度の中で、値が最大である楽曲内累積一致度に対応する楽曲を意図予想曲として特定する。さらに、S1320では、その特定された意図予想曲についての曲名データを取得し、取得された曲名データに対応する曲名を表示部22に表示すると共に、その曲名をスピーカ27から音声にて出力する。すなわち、意図予想曲の曲名が報知される。
そのS1320では、S1300にて記憶部28に記憶された楽曲内累積一致度の中で、値が最大である楽曲内累積一致度に対応する楽曲を意図予想曲として特定する。さらに、S1320では、その特定された意図予想曲についての曲名データを取得し、取得された曲名データに対応する曲名を表示部22に表示すると共に、その曲名をスピーカ27から音声にて出力する。すなわち、意図予想曲の曲名が報知される。
そして、その後、採譜結果照合処理を終了し、さらに、楽曲検索処理を終了する。
つまり、本実施形態の採譜結果照合処理では、採譜処理にて生成された音声音符データを、楽曲毎に予め用意された基準音符データに照合する。そして、その照合結果として、処理済音声データの時間進行に沿って連続する音声音符データが、音符照合楽曲の基準旋律における時間進行に沿って連続して一致する比較音符データの数が多いほど、大きな値の楽曲内累積一致度を導出する。そして、本実施形態の採譜結果照合処理では、導出された楽曲内累積一致度の中で、値が最も高いものに対応する楽曲を、意図予想曲として検出している。
[実施形態の効果]
以上説明したように、本実施形態の音声処理装置20では、区間f0候補の自己相関値それぞれに減衰係数を乗じることで、倍音成分が含まれる可能性の高い周波数帯に対応する区間f0候補の自己相関値が低減される。
つまり、本実施形態の採譜結果照合処理では、採譜処理にて生成された音声音符データを、楽曲毎に予め用意された基準音符データに照合する。そして、その照合結果として、処理済音声データの時間進行に沿って連続する音声音符データが、音符照合楽曲の基準旋律における時間進行に沿って連続して一致する比較音符データの数が多いほど、大きな値の楽曲内累積一致度を導出する。そして、本実施形態の採譜結果照合処理では、導出された楽曲内累積一致度の中で、値が最も高いものに対応する楽曲を、意図予想曲として検出している。
[実施形態の効果]
以上説明したように、本実施形態の音声処理装置20では、区間f0候補の自己相関値それぞれに減衰係数を乗じることで、倍音成分が含まれる可能性の高い周波数帯に対応する区間f0候補の自己相関値が低減される。
しかも、減衰係数が乗じられる区間f0候補の自己相関値は、その区間f0候補が特定f0候補の倍音範囲内であれば、その区間f0候補の自己相関値から、特定f0候補の自己相関値が減算された値である。よって、倍音成分が含まれる可能性の高い周波数帯に対応する区間f0候補の自己相関値はより低減される。
したがって、本実施形態の音高推定処理(より正確には、信頼度算出処理)にて導出されるf0候補信頼度は、倍音成分である可能性が高いほど値が低減され、基本周波数である可能性が高いほど値が大きなものとなる。
この結果、本実施形態の音高推定処理によれば、基本周波数成分の倍音成分、即ち、基本周波数成分以外の周波数が音声基本周波数として誤推定されることを低減できる。換言すれば、本実施形態の音声処理装置20によれば、音声基本周波数f0の推定精度を向上させることができる。
なお、本実施形態の音高推定処理では、自己相関平均値よりも値が低い自己相関値を、「0」としている。このため、本実施形態の音声処理装置20によれば、入力音声に含まれるノイズや、入力音声を音声データとしてサンプリングする際に生成されるノイズ(例えば、折り返し雑音)など、音声基本周波数f0である可能性が明らかに低い周波数を、音声基本周波数f0の候補から除外することができる。
ところで、本実施形態の採譜処理では、従来技術に比べて、推定精度が向上した音声基本周波数f0を用いて音符音高を推定する。この結果、本実施形態の採譜処理によれば、音符音高に推定精度を向上させることができる。
そして、本実施形態の楽曲検索処理によれば、従来技術に比べて、推定精度が向上した音符音高を用いて意図予測曲を検索する。この結果、本実施形態の楽曲検索処理によれば、その楽曲検索処理によって導出される意図推定曲が、音声処理装置20の利用者が音声を入力した際に想定した楽曲に一致したものとなる可能性を向上させることができる。
[その他の実施形態]
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において、様々な態様にて実施することが可能である。
[その他の実施形態]
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において、様々な態様にて実施することが可能である。
例えば、上記実施形態の音高推定処理において、S330にて導出される自己相関値は、導出された各値そのものであったが、このS330にて導出される自己相関値は、各値そのものを自己相関平均値で正規化した値でも良い。
なお、上記楽曲検索処理において実行される開始・終了タイミング推定処理、及び採譜処理は、上記実施形態に記載したものに限らず、入力音声から音符期間(即ち、音符音長)を推定し、単位区間毎の音声基本周波数f0に基づいて、音符期間における音高(即ち、音符音高)を特定するものであれば、どのようなものでも良い。
特に、上記実施形態では、開始・終了タイミング推定処理として、入力音声の音圧の時間進行に沿った変動から、発音開始タイミング及び発音終了タイミングを推定すると共に、期間内タイミングを除去していたが、期間内タイミングを除去しなくとも良いし、発音終了タイミングを検出しなくとも良い。
ところで、上記実施形態における楽曲検索処理では、マイクロホン24を介して入力された後、記憶部28に記憶された音声データを処理対象としていたが、楽曲検索処理にて処理対象とする音声データは、マイクロホン24を介して入力されたものに限らず、例えば、サーバ40や、他の音声処理装置20から取得した音声データでも良い。この場合、音声処理装置20では、マイクロホン24と、音声入力部25とが省略されていても良い。
それとは反対に、上記実施形態における楽曲検索処理では、音声入力部25にてサンプリングされた直後の音声データを直接処理対象としても良い。つまり、楽曲検索処理では、マイクロホン24を介して入力された音声をリアルタイムに処理していても良い。
なお、上記実施形態では、音声処理装置20にて楽曲検索処理を実行していたが、楽曲検索処理は、サーバ40にて実行されていても良い。この場合、音声データが、音声処理装置20からサーバ40に転送される必要がある。
また、楽曲検索システム1は、音声処理装置20のみから構成されていても良い。この場合、楽曲データは、予め記憶部28に記憶されている必要がある。
上記実施形態における楽曲検索処理では、S210にて採譜結果照合処理を実行していたが、楽曲検索処理として実行される内容として、このS210は省略されていても良い。つまり、上記実施形態における音声処理装置20は、いわゆる採譜装置として構成されたものでも良い。
[実施形態と特許請求の範囲との対応関係]
最後に、上記実施形態の記載と、特許請求の範囲の記載との対応関係について説明する。
上記実施形態における楽曲検索処理では、S210にて採譜結果照合処理を実行していたが、楽曲検索処理として実行される内容として、このS210は省略されていても良い。つまり、上記実施形態における音声処理装置20は、いわゆる採譜装置として構成されたものでも良い。
[実施形態と特許請求の範囲との対応関係]
最後に、上記実施形態の記載と、特許請求の範囲の記載との対応関係について説明する。
上記実施形態の音高推定処理におけるS330,S350、及び信頼度算出処理におけるS3710〜S3740を実行することで得られる機能が、本発明の相関値導出手段に相当する。なお、その相関値導出手段では、音高推定処理におけるS330を実行することで得られる機能が、本発明の自己相関値導出手段に相当し、S350を実行することで得られる機能が、本発明の相関ピーク検出手段に相当する。そして、信頼度算出処理のS3710を実行することで得られる機能が、本発明の特定ピーク抽出手段に相当し、信頼度算出処理のS3720,S3730を実行することで得られる機能が、本発明の相関値減算手段に相当する。
また、上記実施形態の信頼度算出処理におけるS3750を実行することで得られる機能が、本発明の相関値修正手段に相当し、S3760を実行することで得られる機能が、本発明の信頼度導出手段に相当する。さらに、音高推定処理におけるS390を実行することで得られる機能が、本発明の基本周波数推定手段に相当する。
なお、音高推定処理のS150、及び採譜処理のS910〜S980を実行することで得られる機能が、本発明の発音区間特定手段に相当し、採譜処理のS980〜S1040を実行することで得られる機能が、本発明の採譜手段に相当する。
1…楽曲検索システム 20…音声処理装置 21…通信部 22…表示部 23…操作受付部 24…マイクロホン 25…音声入力部 26…音声出力部 27…スピーカ 28…記憶部 30…制御部 40…サーバ 41…記憶装置 42…マイクロコンピュータ
Claims (5)
- 時間の進行に沿って連続して入力された入力音声から、予め規定された規定期間毎の前記入力音声である単位入力音声毎に音声基本周波数を推定する基本周波数推定装置であって、
前記単位入力音声の振幅スペクトルを導出すると共に、その導出された振幅スペクトルに基づき、規定された周波数である規定周波数毎に、その規定周波数が前記音声基本周波数であることの尤度を表し、かつその規定周波数及び該規定周波数の倍音成分のスペクトル振幅値が大きいほど値が大きい特定相関値を導出する相関値導出手段と、
前記相関値導出手段で導出された特定相関値それぞれに、対応する周波数が高いほど値が小さな減衰係数を乗じた修正相関値を導出する修正相関値導出手段と、
前記修正相関値導出手段で導出された修正相関値それぞれに、各修正相関値に対応する周波数のスペクトル振幅値を乗じた基音信頼度を導出する信頼度導出手段と、
前記信頼度導出手段で導出された基音信頼度の中で、値が最大である前記基音信頼度に対応する周波数を、前記音声基本周波数として推定する基本周波数推定手段と
を備えることを特徴とする基本周波数推定装置。 - 前記相関値導出手段は、
同一の単位入力音声から導出された前記振幅スペクトルを周波数軸方向に変位した際の前記振幅スペクトル同士の相関が強いほど値が大きな自己相関値を、前記規定周波数毎に導出する自己相関値導出手段と、
前記自己相関値導出手段で導出された自己相関値それぞれを対応する規定周波数毎に周波数軸に沿って配置してなる前記自己相関値の軌跡から、その軌跡における極大値を表す相関ピークを検出する相関ピーク検出手段と、
予め設定された下限周波数から上限周波数までの周波数帯を特定周波数帯とし、前記相関ピーク検出手段で検出された相関ピークの中から、前記特定周波数帯に含まれる前記規定周波数に対応する相関ピークである特定相関ピークを抽出する特定ピーク抽出手段と、
前記特定ピーク抽出手段で抽出された特定相関ピークの自己相関値を、その特定相関ピークに対応する周波数を整数倍した周波数に対応する前記相関ピークの自己相関値から減算する相関値減算手段とを備え、
前記相関値減算手段での減算結果それぞれを、前記特定相関値とすることを特徴とする請求項1に記載の基本周波数推定装置。 - 前記自己相関値導出手段は、
前記自己相関値の平均値である相関平均値を導出すると共に、その相関平均値よりも値が小さい前記自己相関値を0とすることを特徴とする請求項2に記載の基本周波数推定装置。 - 前記請求項1ないし請求項3のいずれか一項に記載の基本周波数推定装置と、
前記入力音声から、同一音高が継続しているとみなせる時間長を表す発音区間それぞれを特定する発音区間特定手段と、
前記発音区間特定手段により特定された発音区間に対応する規定期間に対し、前記基本周波数推定手段で推定された基本周波数を、その発音区間における音高として採譜する採譜手段と
を備えたことを特徴とする採譜装置。 - 時間の進行に沿って連続して入力された入力音声から、予め規定された規定期間毎の前記入力音声である単位入力音声毎に音声基本周波数を推定するためのプログラムであって、
前記単位入力音声の振幅スペクトルを導出すると共に、その導出された振幅スペクトルに基づき、規定された周波数である規定周波数毎に、その規定周波数が前記音声基本周波数であることの尤度を表し、かつその規定周波数及び該規定周波数の倍音成分のスペクトル振幅値が大きいほど値が大きい特定相関値を導出する相関値導出手順と、
前記相関値導出手順で導出された特定相関値それぞれに、対応する周波数が高いほど値が小さな減衰係数を乗じた修正相関値を導出する修正相関値導出手順と、
前記修正相関値導出手順で導出された修正相関値それぞれに、各修正相関値に対応する周波数のスペクトル振幅値を乗じた基音信頼度を導出する信頼度導出手順と、
前記信頼度導出手順で導出された基音信頼度の中で、値が最大である前記基音信頼度に対応する周波数を、前記音声基本周波数として推定する基本周波数推定手順と
をコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009217170A JP2011065041A (ja) | 2009-09-18 | 2009-09-18 | 基本周波数推定装置、採譜装置、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009217170A JP2011065041A (ja) | 2009-09-18 | 2009-09-18 | 基本周波数推定装置、採譜装置、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011065041A true JP2011065041A (ja) | 2011-03-31 |
Family
ID=43951324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009217170A Pending JP2011065041A (ja) | 2009-09-18 | 2009-09-18 | 基本周波数推定装置、採譜装置、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011065041A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109524023A (zh) * | 2016-01-22 | 2019-03-26 | 大连民族大学 | 一种对基频估计实验验证的方法 |
US11004463B2 (en) | 2017-09-25 | 2021-05-11 | Fujitsu Limited | Speech processing method, apparatus, and non-transitory computer-readable storage medium for storing a computer program for pitch frequency detection based upon a learned value |
-
2009
- 2009-09-18 JP JP2009217170A patent/JP2011065041A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109524023A (zh) * | 2016-01-22 | 2019-03-26 | 大连民族大学 | 一种对基频估计实验验证的方法 |
US11004463B2 (en) | 2017-09-25 | 2021-05-11 | Fujitsu Limited | Speech processing method, apparatus, and non-transitory computer-readable storage medium for storing a computer program for pitch frequency detection based upon a learned value |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1936606B1 (en) | Multi-stage speech recognition | |
JP6024180B2 (ja) | 音声認識装置、音声認識方法、及びプログラム | |
JP5218052B2 (ja) | 言語モデル生成システム、言語モデル生成方法および言語モデル生成用プログラム | |
JP5200712B2 (ja) | 音声認識装置、音声認識方法及びコンピュータプログラム | |
EP1355296B1 (en) | Keyword detection in a speech signal | |
Clarisse et al. | An Auditory Model Based Transcriber of Singing Sequences. | |
JPH0968994A (ja) | パターンマッチングによる単語音声認識方法及びその方法を実施する装置 | |
WO2007046267A1 (ja) | 音声判別システム、音声判別方法及び音声判別用プログラム | |
JP5326169B2 (ja) | 音声データ検索システム及び音声データ検索方法 | |
JP6699748B2 (ja) | 対話装置、対話方法及び対話用コンピュータプログラム | |
JP4205824B2 (ja) | 歌唱評価装置およびカラオケ装置 | |
JP6690484B2 (ja) | 音声認識用コンピュータプログラム、音声認識装置及び音声認識方法 | |
JP5183120B2 (ja) | 平方根ディスカウンティングを使用した統計的言語による音声認識 | |
US20140200889A1 (en) | System and Method for Speech Recognition Using Pitch-Synchronous Spectral Parameters | |
JP5549166B2 (ja) | 音声処理装置、プログラム | |
JP5451982B2 (ja) | 支援装置、プログラムおよび支援方法 | |
JPH11184491A (ja) | 音声認識装置 | |
JP2011065041A (ja) | 基本周波数推定装置、採譜装置、及びプログラム | |
JP2007233148A (ja) | 発話区間検出装置及び発話区間検出プログラム | |
JP5532880B2 (ja) | 音声認識装置 | |
JP2011065043A (ja) | 音高推定装置、プログラム | |
JP2008176155A (ja) | 音声認識装置およびその発声判定方法、発声判定プログラムならびにその記憶媒体 | |
JP3578587B2 (ja) | 音声認識装置および音声認識方法 | |
JP2007171289A (ja) | 曲検出装置 | |
JP2011065042A (ja) | 音声処理装置、プログラム |