<第1実施形態>
図1~図8Eを参照して、第1実施形態に係るカラオケ装置について説明する。
図1に示すように、カラオケ装置Kは、ネットワークNを介してサーバ装置Sと通信可能に接続されている。ネットワークNは、たとえば公衆電話回線網やインターネット回線等の伝送路である。
サーバ装置Sは、各種情報を管理するコンピュータである。サーバ装置Sは、ネットワークNを介してカラオケ装置K以外の他のカラオケ装置(図示なし)とも通信可能となっている。
本実施形態に係るサーバ装置Sは、利用者毎の歌唱履歴を記憶している。
歌唱履歴は、利用者がカラオケ装置を利用してカラオケ歌唱を行った際の各種情報を含む。歌唱履歴は、たとえば、カラオケ歌唱を行った楽曲の楽曲識別情報、楽曲名、アーティスト名、カラオケ歌唱を行った年月日等である。楽曲識別情報は、個々の楽曲を識別するための楽曲ID等、各楽曲に固有の情報である。また、歌唱履歴は、利用者の利用者識別情報と紐付けられている。利用者識別情報は、個々の利用者を識別するための利用者ID等、各利用者に固有の情報である。
図2は、サーバ装置Sに記憶されている歌唱履歴の例を示す。具体的に、利用者U1(利用者ID:ID***U1)の歌唱履歴SR1には、楽曲X01~楽曲X09(楽曲ID:ID***X01~ID***X09)の9曲が含まれており、利用者U2(利用者ID:ID***U2)の歌唱履歴SR2には、楽曲X11~楽曲X17(楽曲ID:ID***X11~ID***X17)の7曲が含まれており、利用者U3(利用者ID:ID***U3)の歌唱履歴SR3には、楽曲X21~楽曲X26(楽曲ID:ID***X21~ID***X26)の6曲が含まれている。
==カラオケ装置==
カラオケ装置Kは、楽曲のカラオケ演奏、及び利用者がカラオケ歌唱を行うための装置である。図3に示すように、カラオケ装置Kは、カラオケ本体10、スピーカ20、表示装置30、マイク40、及びリモコン装置50を備える。
カラオケ本体10は、楽曲の演奏制御、歌詞や背景映像等の表示制御、マイク40を通じて入力された音声信号の処理といった、カラオケ演奏やカラオケ歌唱に関する各種の制御を行う。スピーカ20は、カラオケ本体10からの信号に基づいて放音するための構成である。表示装置30は、カラオケ本体10からの信号に基づいて映像や画像を画面に表示するための構成である。マイク40は、利用者のカラオケ歌唱に基づく歌唱音声をアナログの音声信号に変換してカラオケ本体10に入力するための構成である。リモコン装置50は、カラオケ本体10に対する各種操作をおこなうための装置である。
図4に示すように、カラオケ本体10は、記憶手段10a、通信手段10b、入力手段10c、演奏手段10d、及び制御手段10eを備える。各構成はインターフェース(図示なし)を介してバスBに接続されている。
[記憶手段]
記憶手段10aは、各種のデータを記憶する大容量の記憶装置であり、たとえばハードディスクドライブなどである。記憶手段10aは、楽曲データを記憶する。
楽曲データは、楽曲識別情報が付与されている。楽曲データは、伴奏データ、リファレンスデータを含む。伴奏データは、カラオケ演奏音の元となるデータである。リファレンスデータは、楽曲の主旋律を示すデータであり、利用者によるカラオケ歌唱を採点する際に使用される。また、記憶手段10aは、カラオケ演奏に合わせて楽曲の歌詞を表示装置30等に表示させるための歌詞テロップデータ、及びカラオケ演奏時に表示装置30等に表示される背景映像等の背景映像データを楽曲毎に記憶する。なお、歌詞テロップデータは、複数の歌詞に対応するデータが含まれている。各歌詞は複数の文字(漢字、外国語または仮名)により構成されている。歌詞テロップデータは、歌詞に含まれる漢字または外国語に対するルビを表示するためのルビ文字データを含む。
[通信手段・入力手段]
通信手段10bは、リモコン装置50やサーバ装置Sとの通信を行うためのインターフェースを提供する。入力手段10cは、利用者が各種の指示入力を行うための構成である。入力手段10cは、カラオケ本体10に設けられたボタン等である。或いは、リモコン装置50が入力手段10cとして機能してもよい。
[演奏手段]
演奏手段10dは、制御手段10eの制御に基づき、楽曲のカラオケ演奏及びマイク40を通じて入力された歌唱音声に基づく信号の処理を行う。演奏手段10dは、音源、ミキサ、アンプ等を含む(いずれも図示なし)。
[制御手段]
制御手段10eは、カラオケ装置Kにおける各種の制御を行う。制御手段10eは、CPUおよびメモリ(いずれも図示なし)を備える。CPUは、メモリに記憶されたプログラムを実行することにより各種の機能を実現する。
本実施形態においてはCPUがメモリに記憶されるプログラムを実行することにより、制御手段10eは、第一の算出部100、抽出部200、予約部300、記憶処理部400、第二の算出部500、及び予約変更部600として機能する。
(第一の算出部)
第一の算出部100は、複数の利用者それぞれの歌唱履歴に含まれる楽曲毎の歌唱量を算出する。
ここで、本実施形態における第一の算出部100は、楽曲毎の歌詞テロップデータに基づく歌唱文字数を当該楽曲毎の歌唱量として算出する。
歌唱文字数は、ある楽曲を利用者がカラオケ歌唱する際に発声すべき文字の総数である。歌唱文字数は、歌詞テロップデータに基づいて求めることができる。歌唱文字数は「歌唱量」の一例である。
たとえば、複数の利用者でカラオケ装置Kを利用する場合、各利用者は、リモコン装置50を介して自己の利用者識別情報を入力する。リモコン装置50は、入力された利用者識別情報を含むログイン要求をサーバ装置Sに送信する。サーバ装置Sは、ログイン要求に基づいて、利用者の歌唱履歴を読み出し、カラオケ装置Kに送信することにより、利用者のログインを完了する。カラオケ装置Kは、受信した歌唱履歴を記憶手段10aに記憶させる。
第一の算出部100は、一の利用者の歌唱履歴に含まれる一の楽曲IDに基づいて、当該一の楽曲IDに対応する一の楽曲の歌詞テロップデータを記憶手段10aから読み出す。
第一の算出部100は、読み出した歌詞テロップデータに基づいて、各歌詞に含まれる文字数を求め、その合計値を一の楽曲の歌唱文字数として算出する。第一の算出部100は、同様の処理を行うことにより、各利用者の歌唱履歴に含まれる全ての楽曲について、それぞれ歌唱文字数を算出する。なお、歌詞に含まれる文字が漢字または外国語の場合、第一の算出部100は、歌詞テロップデータに含まれるルビ文字データに基づいて、それぞれの漢字または外国語に対して発声すべき文字の数を求める。
(抽出部)
抽出部200は、利用者毎の歌唱量の合計値が複数の利用者間において第1の所定条件を満たすよう、利用者毎の歌唱履歴それぞれから複数の楽曲を抽出する。第1の所定条件は、歌唱量の合計値が利用者間でほぼ等しくなるように調整するための条件である。
ここで、本実施形態における抽出部200は、利用者毎の歌唱文字数の合計値が複数の利用者間において所定文字数未満となるよう、利用者毎の歌唱履歴それぞれから複数の楽曲を抽出する(詳細は後述)。所定文字数は、たとえば、10文字、20文字のように予め一の値が設定される。利用者毎の歌唱文字数の合計値が複数の利用者間において所定文字数未満である場合、利用者毎に発声すべき文字の数はほぼ等しいこととなる。所定文字数未満は「第1の所定条件」の一例である。
(予約部)
予約部300は、抽出した楽曲に対して、当該楽曲をカラオケ歌唱する利用者の利用者識別情報を紐付け、当該楽曲の演奏予約を行う。
具体的に、予約部300は、一の利用者の歌唱履歴から抽出した一の楽曲の楽曲IDに対し、当該一の利用者の利用者IDを紐付け、予約待ち行列に登録することにより、当該一の楽曲の演奏予約を行う。予約部300は、抽出した楽曲全てに対し、同様の処理を行う。なお、予約部300は、各利用者が順番にカラオケ歌唱ができるよう、楽曲ID及び利用者IDを予約待ち行列に登録することが好ましい。
(記憶処理部)
記憶処理部400は、利用者毎に、演奏予約した楽曲の歌唱量の合計値を予定歌唱量として記憶手段10aに記憶させる。予定歌唱量は、ある利用者が演奏予約した楽曲全てをカラオケ歌唱した場合における歌唱量の予定値である。
ここで、本実施形態における記憶処理部400は、利用者毎に、演奏予約した楽曲の歌唱文字数の合計値を予定歌唱量として記憶手段10aに記憶させる(詳細は後述)。
(第二の算出部)
第二の算出部500は、演奏予約した楽曲のカラオケ演奏に伴う利用者の歌唱音声に基づいて、当該利用者の実際の歌唱量を算出し、算出した実際の歌唱量を当該利用者の予定歌唱量から減ずる。
ここで、本実施形態における第二の算出部500は、演奏予約した楽曲のカラオケ演奏に伴う利用者の歌唱音声に基づいて、当該利用者の実際の歌唱文字数を算出し、算出した実際の歌唱文字数を当該利用者の予定歌唱量から減ずる。
実際の歌唱文字数の算出は、たとえば、マイク40に入力された歌唱音声に基づく音声信号を公知の音声認識技術を用いて解析し、音声信号に含まれる音節数をカウントすることにより行うことができる。
また、ある楽曲をカラオケ歌唱した利用者の特定は、当該ある楽曲の楽曲IDに紐付けられている利用者IDを参照することにより行うことができる。或いは、カラオケ装置Kが複数のマイク40を有しており、各マイクに対して一の利用者を割り当てることにより行うことができる(詳細は、特開2006-259331号公報参照)。また、利用者毎の声紋データを利用することもできる。声紋データは、歌唱履歴と紐付けてサーバ装置Sに予め登録しておく。この場合、第二の算出部500は、ある利用者のログイン時にサーバ装置Sから歌唱履歴と併せて声紋データを受信し、受信した声紋データと音声信号とを対比することによりカラオケ歌唱を行った利用者を特定することができる。
たとえば、ある利用者が演奏予約された楽曲のカラオケ歌唱を行ったとする。この場合、第二の算出部500は、ある利用者の歌唱音声に基づいて、当該ある利用者が実際に発声した歌唱文字数を算出する。そして、第二の算出部500は、記憶手段10aに記憶されている当該ある利用者の予定歌唱量から、算出した実際の歌唱文字数を減ずることで、予定歌唱量の更新を行う。
(予約変更部)
予約変更部600は、演奏予約した楽曲のカラオケ演奏が終了する都度、利用者毎に、演奏予約した楽曲のうち未演奏の楽曲の歌唱量の合計値と予定歌唱量との比較を行い、ある利用者について比較の結果が第2の所定条件を満たさない場合、当該ある利用者についての未演奏の楽曲を変更する。
未演奏の楽曲は、演奏予約した楽曲のうち、未だカラオケ演奏が行われていない楽曲(利用者によるカラオケ歌唱が行われていない楽曲)である。第2の所定条件は、ある利用者についての未演奏の楽曲を変更するかどうかを決定するための条件である。未演奏の楽曲の変更は、「新たな楽曲の追加」、「未演奏の楽曲の削除」、「新たな楽曲の追加、及び未演奏の楽曲の削除」の3パターンである(詳細は後述)。
ここで、本実施形態における予約変更部600は、演奏予約した楽曲のカラオケ演奏が終了する都度、利用者毎に、未演奏の楽曲の歌唱文字数の合計値と予定歌唱量との比較を行い、ある利用者について比較の結果が第2の所定条件を満たさない場合、当該ある利用者についての未演奏の楽曲を変更する(詳細は後述)。なお、この場合の第2の所定条件は、たとえば、「歌唱文字数の合計値と予定歌唱量との差が±10文字以内」のように予め一の条件が設定される。
==カラオケ装置における処理について==
次に、図5~図8Eを参照して本実施形態に係るカラオケ装置Kにおける処理について述べる。図5は、カラオケ装置Kにおける処理を示すフローチャートである。以下、利用者U1~利用者U3がカラオケ装置Kを利用する場合を説明する。また、カラオケ装置Kは、サーバ装置Sから図2に示した歌唱履歴SR1~歌唱履歴SR3を受信し、記憶手段10aに記憶しているとする。
第一の算出部100は、利用者U1~利用者U3それぞれの歌唱履歴SR1~歌唱履歴SR3に含まれる楽曲毎の歌詞テロップデータに基づく歌唱文字数を、楽曲毎の歌唱量として算出する(楽曲毎の歌唱文字数を算出。ステップ10)。
たとえば、第一の算出部100は、利用者U1の歌唱履歴SR1に含まれる楽曲X01の楽曲ID(ID***X01)に基づいて、記憶手段10aから楽曲X01の歌詞テロップデータを読み出す。第一の算出部100は、楽曲X01の歌詞テロップデータに基づいて、各歌詞に含まれる文字数を求め、その合計値「106」を楽曲X01の歌唱文字数として算出する。
図6Aは、利用者U1の歌唱履歴SR1に含まれる楽曲X01~楽曲X09それぞれの歌唱文字数を示し、図6Bは、利用者U2の歌唱履歴SR2に含まれる楽曲X11~楽曲X17それぞれの歌唱文字数を示し、図6Cは、利用者U3の歌唱履歴SR3に含まれる楽曲X21~楽曲X26それぞれの歌唱文字数を示す。
次に、抽出部200は、利用者毎の歌唱文字数の合計値が複数の利用者間において所定文字数未満となるよう、利用者毎の歌唱履歴それぞれから複数の楽曲を抽出する(歌唱文字数に基づいて、利用者毎の歌唱履歴それぞれから複数の楽曲を抽出。ステップ11)。
ここで、所定文字数が「20文字」であるとする。この場合、抽出部200は、利用者U1~利用者U3それぞれの歌唱文字数の合計値の差が、いずれも20文字未満となるよう、歌唱履歴SR1~歌唱履歴SR3それぞれから複数の楽曲を抽出する。なお、この例では、抽出する楽曲の数が利用者毎に5曲以内という条件が更に設定されているとする。
たとえば、抽出部200は、利用者U1の歌唱履歴SR1から、楽曲X01(106文字)、楽曲X02(102文字)、楽曲X05(109文字)、及び楽曲X06(124文字)の4曲(歌唱文字数の合計値:441文字)を抽出する。また、抽出部200は、利用者U2の歌唱履歴SR2から、楽曲X12(122文字)、楽曲X15(105文字)、楽曲X16(111文字)、及び楽曲X17(100文字)の4曲(歌唱文字数の合計値:438文字)を抽出する。更に、抽出部200は、利用者U3の歌唱履歴SR3から、楽曲X21(146文字)、楽曲X23(144文字)、及び楽曲X25(149文字)の3曲(歌唱文字数の合計値:439文字)を抽出する。この場合、利用者毎の歌唱文字数の合計値の差は最大で3文字であり、「20文字未満」の条件を満たす。
次に、予約部300は、ステップ11で抽出した楽曲に対して、当該楽曲をカラオケ歌唱する利用者の利用者IDを紐付け、当該楽曲の演奏予約を行う(抽出した楽曲の演奏予約。ステップ12)。
予約部300は、利用者U1、利用者U2、利用者U3の順でカラオケ歌唱が可能となるよう、抽出した11曲について利用者IDを紐付け、予約待ち行列に登録することにより演奏予約を行う。図7Aは、予約待ち行列に登録された楽曲を示している。
記憶処理部400は、利用者毎に、演奏予約した楽曲の歌唱文字数の合計値を予定歌唱量として記憶手段10aに記憶させる(歌唱文字数の合計値を予定歌唱量として利用者毎に記憶。ステップ13)。
たとえば、利用者U1について演奏予約した楽曲X01、楽曲X02、楽曲X05、及び楽曲X06の歌唱文字数の合計値は「441文字」であり、利用者U2について演奏予約した楽曲X12、楽曲X15、楽曲X16、及び楽曲X17の歌唱文字数の合計値は「438文字」であり、利用者U3について演奏予約した楽曲X21、楽曲X23、及び楽曲X25の歌唱文字数の合計値は「439文字」である。
よって、記憶処理部400は、利用者U1の予定歌唱量として「441文字」、利用者U2の予定歌唱量として「438文字」、利用者U3の予定歌唱量として「439文字」を記憶手段10aに記憶させる。図8Aは、記憶手段10aに記憶された利用者U1~利用者U3それぞれの予定歌唱量を示している。
カラオケ装置Kは、予約待ち行列に登録されている順に楽曲のカラオケ演奏を開始する(一の楽曲のカラオケ演奏を開始。ステップ14)。
カラオケ装置Kは、図7Aに示した予約待ち行列に基づいて、楽曲X01の楽曲データを記憶手段10aから読み出し、演奏手段10dを制御して楽曲X01のカラオケ演奏を行う。利用者U1は、マイク40を用いて楽曲X01のカラオケ歌唱を行う。
第二の算出部500は、演奏予約した楽曲のカラオケ演奏に伴う利用者の歌唱音声に基づいて、当該利用者の実際の歌唱文字数を算出し、算出した実際の歌唱文字数を当該利用者の予定歌唱量から減ずる(カラオケ歌唱を行った利用者の予定歌唱量から、実際の歌唱文字数を減ずる。ステップ15)。
たとえば、利用者U1が楽曲X01のカラオケ歌唱を行った場合、第二の算出部500は、利用者U1の歌唱音声に基づいて、利用者U1が実際に発声した歌唱文字数「107文字」を算出する。第二の算出部500は、算出した実際の歌唱文字数「107文字」を利用者U1の予定歌唱量「441文字」から減ずることで予定歌唱量を「334文字」に更新する(図8B参照)。
予約変更部600は、演奏予約した楽曲のカラオケ演奏が終了する都度、利用者毎に、演奏予約した楽曲のうち未演奏の楽曲の歌唱文字数の合計値と予定歌唱量との比較を行う(利用者毎に歌唱文字数の合計値と予定歌唱量とを比較。ステップ16)。
ある利用者について比較の結果が第2の所定条件を満たさない場合(ステップ17でYの場合)、予約変更部600は、当該ある利用者についての未演奏の楽曲を変更する(ある利用者についての未演奏の楽曲を変更。ステップ18)。
カラオケ装置Kは、予約待ち行列に登録されている全ての楽曲のカラオケ演奏が終了するまで(ステップ19でYの場合まで)、ステップ14からステップ18の処理を繰り返し行う。
ここで、未演奏の楽曲の変更を行わないパターン、及び未演奏の楽曲の変更を行うパターン(「新たな楽曲の追加」、「未演奏の楽曲の削除」、「新たな楽曲の追加、及び未演奏の楽曲の削除」)について具体的に説明する。
[未演奏の楽曲の変更を行わないパターン]
上述の通り、楽曲X01のカラオケ演奏が行われ、利用者U1がカラオケ歌唱を行ったとする。この場合、予約変更部600は、利用者U1~利用者U3毎に、未演奏の楽曲の歌唱文字数の合計値と予定歌唱量との比較を行う。
利用者U1について、未演奏の楽曲は、楽曲X01を除く、楽曲X02、楽曲X05、及び楽曲X06の3曲である。予約変更部600は、これらの楽曲の歌唱文字数の合計値として「335文字」を求める。予約変更部600は、歌唱文字数の合計値「335文字」と、利用者U1の更新された予定歌唱量「334文字」との比較を行い、比較結果として差「+1」を求める。
予約変更部600は、求めた差が第2の所定条件を満たすか否かを確認する。ここで、第2の条件が「歌唱文字数の合計値と予定歌唱量との差が±10字以内」であるとする。この場合、比較結果である差「+1」は、第2の所定条件を満たす。よって、予約変更部600は、利用者U1についての未演奏の楽曲の変更を行わない。
予約変更部600は、利用者U2及び利用者U3についても同様の処理を行う。なお、この場合、利用者U2及び利用者U3はカラオケ歌唱を行っていない。よって、各利用者の歌唱文字数の合計値と予定歌唱量との差はいずれも第2の条件を満たす。すなわち、予約変更部600は、利用者U2及び利用者U3についても未演奏の楽曲の変更を行わない。
予約部300は、楽曲X01のカラオケ演奏終了後、楽曲X01を予約待ち行列から削除する。その結果、予約待ち行列は図7Bに示す通りとなる。
[新たな楽曲を追加するパターン]
利用者U1による楽曲X01のカラオケ歌唱終了後、カラオケ装置Kは楽曲X12のカラオケ演奏を行う。利用者U2は楽曲X12のカラオケ歌唱を開始する。ここで、利用者U2が、楽曲X12のカラオケ演奏の途中でカラオケ歌唱を中止したとする。
この際、第二の算出部500は、利用者U2が楽曲X12の途中までに発声した歌唱文字数「30文字」を算出する。第二の算出部500は、算出した実際の歌唱文字数「30文字」を利用者U2の予定歌唱量「438文字」から減ずることで予定歌唱量を「408文字」に更新する(図8C参照)。
予約変更部600は、利用者U1~利用者U3毎に、未演奏の楽曲の歌唱文字数の合計値と予定歌唱量との比較を行う。
利用者U2について、未演奏の楽曲は、楽曲X12を除く、楽曲X15、楽曲X16、及び楽曲X17の3曲である。予約変更部600は、これらの楽曲の歌唱文字数の合計値として「315文字」を求める。予約変更部600は、歌唱文字数の合計値「315文字」と、利用者U2の更新された予定歌唱量「408文字」との比較を行い、比較結果として差「-93」を求める。
この場合、比較結果である差「-93」は、上述の第2の所定条件を満たさない。よって、予約変更部600は、利用者U2についての未演奏の楽曲の変更を行う。
ここで、比較結果がマイナスの値の場合、利用者U2は予定歌唱量に比べて歌唱文字数が少ないこととなる。すなわち、利用者U2は、利用者U1及び利用者U3に比べて実際の歌唱量が少なくなる可能性がある。
このような場合、予約変更部600は、利用者U2について新たな楽曲の追加を行う。具体的に、予約変更部600は、利用者U2の歌唱履歴SR2に含まれる、予約待ち行列に登録されていない未演奏の楽曲である楽曲X12、楽曲X15、楽曲X16、及び楽曲X17の歌唱文字数(図6B参照)のうち、差「-93」に近い文字数である楽曲X14(歌唱文字数:92文字)を特定する。予約変更部600は、特定した楽曲X14を予約待ち行列の適当な位置に登録する。
予約変更部600は、利用者U1及び利用者U3についても同様の処理を行う。なお、この場合に利用者U1及び利用者U3はカラオケ歌唱を行っていない。よって、各利用者の歌唱文字数の合計値と予定歌唱量との差はいずれも第2の条件を満たす。すなわち、予約変更部600は、利用者U1及び利用者U3については未演奏の楽曲の変更を行わない。
予約部300は、楽曲X12のカラオケ演奏終了後、楽曲X12を予約待ち行列から削除する。その結果、予約待ち行列は図7Cに示す通りとなる。図7Cの予約待ち行列において、特定した楽曲X14が楽曲X23と楽曲X05の間に登録されている。
[未演奏の楽曲を削除するパターン]
利用者U2による楽曲X12のカラオケ歌唱終了後、カラオケ装置Kは楽曲X21のカラオケ演奏を行う。利用者U3は、楽曲X21のカラオケ歌唱を開始する。ここで、利用者U1が、楽曲X21のカラオケ演奏の途中でカラオケ歌唱に加わったとする。
この際、第二の算出部500は、利用者U3が楽曲X21のカラオケ歌唱で発声した歌唱文字数「148文字」と、利用者U1が楽曲X21の途中からカラオケ歌唱に加わって発声した歌唱文字数「106文字」とを算出する。第二の算出部500は、算出した利用者U3の実際の歌唱文字数「148文字」を利用者U3の予定歌唱量「439文字」から減ずることで予定歌唱量を「291文字」に更新する。また、第二の算出部500は、算出した利用者U1の実際の歌唱文字数「106文字」を利用者U1の予定歌唱量「334文字」から減ずることで予定歌唱量を「228文字」に更新する(図8D参照)。
予約変更部600は、利用者U1~利用者U3毎に、未演奏の楽曲の歌唱文字数の合計値と予定歌唱量との比較を行う。
利用者U3について、未演奏の楽曲は、楽曲X21を除く、楽曲X23、及び楽曲X25の2曲である。予約変更部600は、これらの楽曲の歌唱文字数の合計値として「293文字」を求める。予約変更部600は、歌唱文字数の合計値「293文字」と、利用者U3の更新された予定歌唱量「291文字」との比較を行い、比較結果として差「+2」を求める。
この場合、比較結果である差「+2」は、上述の第2の所定条件を満たす。よって、予約変更部600は、利用者U3についての未演奏の楽曲の変更を行わない。
一方、利用者U1について、未演奏の楽曲は、楽曲X02、楽曲X05、及び楽曲X06の3曲である。予約変更部600は、これらの楽曲の歌唱文字数の合計値として「335文字」を求める。予約変更部600は、歌唱文字数の合計値「335文字」と、利用者U1の更新された予定歌唱量「228文字」との比較を行い、比較結果として差「+107」を求める。
この場合、比較結果である差「+107」は、上述の第2の所定条件を満たさない。よって、予約変更部600は、利用者U2についての未演奏の楽曲の変更を行う。
ここで、比較結果がプラスの値の場合、利用者U1は予定歌唱量に比べて歌唱文字数が多いこととなる。すなわち、利用者U1は、利用者U2及び利用者U3に比べて実際の歌唱量が多くなる可能性がある。
このような場合、予約変更部600は、利用者U1について未演奏の楽曲の削除を行う。具体的に、予約変更部600は、利用者U1の未演奏の楽曲X02、楽曲X05、及び楽曲X06のうち、差「+107」に近い文字数である楽曲X05(歌唱文字数:109文字)を特定する。予約変更部600は、特定した未演奏の楽曲X05を予約待ち行列から削除する。
予約変更部600は、利用者U2についても同様の処理を行う。なお、この場合に利用者U2はカラオケ歌唱を行っていない。よって、利用者の歌唱文字数の合計値と予定歌唱量との差はいずれも第2の条件を満たす。すなわち、予約変更部600は、利用者U2については未演奏の楽曲の変更を行わない。
予約部300は、楽曲X21のカラオケ演奏終了後、楽曲X21を予約待ち行列から削除する。その結果、予約待ち行列は図7Dに示す通りとなる。図7Dの予約待ち行列において、図7Cの予約待ち行列から、楽曲X05が削除されている。
[新たな楽曲の追加、及び未演奏の楽曲を削除するパターン]
利用者U1及び利用者U3による楽曲X21のカラオケ歌唱終了後、カラオケ装置Kは楽曲X02のカラオケ演奏を行う。ここで、楽曲X02について、利用者U1ではなく利用者U2がカラオケ歌唱を行ったとする。
この際、第二の算出部500は、利用者U2が楽曲X02のカラオケ歌唱で発声した歌唱文字数「102文字」を算出する。第二の算出部500は、算出した利用者U2の実際の歌唱文字数「102文字」を利用者U2の予定歌唱量「408文字」から減ずることで予定歌唱量を「306文字」に更新する(図8E参照)。なお、本来楽曲X02をカラオケ歌唱すべき利用者U1は、実際にはカラオケ歌唱を行っていない。よって、利用者U1の予定歌唱量は、「228文字」のままである。
予約変更部600は、利用者U1~利用者U3毎に、未演奏の楽曲の歌唱文字数の合計値と予定歌唱量との比較を行う。
利用者U2について、未演奏の楽曲は、楽曲X14、楽曲X15、楽曲16、及び楽曲X17の4曲である。予約変更部600は、これらの楽曲の歌唱文字数の合計値として「408文字」を求める。予約変更部600は、歌唱文字数の合計値「408文字」と、利用者U2の更新された予定歌唱量「306文字」との比較を行い、比較結果として差「+102」を求める。
この場合、比較結果である差「+102」は、上述の第2の所定条件を満たさない。よって、予約変更部600は、利用者U2についての未演奏の楽曲の変更を行う。
予約変更部600は、利用者U2について未演奏の楽曲の削除を行う。具体的に、予約変更部600は、利用者U2の歌唱履歴SR2に含まれる、予約待ち行列に登録されていない未演奏の楽曲である楽曲X14、楽曲X15、楽曲16、及び楽曲X17の歌唱文字数のうち、差「+102」に近い文字数である楽曲X17(歌唱文字数:100文字)を特定する。予約変更部600は、特定した未演奏の楽曲X17を予約待ち行列から削除する。
一方、利用者U1について、未演奏の楽曲は、楽曲X06の1曲である。予約変更部600は、これらの楽曲の歌唱文字数の合計値として「124文字」を求める。予約変更部600は、歌唱文字数の合計値「124文字」と、利用者U1の予定歌唱量「228文字」との比較を行い、比較結果として差「-104」を求める。
この場合、比較結果である差「-104」は、上述の第2の所定条件を満たさない。よって、予約変更部600は、利用者U1についての未演奏の楽曲の変更を行う。
予約変更部600は、利用者U1について予約待ち行列に新たな楽曲の追加を行う。具体的に、予約変更部600は、利用者U1の歌唱履歴SR1に含まれる、予約待ち行列に登録されていない未演奏の楽曲である楽曲X03、楽曲X04、楽曲X07、楽曲X08、及び楽曲X09の歌唱文字数(図6A参照)のうち、差「-104」に近い文字数である楽曲X08(歌唱文字数:104文字)を特定する。予約変更部600は、特定した楽曲X08を予約待ち行列に登録する。
予約変更部600は、利用者U3についても同様の処理を行う。なお、この場合に利用者U3はカラオケ歌唱を行っていない。よって、利用者U3の歌唱文字数の合計値と予定歌唱量との差分はいずれも第2の条件を満たす。すなわち、予約変更部600は、利用者U3については未演奏の楽曲の変更を行わない。
予約部300は、楽曲X02のカラオケ演奏終了後、楽曲X02を予約待ち行列から削除する。その結果、予約待ち行列は図7Eに示す通りとなる。図7Eの予約待ち行列において、図7Dの予約待ち行列から楽曲X17が削除される一方、特定した楽曲X08が楽曲X14と楽曲X16の間に登録されている。
以上から明らかなように、本実施形態に係るカラオケ装置Kは、複数の利用者それぞれの歌唱履歴に含まれる楽曲毎の歌唱量を算出する第一の算出部100と、利用者毎の歌唱量の合計値が複数の利用者間において第1の所定条件を満たすよう、利用者毎の歌唱履歴それぞれから複数の楽曲を抽出する抽出部200と、抽出した楽曲に対して、当該楽曲をカラオケ歌唱する利用者の利用者識別情報を紐付け、当該楽曲の演奏予約を行う予約部300と、利用者毎に、演奏予約した楽曲の歌唱量の合計値を予定歌唱量として記憶手段10aに記憶させる記憶処理部400と、演奏予約した楽曲のカラオケ演奏に伴う利用者の歌唱音声に基づいて、当該利用者の実際の歌唱量を算出し、算出した実際の歌唱量を当該利用者の予定歌唱量から減ずる第二の算出部500と、演奏予約した楽曲のカラオケ演奏が終了する都度、利用者毎に、演奏予約した楽曲のうち未演奏の楽曲の歌唱量の合計値と予定歌唱量との比較を行い、ある利用者について比較の結果が第2の所定条件を満たさない場合、当該ある利用者についての未演奏の楽曲を変更する予約変更部500と、を有する。
このようなカラオケ装置Kによれば、利用者によって歌唱量にばらつきが生じる可能性がある場合、未演奏の楽曲を変更することにより、利用者間における実際の歌唱量の差を小さくすることができる。すなわち、本実施形態に係るカラオケ装置Kによれば、複数の利用者が一のカラオケ装置を利用する場合に、各利用者が公平にカラオケ歌唱を行うことができる。
より具体的に、本実施形態に係るカラオケ装置Kにおいて、第一の算出部100は、楽曲毎の歌詞テロップデータに基づく歌唱文字数を当該楽曲毎の歌唱量として算出し、抽出部200は、利用者毎の歌唱文字数の合計値が複数の利用者間において所定文字数未満となるよう、利用者毎の歌唱履歴それぞれから複数の楽曲を抽出し、記憶処理部400は、利用者毎に、演奏予約した楽曲の歌唱文字数の合計値を予定歌唱量として記憶手段10aに記憶させ、第二の算出部500は、演奏予約した楽曲のカラオケ演奏に伴う利用者の歌唱音声に基づいて、当該利用者の実際の歌唱文字数を算出し、算出した実際の歌唱文字数を当該利用者の予定歌唱量から減じ、予約変更部600は、演奏予約した楽曲のカラオケ演奏が終了する都度、利用者毎に、未演奏の楽曲の歌唱文字数の合計値と予定歌唱量との比較を行い、ある利用者について比較の結果が第2の所定条件を満たさない場合、当該ある利用者についての未演奏の楽曲を変更する。このようなカラオケ装置Kによれば、複数の利用者が一のカラオケ装置を利用する場合に、各利用者の実際の歌唱文字数が公平となるよう調整できる。
<第2実施形態>
次に、図9から図11Eを参照して、第2実施形態に係るカラオケ装置について説明する。本実施形態では、歌唱量として歌唱時間を用いる例について述べる。第1実施形態と同様の構成については説明を省略する。
(第一の算出部)
本実施形態における第一の算出部100は、楽曲毎のリファレンスデータに基づく歌唱時間を当該楽曲毎の歌唱量として算出する。
歌唱時間は、ある楽曲を構成する歌唱区間(Aメロ、Bメロ、サビ等)及び非歌唱区間(前奏、間奏、後奏)のうち、歌唱区間の演奏時間の合計値である。歌唱時間は、リファレンスデータに基づいて求めることができる。歌唱時間は「歌唱量」の一例である。
たとえば、第一の算出部100は、一の利用者の歌唱履歴に含まれる一の楽曲IDに基づいて、当該一の楽曲IDに対応する一の楽曲のリファレンスデータを記憶手段10aから読み出す。
第一の算出部100は、一の楽曲に予め設定されている演奏テンポを参照し、読み出したリファレンスデータに含まれる各音符の音長に基づく各音符の発音時間を求め、その合計値を一の楽曲の歌唱時間として算出する。第一の算出部100は、同様の処理を行うことにより、各利用者の歌唱履歴に含まれる全ての楽曲について、それぞれ歌唱時間を算出する。
(抽出部)
本実施形態における抽出部200は、利用者毎の歌唱時間の合計値が複数の利用者間において所定時間未満となるよう、利用者毎の歌唱履歴それぞれから複数の楽曲を抽出する(詳細は後述)。所定時間は、たとえば、20秒、30秒のように予め一の値が設定される。利用者毎の歌唱時間の合計値が複数の利用者間において所定時間未満である場合、利用者毎の歌唱時間はほぼ等しいこととなる。所定時間未満は「第1の所定条件」の一例である。
(記憶処理部)
本実施形態における記憶処理部400は、利用者毎に、演奏予約した楽曲の歌唱時間の合計値を予定歌唱量として記憶手段10aに記憶させる(詳細は後述)。
(第二の算出部)
本実施形態における第二の算出部500は、演奏予約した楽曲のカラオケ演奏に伴う利用者の歌唱音声に基づいて、当該利用者の実際の歌唱時間を算出し、算出した実際の歌唱時間を当該利用者の予定歌唱量から減ずる。
実際の歌唱時間の算出は、たとえば、マイク40に入力された歌唱音声に基づく音声信号を解析し、音声信号が入力された時間をカウントすることにより行うことができる。ある楽曲をカラオケ歌唱した利用者の特定は、第1実施形態と同様の方法で行うことができる。
たとえば、ある利用者が演奏予約された楽曲のカラオケ歌唱を行ったとする。この場合、第二の算出部500は、ある利用者の歌唱音声に基づいて、当該ある利用者が実際にカラオケ歌唱を行った歌唱時間を算出する。そして、第二の算出部500は、記憶手段10aに記憶されている当該ある利用者の予定歌唱量から、算出した実際の歌唱時間を減ずることで、予定歌唱量の更新を行う。
(予約変更部)
本実施形態における予約変更部600は、演奏予約した楽曲のカラオケ演奏が終了する都度、利用者毎に、未演奏の楽曲の歌唱時間の合計値と予定歌唱量との比較を行い、ある利用者について比較の結果が第2の所定条件を満たさない場合、当該ある利用者についての未演奏の楽曲を変更する(詳細は後述)。なお、この場合の第2の所定条件は、たとえば、「歌唱時間の合計値と予定歌唱量との差が±5秒以内」のように予め一の条件が設定される。
==カラオケ装置における処理について==
次に、図9~図11Eを参照して本実施形態に係るカラオケ装置Kにおける処理について述べる。図9は、カラオケ装置Kにおける処理を示すフローチャートである。以下、利用者U1~利用者U3がカラオケ装置Kを利用する場合を説明する。また、カラオケ装置Kは、サーバ装置Sから図2に示した歌唱履歴SR1~歌唱履歴SR3を受信し、記憶手段10aに記憶しているとする。
第一の算出部100は、利用者U1~利用者U3それぞれの歌唱履歴SR1~歌唱履歴SR3に含まれる楽曲毎のリファレンスデータに基づく歌唱時間を、楽曲毎の歌唱量として算出する(楽曲毎の歌唱時間を算出。ステップ20)。
たとえば、第一の算出部100は、利用者U1の歌唱履歴SR1に含まれる楽曲X01の楽曲ID(ID***X01)に基づいて、記憶手段10aから楽曲X01のリファレンスデータを読み出す。第一の算出部100は、楽曲X01のリファレンスデータに含まれる各音符の音長に基づく各音符の発音時間を求め、その合計値「212」を楽曲X01の歌唱時間として算出する。
図10Aは、利用者U1の歌唱履歴SR1に含まれる楽曲X01~楽曲X09それぞれの歌唱時間を示し、図10Bは、利用者U2の歌唱履歴SR2に含まれる楽曲X11~楽曲X17それぞれの歌唱時間を示し、図10Cは、利用者U3の歌唱履歴SR3に含まれる楽曲X21~楽曲X26それぞれの歌唱時間を示す。
次に、抽出部200は、利用者毎の歌唱時間の合計値が複数の利用者間において所定時間未満となるよう、利用者毎の歌唱履歴それぞれから複数の楽曲を抽出する(歌唱時間に基づいて、利用者毎の歌唱履歴それぞれから複数の楽曲を抽出。ステップ21)。
たとえば、所定時間が「30秒」であるとする。この場合、抽出部200は、利用者U1~利用者U3それぞれの歌唱時間の合計値の差が、いずれも30秒未満となるよう、歌唱履歴SR1~歌唱履歴SR3それぞれから複数の楽曲を抽出する。なお、この例では、抽出する楽曲の数が利用者毎に5曲以内という条件が更に設定されているとする。
たとえば、抽出部200は、利用者U1の歌唱履歴SR1から、楽曲X01(212秒)、楽曲X02(205秒)、楽曲X05(219秒)、及び楽曲X06(250秒)の4曲(歌唱時間の合計値:886秒)を抽出する。また、抽出部200は、利用者U2の歌唱履歴SR2から、楽曲X12(244秒)、楽曲X15(210秒)、楽曲X16(222秒)、及び楽曲X17(200秒)の4曲(歌唱時間の合計値:876秒)を抽出する。更に、抽出部200は、利用者U3の歌唱履歴SR3から、楽曲X21(292秒)、楽曲X23(288秒)、及び楽曲X25(289秒)の3曲(歌唱時間の合計値:869秒)を抽出する。この場合、利用者毎の歌唱時間の合計値の差は最大で17秒であり、「30秒未満」の条件を満たす。
次に、予約部300は、ステップ21で抽出した楽曲に対して、当該楽曲をカラオケ歌唱する利用者の利用者IDを紐付け、当該楽曲の演奏予約を行う(抽出した楽曲の演奏予約。ステップ22)。この例では、第1実施形態の図7Aに示した予約待ち行列と同様に楽曲の演奏予約がなされたとする。
記憶処理部400は、利用者毎に、演奏予約した楽曲の歌唱時間の合計値を予定歌唱量として記憶手段10aに記憶させる(歌唱時間の合計値を予定歌唱量として利用者毎に記憶。ステップ23)。
たとえば、利用者U1について演奏予約した楽曲X01、楽曲X02、楽曲X05、及び楽曲X06の歌唱時間の合計値は「886秒」であり、利用者U2について演奏予約した楽曲X12、楽曲X15、楽曲X16、及び楽曲X17の歌唱時間の合計値は「876秒」であり、利用者U3について演奏予約した楽曲X21、楽曲X23、及び楽曲X25の歌唱時間の合計値は「869秒」である。
よって、記憶処理部400は、利用者U1の予定歌唱量として「886秒」、利用者U2の予定歌唱量として「876秒」、利用者U3の予定歌唱量として「869秒」を記憶手段10aに記憶させる。図11Aは、記憶手段10aに記憶された利用者U1~利用者U3それぞれの予定歌唱量を示している。
カラオケ装置Kは、予約待ち行列に登録されている順に楽曲のカラオケ演奏を開始する(一の楽曲のカラオケ演奏の開始。ステップ24)。
カラオケ装置Kは、図7Aに示した予約待ち行列に基づいて、楽曲X01の楽曲データを記憶手段10aから読み出し、演奏手段10dを制御して楽曲X01のカラオケ演奏を行う。利用者U1は、マイク40を用いて楽曲X01のカラオケ歌唱を行う。
第二の算出部500は、演奏予約した楽曲のカラオケ演奏に伴う利用者の歌唱音声に基づいて、当該利用者の実際の歌唱時間を算出し、算出した実際の歌唱時間を当該利用者の予定歌唱量から減ずる(カラオケ歌唱を行った利用者の予定歌唱量から、実際の歌唱時間を減ずる。ステップ25)。
たとえば、利用者U1が楽曲X01のカラオケ歌唱を行った場合、第二の算出部500は、利用者U1の歌唱音声に基づいて、利用者U1がカラオケ歌唱を行った実際の歌唱時間「214秒」を算出する。第二の算出部500は、算出した実際の歌唱時間「214秒」を利用者U1の予定歌唱量「886秒」から減ずることで予定歌唱量を「672秒」に更新する(図11B参照)。
予約変更部600は、演奏予約した楽曲のカラオケ演奏が終了する都度、利用者毎に、演奏予約した楽曲のうち未演奏の楽曲の歌唱時間の合計値と予定歌唱量との比較を行う(利用者毎に歌唱時間の合計値と予定歌唱量とを比較。ステップ26)。
ある利用者について比較の結果が第2の所定条件を満たさない場合(ステップ27でYの場合)、予約変更部600は、当該ある利用者についての未演奏の楽曲を変更する(ある利用者についての未演奏の楽曲を変更。ステップ28)。
カラオケ装置Kは、予約待ち行列に登録されている全ての楽曲のカラオケ演奏が終了するまで(ステップ29でYの場合まで)、ステップ24からステップ28の処理を繰り返し行う。
ここで、未演奏の楽曲の変更を行わないパターン、及び未演奏の楽曲の変更を行うパターン(「新たな楽曲の追加」、「未演奏の楽曲の削除」、「新たな楽曲の追加、及び未演奏の楽曲の削除」)について具体的に説明する。
[未演奏の楽曲の変更を行わないパターン]
上述の通り、楽曲X01のカラオケ演奏が行われ、利用者U1がカラオケ歌唱を行ったとする。この場合、予約変更部600は、利用者U1~利用者U3毎に、未演奏の楽曲の歌唱時間の合計値と予定歌唱量との比較を行う。
利用者U1について、未演奏の楽曲は、楽曲X01を除く、楽曲X02、楽曲X05、及び楽曲X06の3曲である。予約変更部600は、これらの楽曲の歌唱時間の合計値として「674秒」を求める。予約変更部600は、歌唱時間の合計値「674秒」と、利用者U1の更新された予定歌唱量「672秒」との比較を行い、比較結果として差「+2」を求める。
予約変更部600は、求めた差が第2の所定条件を満たすか否かを確認する。ここで、第2の条件が「歌唱時間の合計値と予定歌唱量との差が±3秒以内」であるとする。この場合、比較結果である差「+2」は、第2の所定条件を満たす。よって、予約変更部600は、利用者U1についての未演奏の楽曲の変更を行わない。
予約変更部600は、利用者U2及び利用者U3についても同様の処理を行う。なお、この場合、利用者U2及び利用者U3はカラオケ歌唱を行っていない。よって、各利用者の歌唱時間の合計値と予定歌唱量との差はいずれも第2の条件を満たす。すなわち、予約変更部600は、利用者U2及び利用者U3についても未演奏の楽曲の変更を行わない。
予約部300は、楽曲X01のカラオケ演奏終了後、楽曲X01を予約待ち行列から削除する。その結果、予約待ち行列は第1実施形態の図7Bに示す通りとなる。
[新たな楽曲を追加するパターン]
利用者U1による楽曲X01のカラオケ歌唱終了後、カラオケ装置Kは楽曲X12のカラオケ演奏を行う。利用者U2は楽曲X12のカラオケ歌唱を開始する。ここで、利用者U2が、楽曲X12のカラオケ演奏の途中でカラオケ歌唱を中止したとする。
この際、第二の算出部500は、利用者U2が楽曲X11の途中までカラオケ歌唱を行った実際の歌唱時間「62秒」を算出する。第二の算出部500は、算出した実際の歌唱時間「62秒」を利用者U2の予定歌唱量「876秒」から減ずることで予定歌唱量を「814秒」に更新する(図11C参照)。
予約変更部600は、利用者U1~利用者U3毎に、未演奏の楽曲の歌唱時間の合計値と予定歌唱量との比較を行う。
利用者U2について、未演奏の楽曲は、楽曲X12を除く、楽曲X15、楽曲X16、及び楽曲X17の3曲である。予約変更部600は、これらの楽曲の歌唱時間の合計値として「632秒」を求める。予約変更部600は、歌唱時間の合計値「632秒」と、利用者U2の更新された予定歌唱量「814秒」との比較を行い、比較結果として差「-182」を求める。
この場合、比較結果である差「-182」は、上述の第2の所定条件を満たさない。よって、予約変更部600は、利用者U2についての未演奏の楽曲の変更を行う。
ここで、比較結果がマイナスの値の場合、利用者U2は予定歌唱量に比べて歌唱時間が短いこととなる。すなわち、利用者U2は、利用者U1及び利用者U3に比べて実際の歌唱量が少なくなる可能性がある。
このような場合、予約変更部600は、利用者U2について予約待ち行列に新たな楽曲の追加を行う。具体的に、予約変更部600は、利用者U2の歌唱履歴SR2に含まれる、予約待ち行列に登録されていない未演奏の楽曲である楽曲X12、楽曲X15、楽曲X16、及び楽曲X17の歌唱時間(図10B参照)のうち、差「-182」に近い歌唱時間である楽曲X14(歌唱時間:184秒)を特定する。予約変更部600は、特定した楽曲X14を予約待ち行列の適当な位置に登録する。
予約変更部600は、利用者U1及び利用者U3についても同様の処理を行う。なお、この場合に利用者U1及び利用者U3はカラオケ歌唱を行っていない。よって、各利用者の歌唱時間の合計値と予定歌唱量との差はいずれも第2の条件を満たす。すなわち、予約変更部600は、利用者U1及び利用者U3については未演奏の楽曲の変更を行わない。
予約部300は、楽曲X12のカラオケ演奏終了後、楽曲X12を予約待ち行列から削除する。その結果、予約待ち行列は第1実施形態の図7Cに示す通りとなる。
[未演奏の楽曲を削除するパターン]
利用者U2による楽曲X12のカラオケ歌唱終了後、カラオケ装置Kは楽曲X21のカラオケ演奏を行う。利用者U3は、楽曲X21のカラオケ歌唱を開始する。ここで、利用者U1が、楽曲X21のカラオケ演奏の途中でカラオケ歌唱に加わったとする。
この際、第二の算出部500は、利用者U3が楽曲X21のカラオケ歌唱を行った実際の歌唱時間「296秒」と、利用者U1が楽曲X21の途中からカラオケ歌唱を行った実際の歌唱時間「218秒」とを算出する。第二の算出部500は、算出した利用者U3の実際の歌唱時間「296秒」を利用者U3の予定歌唱量「869秒」から減ずることで予定歌唱量を「573秒」に更新する。また、第二の算出部500は、算出した利用者U1の実際の歌唱時間「218秒」を利用者U1の予定歌唱量「672秒」から減ずることで予定歌唱量を「454秒」に更新する(図11D参照)。
予約変更部600は、利用者U1~利用者U3毎に、未演奏の楽曲の歌唱時間の合計値と予定歌唱量との比較を行う。
利用者U3について、未演奏の楽曲は、楽曲X21を除く、楽曲X23、及び楽曲X25の2曲である。予約変更部600は、これらの楽曲の歌唱時間の合計値として「577秒」を求める。予約変更部600は、歌唱時間の合計値「577秒」と、利用者U3の更新された予定歌唱量「573秒」との比較を行い、比較結果として差「+4」を求める。
この場合、比較結果である差「+4」は、上述の第2の所定条件を満たす。よって、予約変更部600は、利用者U3についての未演奏の楽曲の変更を行わない。
一方、利用者U1について、未演奏の楽曲は、楽曲X02、楽曲X05、及び楽曲X06の3曲である。予約変更部600は、これらの楽曲の歌唱時間の合計値として「674秒」を求める。予約変更部600は、歌唱時間の合計値「674秒」と、利用者U1の更新された予定歌唱量「454秒」との比較を行い、比較結果として差「+220」を求める。
この場合、比較結果である差「+220」は、上述の第2の所定条件を満たさない。よって、予約変更部600は、利用者U2についての未演奏の楽曲の変更を行う。
ここで、比較結果がプラスの値の場合、利用者U1は予定歌唱量に比べて歌唱時間が長いこととなる。すなわち、利用者U1は、利用者U2及び利用者U3に比べて実際の歌唱量が多くなる可能性がある。
このような場合、予約変更部600は、利用者U1について未演奏の楽曲の削除を行う。具体的に、予約変更部600は、利用者U1の未演奏の楽曲X02、楽曲X05、及び楽曲X06のうち、差「+220」に近い文字数である楽曲X05(歌唱時間:219秒)を特定する。予約変更部600は、特定した未演奏の楽曲X05を予約待ち行列から削除する。
予約変更部600は、利用者U2についても同様の処理を行う。なお、この場合に利用者U2はカラオケ歌唱を行っていない。よって、利用者の歌唱時間の合計値と予定歌唱量との差はいずれも第2の条件を満たす。すなわち、予約変更部600は、利用者U2については未演奏の楽曲の変更を行わない。
予約部300は、楽曲X21のカラオケ演奏終了後、楽曲X21を予約待ち行列から削除する。その結果、予約待ち行列は第1実施形態の図7Dに示す通りとなる。
[新たな楽曲の追加、及び未演奏の楽曲を削除するパターン]
利用者U1及び利用者U3による楽曲X21のカラオケ歌唱終了後、カラオケ装置Kは楽曲X02のカラオケ演奏を行う。ここで、楽曲X02について、利用者U1ではなく利用者U2がカラオケ歌唱を行ったとする。
この際、第二の算出部500は、利用者U2が楽曲X02のカラオケ歌唱を行った実際の歌唱時間「205秒」を算出する。第二の算出部500は、算出した利用者U2の実際の歌唱時間「205秒」を利用者U2の予定歌唱量「814秒」から減ずることで予定歌唱量を「609秒」に更新する(図11E参照)。なお、本来、楽曲X02をカラオケ歌唱すべき利用者U1は、実際にはカラオケ歌唱を行っていない。よって、利用者U1の予定歌唱量は、「454秒」のままである。
予約変更部600は、利用者U1~利用者U3毎に、未演奏の楽曲の歌唱時間の合計値と予定歌唱量との比較を行う。
利用者U2について、未演奏の楽曲は、楽曲X14、楽曲X15、楽曲16、及び楽曲X17の4曲である。予約変更部600は、これらの楽曲の歌唱時間の合計値として「816秒」を求める。予約変更部600は、歌唱時間の合計値「816秒」と、利用者U2の更新された予定歌唱量「609秒」との比較を行い、比較結果として差「+207」を求める。
この場合、比較結果である差「+207」は、上述の第2の所定条件を満たさない。よって、予約変更部600は、利用者U2についての未演奏の楽曲の変更を行う。
予約変更部600は、利用者U2について未演奏の楽曲の削除を行う。具体的に、予約変更部600は、利用者U2の歌唱履歴SR2に含まれる、予約待ち行列に登録されていない未演奏の楽曲である楽曲X14、楽曲X15、楽曲16、及び楽曲X17の歌唱時間のうち、差「+207」に近い歌唱時間である楽曲X17(歌唱時間:207秒)を特定する。予約変更部600は、特定した未演奏の楽曲X17を予約待ち行列から削除する。
一方、利用者U1について、未演奏の楽曲は、楽曲X06の1曲である。予約変更部600は、これらの楽曲の歌唱時間の合計値として「250秒」を求める。予約変更部600は、歌唱時間の合計値「250秒」と、利用者U1の予定歌唱量「454秒」との比較を行い、比較結果として差「-204」を求める。
この場合、比較結果である差「-204」は、上述の第2の所定条件を満たさない。よって、予約変更部600は、利用者U1についての未演奏の楽曲の変更を行う。
予約変更部600は、利用者U1について予約待ち行列に新たな楽曲の追加を行う。具体的に、予約変更部600は、利用者U1の歌唱履歴SR1に含まれる、予約待ち行列に登録されていない未演奏の楽曲である楽曲X03、楽曲X04、楽曲X07、楽曲X08、及び楽曲X09の歌唱時間(図10A参照)のうち、差「-204」に近い歌唱時間である楽曲X08(歌唱時間:209秒)を特定する。予約変更部600は、特定した楽曲X08を予約待ち行列に登録する。
予約変更部600は、利用者U3についても同様の処理を行う。なお、この場合に利用者U3はカラオケ歌唱を行っていない。よって、利用者U3の歌唱時間の合計値と予定歌唱量との差分はいずれも第2の条件を満たす。すなわち、予約変更部600は、利用者U3については未演奏の楽曲の変更を行わない。
予約部300は、楽曲X02のカラオケ演奏終了後、楽曲X02を予約待ち行列から削除する。その結果、予約待ち行列は第1実施形態の図7Eに示す通りとなる。
本実施形態に係るカラオケ装置Kにおいて、第一の算出部100は、楽曲毎のリファレンスデータに基づく歌唱時間を当該楽曲毎の歌唱量として算出し、抽出部200は、利用者毎の歌唱時間の合計値が複数の利用者間において所定時間未満となるよう、利用者毎の歌唱履歴それぞれから複数の楽曲を抽出し、記憶処理部400は、利用者毎に、演奏予約した楽曲の歌唱時間の合計値を予定歌唱量として記憶手段10aに記憶させ、第二の算出部500は、演奏予約した楽曲のカラオケ演奏に伴う利用者の歌唱音声に基づいて、当該利用者の実際の歌唱時間を算出し、算出した実際の歌唱時間を当該利用者の予定歌唱量から減じ、予約変更部600は、演奏予約した楽曲のカラオケ演奏が終了する都度、利用者毎に、未演奏の楽曲の歌唱時間の合計値と予定歌唱量との比較を行い、ある利用者について比較の結果が第2の所定条件を満たさない場合、当該ある利用者についての未演奏の楽曲を変更する。このようなカラオケ装置Kによれば、複数の利用者が一のカラオケ装置を利用する場合に、各利用者の実際の歌唱時間が公平となるよう調整できる。
<変形例>
上記実施形態において、カラオケ装置Kを利用する利用時間を設定することもできる。
[制御手段]
本変形例においてはCPUがメモリに記憶されるプログラムを実行することにより、制御手段10eは、第一の算出部100、抽出部200、予約部300、記憶処理部400、第二の算出部500、予約変更部600、及び設定部700として機能する(図12参照)。
(設定部)
設定部700は、複数の利用者がカラオケ装置Kを利用する利用時間を設定する。
たとえば、カラオケ装置Kを利用する複数の利用者のうち、ある利用者が、リモコン装置50を介して希望する利用時間の値を入力する。設定部700は、入力された値に基づいて利用時間を設定する。利用時間が到来した場合、カラオケ装置Kは、表示装置30やリモコン装置50などにその旨を表示したり、スピーカ20からその旨を音声出力したりする。
(抽出部)
本変形例における抽出部200は、演奏予約される楽曲の演奏時間の合計値が設定された利用時間未満になるように、複数の楽曲を抽出する。
たとえば、設定部700により、利用時間として「1時間30分」が設定されたとする。この場合、抽出部200は、利用者毎の歌唱履歴それぞれから楽曲を抽出する際、利用者毎の歌唱量の合計値が複数の利用者間において第1の所定条件を満たすことと併せて、抽出した全ての楽曲の演奏時間の合計値が「1時間30分」未満となるように、楽曲の抽出を行う。なお、各楽曲の演奏時間は、楽曲データから求めることができる。
(予約変更部)
本変形例における予約変更部は、変更する際に、演奏予約した楽曲の演奏時間の合計値が設定された利用時間未満となるよう、ある利用者についての未演奏の楽曲を変更する。
具体的に、予約変更部600は、新たな楽曲の追加を行う場合、それぞれの演奏時間を参照し、当該新たな楽曲を追加した場合であっても、設定された利用時間未満となるような演奏時間の楽曲を特定し、予約待ち行列に登録する。
たとえば、設定された利用時間が「1時間30分」であり、現在演奏予約されている楽曲の演奏時間の合計値が「1時間25分」であるとする。また、予約変更部600は、ある利用者について新たな楽曲の追加を行うとする。
この場合、予約変更部600は、当該ある利用者の歌唱履歴に含まれている楽曲それぞれの歌唱量に基づいて、追加する楽曲を特定する。
ここで、予約変更部600は、特定された楽曲の演奏時間を求める。そして、予約変更部600は、求めた演奏時間を、現在演奏予約されている楽曲の演奏時間の合計値「1時間25分」に加えた場合に、設定された利用時間「1時間30分」を越えるか否かを判断する。
設定された利用時間「1時間30分」を越えない場合(すなわち、特定した楽曲の演奏時間が5分以下の場合)、予約変更部600は、特定した楽曲を予約待ち行列に登録する。一方、設定された利用時間「1時間30分」を越える場合(すなわち、特定した楽曲の演奏時間が5分より長い場合)、予約変更部600は、ある利用者の歌唱履歴から、先に特定した楽曲以外の楽曲(演奏時間が5分以下の楽曲)を改めて特定する。
以上のように、本変形例におけるカラオケ装置Kは、複数の利用者がカラオケ装置Kを利用する利用時間を設定する設定部700を有する。また、抽出部200は、演奏予約される楽曲の演奏時間の合計値が設定された利用時間未満になるように、複数の楽曲を抽出し、予約変更部600は、変更する際に、演奏予約した楽曲の演奏時間の合計値が設定された利用時間未満となるよう、ある利用者についての未演奏の楽曲を変更する。このようなカラオケ装置Kによれば、限られた利用時間の中で、各利用者が極力公平にカラオケ歌唱を行うことができる。
<その他>
上記実施形態では、歌唱量として、歌唱文字数または歌唱時間のいずれかを用いる例について述べた。一方、カラオケ装置Kは、歌唱文字数及び歌唱時間の両方を歌唱量として各種処理を実行してもよい。また、上記実施形態では、第2の条件として、「歌唱文字数の合計値と予定歌唱量との差が±10字以内」、あるいは「歌唱時間の合計値と予定歌唱量との差が±5秒以内」といった値を設定したが、第2の条件を満たさない場合でも、その差が小さい場合は、楽曲が該当しないことがある。そこで、第2の条件を、たとえば「歌唱文字数の合計値と予定歌唱量との差がマイナス値の場合は、当該利用者の予約待ち行列に登録されている未演奏の楽曲のうち、最も少ない歌唱文字数または歌唱時間以内、プラス値の場合は、当該利用者の歌唱履歴に含まれる、予約待ち行列に登録されていない未演奏の楽曲のうち、最も少ない歌唱文字数または歌唱時間以内」としてもよい。第2条件をこのように設定することで、第2の条件を満たさない場合には、必ず何れかの楽曲が該当するため、確実に未演奏の楽曲の変更を行うことができる。
上記実施形態は、例として提示したものであり、発明の範囲を限定するものではない。上記の構成は、適宜組み合わせて実施することが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。上記実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。