JP2014052421A - 演奏評価装置およびプログラム - Google Patents

演奏評価装置およびプログラム Download PDF

Info

Publication number
JP2014052421A
JP2014052421A JP2012195182A JP2012195182A JP2014052421A JP 2014052421 A JP2014052421 A JP 2014052421A JP 2012195182 A JP2012195182 A JP 2012195182A JP 2012195182 A JP2012195182 A JP 2012195182A JP 2014052421 A JP2014052421 A JP 2014052421A
Authority
JP
Japan
Prior art keywords
note
performance
probability
pitch
song
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
Application number
JP2012195182A
Other languages
English (en)
Inventor
Junichi Minamitaka
純一 南高
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2012195182A priority Critical patent/JP2014052421A/ja
Publication of JP2014052421A publication Critical patent/JP2014052421A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Auxiliary Devices For Music (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

【課題】どのような演奏が為されても曲中の演奏箇所を特定して演奏評価する演奏評価装置を実現する。
【解決手段】CPU10は、曲を構成する音符データ列の各音符iを「状態」とし、音符iから曲が始まる「初期確率」、音符iから次の音符jに遷移する「遷移確率」および音符iが正解となる「出力確率」を設定しておき、ユーザの演奏操作で生じた演奏データ列を生成する確率が最も大きい音符データ列(最適経路)を、隠れ状態系列のビタビ探索により取得し、最後に演奏された演奏データの音高iObsPit[iObsN−1]と、最後の取得された最適経路で指定される音符データの音高iPit[iPath[iObsN−1]]との比較に応じて演奏評価する。
【選択図】図1

Description

本発明は、ユーザが曲の一部を弾いた場合に、その曲中の演奏箇所を特定し、特定した演奏箇所が正しく弾けているかを評価する演奏評価装置およびプログラムに関する。
従来より、手本となる曲の音符データと、その曲の演奏操作に応じて発生する演奏データとを比較してユーザ(演奏者)の演奏技量を評価する装置が知られている。この種の技術として、例えば特許文献1には、演奏入力された演奏データと模範演奏に相当する出題データとの比較から正しく弾けた音符の数に応じた正解率を算出したり、算出した正解率からユーザの演奏技量を評価する技術が開示されている。
また、演奏操作に応じて生成された演奏データが、曲中のどの位置に該当するかを推定する楽譜追跡技術として、例えば特許文献2には、演奏情報と楽譜情報との対応関係を確率モデルで表し、和音を発音情報のクラスタ(音の集合)とし、最適性の原理を用いた探索によりマッチングを行って和音演奏が為された曲中での位置を推定する技術が開示されている。
特開2008−242131号公報 特開2007−241181号公報
ところで、上記特許文献1に開示の演奏評価技術に、上記特許文献2に開示の楽譜追跡技術を適用した場合、ユーザの演奏操作に応じて発生する演奏データと、手本となる曲の音符データとに基づきユーザが弾いた曲中の演奏箇所を楽譜追跡により特定し、その特定した演奏箇所の音符データと演奏データとを比較してユーザの演奏技量を評価することが可能になる。
しかしながら、上記特許文献2に開示の技術は、和音を発音情報のクラスタとして楽譜追跡する為、例えばユーザがポリフォニー(多声音楽)やアルペジオ(分散和音)等、和音か単音(単旋律)か区別できない音を演奏した場合にはうまく楽譜追跡することが困難になる。つまり、換言すれば、どのような演奏が為されても曲中の演奏箇所を特定して演奏評価することが出来ない、という問題が生じる。
そこで本発明は、このような事情に鑑みてなされたもので、どのような演奏が為されても曲中の演奏箇所を特定して演奏評価することができる演奏評価装置およびプログラムを提供することを目的としている。
上記目的を達成するため、本発明の演奏評価装置は、曲中の各音符からそれぞれ曲が始まる初期確率、当該音符から次の音符に遷移する遷移確率および前記音符が正解となる出力確率を設定して隠れマルコフモデルを形成するモデル化手段と、前記モデル化手段により形成された隠れマルコフモデルを用いて、ユーザの演奏音を生成する確率が最も大きい音符を表す最適経路を、隠れ状態系列のビタビ探索により取得する最適経路取得手段と、前記最適経路取得手段が取得した最適経路で指定される音符の音高と、演奏された演奏音の音高との比較に応じて演奏の適否を判別する判別手段とを具備することを特徴とする。
本発明では、どのような演奏が為されても曲中の演奏箇所を特定して演奏評価することができる。
電子楽器100の全体構成を示すブロック図である。 ROM11のデータ構成を示すメモリマップである。 RAM12の主要データ構成を示すメモリマップである。 メインルーチンの動作を示すフローチャートである。 音符データ読み込み処理の動作を示すフローチャートである。 遷移確率値セット処理の動作を示すフローチャートである。 ある音符から次の音符に遷移する経路P1〜P4を示す状態遷移図である。 出力確率値セット処理の動作を示すフローチャートである。 演奏評価処理の動作を示すフローチャートである。 演奏評価処理の動作を示すフローチャートである。 状態遷移テーブルの一例を示す図である。
以下、図面を参照して本発明の実施形態について説明する。以下では、始めに本発明の概要について述べた後、実施の一形態の説明を進める。
A.発明の概要
本発明では、ユーザが手本となる曲の一部を弾いた場合に、その曲中の演奏箇所を特定し、特定した演奏箇所が正しく弾けたかどうかを判定する。手本となる曲が音符データ列Qから構成され、その曲中の一部をユーザが弾き、これにより演奏データ列Xが発生する場合、その演奏データ列Xが音符データ列Qとなる確率P(Q|X)は、ベイズの定理により次式(1)で表現できる。
P(Q|X)=P(X|Q)・P(Q)/P(X)…(1)
上記(1)式において、P(X)は規格化乗数である為、曲中から演奏箇所を特定し、特定した演奏箇所が正しく弾けたかどうかを判定するには、「P(X|Q)・P(Q)」、すなわち演奏データ列Xに対して最も尤もらしい音符データ列Qを推定することになる。本発明では、その推定手法として「隠れマルコフモデル(以下、HMMと称す)」を用いる。
HMMのモデル化の為に、「状態」、「初期確率」、「遷移確率」および「出力確率」の各パラメータを設定する。本発明では、曲を構成する音符データ列Qの各音符iを「状態」とし、音符iから曲が始まる確率を「初期確率」とする。音符iから音符jに遷移する確率を「遷移確率」とし、音符iが正解となる確率を「出力確率」とする。なお、音符iから音符jに遷移する「遷移確率」において、対象音符が和音を構成する場合には、和音構成音の演奏順序を任意に許容するように確率値をセットする。
HMMでは、上記パラメータに基づき演奏データ列Xを生成する確率が最も大きい音符データ列Qを、隠れ状態系列のビタビ探索により求めることによって、どのような演奏が為されても曲中の演奏箇所を特定して演奏評価することを可能にする。
B.構成
次に、図1を参照して実施の一形態の構成を説明する。図1は、実施の一形態による演奏評価装置を備えた電子楽器100の全体構成を示すブロック図である。この図において、CPU10は、演奏操作に応じて鍵盤13が発生する演奏情報に基づき音源16に楽音発生を指示する通常の楽器機能の他に、演奏評価機能を具備する。
ここで言う演奏評価機能とは、曲の演奏練習に供せられるデータであって、手本(模範演奏)となる曲データ(後述する)の一部をユーザが弾いた場合に、その曲中の演奏箇所を特定し、特定した演奏箇所が正しく弾けたかどうかを判定する機能を指す。本発明の要旨に係わるCPU10の演奏評価機能については追って詳述する。
ROM11は、図2に図示するように、プログラムエリアPEおよび曲データエリアMEおよびを備える。ROM11のプログラムエリアPEには、CPU10にロードされる各種の制御プログラムが記憶される。各種の制御プログラムとは、後述のメインルーチン、メインルーチンを構成する音符データ読み込み処理および演奏評価処理を含む。なお、音符データ読み込み処理は、遷移確率値セット処理および出力確率値セット処理を含む。
ROM11の曲データエリアMEには、手本(模範演奏)となる曲データが複数曲分記憶(ファクトリープリセット)される。曲データは、曲を構成する各音符を表す音符データ[0]〜[N]とノート数iN(音符データの数)から構成される。音符データは、音高iPit、発音時刻iTimeおよび音長iGateから構成される。曲データエリアMEに記憶される複数の曲データの内、ユーザの曲指定操作により指定される曲データがRAM12の音符データ読み込みエリアNE(後述する)にストアされる。
RAM12は、図3に図示するように、演奏データエリアUE、音符データ読み込みエリアNEおよびワークエリアWEを備える。RAM12の演奏データエリアUEには、ユーザの演奏操作に応じて時系列順に発生する演奏データ[0]〜[n]、データ数iObsN(演奏データの数)およびデータ最大数iObsStnが一時記憶される。演奏データは、音高iObsPit、発音時刻iObsTimeおよび音長iObsGateから構成される。
RAM12の音符データ読み込みエリアNEには、ユーザの曲指定操作に応じてROM11から読み出される音符データ[0]〜[N]およびノート数iN(音符データの数)が一時記憶される。RAM12のワークエリアWEには、後述するメインルーチンで用いられる各種変数を一時記憶するレジスタが設けられる。
レジスタiStatesNには状態数(HMMパラメータである「状態」の数)がストアされ、レジスタiOutputNには出力数(観測パターンの種類の数)がストアされる。レジスタdoStProb[n]には初期確率値がストアされ、レジスタdoTrProb[n][m]には遷移確率値がストアされる。レジスタdoEmProb[n][m]には出力確率値がストアされ、レジスタdoRstには初期確率定数がストアされる。レジスタdoRtrには遷移確率定数がストアされ、レジスタdoRemには出力確率定数がストアされる。レジスタiPath[n]には最適経路がストアされる。
再び図1を参照して実施形態の構成について説明を進める。図1において、鍵盤13は、演奏操作(押離鍵操作)に応じたキーオン/キーオフイベント、鍵番号およびベロシティ等を含む演奏情報を発生する。操作部14は、装置パネルに配設される各種操作スイッチを有し、ユーザ操作されるスイッチ種に対応したスイッチイベントを発生する。操作部14に配設される主要なスイッチとしては、例えばパワーオンオフする電源スイッチの他、電子楽器100の動作モードを楽器機能モード又は演奏評価機能モードの何れかに切り替えるモード切り替えスイッチ、曲データを選択する曲選択スイッチや、動作終了を指示する終了スイッチ等がある。
表示部15は、例えば演奏評価機能モード下であれば、CPU10から供給される表示制御信号に応じて、手本として選択した曲の曲データを楽譜表示したり、ユーザがその曲の一部分を弾いた場合の演奏評価結果を画面表示したりする。音源16は、周知の波形メモリ読み出し方式によって構成され、鍵盤13から供給される演奏情報に基づきCPU10が生成する演奏データに応じた楽音データを発生する。サウンドシステム17は、音源16から出力される楽音データをアナログ形式の楽音信号に変換した後、その楽音信号から不要ノイズを除去する等のフィルタリングを施してからレベル増幅してスピーカより発音させる。
C.動作
次に、図4〜図11を参照して上記構成による電子楽器100の動作を説明する。以下では、電子楽器100の動作モードが演奏評価機能モードである場合に、CPU10が実行するメインルーチン、該当メインルーチンからコールされる音符データ読み込み処理および演奏評価処理の各動作について述べる。なお、音符データ読み込み処理は、遷移確率値セット処理および出力確率値セット処理を含む。
(1)メインルーチンの動作
図4は、メインルーチンの動作を示すフローチャートである。メインルーチンは、モード切り替えスイッチにより電子楽器100の動作モードを演奏評価機能モードに切り替えた場合に実行される。動作モードが演奏評価機能モードに切り替えられると、CPU10は、図4に図示するメインルーチンを実行してステップSA1に処理を進め、楽器各部を初期化するイニシャライズを行う。イニシャライズが完了すると、CPU10はステップSA2に進み、終了スイッチによる終了操作の有無を判断する。終了操作が為されなければ、判断結果は「NO」になり、ステップSA3に進む。
ステップSA3では、ユーザによる曲指定操作の有無を判断する。曲指定操作が為されると、判断結果は「YES」になり、ステップSA4に進み、音符データ読み込み処理を実行した後、上記ステップSA2に処理を戻す。
ステップSA4の音符データ読み込み処理では、後述するように、曲指定操作により指定された曲データ(音符データ[0]〜[N]およびノート数iN)を、各音符毎の音高iPit[0]〜[iN]、発音時刻iTime[0]〜[iN]、音長iGate[0]〜[iN]およびノート数iNに変換し、これらに基づきHMMのモデル化を図るべく曲中の全ての音符について確率値(初期確率値、遷移確率値および出力確率値)をセットする。
一方、曲指定操作が為されなければ、上記ステップSA3の判断結果は「NO」になり、ステップSA5に進み、押鍵操作の有無、すなわち演奏操作が為されたかどうかを判断する。演奏操作が為されなければ、判断結果は「NO」になり、上記ステップSA2に処理を戻すが、演奏操作が為されると、判断結果が「YES」になり、ステップSA6に進む。ステップSA6では、ユーザの演奏操作に応じて発生する演奏データをRAM12の演奏データエリアUE(図3参照)に取り込む。
この後、ステップSA6の演奏評価処理を実行する。演奏評価処理では、後述するように、「出力i」、「次の状態j」および「現在状態k」の3重ループで表現される状態遷移テーブルから最適経路、すなわち演奏データ列Xを生成する確率が最も大きい音符データ列Qを隠れ状態系列のビタビ探索により求め、最後に演奏された演奏データの音高iObsPit[iObsN−1]と、最後の探索された最適経路で指定される音符データの音高iPit[iPath[iObsN−1]]とを比較し、両者が一致していればユーザの演奏は正しく弾かれたと判断し、不一致ならばユーザの演奏は正しく弾かれていないと判断する。そして、演奏評価処理が完了すると、上記ステップSA2に処理を戻す。
以後、終了操作が為されるまでの間、曲指定操作が行われたならば、音符データ読み込み処理(ステップSA4)を実行し、演奏操作が行われたならば、ユーザの演奏操作に応じて発生する演奏データを取り込んで演奏評価処理(ステップSA6〜SA7)を実行する。そして、終了操作が為されると、上記ステップSA2の判断結果が「YES」になり、本処理を終える。
(2)音符データ読み込み処理の動作
次に、図5を参照して音符データ読み込み処理の動作を説明する。上述したメインルーチンのステップSA4(図4参照)を介して本処理が実行されると、CPU10は図5に図示するステップSB1に処理を進め、音符データ読み込みを実行する。
ステップSB1の音符データ読み込みでは、曲指定操作により指定された曲データ(音符データ[0]〜[N]およびノート数iN)をROM11から読み出した後、RAM12の音符データ読み込みエリアNE(図3参照)において、ノート数iNをレジスタiNにストアし、音符データ[0]〜[N]の各音高iPitをレジスタiPit[0]〜[iN]にストアする。さらに、音符データ[0]〜[N]の各発音時刻iTimeをレジスタiTime[0]〜[iN]にストアし、音符データ[0]〜[N]の各音長iGateをレジスタiGate[0]〜[iN]にストアする。加えて、ワークエリアWEのレジスタiStatesNに、ノート数iNを状態数としてストアする。
次いで、ステップSB2では、曲中の音符を指定するポインタiをゼロリセットし、続くステップSB3では、現在のポインタiの値がレジスタiStatesNの状態数(ノート数iN)より小さいか否か、すなわち曲中の全ての音符について確率値(初期確率値、遷移確率値および出力確率値)をセットし終えたかどうかを判断する。
全ての音符について確率値をセットし終えていなければ、上記ステップSB3の判断結果は「YES」になり、ステップSB4に進む。ステップSB4では、予めレジスタdoRstに記憶された初期確率定数を読み出し、ポインタiで指定されるレジスタdoStProb[i]にストアする。つまり、ポインタiで指定される音符iの初期確率値をセットする。
続いて、ステップSB5では、遷移確率値セット処理を実行する。遷移確率値セット処理では、後述するように、レジスタiStatesNの状態数(ノート数iN)を超えるまでポインタjを歩進させながら、現在のポインタiで指定される音符iと、ポインタjで指定される音符jとの関係が「次の音」、「次の和音」、「同じ和音内」および「和音から次の音」の各場合に、ポインタi,jで指定されるレジスタdoTrProb[i][j]に遷移確率値doRtrをセットする。
次に、ステップSB6では、出力確率値セット処理を実行する。出力確率値セット処理では、後述するように、現在のポインタiで指定される音符iの音高iPit[i]の値に一致するまでポインタjの値を歩進させ、歩進させたポインタjの値が音高iPit[i]の値に一致すると、現在のポインタi,jで指定されるレジスタdoEmProb[i][j]に出力確率値doRemをセットする。
こうして、現在のポインタiで指定される音符iについて初期確率値、遷移確率値および出力確率値をそれぞれセットし終えると、ステップSB7に進み、ポインタiをインクリメントして歩進させた後、上述のステップSB3に処理を戻す。以後、曲中の全ての音符について確率値(初期確率値、遷移確率値および出力確率値)をセットし終えるまで上述のステップSB3〜SB7を繰り返し実行し、歩進させたポインタiがレジスタiStatesNの状態数(ノート数iN)を超えると、上記ステップSB3の判断結果が「NO」になり、本処理を終える。
このように、音符データ読み込み処理では、曲指定操作により指定された曲データ(音符データ[0]〜[N]およびノート数iN)を、各音符毎の音高iPit[0]〜[iN]、発音時刻iTime[0]〜[iN]、音長iGate[0]〜[iN]およびノート数iNに変換し、これらに基づきHMMのモデル化を図るべく曲中の全ての音符について確率値(初期確率値、遷移確率値および出力確率値)をセットする。
(3)遷移確率値セット処理の動作
次に、図6〜図7を参照して遷移確率値セット処理の動作を説明する。上述した音符データ読み込み処理のステップSB5(図5参照)を介して本処理が実行されると、CPU10は図6に図示するステップSC1に処理を進め、レジスタdoTrProb[i][n]を初期化する。そして、ステップSC2では、曲中の音符を指定するポインタjをゼロリセットし、続くステップSC3では、現在のポインタjの値がレジスタiStatesNの状態数(ノート数iN)より小さいか否か、すなわち遷移確率値をセットし終えたかどうかを判断する。
なお、ここで言う遷移確率値とは、ポインタiで指定された音符iからポインタjで指定される音符jへ遷移する確率を指す。具体的には、図7に図示する状態遷移図における経路P1〜P4(後述する)を取る確率である。
全ての音符について遷移確率値をセットし終えていなければ、上記ステップSC3の判断結果は「YES」になり、ステップSC4に進む。ステップSC4では、現在のポインタiで指定されている音符iの次の音符i+1が、現在のポインタjで指定されている音符j、つまり「次の音」であるかどうかを判断する。「次の音」は、図7に図示する状態遷移図における経路P1(i→i+1,i+1→i+2,i+2→i+3,i+3→i+4)で示される。
現在のポインタjで指定される音符jが、現在のポインタiで指定されている音符iの次の音符ならば、上記ステップSC4の判断結果は「YES」になり、ステップSC5に進み、レジスタdoRtrの遷移確率値を、現在のポインタi,jで指定されるレジスタdoTrProb[i][j]にストアする。この後、ステップSC12に進み、ポインタjをインクリメントして歩進させた後、上記ステップSC3に処理を戻す。
一方、現在のポインタi,jの関係が「i+1=j」でなければ、上記ステップSC4の判断結果は「NO」になり、ステップSC6に処理を進める。ステップSC6では、現在のポインタiで指定される音符iの次の音符の発音時刻iTime[i+1]が、現在のポインタjで指定される発音時刻iTime[j]に一致するか否か、つまり「次の和音」であるかどうかを判断する。「次の和音」は、図7に図示する状態遷移図における経路P2(i→i+2,i→i+3)で示される。
現在のポインタiで指定される音符iの次の音符の発音時刻iTime[i+1]が、現在のポインタjで指定される発音時刻iTime[j]に一致すると、上記ステップSC6の判断結果は「YES」になり、ステップSC7に進み、レジスタdoRtrの遷移確率値を、現在のポインタi,jで指定されるレジスタdoTrProb[i][j]にストアする。この後、ステップSC12に進み、ポインタjをインクリメントして歩進させた後、上記ステップSC3に処理を戻す。
これに対し、現在のポインタiで指定される音符iの次の音符の発音時刻iTime[i+1]が、現在のポインタjで指定される発音時刻iTime[j]に一致しなければ、上記ステップSC6の判断結果は「NO」になり、ステップSC8に処理を進める。ステップSC8では、現在のポインタiで指定される音符の発音時刻iTime[i]が、現在のポインタjで指定される発音時刻iTime[j]に一致するか否か、つまり「同じ和音内」であるかどうかを判断する。「同じ和音内」は、図7に図示する状態遷移図における経路P3(i+1→i+3,i+3→i+1,i+3→i+2,i+2→i+1)で示される。
現在のポインタiで指定される音符の発音時刻iTime[i]が、現在のポインタjで指定される発音時刻iTime[j]に一致すると、上記ステップSC8の判断結果は「YES」になり、ステップSC9に進み、レジスタdoRtrの遷移確率値を、現在のポインタi,jで指定されるレジスタdoTrProb[i][j]にストアする。この後、ステップSC12に進み、ポインタjをインクリメントして歩進させた後、上記ステップSC3に処理を戻す。
一方、現在のポインタiで指定される音符の発音時刻iTime[i]が、現在のポインタjで指定される発音時刻iTime[j]に一致しなければ、上記ステップSC8の判断結果は「NO」になり、ステップSC10に処理を進める。ステップSC10では、現在のポインタiで指定される音符の発音時刻iTime[i]が現在のポインタjで指定される発音時刻iTime[j]に一致し、かつその発音時刻iTime[j]が次の音符の発音時刻iTime[j+1]より早いか否か、つまり「和音から次の音」に移る場合であるかどうかを判断する。「和音から次の音」は、図7に図示する状態遷移図における経路P4(i+1→i+4,i+2→i+4)で示される。
「和音から次の音」に移る場合であると、上記ステップSC10の判断結果は「YES」になり、ステップSC11に進み、レジスタdoRtrの遷移確率値を、現在のポインタi,jで指定されるレジスタdoTrProb[i][j]にストアした後、ステップSC12に進み、ポインタjをインクリメントして歩進させた後、上記ステップSC3に処理を戻す。「和音から次の音」に移る場合でなければ、上記ステップSC10の判断結果は「NO」になり、ステップSC12に進み、ポインタjをインクリメントして歩進させた後、上記ステップSC3に処理を戻す。
以後、歩進されたポインタjがレジスタiStatesNの状態数(ノート数iN)を超えるまでの間、上記ステップSC3〜SC12を繰り返し、現在のポインタiで指定される音符iと、現在のポインタjで指定される音符jとの関係が「次の音」、「次の和音」、「同じ和音内」および「和音から次の音」の各場合に、ポインタi,jで指定されるレジスタdoTrProb[i][j]に遷移確率値doRtrをセットし、遷移確率値をセットし終えると、ステップSC3の判断結果が「NO」になり、本処理を終える。
(4)出力確率値セット処理の動作
次に、図8を参照して出力確率値セット処理の動作を説明する。前述した音符データ読み込み処理のステップSB6(図5参照)を介して本処理が実行されると、CPU10は図8に図示するステップSD1に処理を進め、曲中の音符を指定するポインタjをゼロリセットし、続くステップSD2では、現在のポインタjの値がレジスタiOutputNの出力数より小さいか否か、すなわち出力確率値をセットし終えたかどうかを判断する。
出力確率値をセットし終えていなければ、上記ステップSD2の判断結果は「YES」になり、ステップSD3に進む。ステップSD3では、現在のポインタiで指定される音符iの音高iPit[i]の値(MIDIノートナンバ)が、ポインタjの値と一致するか否かを判断する。音高iPit[i]の値がポインタjの値と一致しなければ、判断結果は「NO」になり、ステップSD5に進み、ポインタjをインクリメントして歩進させた後、上述のステップSD2に処理を戻す。
そして、現在のポインタiで指定される音符iの音高iPit[i]の値に一致するまでポインタjの値を歩進させ、歩進させたポインタjの値が音高iPit[i]の値に一致すると、上記ステップSD3の判断結果が「YES」になり、ステップSD4に進む。ステップSD4では、現在のポインタi,jで指定されるレジスタdoEmProb[i][j]に、レジスタdoRemの出力確率値をセットする。この後、ステップSD5に進み、ポインタjをインクリメントして歩進させ、歩進させたポインタjの値がレジスタiOutputNの出力数を超えると、上述したステップSD2の判断結果が「NO」になり、本処理を終える。
このように、出力確率値セット処理では、現在のポインタiで指定される音符iの音高iPit[i]の値に一致するまでポインタjの値を歩進させ、歩進させたポインタjの値が音高iPit[i]の値に一致すると、現在のポインタi,jで指定されるレジスタdoEmProb[i][j]に出力確率値doRemをセットする。
(5)演奏評価処理の動作
次に、図9〜図11を参照して演奏評価処理の動作を説明する。前述したメインルーチンのステップSA6(図4参照)を介して本処理が実行されると、CPU10は図9に図示するステップSE1に処理を進め、出力数を指定するポインタiをゼロリセットし、続くステップSE2では、現在のポインタiの値がレジスタiOutputNの出力数より小さいか否かを判断する。
現在のポインタiの値がレジスタiOutputNの出力数より小さければ、上記ステップSE2の判断結果は「YES」になり、ステップSE3に進み、次の状態を指定するポインタjをゼロリセットする。続いて、ステップSE4では、現在のポインタjの値がレジスタiStatesNの状態数(ノート数iN)より小さいか否かを判断する。
現在のポインタjの値がレジスタiStatesNの状態数(ノート数iN)より小さければ、上記ステップSE4の判断結果は「YES」になり、ステップSE5に進み、現在の状態を指定するポインタkをゼロリセットした後、図10に図示するステップSE6に進む。ステップSE6では、現在のポインタkの値がレジスタiStatesNの状態数(ノート数iN)より小さいか否かを判断する。
現在のポインタkの値がレジスタiStatesNの状態数(ノート数iN)より小さければ、上記ステップSE6の判断結果は「YES」になり、ステップSE7に進む。ステップSE7では、現在のポインタk,iで指定されるレジスタdoEmProb[k][i]の出力確率に、現在のポインタk,jで指定されるレジスタdoTrProb[k][j]の遷移確率を乗算して乗算値pを取得する。
次いで、ステップSE8では、現在のポインタkで指定される状態までのビタビ経路確率vprob[k]に、乗算値pを乗算して当該ビタビ経路確率vprob[k]を更新する。続いて、ステップSE9では、更新されたビタビ経路確率vprob[k]が最大値maxを超えているか否かを判断する。更新されたビタビ経路確率vprob[k]が最大値maxを超えていなければ、上記ステップSE9の判断結果は「NO」になり、ステップSE11に進み、ポインタkをインクリメントして歩進させた後、上述のステップSE6に処理を戻す。
一方、更新されたビタビ経路確率vprob[k]が最大値maxより大きければ、上記ステップSE9の判断結果は「YES」となり、ステップSE10に進む。ステップSE10では、上記ステップSE8で乗算値pの乗算により更新されたビタビ経路確率vprob[k]を新たな最大値maxとして更新保存すると共に、最適経路をレジスタiPath[ ]に保存する。この後、ステップSE11に進み、ポインタkを歩進させて上述のステップSE6に処理を戻す。
ここで、図11を参照して上記ステップSE6〜SE10の具体的な動作を説明する。演奏評価処理では、ポインタiで指定される「出力i」、ポインタjで指定される「次の状態j」およびポインタkで指定される「現在状態k」の3重ループで最適経路を探し出す。3重ループは、図11に図示する状態遷移テーブルとして表現出来る。
図11に図示する状態遷移テーブルにおいて、例えばレジスタdoEmProb[1(現在状態k)][1(出力i)]の出力確率に、レジスタdoTrProb[1(現在状態k)][2(次の状態j)]の遷移確率を乗算して得た乗算値pを現在状態kまでのビタビ経路確率vprob[k]に乗算し、これにより更新されたビタビ経路確率vprob[k]が最大値maxを超えたとする。そうすると、経路「0,1,2」が最適経路としてレジスタiPath[ ]に保存される。なお、最適経路を表す値は、音符データのインデクス(ノートの順番)に相当する。レジスタiPath[ ]に保存される最適経路の数は、演奏データの数iObsNと同じになる。
以後、歩進されたポインタkがレジスタiStatesNの状態数(ノート数iN)を超えるまで上記ステップSE6〜SE11を繰り返す。そして、歩進されたポインタkがレジスタiStatesNの状態数(ノート数iN)を超えると、上記ステップSE6の判断結果が「NO」になり、ステップSE12に進み、「次の状態j」についての、最大値maxおよび最適経路を取得して保存する。次いで、ステップSE13では、ポインタjをインクリメントして歩進させた後、上述したステップSE4(図9参照)に処理を戻す。
以後、歩進されたポインタjがレジスタiStatesNの状態数(ノート数iN)を超えるまで上述したステップSE4〜SE13を繰り返す。そして、歩進されたポインタjがレジスタiStatesNの状態数(ノート数iN)を超えると、上記ステップSE4の判断結果が「NO」になり、ステップSE14に進み、「次の状態j」についての、最大値maxおよび最適経路をコピーし、続くステップSE15では、ポインタiをインクリメントして歩進させた後、上述したステップSE2に処理を戻す。
以後、歩進されたポインタiがレジスタiOutputNの出力数を超えるまで上述したステップSE3〜SE15を繰り返す。そして、歩進されたポインタiがレジスタiOutputNの出力数を超えると、上記ステップSE2の判断結果が「NO」になり、ステップSE16に進み、更新されたビタビ経路確率vprob[k]を新たな最大値maxとして更新保存すると共に、最適経路をレジスタiPath[ ]に保存する。
次いで、ステップSE17では、最後に演奏された演奏データの音高iObsPit[iObsN−1]と、最後の探索された最適経路で指定される音符データの音高iPit[iPath[iObsN−1]]とを比較し、両者が一致していればユーザの演奏は正しく弾かれたと判断し、不一致ならばユーザの演奏は正しく弾かれていないと判断する演奏評価を行って本処理を終える。
このように、演奏評価処理では、「出力i」、「次の状態j」および「現在状態k」の3重ループで表現される状態遷移テーブルから最適経路、すなわち演奏データ列Xを生成する確率が最も大きい音符データ列Qを隠れ状態系列のビタビ探索により取得する。そして、最後に演奏された演奏データの音高iObsPit[iObsN−1]と、最後に取得された最適経路で指定される音符データの音高iPit[iPath[iObsN−1]]とを比較し、両者が一致していればユーザの演奏は正しく弾かれたと判断し、不一致ならばユーザの演奏は正しく弾かれていないと判断する。
以上説明したように、本実施形態では、HMMのモデル化を図るべく、曲を構成する音符データ列の各音符iを「状態」とし、音符iから曲が始まる「初期確率」、音符iから次の音符jに遷移する「遷移確率」および音符iが正解となる「出力確率」を設定しておき、ユーザの演奏操作で生じた演奏データ列を生成する確率が最も大きい音符データ列(最適経路)を、隠れ状態系列のビタビ探索により取得し、最後に演奏された演奏データの音高iObsPit[iObsN−1]と、最後の取得された最適経路で指定される音符データの音高iPit[iPath[iObsN−1]]との比較に応じて演奏評価するので、どのような演奏が為されても曲中の演奏箇所を特定して演奏評価することが可能になる。
以上、本発明の実施の一形態について説明したが、本発明はそれに限定されるものではなく、本願出願の特許請求の範囲に記載された発明とその均等の範囲に含まれる。以下では、本願出願当初の特許請求の範囲に記載された各発明について付記する。
(付記)
[請求項1]
曲中の各音符からそれぞれ曲が始まる初期確率、当該音符から次の音符に遷移する遷移確率および前記音符が正解となる出力確率を設定して隠れマルコフモデルを形成するモデル化手段と、
前記モデル化手段により形成された隠れマルコフモデルを用いて、ユーザの演奏音を生成する確率が最も大きい音符を表す最適経路を、隠れ状態系列のビタビ探索により取得する最適経路取得手段と、
前記最適経路取得手段が取得した最適経路で指定される音符の音高と、演奏された演奏音の音高との比較に応じて演奏の適否を判別する判別手段と
を具備することを特徴とする演奏評価装置。
[請求項2]
前記モデル化手段は、前記音符から次の前記音符に遷移する関係が「次の音」、「次の和音」、「同じ和音内」および「和音から次の音」の何れであるかを判別した結果に応じた遷移確率を設定することを特徴とする請求項1記載の演奏評価装置。
[請求項3]
前記モデル化手段は、前記音符から次の前記音符に遷移する関係が「同じ和音内」である場合に、和音構成音の演奏順序を任意に許容するように遷移確率値を設定することを特徴とする請求項1記載の演奏評価装置。
[請求項4]
前記判別手段は、前記最適経路取得手段が最後に取得した最適経路で指定される音符の音高と、最後に演奏された演奏音の音高とを比較し、両者が一致していればユーザの演奏は正しく弾かれたと判別し、不一致ならばユーザの演奏は正しく弾かれていないと判別することを特徴とする請求項1記載の演奏評価装置。
[請求項5]
コンピュータに、
曲中の各音符からそれぞれ曲が始まる初期確率、当該音符から次の音符に遷移する遷移確率および前記音符が正解となる出力確率を設定して隠れマルコフモデルを形成するモデル化ステップと、
前記モデル化ステップで形成された隠れマルコフモデルを用いて、ユーザの演奏音を生成する確率が最も大きい音符を表す最適経路を、隠れ状態系列のビタビ探索により取得する最適経路取得ステップと、
前記最適経路取得ステップにて取得した最適経路で指定される音符の音高と、演奏音の音高との比較に応じて演奏の適否を判別する判別ステップと
を実行させることを特徴とするプログラム。
10 CPU
11 ROM
12 RAM
13 鍵盤
14 操作部
15 表示部
16 音源
17 サウンドシステム
100 電子楽器

Claims (5)

  1. 曲中の各音符からそれぞれ曲が始まる初期確率、当該音符から次の音符に遷移する遷移確率および前記音符が正解となる出力確率を設定して隠れマルコフモデルを形成するモデル化手段と、
    前記モデル化手段により形成された隠れマルコフモデルを用いて、ユーザの演奏音を生成する確率が最も大きい音符を表す最適経路を、隠れ状態系列のビタビ探索により取得する最適経路取得手段と、
    前記最適経路取得手段が取得した最適経路で指定される音符の音高と、演奏された演奏音の音高との比較に応じて演奏の適否を判別する判別手段と
    を具備することを特徴とする演奏評価装置。
  2. 前記モデル化手段は、前記音符から前記次の音符に遷移する関係が「次の音」、「次の和音」、「同じ和音内」および「和音から次の音」の何れであるかを判別した結果に応じた遷移確率を設定することを特徴とする請求項1記載の演奏評価装置。
  3. 前記モデル化手段は、前記音符から前記次の音符に遷移する関係が「同じ和音内」である場合に、和音構成音の演奏順序を任意に許容するように遷移確率値を設定することを特徴とする請求項1記載の演奏評価装置。
  4. 前記判別手段は、前記最適経路取得手段が最後に取得した最適経路で指定される音符の音高と、最後に演奏された演奏音の音高とを比較し、両者が一致していればユーザの演奏は正しく弾かれたと判別し、不一致ならばユーザの演奏は正しく弾かれていないと判別することを特徴とする請求項1記載の演奏評価装置。
  5. コンピュータに、
    曲中の各音符からそれぞれ曲が始まる初期確率、当該音符から次の音符に遷移する遷移確率および前記音符が正解となる出力確率を設定して隠れマルコフモデルを形成するモデル化ステップと、
    前記モデル化ステップで形成された隠れマルコフモデルを用いて、ユーザの演奏音を生成する確率が最も大きい音符を表す最適経路を、隠れ状態系列のビタビ探索により取得する最適経路取得ステップと、
    前記最適経路取得ステップにて取得した最適経路で指定される音符の音高と、演奏された演奏音の音高との比較に応じて演奏の適否を判別する判別ステップと
    を実行させることを特徴とするプログラム。
JP2012195182A 2012-09-05 2012-09-05 演奏評価装置およびプログラム Pending JP2014052421A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012195182A JP2014052421A (ja) 2012-09-05 2012-09-05 演奏評価装置およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012195182A JP2014052421A (ja) 2012-09-05 2012-09-05 演奏評価装置およびプログラム

Publications (1)

Publication Number Publication Date
JP2014052421A true JP2014052421A (ja) 2014-03-20

Family

ID=50610976

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012195182A Pending JP2014052421A (ja) 2012-09-05 2012-09-05 演奏評価装置およびプログラム

Country Status (1)

Country Link
JP (1) JP2014052421A (ja)

Similar Documents

Publication Publication Date Title
JP5360510B2 (ja) 演奏評価装置およびプログラム
JP4322283B2 (ja) 演奏判定装置およびプログラム
JP5293710B2 (ja) 調判定装置および調判定プログラム
JP4479701B2 (ja) 楽曲練習支援装置、動的時間整合モジュールおよびプログラム
JP2019152716A (ja) 情報処理方法および情報処理装置
JP4274272B2 (ja) アルペジオ演奏装置
WO2021166531A1 (ja) 推定モデル構築方法、演奏解析方法、推定モデル構築装置、および演奏解析装置
JP2014174205A (ja) 楽音情報処理装置及びプログラム
JP6176480B2 (ja) 楽音発生装置、楽音発生方法およびプログラム
JP2008040260A (ja) 楽曲練習支援装置、動的時間整合モジュールおよびプログラム
JP2014052421A (ja) 演奏評価装置およびプログラム
JP2007140000A (ja) 歌唱採点装置および歌唱採点処理のプログラム
JP5287616B2 (ja) 音響処理装置およびプログラム
JP6788560B2 (ja) 歌唱評価装置、歌唱評価プログラム、歌唱評価方法及びカラオケ装置
JP2008040258A (ja) 楽曲練習支援装置、動的時間整合モジュールおよびプログラム
JP2007286637A (ja) コード判定装置およびコード判定処理プログラム
JP4998565B2 (ja) 歌唱採点装置および歌唱採点処理のプログラム
JP2002182642A (ja) 演奏案内装置および演奏案内方法
JP6210356B2 (ja) 演奏装置、演奏方法およびプログラム
JP3743993B2 (ja) コード判定装置、コード判定方法およびコード判定方法を記録した媒体
JP5099146B2 (ja) 歌唱採点装置および歌唱採点処理のプログラム
JP6439225B2 (ja) 楽音発生装置、電子楽器、楽音発生方法およびプログラム
JP5029770B2 (ja) 演奏支援情報生成装置および演奏支援情報生成プログラム
JP4067007B2 (ja) アルペジオ演奏装置及びプログラム
JP2004271712A (ja) 演奏採点装置および演奏採点処理のプログラム