(57)【要約】【課題】テンプレートを用いることなく且つ簡易な処理で任意の楽器音を抽出可能な音声信号処理方法、音声信号処理装置およびプログラムを提供する。【解決手段】本発明のバスドラム加工部２１は、楽曲に含まれるバスドラムの発音位置を示す発音位置情報を取得する発音位置情報取得部２１ａと、取得した発音位置情報に基づき、バスドラムの発音区間を検索するための検索区間を特定する検索区間特定部２１ｂと、検索区間の所定位置における振幅値を抽出する抽出部２１ｄと、検索区間に含まれる音声データから、抽出部２１ｄで抽出された振幅値を減算する第１加工部２１ｅと、を備えた。【選択図】図２
2015125239.tif 000002
【特許請求の範囲】
【請求項１】
楽曲に含まれる任意の楽器の発音位置を示す発音位置情報を取得する発音位置情報取得部と、
前記発音位置情報に基づき、前記任意の楽器音の発音区間を検索するための検索区間を特定する検索区間特定部と、
前記検索区間の所定位置における振幅値を抽出する抽出部と、
前記検索区間に含まれる音声データを、前記抽出部で抽出された前記振幅値に基づいて加工する第１加工部と、を備えたことを特徴とする音声信号処理装置。
【請求項２】
前記抽出部は、前記検索区間の先頭のフレームまたは最後のフレームの振幅値を抽出し、
前記第１加工部は、前記検索区間に含まれる全フレームを、前記抽出部で抽出された前記振幅値に基づいて加工することを特徴とする請求項１に記載の音声信号処理装置。
【請求項３】
前記第１加工部は、前記検索区間に含まれる全フレームから、前記抽出部で抽出された前記振幅値を減算することを特徴とする請求項２に記載の音声信号処理装置。
【請求項４】
前記抽出部は、前記検索区間の先頭から所定数（但し、２以上）のフレーム、または前記検索区間の最後から所定数（但し、２以上）のフレームを抽出し、
前記第１加工部は、前記検索区間に含まれる全フレームを、前記抽出部で抽出された前記所定数のフレームの平均振幅値に基づいて加工することを特徴とする請求項１に記載の音声信号処理装置。
【請求項５】
前記第１加工部は、前記検索区間に含まれる全フレームから、前記抽出部で抽出された前記所定数のフレームの平均振幅値を減算することを特徴とする請求項４に記載の音声信号処理装置。
【請求項６】
前記検索区間における前記任意の楽器音の鳴り終わりを判定する鳴り終わり判定部をさらに備え、
前記第１加工部は、前記鳴り終わり判定部により鳴り終わりが判定されなかった場合、加工を行うことを特徴とする請求項１ないし５のいずれか１項に記載の音声信号処理装置。
【請求項７】
前記鳴り終わり判定部は、前記任意の楽器音に対応する特定の周波数帯域について、鳴り終わりを判定することを特徴とする請求項６に記載の音声信号処理装置。
【請求項８】
前記鳴り終わり判定部により鳴り終わりが判定された場合、前記検索区間における当該鳴り終わり以降の振幅値をゼロにする第２加工部をさらに備えたことを特徴とする請求項６または７に記載の音声信号処理装置。
【請求項９】
前記鳴り終わり判定部は、前記検索区間において、複数フレーム分の移動平均値が、前記発音位置情報に基づくアタック位置付近の平均値である変動閾値よりも連続して下回った時点を鳴り終わりとして判定することを特徴とする請求項６ないし８のいずれか１項に記載の音声信号処理装置。
【請求項１０】
前記鳴り終わり判定部は、前記検索区間において、複数フレーム分の移動平均値が前記変動閾値より小さくなる前に、別の音が発音された場合、当該別の音が発音された時点を鳴り終わりとして判定することを特徴とする請求項９に記載の音声信号処理装置。
【請求項１１】
楽曲に含まれる任意の楽器の発音位置を示す発音位置情報を取得する発音位置情報取得ステップと、
前記発音位置情報に基づき、前記任意の楽器音の発音区間を検索するための検索区間を特定する検索区間特定ステップと、
前記検索区間の所定位置における振幅値を抽出する抽出ステップと、
前記検索区間に含まれる音声データを、前記抽出ステップで抽出された前記振幅値に基づいて加工する第１加工ステップと、を実行することを特徴とする音声信号処理装置の制御方法。
【請求項１２】
コンピューターに、請求項１１に記載の音声信号処理装置の制御方法における各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽曲中の楽器音を抽出する音声信号処理装置、音声信号処理装置の制御方法、プログラムに関する。
【背景技術】
【０００２】
従来、楽曲中の各楽器の音を抽出する方法として、アイソレータ（バンド分割フィルタを用いたイコライザの一種）を用いた方法が知られている。ところが、アイソレータを用いて中域のレベルを下げると、打楽器の場合、バスドラム、スネアドラム、ハイハットの音が同時に削れてしまう。つまり、スネアドラムだけの減衰、またはハイハットだけの減衰など、楽器別の制御はできない。
【０００３】
これに対し、楽曲中の楽器音を抽出する技術として、特許文献１ないし特許文献３が知られている。特許文献１は、スペクトログラムとテンプレート（プロファイルスペクトル）を照合することにより、バスドラムやハイハットなどの打楽器音と、非打楽器音を分離・抽出する。また、特許文献２は、テンプレートや反復推定を用いることなく、スペクトログラムの周波数と時間方向の成分の異方性に着目して、打楽器音と非打楽器音を分離・抽出する。また、特許文献３は、混合音から楽器音を分離するものであり、特定の楽器音を模擬した特定音を出力する音源モジュールの音をテンプレートとして分離音を生成する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００７−５３６５８７号公報
【特許文献２】特開２００９−２１０８８８号公報
【特許文献３】特開２０１１−２０９５９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところが、特許文献１および特許文献３の技術は、事前情報としてテンプレートが必要となる。また、特許文献２の技術は、打楽器音と非楽器音とを分離することができるものの、任意の楽器音を抽出できるものではない。
【０００６】
本発明は、上記の問題点に鑑み、テンプレートを用いることなく且つ簡易な処理で任意の楽器音を抽出可能な音声信号処理方法、音声信号処理装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の音声信号処理装置は、楽曲に含まれる任意の楽器の発音位置を示す発音位置情報を取得する発音位置情報取得部と、発音位置情報に基づき、任意の楽器音の発音区間を検索するための検索区間を特定する検索区間特定部と、検索区間の所定位置における振幅値を抽出する抽出部と、検索区間に含まれる音声データを、抽出部で抽出された振幅値に基づいて加工する第１加工部と、を備えたことを特徴とする。
【０００８】
上記の音声信号処理装置において、抽出部は、検索区間の先頭のフレームまたは最後のフレームの振幅値を抽出し、第１加工部は、検索区間に含まれる全フレームを、抽出部で抽出された振幅値に基づいて加工することを特徴とする。
【０００９】
上記の音声信号処理装置において、第１加工部は、検索区間に含まれる全フレームから、抽出部で抽出された振幅値を減算することを特徴とする。
【００１０】
上記の音声信号処理装置において、抽出部は、検索区間の先頭から所定数（但し、２以上）のフレーム、または検索区間の最後から所定数（但し、２以上）のフレームを抽出し、第１加工部は、検索区間に含まれる全フレームを、抽出部で抽出された所定数のフレームの平均振幅値に基づいて加工することを特徴とする。
【００１１】
上記の音声信号処理装置において、第１加工部は、検索区間に含まれる全フレームから、抽出部で抽出された所定数のフレームの平均振幅値を減算することを特徴とする。
【００１２】
上記の音声信号処理装置において、検索区間における任意の楽器音の鳴り終わりを判定する鳴り終わり判定部をさらに備え、第１加工部は、鳴り終わり判定部により鳴り終わりが判定されなかった場合、加工を行うことを特徴とする。
【００１３】
上記の音声信号処理装置において、鳴り終わり判定部は、任意の楽器音に対応する特定の周波数帯域について、鳴り終わりを判定することを特徴とする。
【００１４】
上記の音声信号処理装置において、鳴り終わり判定部により鳴り終わりが判定された場合、検索区間における当該鳴り終わり以降の振幅値をゼロにする第２加工部をさらに備えたことを特徴とする。
【００１５】
上記の音声信号処理装置において、鳴り終わり判定部は、検索区間において、複数フレーム分の移動平均値が、発音位置情報に基づくアタック位置付近の平均値である変動閾値よりも連続して下回った時点を鳴り終わりとして判定することを特徴とする。
【００１６】
上記の音声信号処理装置において、鳴り終わり判定部は、検索区間において、複数フレーム分の移動平均値が変動閾値より小さくなる前に、別の音が発音された場合、当該別の音が発音された時点を鳴り終わりとして判定することを特徴とする。
【００１７】
本発明の音声信号処理装置の制御方法は、楽曲に含まれる任意の楽器の発音位置を示す発音位置情報を取得する発音位置情報取得ステップと、発音位置情報に基づき、任意の楽器音の発音区間を検索するための検索区間を特定する検索区間特定ステップと、検索区間の所定位置における振幅値を抽出する抽出ステップと、検索区間に含まれる音声データを、抽出ステップで抽出された振幅値に基づいて加工する第１加工ステップと、を実行することを特徴とする。
【００１８】
本発明のプログラムは、コンピューターに、上記の音声信号処理装置の制御方法における各ステップを実行させることを特徴とする。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に係る音声信号処理装置の機能構成を示すブロック図である。
【図２】詳細判別用音加工部の詳細ブロック図である。
【図３】ベロシティ特定部の詳細ブロック図である。
【図４】打楽器音分離部の詳細ブロック図である。
【図５】継続音除去処理の流れを示すフローチャートである。
【図６】極小点検出処理の流れを示すフローチャートである。
【図７】極大点検出処理の流れを示すフローチャートである。
【図８】極大点の突出度合い判定処理の流れを示すフローチャートである。
【図９】継続カウンタ更新処理の説明図である。
【図１０】継続音範囲検出処理の流れを示すフローチャートである。
【図１１】継続音修正処理の説明図である。
【図１２】バスドラム加工処理（鳴り終わり判定）の説明図である。
【図１３】バスドラム加工処理（ベース音減算）の説明図である。
【図１４】スネアドラム加工処理の説明図である。
【図１５】ハイハット加工処理の説明図である。
【図１６】詳細判別処理の流れを示すフローチャートである。
【図１７】詳細判別処理の説明図である。
【図１８】グルーピング閾値の説明図である。
【図１９】ベロシティ特定処理の流れを示すフローチャートである。
【図２０】ベロシティ検出処理の説明図である。
【図２１】ベロシティ算出処理の説明図である。
【図２２】打楽器音分離処理の流れを示すフローチャートである。
【図２３】複合ハイハット分離処理およびバスドラム分離処理の説明図である。
【図２４】同期減算処理の説明図である。
【図２５】同期加算処理の説明図である。
【図２６】再アタック検出処理までの流れを示す簡易フローチャートおよびその説明図である。
【図２７】鳴り終わり修正処理の説明図である。
【図２８】打楽器音の調節に関する説明図である。
【図２９】打楽器音の譜面表示に関する説明図である。
【図３０】バスドラム加工処理の補足説明図である。
【図３１】バスドラム加工処理の応用例に関する説明図である。
【発明を実施するための形態】
【００２０】
以下、添付の図面を参照し、本発明の一実施形態に係る音声信号処理装置、音声信号処理装置の制御方法、プログラムについて説明する。本発明は、楽曲中の特定の楽器のスペクトログラム形状を推定し、その楽器音を分離（抽出）するものである。そこで、本実施形態では、３種類の打楽器（バスドラム、スネアドラム、ハイハット）のスペクトログラム形状を推定し、それら３つの打楽器音を分離する場合について例示する。
【００２１】
図１は、本発明の一実施形態に係る音声信号処理装置１の機能構成を示すブロック図である。音声信号処理装置１は、主な機能構成として、ＦＦＴ（Fast  Fourier  Transform）部１１、継続音除去部１２、帯域分割部１３、詳細判別用音加工部１４、詳細判別部１５、ベロシティ特定部１６、グルーヴ判定部１７および打楽器音分離部１８を備えている。なお、音声信号処理装置１は、専用装置であっても良いし、ＤＪ機器（ＤＪプレーヤー、ＤＪミキサーなど）、オーディオ機器（ＣＤプレーヤー、ＤＶＤプレーヤーなど）、音声編集機器、パーソナルコンピューター、タブレット端末、エフェクター、録音機器、放送機器など、各種電子機器の一部であっても良い。
【００２２】
ＦＦＴ部１１は、入力音（ｗａｖファイルなど、任意の楽曲の音声信号）を周波数フーリエ変換することにより、解析データ（振幅スペクトル情報）を生成する。ここでは、ＦＦＴサイズを２０４８サンプル、オーバーラップ数を４回としている。この場合、１フレーム（ＦＦＴの処理間隔）は、５１２サンプルとなる。
【００２３】
継続音除去部１２は、周波数フーリエ変換により得られた振幅スペクトル情報に基づいて、所定時間以上継続している継続音成分を抽出し、入力された音声信号から除去する。この処理により、各打楽器のスペクトログラム形状を特定する際の誤差要因となる「打楽器ではない成分」を取り除くことができる。なお、特に図示しないが、継続音除去部１２の処理後、ＩＦＦＴ（Inverse  FFT）を行って一旦時間軸に戻した後、再度ＦＦＴを行っている。具体的には、ＦＦＴサイズを５１２サンプル、１フレームを、１２８サンプルとしている。このように、ＦＦＴサイズを変更してから打楽器音分離部１８にデータ（継続音除去音源）を供給することにより、アタック感を再現することができる。
【００２４】
帯域分割部１３は、各打楽器の周波数帯域を分割する。例えば、バスドラム「４０〜３００Hz」、スネアドラム「６００〜３０００Hz」、ハイハット「６０００Hz〜１６０００Hz」のように、各打楽器に対応する周波数範囲を限定する。
【００２５】
詳細判別用音加工部１４は、外部から発音位置情報を取得し、入力された音声信号に対して、打楽器のみの成分となるような加工を施す。この処理により、後段の詳細判別部１５の判別正答率を上げることができる。なお、発音位置情報とは、楽曲の拍位置解析結果を元に生成される情報であり、楽曲に含まれる各打楽器の発音位置を示す情報（バスドラム、スネアドラム、ハイハットがそれぞれどの位置で鳴っているのかを示す情報）である。本実施形態では、不図示の外部装置において、既に解析済みであるものとする。
【００２６】
詳細判別部１５は、取得した発音位置情報に基づいて、所定の発音区間（本実施形態では、楽曲の８小節）に存在する複数個の周波数スペクトログラムを、同じ打楽器種類且つ同じ鳴り方をしていることを条件としてグルーピングする。この処理により、後述する打楽器音分離部１８における同期処理の精度を上げることができる。
【００２７】
なお、詳細判別部１５は、取得した発音位置情報から、所定の発音区間に、任意のスペクトログラム（第１スペクトログラム）と同じ打楽器の周波数スペクトログラムが複数存在することが分かっている場合、当該複数の周波数スペクトログラムの、任意のスペクトログラムに対する相関値の平均値を算出し、当該平均値を超える相関値の周波数スペクトログラムを、任意のスペクトログラムと同じグループとして分類する（同じ打楽器種類且つ同じ鳴り方をしていると判定する）。詳細については、後述する。
【００２８】
ベロシティ特定部１６は、取得した発音位置情報に基づいて、所定の発音区間における各打楽器のベロシティ情報を特定する。当該処理も、後述する打楽器音分離部１８における同期処理の精度を上げるために行われる。
【００２９】
グルーヴ判定部１７は、ベロシティ特定部１６により特定された所定の発音区間における各打楽器のベロシティ情報と、取得した発音位置情報に基づいて、所定の発音区間における楽曲のグルーヴを判定する。また、その判定結果を、グルーヴ情報として出力する。なお、ベロシティ情報とは、１小節を等分割した単位時間（例えば、１６分音符単位）ごとのベロシティの値を指す。詳細については後述するが、所定の発音区間（８小節）に含まれる全ての小節に共通して、単位時間（単位時間１／１６〜１６／１６）ごとのベロシティが特定される。
【００３０】
打楽器音分離部１８は、上記の継続音除去部１２で得られた継続音除去音源を用い、詳細判別部１５およびベロシティ特定部１６で得られた詳細判別情報（グルーピング情報およびベロシティ情報）に基づいて、各打楽器のスペクトログラム形状を推定し、各打楽器音を分離する。また、スペクトログラム形状の推定結果を、スペクトログラム情報（バスドラム振幅情報、スネアドラム振幅情報、ハイハット振幅情報）として出力する。なお、図面では、バスドラムを「ＢＤ」、スネアドラムを「ＳＤ」、ハイハットを「ＨＨ」と略記する。
【００３１】
次に、図２ないし図４を参照し、詳細判別用音加工部１４、ベロシティ特定部１６および打楽器音分離部１８の詳細な機能構成について説明する。図２は、詳細判別用音加工部１４の詳細ブロック図である。詳細判別用音加工部１４は、バスドラム加工部２１、スネアドラム加工部２２およびハイハット加工部２３を含む。バスドラム加工部２１は、ベース音などを排除し、バスドラム音を抽出するための加工を施す。スネアドラム加工部２２は、人間の声やピアノの伴奏などを排除し、スネアドラム音を抽出するための加工を施す。ハイハット加工部２３は、抽出対象のハイハット音に被っている他のハイハット音などを排除するための加工を施す。
【００３２】
ここで、バスドラム加工部２１について、さらに詳細に説明する。バスドラム加工部２１は、発音位置情報取得部２１ａ、検索区間特定部２１ｂ、鳴り終わり判定部２１ｃ、抽出部２１ｄ、第１加工部２１ｅおよび第２加工部２１ｆを含む。
【００３３】
発音位置情報取得部２１ａは、外部から、任意の楽曲に含まれる任意の楽器（バスドラム、スネアドラム、ハイハット）の発音位置を示す発音位置情報を取得する。検索区間特定部２１ｂは、取得した発音位置情報に基づき、バスドラムの発音区間を検索するための検索区間を特定する。本実施形態では、バスドラムのアタック位置を基準とした前後所定時間から成る区間を検索区間として特定する。
【００３４】
鳴り終わり判定部２１ｃは、特定した検索区間内においてバスドラムの鳴り終わりを判定する。本実施形態では「平均値終了点判定法」と「新規アタック判定法」の２つの判定法を用いて鳴り終わりを判定する。前者は、検索区間において、複数フレーム分の移動平均値が、アタック位置付近の平均値である変動閾値よりも連続して下回った時点を鳴り終わりとして判定する方法である。また、後者は、判定対象となるバスドラムとは別の音が発音された場合、当該別の音が発音された時点を鳴り終わりとして判定する方法である。
【００３５】
抽出部２１ｄは、鳴り終わり判定部２１ｃにより鳴り終わりが判定されなかった場合（鳴り終わらなかった場合）、検索区間の所定位置における振幅値（以下、「振幅データ」とも称する）を抽出する。本実施形態では、検索区間の最後のフレームの振幅値を抽出するものとする。
【００３６】
第１加工部２１ｅは、鳴り終わり判定部２１ｃにより鳴り終わりが判定されなかった場合、検索区間に含まれる音声データを、抽出部２１ｄで抽出された振幅値に基づいて加工する。本実施形態では、検索区間に含まれる全フレームから、抽出部２１ｄで抽出された振幅値を減算する。これにより、バスドラム音とベース音が重複している場合、ベース音を排除し、バスドラム音のみを抽出することができる。一方、第２加工部２１ｆは、鳴り終わり判定部２１ｃにより鳴り終わりが判定された場合（鳴り終わった場合）、検索区間における当該鳴り終わり以降の振幅値をゼロにする。これにより、鳴り終わり以降の不要な音を排除することができる。
【００３７】
なお、詳細については後述するが、スネアドラム加工部２２およびハイハット加工部２３においても、バスドラム加工部２１における発音位置情報取得部２１ａ、検索区間特定部２１ｂ、抽出部２１ｄおよび第１加工部２１ｅと略同様の処理を行う。また、変形例として、スネアドラム加工部２２およびハイハット加工部２３においても、鳴り終わり判定部２１ｃおよび第２加工部２１ｆを含む構成としても良い。つまり、スネアドラムおよびハイハットについて検索区間内における鳴り終わりを判定し、鳴り終わり以降の振幅値をゼロにする処理を行っても良い。
【００３８】
続いて、図３は、ベロシティ特定部１６の詳細ブロック図である。ベロシティ特定部１６は、ベロシティ検出部３１およびベロシティ算出部３２を含む。なお、ベロシティ特定部１６の各部は、打楽器ごとに処理される。
【００３９】
ベロシティ検出部３１は、所定の発音区間内の一部区間を対象として、各打楽器のベロシティを検出する。例えば、バスドラムの場合、楽曲の８小節のうち、取得した発音位置情報から得られる２番目の発音位置から最後の発音位置までの区間を対象とする。また、スネアドラムおよびハイハットの場合、楽曲の８小節のうち、３小節目から６小節目までの区間を対象とする。そして、いずれの打楽器についても、各小節をＮ個（本実施形態では、１６個）に等分割した単位時間ごとに各打楽器のベロシティを検出する。また、ベロシティ検出部３１は、打楽器ごとに定められた周波数範囲の、打楽器ごとに定められた発音継続区間における振幅値の合計を振幅強度としたとき、所定の発音区間の中で最も大きな振幅強度で正規化した値を、対応する打楽器のベロシティとして検出する。
【００４０】
ベロシティ算出部３２は、ベロシティ検出部３１の検出結果を用いて、所定の発音区間内の上記一部区間を除いた区間における各打楽器のベロシティを算出する。具体的には、上記一部区間に含まれる各小節内の、それぞれ１番目から１６番目までの各単位時間の平均値を、各打楽器のベロシティとして算出する。
【００４１】
続いて、図４は、打楽器音分離部１８の詳細ブロック図である。打楽器音分離部１８は、第１特定部４１、第２特定部４２、同期減算部４３、同期加算部４４、再アタック検出部４５、鳴り終わり判定部４６、音源生成部４７および音源分離部４８を含む。なお、打楽器音分離部１８の各部も、打楽器ごとに処理される。
【００４２】
第１特定部４１は、継続音除去部１２により、入力された音声信号から継続音成分が除去された後、所定の発音区間から、任意の打楽器の周波数スペクトログラムである第１スペクトログラムを特定する。第２特定部４２は、所定の発音区間から、第１スペクトログラムとの相関値に基づいて、任意の打楽器と同じグループに属する１以上の周波数スペクトログラムの中から、第１スペクトログラムと同一楽器の周波数スペクトログラムである第２スペクトログラムを特定する。ここで、特定候補となる周波数スペクトログラムが複数存在する場合は、第１スペクトログラムと最も相関値が高い周波数スペクトログラムを特定する。
【００４３】
同期減算部４３は、特定された第１スペクトログラムと第２スペクトログラムの共通成分を抽出する。このとき、同期減算部４３は、ベロシティ特定部１６により特定された打楽器ごとのベロシティに基づいて、第１スペクトログラムと第２スペクトログラムの振幅値を揃えた後、共通成分を抽出する。同期加算部４４は、所定の発音区間に、任意の打楽器の周波数スペクトログラムがＬ個（但し、Ｌは、Ｌ≧２となる整数）存在する場合、同期減算部４３により抽出されたＬ個の共通成分を平均化して、共通スペクトログラムを算出する。
【００４４】
再アタック検出部４５は、同期減算部４３および同期加算部４４による同期処理結果を用いてアタック検出を行う。この処理により、バスドラムやハイハットに対しスネアドラムのみ前倒しで発音されている場合も、正確にアタック位置を検出することができる。鳴り終わり判定部４６は、任意の打楽器の鳴り終わりを判定し、任意の打楽器と同じ周波数帯域の他の成分を除去する。この処理より、同期処理によって除去できなかった打楽器以外の成分を除去することができ、打楽器らしい音に加工することができる。
【００４５】
音源生成部４７は、所定の発音区間に存在する、各打楽器のＬ個の周波数スペクトログラムを、同期加算部４４により算出された共通スペクトログラムに置き換え、且つ再アタック検出部４５および鳴り終わり判定部４６による処理結果に基づいて加工された同期処理済み音源を生成する。また、音源分離部４８は、入力音（任意の楽曲）から、音源生成部４７により生成された各打楽器の同期処理済み音源を分離する。なお、打楽器音分離部１８によって実行される楽器音分離処理は、別の打楽器と同時に発音されているハイハット（以下、「複合ハイハット」と称する）、バスドラム、スネアドラム、単独で発音されているハイハット（以下、「単独ハイハット」と称する）の順に実行される。
【００４６】
次に、図５以降を参照し、上記の各部について具定例を挙げてさらに説明する。まず、図５〜図１１を参照し、継続音除去部１２による継続音除去処理について説明する。継続音除去処理は、上記のとおり「打楽器ではない成分」を取り除く処理である。図５は、音声信号処理装置１による継続音除去処理の流れを示すフローチャートである。
【００４７】
継続音除去処理では、ＦＦＴにより得られた振幅スペクトル情報から極小点および極大点を検出し（Ｓ１１，Ｓ１２）、これらの結果から極大点の突出度合いを判定する（Ｓ１３）。また、その判定結果に基づいて継続カウンタの更新を行い（Ｓ１４）、継続音を確定する（Ｓ１５）。また、確定した継続音の中から継続音範囲を検出し（Ｓ１６）、検出された継続音範囲に基づいて、誤検出された継続音を修正する（Ｓ１７）。その後、原音から継続音の振幅を除去し（Ｓ１８）、継続音除去処理を終了する。
【００４８】
図６は、極小点検出処理（図５のＳ１１参照）の流れを示すフローチャートである。極小点検出処理では、周波数ｂｉｎ「０」を開始値とし、ＦＦＴサイズの半分を対象として処理を開始する（Ｓ２１）。まず、対象となる周波数ｂｉｎ（同図、符号Ｐ１参照）の振幅値を中心として、両隣のｂｉｎの振幅値との傾きを求める（Ｓ２２）。ここで、対象となる周波数ｂｉｎが極小である場合（両隣のｂｉｎに対する傾きが所定値以上である場合）は（Ｓ２３：Ｙｅｓ）、極小点の周波数ｂｉｎとして記録する（Ｓ２４）。また、対象となる周波数ｂｉｎが極小でない場合は（Ｓ２３：Ｎｏ）、Ｓ２４を省略する。その後、対象となる周波数ｂｉｎを順次インクリメントしながら、Ｓ２１〜Ｓ２４を繰り返す（Ｓ２５）。
【００４９】
図７は、極大点検出処理（図５のＳ１２参照）の流れを示すフローチャートである。極大点検出処理でも、周波数ｂｉｎ「０」を開始値とし、ＦＦＴサイズの半分を対象として処理を開始する（Ｓ３１）。まず、対象となる周波数ｂｉｎ（同図、符号Ｐ２参照）の振幅値を中心として、両隣のｂｉｎの振幅値との傾きを求める（Ｓ３２）。ここで、対象となる周波数ｂｉｎが極大である場合（両隣のｂｉｎに対する傾きが所定値以下である場合）は（Ｓ３３：Ｙｅｓ）、極大点の周波数ｂｉｎとして記録する（Ｓ３４）。また、対象となる周波数ｂｉｎが極大でない場合は（Ｓ３３：Ｎｏ）、Ｓ３４を省略する。その後、対象となる周波数ｂｉｎを順次インクリメントしながら、Ｓ３１〜Ｓ３４を繰り返す（Ｓ３５）。
【００５０】
図８は、極大点の突出度合い判定処理（図５のＳ１３参照）の流れを示すフローチャートである。この処理は、ノイズ成分による極大点を排除するために行われる。例えば、ホワイトノイズなどが入力されると、高域で無数の小さな極大点が発生することがある。そのため、極大点の突出度合い判定処理により、そのようなノイズ成分と、検出したい声や楽器などの極大点を区別し、周りの周波数の振幅値よりもある程度突出した極大点を残す。
【００５１】
突出度合い判定処理でも、周波数ｂｉｎ「０」を開始値とし、ＦＦＴサイズの半分を対象として処理を開始する（Ｓ４１）。まず、対象となる極大点の周波数ｂｉｎ（同図、符号Ｐ５参照）について、両隣の極小点の振幅値（極小値，同図、符号Ｐ３およびＰ４）で線形補完した値（補完値，同図、符号Ｌ１１参照）を求める（Ｓ４２）。線形補完した値が大きい場合（補完値が所定値以上である場合）は（Ｓ４３：Ｙｅｓ）、極大点の周波数ｂｉｎとして記録する（Ｓ４４）。また、線形補完した値が小さい場合は（Ｓ４４：Ｎｏ）、Ｓ４４を省略する。その後、対象となる周波数ｂｉｎを順次インクリメントしながら、Ｓ４１〜Ｓ４４を繰り返す（Ｓ４５）。
【００５２】
図９は、継続カウンタ更新処理の説明図である。この処理では、突出度合い判定処理により記録された極大点に基づいて、どの位の時間継続している音であるかを示すカウンタを更新する。具体的には、前回のフレームで極大点が同じ周波数ｂｉｎに存在していた、または両隣の周波数ｂｉｎに存在していた場合、継続中と判定し、カウンタをインクリメントする。同図の例の場合、矢印で示される０フレーム目から４フレーム目までの極大点は、継続している音としてカウントされ、５フレーム継続した音であると判定する。また、６フレーム目に存在する極大点（同図、符号Ｐ６参照）については、極大点の継続が途切れたため、新しい音としてカウントする。
【００５３】
図１０は、継続音範囲検出処理（図５のＳ１６参照）の流れを示すフローチャートである。この処理は、確定した継続音のうち、各フレームで最も周波数が高い周波数ｂｉｎを集計し、８小節内の中央値に基づいて継続音範囲を検出する処理である。
【００５４】
継続音範囲検出処理では、フレーム「０」を開始値とし、８小節分のフレームを対象として処理を開始する（Ｓ５１）。まず、その中で最も周波数が高い周波数ｂｉｎを集計し（Ｓ５２）、予め定められた検索範囲（例えば、０Hz〜４０００Hz）を逸脱しているか否かを判別する（Ｓ５３）。検索範囲を逸脱している場合は（Ｓ５３：Ｙｅｓ）、逸脱回数を記録する（Ｓ５４）。その後、対象となる周波数フレームを順次インクリメントしながら、Ｓ５１〜Ｓ５４を繰り返す（Ｓ５５）。その後、集計した最も高い周波数の中央値を算出し、０Hz〜中央値までを継続音範囲として確定する（Ｓ５６）。さらに、検索範囲を逸脱した回数（時間）が８小節中の半分以上の場合、音が詰まっていることを意味するため、サビフラグを立てる（Ｓ５７）。当該サビフラグは、後述する打楽器音分離処理の鳴り終わり判定などに用いる。
【００５５】
図１１は、継続音修正処理（図５のＳ１７参照）の説明図である。この処理は、継続音範囲の２倍以上に存在する継続音は、オープンハイハットなどの「打楽器ではあるが、継続している音」の誤検出であるとの想定の下、継続音を修正する。例えば、同図（ａ）に示すように、判定した継続音範囲の２倍の周波数を超える継続音成分を誤検出とみなし、同図（ｂ）に示すように、誤検出性分を除去する。
【００５６】
次に、図１２〜図１５を参照し、詳細判別用音加工部１４による詳細判別用音加工処理について説明する。詳細判別用音加工処理は、上記のとおり、詳細判別処理の前処理として、打楽器のみの成分を生成する処理である。図１２および図１３は、バスドラム加工処理の説明図である。なお、両図において、符号ｔａは、バスドラムのアタック位置（発音位置）、符号ｔｅは、バスドラムの鳴り終わり位置、符号ｔ１は、打楽器の鳴り終わりを検索するための検索区間の開始位置、符号ｔ２は、検索区間の終了位置を示している。本実施形態において、検索区間の開始点および終了点は、各打楽器のアタック位置から予め定められた所定時間前および所定時間後（例えば、数十ms〜数百ms前後）の時点として規定している。なお、この前後所定時間は、打楽器ごとに異なる時間であっても良い。
【００５７】
バスドラムの詳細判別処理は、低域のみで判別を行うため、低域の振幅情報に対して加工を施す。また、バスドラムの場合は、ベースの成分を極力取り除きたいため、バスドラムの鳴り終わりを反映した加工を行う。図１２（ａ）は、平均値終了判定法の説明図である。この方法では、比較的時定数の大きいＬＰＦ（Low-pass  filter）からアタック位置付近の低域の音量の平均値を算出し、変動閾値とする。そして、複数フレーム（例えば、４フレーム）分の移動平均を取り、変動閾値よりも移動平均値の方が連続して下回った時点（同図、ｔｅ参照）を、鳴り終わりとして判定する。なお、複数フレーム分の移動平均を取るのは、ＦＦＴサイズが小さいと、周波数分解能が低く、低域の波形が乱れるためである（ＦＦＴサイズを大きくすることで、その乱れを低減できる）。また、変動閾値を用いて判定を行うのは、ベース音と誤検出することなく、バスドラム低域区間を正確に検出するためである。さらに、連続して下回ったことを条件とするのは、複数フレーム分の平均値を取ることで波形乱れを抑制しても、波形乱れを抑制しきれない場合、一瞬閾値を下回ることがあるので、そのような場合の誤判定を避けるためである。
【００５８】
一方、同図（ｂ）は、新規アタック判定法の説明図である。この方法では、新しい何らかの音が発生したとき（同図、ｔｅ参照）、鳴り終わりと判定する。例えば、同図に示すように、バスドラムが鳴り終わる前に次のバスドラムが鳴ってしまった場合などが考えられる。
【００５９】
図１２（ａ）の平均値終了判定法、または同図（ｂ）の新規アタック判定法により鳴り終わりが判定された場合は、同図（ｃ）に示すように、鳴り終わり以降（ｔｅ〜ｔ２の範囲）の振幅を「０」にする。また、図１３（ａ）に示すように、検索区間（ｔ１〜ｔ２の範囲）において、平均値終了判定法および新規アタック判定法のいずれの方法でも鳴り終わりが判定されなかった場合は、同図（ｂ）に示すように、検索区間の最後のフレームの振幅データ（同図、符号５１ａ参照）を検索区間に含まれる音声データから減算する。同図（ｃ）は、その減算結果を示したものである。このように、ベース音が減衰していない場合、検索区間の最後のフレームの振幅データを減算することにより、ベース音の影響をなくすことができる。
【００６０】
なお、減算する区間（第１加工部２１ｅの対象となる区間）は、検索区間のみに限らず、検索区間に前後所定時間を加えた区間としても良い。また、検索区間に関係なく、アタック位置を基準として減算する区間を規定しても良い。また、鳴り終わりが判定された場合の減算する区間（第２加工部２１ｆの対象となる区間）も、検索区間の最後までではなく、検索区間の終了後も含めた区間としても良い。
【００６１】
図１４は、スネアドラム加工処理の説明図である。同図において、符号ｔａは、スネアドラムのアタック位置、符号ｔ１および符号ｔ２は、検索区間の開始位置および終了位置を示している。また、符号ｔ３は、検索区間の終了位置から所定時間前の時点（スネアドラムのアタック位置から所定時間後の時点）であって、抽出部２１ｄ（図２参照）の抽出対象位置を示している。
【００６２】
スネアドラムの帯域では、主に声やピアノなどの伴奏が詳細判別の判別結果に影響を及ぼす。そこで、検索区間の終了位置から所定時間前（同図、ｔ３参照）の振幅データ（同図、符号５２参照）、すなわちスネアドラムのアタック位置（同図、ｔａ参照）から数十ms進んだ時間（同図、ｔ３参照）の振幅データを減算することで、これらの影響を軽減する。つまり、同図（ａ）に示すように、スネアドラムと重複して、声などのスネアドラム以外の音が鳴っている場合、同図（ｂ）に示すように、時間ｔ３のフレームの振幅データを検索区間内の全フレームから減算する。同図（ｃ）は、その減算結果を示したものである。このように、スネアドラム以外の音が同じ音程で鳴り続けている場合、アタック位置から所定時間経過後の振幅データを減算することにより、その影響を軽減できる。
【００６３】
図１５は、ハイハット加工処理の説明図である。同図において、符号ｔａは、ハイハットのアタック位置、符号ｔ１および符号ｔ２は、検索区間の開始位置および終了位置を示している。また、符号ｔ４は、検索区間の開始位置から所定時間後の時点（ハイハットのアタック位置から所定時間前の時点）であって、抽出部２１ｄ（図２参照）の抽出対象位置を示している。ハイハットの場合、前のハイハットが鳴り終わる前に次のハイハットが鳴るケースが多い。しかも、バスドラムやスネアドラムと異なり、別の種類のハイハットがなる可能性が高い。このため、発音が強制停止されて新しい音が発音されるのではなく、前のハイハット音が新しく発生したハイハット音に覆いかぶってしまい、詳細判別に悪影響を及ぼす。これを解消すべく、過去の振幅を減算する。つまり、同図（ａ）に示すように、オープンハイハットが鳴り終わる前にハイハットが鳴っている場合、同図（ｂ）に示すように、ハイハットのアタック位置（同図、ｔａ参照）から数十ms溯った時間（同図、ｔ４参照）の振幅データ（同図、符号５３参照）を全フレームから減算する。同図（ｃ）は、その減算結果を示したものである。このように、オープンハイハットが鳴り終わる前にハイハットが鳴っている場合でも、ハイハットのアタックから所定時間前の振幅データを減算することにより、オープンハイハットの影響を軽減できる。
【００６４】
なお、図１４に示したスネアドラム加工処理と、図１５に示したハイハット加工処理では、必ずしも検索区間を特定する必要はない。つまり、スネアドラム加工部２２およびハイハット加工部２３においては、バスドラム加工部２１における検索区間特定部２１ｂを省略した構成としても良い。この場合、減算する区間は、アタック位置から前後所定時間として規定すれば良い。
【００６５】
次に、図１６〜図１８を参照し、詳細判別部１５による詳細判別処理について説明する。詳細判別処理は、上記のとおり、打楽器音分離処理において必要となる「同じ種類（ハイハットとオープンハイハットは異なる種類とする）、または同じ打楽器の重ね合わせの箇所」の情報を得るために行う。具体的には、同じ打楽器種類且つ同じ鳴り方をしていることを条件としてグループ分けを行う。
【００６６】
図１６は、音声信号処理装置１による詳細判別処理の流れを示すフローチャートである。詳細判別処理では、打楽器ごとに判別を行う（Ｓ６１）・また、８小節内のアタック「０」を初期値とし、全アタックを対象として処理を行う（Ｓ６２）。まず、検出したアタックが、対象の打楽器であるか否かを判別し（Ｓ６３）、対象の打楽器である場合は（Ｓ６３：Ｙｅｓ）、同種の打楽器について相関値を算出する（Ｓ６４）。その結果、相関値が閾値を超えるアタックは同じグループとみなす（Ｓ６５）。その後、対象となるアタックを順次インクリメントしながら、Ｓ６２〜Ｓ６５を繰り返す（Ｓ６６）。さらに、Ｓ６１〜Ｓ６６を、各打楽器について繰り返す（Ｓ６７）。
【００６７】
図１７は、詳細判別処理の説明図である。同図に示すように、同じ打楽器種類且つ同じ鳴り方をしていることを調べる特徴量として、同じ打楽器同士の周波数スペクトログラムの相関値を用いる。ここでは、発音位置情報に基づいて、元々同じ打楽器同士で照合するため、基本的には高い相関値が得られるはずである。例えば、８小節の中に、同図（ａ）に示すように複数の周波数スペクトログラムが含まれている場合、相関をとる元となる任意の周波数スペクトログラムを決定する（同図、符号５２参照，同図の例ではハイハット）。続いて、同図（ｂ）に示すように、８小節の中に含まれるハイハットの周波数スペクトログラム全てについて、任意の周波数スペクトログラムとの相関値を求める。その結果、同図（ｃ）に示すように、相関値が低いハイハット（オープンハイハット）を除く３つの周波数スペクトログラムが、任意の周波数スペクトログラムと同じグループ（同図の例ではＨＨグループ１）と判定する。グループ分けに用いられる閾値（グルーピング閾値）については、後述する。その後、グループ番号が付いていない打楽器の周波数スペクトログラムについて、同じ処理を繰り返し、全ての周波数スペクトログラムにグループ番号がついたところで、詳細判別処理を終了する。当該グループ番号は、グルーピング情報として打楽器音分離部１８に出力される。
【００６８】
図１８は、グルーピング閾値の説明図である。同じ鳴り方をしていることを判定するグルーピング閾値は、計算式「閾値＝１−（相関値の最大値−相関値の平均値）×０．５」によって求める。つまり、相関値の最大値と相関値の平均値の中央値がグルーピング閾値となる。同図の例は、任意の打楽器について、８小節の中に９個の周波数スペクトログラムが存在し、その中の１の元スペクトログラムとの相関値の算出結果を示したものである。このように、グルーピング閾値を変動閾値としたことで、楽曲によらず、より正確なグループ分けを行うことができる。なお、グルーピング閾値は、打楽器ごとに決定する。
【００６９】
次に、図１９〜図２１を参照し、ベロシティ特定部１６によるベロシティ特定処理について説明する。ベロシティ特定処理は、後述する打楽器音分離処理において、振幅の割合が異なる周波数スペクトログラム間で同期処理を行うと、振幅の小さい方に周波数スペクトログラムが収束してしまうため、振幅同士の強度の割合（ベロシティ情報）を得るために行う。
【００７０】
図１９は、音声信号処理装置１によるベロシティ特定処理の流れを示すフローチャートである。ベロシティ特定処理では、打楽器ごとに判別を行う（Ｓ７１）。まず、対象の打楽器について、ベロシティの検出範囲を算出する（Ｓ７２）。その検出範囲内で振幅強度を検出し（Ｓ７３）、振幅強度をベロシティへ変換する（Ｓ７４，ベロシティ検出部３１）。その後、Ｓ７４で得られた情報に基づいて、検出範囲外のベロシティを算出する（Ｓ７５，ベロシティ算出部３２）。以降、Ｓ７１〜Ｓ７５を、各打楽器について繰り返す（Ｓ７６）。
【００７１】
図２０は、ベロシティ検出処理の説明図である。同図に示すように、Ｓ７２で算出する検出範囲について、スネアドラムとハイハットは、３小節目〜６小節目までと算出される。これは、８小節の最初にシンバルなどが入ったり、８小節の最後にフィルインなどの不規則なリズムパターンや効果音が入ることが多いためである。また、バスドラムは、８小節内における２つ目のアタック位置〜最後のアタック位置までと算出される。これは、バスドラムの場合、１つ目のアタックだけ極端に振幅が大きい場合があるためである。
【００７２】
また、Ｓ７３で検出する振幅強度は、各打楽器のアタック位置からの対象区間内で、所定の周波数範囲に存在する振幅値の合計を振幅強度として検出する。対象区間は、打楽器ごとに定めている（数十ms〜数百ms）。また、周波数範囲は、帯域分割部１３による帯域分割と同様に、バスドラム「４０〜３００Hz」、スネアドラム「６００〜３０００Hz」、ハイハット「６０００Hz〜１６０００Hz」と定めている。
【００７３】
また、Ｓ７４のベロシティへの変換は、８小節内において、算出した振幅強度の中で一番大きな振幅強度で正規化した０〜１の値をベロシティとする。なお、この正規化は、詳細判別処理で判別した同じグループ内の（同じ打楽器種類且つ同じ鳴り方をしている）周波数スペクトログラム同士で行う。
【００７４】
図２１は、ベロシティ算出処理の説明図である。Ｓ７５のベロシティの算出は、グループごとに、検出範囲で検出されたベロシティ情報に基づいて、検出範囲外のベロシティを補完するものである。同図の例は、３小節目〜６小節目までを検出範囲とするスネアドラムとハイハットの場合の補完方法を示している。同図に示すように、検出範囲のベロシティは、１６分音符単位で算出する。また、検出範囲に含まれる４小節（３小節目〜６小節目）について、グループごと且つ単位時間（１／１６〜１６／１６）ごとにベロシティを平均化する。また、その平均化した値を、１，２，７，８小節内の各単位時間の補完値として補完する。なお、バスドラムについては特に図示しないが、スネアドラムやハイハットの場合と同様に、検出範囲で検出されたベロシティ情報を小節単位で平均化した値を、検出範囲外のベロシティとして補完する。
【００７５】
次に、図２２〜図２７を参照し、打楽器音分離部１８による打楽器音分離処理について説明する。打楽器音分離処理は、前処理で得られた詳細判別情報（グルーピング情報およびベロシティ情報）を元に同期処理を行い、各打楽器の周波数スペクトログラム情報を生成する処理である。図２２は、打楽器音分離処理の流れを示すフローチャートである。打楽器音分離処理では、まず継続音除去部１２により出力された継続音除去音源から、複合ハイハットを分離する（Ｓ８１）。続いて、複合ハイハット分離後の音源（１）から、バスドラムを分離し（Ｓ８２）、バスドラム分離後の音源（２）から、スネアドラムを分離し（Ｓ８３）、スネアドラム分離後の音源（３）から、単独ハイハットを分離する（Ｓ８４）。さらに、アタック検出できなかった情報を補完し（Ｓ８５）、アタックより前の振幅を除去して、最終的に各打楽器のスペクトログラム情報を生成する。なお、Ｓ８１〜Ｓ８４は、対象となる打楽器種類が異なるだけであり、処理内容としては、各ステップにおいて、図４に示した第１特定部４１〜鳴り終わり判定部４６の処理を行う。
【００７６】
図２３（ａ）は、複合ハイハット分離処理（図２２のＳ８１参照）の説明図である。複合ハイハットは、８小節の中に、バスドラムやスネアドラムなど他の打楽器と同時に発音されているハイハットと、単独で発音されているハイハットが存在することを条件としている。言い換えれば、バスドラムやスネアドラムなど他の打楽器と同時に発音されているハイハットが存在していても、単独で発音されているハイハットが存在しない場合、それを複合ハイハットとは看做さない。これは、単独で発音されているハイハットが存在しない場合、同期減算処理において、バスドラムやスネアドラムを除去できないためである。同図は、「ＢＤと同時に鳴ったＨＨ」として示す２つのハイハット（符号５６）と、「単独で鳴ったＨＨ」として示す２つのハイハットが同じハイハットである、とグルーピングされた例である。符号５６のハイハットと同時に鳴ったバスドラムの振幅成分を損なわないように、ハイハットだけを分離するため、単独で鳴ったハイハットの振幅成分を利用する。したがって、同図の例では、符号５６の２つのハイハットと、単独で鳴った２つのハイハット、合計４つのハイハットを、複合ハイハットとして分離する。
【００７７】
一方、図２３（ｂ）は、バスドラム分離処理（図２２のＳ８２参照）の説明図である。同図に示すように、４つ打ち系の楽曲の場合、バスドラムとスネアドラムが同時に鳴ることがある。この場合、バスドラムは、スネアドラムよりも鳴る回数が多いため、単独で存在する確率が高い。つまり、バスドラムを分離しないでスネアドラムのスペクトグラム形状を推定しようとしても、バスドラムと被っていることが多いため、正しく推定できない可能性が高い。また、バスドラムの音色が残ったままでスネアドラムの音を分離すると、バスドラムの音が目立ってしまうといった問題もある。そのため、バスドラムを先に分離する必要がある。同図の例では、符号５７の４つのバスドラムを分離する。
【００７８】
なお、スネアドラム分離処理（図２２のＳ８３参照）については、特に図示しないが、バスドラムを分離した後に処理を行うため、スペクトグラム形状の推定が容易である。また、単独ハイハット処理（図２２のＳ８４参照）についても、特に図示しないが、スネアドラムと同様に、既に被っている音が分離された後に処理を行うため、スペクトグラム形状の推定が容易である。
【００７９】
続いて、第１特定部４１、第２特定部４２および同期減算部４３による同期減算処理について説明する。打楽器は、繰り返し同じ波形で鳴らされるが、打楽器以外の成分は異なる音程で鳴らされることが多い。このため、共通部分を抽出することで、打楽器のみの成分を残すことができる。まず、第１特定部４１および第２特定部４２による同期減算の相手を特定する方法について説明する。同期減算は、詳細判別処理で同じグループに属すると判別されたもの同士で相関値を算出し、最も相関値が高いもの同士で行う。例えば、図１７（ｂ）のように、８小節の中に、同一種類の周波数スペクトログラムが複数含まれている場合、その中の任意の周波数スペクトログラム（同図、符号５２）を第１スペクトログラムとして特定する。また、第１スペクトログラムと最も相関値が高い周波数スペクトログラム（同図、符号５３）を、同期減算の相手となる第２スペクトログラムとして特定する。なお、第１スペクトログラムおよび第２スペクトログラムの特定は、１のグループ内に含まれる全ての周波数スペクトログラムを対象として行う。つまり、１のグループ内にＬ個の周波数スペクトログラムが含まれる場合、Ｌ回のスペクトログラム特定および同期減算処理を繰り返すことになる。
【００８０】
図２４は、同期減算部４３による同期減算処理の説明図である。同図（ａ）は、同期減算の対象として決定された２つのスネアドラムに対し、ベロシティ情報に基づいて、スペクトグラムの大きさを揃えた後の状態を示している。例えば、同図左側が第１スペクトログラムであり、右側が第２スペクトログラムである。同図（ｂ）に示すように、これら２つのスネアドラムの同期減算を行うと、減算元の第１スペクトログラムに含まれていない成分が、マイナス成分となる。また、スネアドラム成分以外は双方同じ大きさであるため、打楽器以外の成分を抽出できる。さらに、マイナス成分を「０」にすると、減算元の第１スペクトログラムのうち、打楽器以外の成分が残る。その後、同図（ｃ）に示すように、減算元の第１スペクトログラムから、上記の打楽器以外の成分を減算すると、共通成分（本来のスネアドラムのスペクトログラム形状）を求めることができる。
【００８１】
なお、同期減算処理については、図２４に示した方法ではなく、双方のスペクトログラムの振幅を各フレーム、各ｂｉｎで比較して、小さい方を採用する、といった単純な方法でも良い。
【００８２】
続いて、同期加算部４４による同期加算処理について説明する。この処理は、同期減算によって求めたスペクトログラム形状の誤差を減少させるために行われる。図２５は、同期加算処理の説明図である。同図に示すように、同期加算処理では、１のグループ内に存在するＬ個の周波数スペクトログラムの同期減算結果を、同期加算によって平均化する。同図の例では、同期加算の対象が４個の周波数スペクトログラムであったため、４個の周波数スペクトログラムについての同期減算データの合計値を４で除算し、平均値（同期処理済みデータ）を求めている。なお、同期加算処理は、１のグループ内に存在する同期減算結果が１のみの場合、省略される。
【００８３】
続いて、再アタック検出部４５による再アタック検出処理について説明する。この処理は、アタック位置が正確でない場合や、スネアドラムのみ前倒しで発音されている場合などを考慮し、同期処理済みデータに基づいて、アタック検出を行う。図２６は、再アタック検出処理までの流れを示す簡易フローチャートおよびその説明図である。
【００８４】
まず、不図示の拍位置解析アプリケーションより、拍位置の解析結果を取得する（Ｓ９１）。なお、同図のＳ９１およびＳ９２は、発音位置情報（図１参照）の取得前に行われる工程である。つまり、本実施形態における発音位置情報は、拍位置解析アプリケーションの解析結果を元に生成されている。Ｓ９１の説明図に示すように、拍位置の解析結果は、楽曲によってＢＰＭが正確であっても、拍位置が遅れてしまうことがある。そこで、拍位置の遅れを回避するため、全ての拍位置を所定時間（例えば、５０ms）前倒ししておく（Ｓ９２）。その後、第１特定部４１、第２特定部４２、同期減算部４３および同期加算部４４による同期処理を行う（Ｓ９３）。このとき、前倒しによりアタックの取り逃しは回避できるが、元々正しい拍位置が検出されていた楽曲では、前倒しによって余分な音（符号６１，符号６２参照）が入ってしまうことがある。このうち符号６２については、鳴り終わり判定部４６による鳴り終わり判定（図１２参照）で除去するが、符号６１についての除去が別途必要となる。そこで、同期処理後の単体の打楽器に対して改めてアタック検出を行い（Ｓ９４）、図２２のＳ８６にて、アタックよりも前の音を削除する（無音にする）。このように、再アタック検出処理は、単体の打楽器に対して行うため、スネアドラムのみ前倒ししている楽曲についても、正確にそのアタック位置を検出することができる。
【００８５】
なお、拍位置の遅れがない場合、Ｓ９１およびＳ９２の処理を省略可能である。また、発音位置情報に、「スネアドラムのみ前倒しされている」旨の情報が含まれる場合、再アタック検出処理（Ｓ９４）を省略できる。
【００８６】
続いて、鳴り終わり判定部４６による鳴り終わり判定処理について説明する。この処理は、同期処理を行っても打楽器以外の成分を削除しきれない場合があるため、打楽器の大まかな鳴り終わりを判定し、打楽器以外の成分を削除するために行う。具体的には、図１２に示した２つの方法で鳴り終わりを判定する。まず、継続音範囲検出処理（図１０のＳ５７参照）において、サビフラグが立てられている場合、全ての帯域で図１２（ａ）に示した平均値終了判定法による終了点を用いる。これは、サビでは全帯域で継続音が定常的になっている可能性が高いため、余計な音が入りにくい平均値終了判定法を用いることが好ましいためである。また、サビフラグが立てられていない場合は、継続音範囲（継続音が存在する帯域）に対して平均値終了判定法による終了点を用い、継続音範囲以外に対しては、図１２（ｂ）に示した新規アタック判定法による終了点を用いる。これは、平均値終了判定法が、余計な音が入りにくい代わりに実際の音より短めに打ち切られてしまう特徴があり、新規アタック判定法が、余計な音が入ってしなう可能性があるものの、実際の音と同じような終了点を検出できる（打楽器の消え際まで音を出すことができる）特徴があるためである。つまり、余計な音が入ってしまうおそれのある継続音範囲に対してのみ、余計な音が入りにくい平均値終了判定法を使用し、それ以外は新規アタック判定法を使用することで、より適切に打楽器音の終了点を特定することができる。なお、図１２では、バスドラムの鳴り終わり判定について例示したが、スネアドラムやハイハットについても同様に鳴り終わり判定処理を行う。
【００８７】
ところで、鳴り終わり判定処理では、各周波数ｂｉｎについて鳴り終わりを判定するため、鳴り終わり地点が周りの周波数ｂｉｎと比べて極端に短かったり長かったりする場合がある。このような極端な鳴り終わり地点が検出されると、分離される打楽器音が劣化してしまう。このため、鳴り終わり地点を揃える必要がある。
【００８８】
図２７は、鳴り終わり修正処理の説明図である。この処理は、鳴り終わり判定の結果、同図（ａ）に示すように、極端に短い鳴り終わりや極端に長い鳴り終わりが存在する場合、同図（ａ）に示すように、極端に短い／長い鳴り終わりを周りに合わせる処理である。同図（ｃ）は、鳴り終わりを周りに合わせる方法を示している。同図に示すように、全周波数帯域を１／３オクターブ幅に分割し、１／３オクターブ幅単位で鳴り終わり地点を中央値に揃えている。なお、帯域の分割数や各帯域の範囲については、設定変更可能である。
【００８９】
続いて、アタック検出できなかった情報を補完する方法（図２２のＳ８５）について説明する。アタックが非常に弱い打楽器の場合、再アタック検出処理（図２６のＳ９４参照）における、「アタックと看做す閾値」を超えない成分が存在する場合がある。これは、「アタックと看做す閾値」が図１の発音位置情報を検出する処理と、打楽器音分離の処理で異なるためである。そこで、拍位置解析アプリケーションから得られた拍位置が、本当のアタック位置からどの位ずれているのかを示すアタック値の最頻値を算出し、アタック検出できなかった情報を補完する。アタック検出できなかった箇所は、「アタックと看做す閾値」に満たないため、非常に弱いアタックであるが、発音位置情報から、打楽器の発音位置が分かっているため、この部分を補完する。例えば、ハイハットが５種類鳴っている場合を想定する。ハイハット１は５ms、ハイハット２は１０ms、ハイハット３は１０ms、ハイハット４は８ｍs、とアタック値（アタックのずれ時間）が算出されて、ハイハット５がアタックの閾値に満たなかったとする。このとき、５msと８msは１回しか現れていないが、１０msは２回現れているため、ハイハット５のアタック値が不明である場合も、一番多く現れている１０msとする。
【００９０】
次に、分離した各打楽器音の応用例について説明する。図２８は、打楽器音の調節に関する説明図である。同図に示すように、バスドラム、スネアドラム、ハイハット、３音以外の、それぞれの音量を、ロータリー型操作子７１等の操作子を用いて調節しても良い。また、音量ではなく、各打楽器音の分離率（生成率）を調節可能としても良い。この場合、調節可能な分離率の最小値を、０（ゼロ）としても良い。
【００９１】
その他、バスドラム、スネアドラム、ハイハット、３音以外の、それぞれの音に対し、異なるエフェクトをかけても良い。また、そのエフェクト付与率（加工処理量）を、ユーサーが調節可能としても良い。エフェクトとしては、ディレイ、リバーブ、エコーなど、ＤＪ機器のエフェクター等で用いられる各種音響効果を適用可能である。操作方法としては、例えばバスドラムに対応したロータリー型操作子７１を右側に回転させると、バスドラム音の数を徐々に増加させ（ディレイをかけて足していき）、左側に回転させると、バスドラム音の数を徐々に減衰させる、などが考えられる。なお、操作子の形態は、ロータリー型操作子７１に限らず、フェーダー型操作子やタッチパネルなどその種類を問わない。
【００９２】
また、図２９に示すように、分離した打楽器音を譜面表示しても良い。つまり、バスドラム、スネアドラム、ハイハットの判別結果をＭＩＤＩ（Musical  Instrument  Digital  Interface）化し、ドラム譜面７２として用いても良い。この場合、ハイハットについては、オープンハイハットとクローズハイハットに分け、打楽器種類別（グループ別）に表示しても良い。また、スネアドラムに代えて、ハンドクラップを譜面表示しても良い。ハンドクラップは、スネアドラムと同様の処理工程により、スペクトログラム形状の推定・分離が可能である。
【００９３】
また、特に図示しないが、ドラムをＭＩＤＩで鳴らし、音色を切り替えても良い。つまり、各打楽器音のアタックのタイミングで、別の音（アコースティックドラムなど）を出力しても良い。また、分離した打楽器音をサンプリングし、ユーザーが入力したシーケンスにしたがって（若しくはユーザーが指定した出力タイミングで）、各打楽器音を出力しても良い。
【００９４】
以上説明したとおり、本実施形態によれば、打楽器音分離部１８において、同期処理により周波数スペクトログラムを推定するため、テンプレートを用いる必要がない。したがって、楽曲によらず、打楽器ごとのスペクトログラム形状を正確に推定することができる。また、継続音除去部１２において、所定時間以上継続している継続音成分を除去するため、打楽器音分離部１８によるスペクトログラム形状をより正確に推定することができる。
【００９５】
また、詳細判別用音加工部１４では、詳細判別処理の前処理として、打楽器別に不要な音を除去するため、詳細判別部１５の判別正答率を上げることができる。また、詳細判別用音加工部１４では、打楽器のアタック位置から検索区間を特定し、その検索区間の所定位置における振幅値を減算するため、簡易な処理で、不要な音を除去することができる。また、打楽器別に、振幅値の抽出方法が異なるため、目的の打楽器音をより正確に抽出することができる。また、バスドラムの加工においては、鳴り終わりを判定し、鳴り終わった場合は鳴り終わり以降をゼロにするため、不要な音を確実に除去することができる。また、詳細判別部１５では、同じ打楽器種類且つ同じ鳴り方をしていることを条件として周波数スペクトログラムをグルーピングするため、後段の打楽器音分離部１８における同期処理の精度を上げることができる。
【００９６】
また、ベロシティ特定部１６では、各打楽器のベロシティを特定するため、後段のグルーヴ判定部１７において、楽曲のグルーヴを正確且つ容易に判定することができる。また、ベロシティを特定するために、楽曲の８小節のうち、雑音が入りにくい一部の区間（バスドラムは、２つ目のアタック〜最後のアタック、スネアドラムとハイハットは、３小節目〜６小節目）を対象としてベロシティの検出を行うため、正確な検出結果が得られる。さらに、その検出結果をグループごと且つ単位時間ごとに平均化し、その平均化した値を、８小節のうち一部の区間以外の区間に補完するため、各打楽器の８小節における各単位時間のベロシティを正確に特定することができる。また、ベロシティを正確に特定することで、打楽器音分離部１８における同期処理の精度を上げることができる。
【００９７】
なお、以下の変形例・応用例を採用可能である。例えば、上記の実施形態では、外部から発音位置情報を取得する構成としたが、音声信号処理装置１によって楽曲の解析を行い、発音位置情報を生成する構成としても良い。また、ユーザーが発音位置情報を手入力しても良い。
【００９８】
また、上記の実施形態のバスドラム加工部２１は、図３０（ａ）に示すように、検索区間（ｔ１〜ｔ２）の最後のフレームにおける振幅データ５１ａを減算する処理を行ったが、同図（ｂ）に示すように、検索区間（ｔ１〜ｔ２）の最初のフレームにおける振幅データ５１ｂを減算しても良い。前者の場合（上記の実施形態の場合）は、同図（ａ）に示すように、バスドラムと同時に音程が切り替わる場合に効果的である。また、後者の場合は、同図（ｂ）に示すように、バスドラムの発音前からベース音が鳴り続けている場合に効果的である。この場合は、検索区間の最後の振幅データを減算すると、音程が変わっていたり、ベース音自体が減衰している可能性があるためである。また、減算対象となるフレームの位置（抽出部２１ｄにより抽出する位置）を、検索区間の開始位置や終了位置またはアタック位置を基準としてユーザーが設定可能としても良いし、楽曲解析結果に応じてフレームの位置を可変しても良い。
【００９９】
また、バスドラム加工部２１の変形例として、抽出部２１ｄにより、検索区間の先頭から所定数（但し、２以上）のフレーム、または検索区間の最後から所定数（但し、２以上）のフレームを抽出し、第１加工部２１ｅにより、検索区間に含まれる全フレームから、抽出された所定数のフレームの平均振幅値を減算しても良い。この場合、所定数は、オーバーラップ数と同じ数（４回オーバーラップの場合は「４」）が好ましい。
【０１００】
さらに、バスドラム加工部２１における第１加工部２１ｅの変形例として、減算以外の処理を行っても良い。つまり、検索区間に含まれる音声データを、抽出部２１ｄで抽出された振幅値に基づいて加工するものであれば、その演算方法は問わない。また、減算処理を行う場合でも、減算割合を１００％とするのではなく、８０％または５０％など所定の割合で減算しても良い。
【０１０１】
また、詳細判別用音加工部１４の応用例として、打楽器音以外の音を対象として加工処理を行っても良い。例えば、図３１に示すように、ピアノの伴奏に合わせてボーカルが流れている場合、各周波数帯域において、ボーカルの基音が存在しない位置の振幅データ（例えば、符号５４または符号５５に示す振幅データ）を抽出して減算処理を行うことにより、ボーカルのみを抽出することができる。
【０１０２】
また、上記の実施形態のベロシティ特定部１６は、１小節を１６分割した１６分音符単位でベロシティを特定（検出および算出）したが、特定単位（分割数）は任意である。また、楽曲に応じて（発音位置情報をはじめ、楽曲ジャンル、楽曲ＢＰＭ（Beats  Per  Minute）、リズムなどの情報に応じて）、特定単位を可変しても良い。
【０１０３】
また、上記の実施形態の打楽器音分離部１８は、３つの打楽器（バスドラム、スネアドラム、ハイハット）について、スペクトログラム形状の推定および打楽器音の分離を行ったが、これらの打楽器以外の打楽器にも、本実施形態を適用可能である。また、打楽器以外のリズム楽器、またはリズム楽器以外の楽器にも、本実施形態を適用可能である。
【０１０４】
また、上記の実施形態では、所定の発音期間を８小節としたが、それより長い／短い期間としても良い。また、楽曲１曲分を、所定の発音期間としても良い。
【０１０５】
また、上記の各実施形態に示した音声信号処理装置１における各部および各機能をプログラム（アプリケーション）として提供することが可能である。また、そのプログラムを各種記録媒体（ＣＤ−ＲＯＭ、フラッシュメモリ等）に格納して提供することも可能である。すなわち、コンピューターを、音声信号処理装置１の各部として機能させるためのプログラム、およびそれを記録した記録媒体も、本発明の権利範囲に含まれる。その他、音声信号処理装置１を、ネットワーク上のサーバー（クラウドコンピューティング）で実現するなど、本発明の要旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【０１０６】
１：音声信号処理装置  １１：ＦＦＴ部  １２：継続音除去部  １３：帯域分割部  １４：詳細判別用音加工部  １５：詳細判別部  １６：ベロシティ特定部  １７：グルーヴ判定部  １８：打楽器音分離部  ２１：バスドラム加工部  ２１ａ：発音位置情報取得部  ２１ｂ：検索区間特定部  ２１ｃ：鳴り終わり判定部  ２１ｄ：抽出部  ２１ｅ：第１加工部  ２１ｆ：第２加工部  ２２：スネアドラム加工部  ２３：ハイハット加工部  ３１：ベロシティ検出部  ３２：ベロシティ算出部  ４１：第１特定部  ４２：第２特定部  ４３：同期減算部  ４４：同期加算部  ４５：再アタック検出部  ４６：鳴り終わり判定部  ４７：音源生成部  ４８：音源分離部
【図１】
2015125239.tif 000003
【図２】
2015125239.tif 000004
【図３】
2015125239.tif 000005
【図４】
2015125239.tif 000006
【図５】
2015125239.tif 000007
【図６】
2015125239.tif 000008
【図７】
2015125239.tif 000009
【図８】
2015125239.tif 000010
【図９】
2015125239.tif 000011
【図１０】
2015125239.tif 000012
【図１１】
2015125239.tif 000013
【図１２】
2015125239.tif 000014
【図１３】
2015125239.tif 000015
【図１４】
2015125239.tif 000016
【図１５】
2015125239.tif 000017
【図１６】
2015125239.tif 000018
【図１７】
2015125239.tif 000019
【図１８】
2015125239.tif 000020
【図１９】
2015125239.tif 000021
【図２０】
2015125239.tif 000022
【図２１】
2015125239.tif 000023
【図２２】
2015125239.tif 000024
【図２３】
2015125239.tif 000025
【図２４】
2015125239.tif 000026
【図２５】
2015125239.tif 000027
【図２６】
2015125239.tif 000028
【図２７】
2015125239.tif 000029
【図２８】
2015125239.tif 000030
【図２９】
2015125239.tif 000031
【図３０】
2015125239.tif 000032
【図３１】
2015125239.tif 000033