以下、本発明を具現化した実施の形態について、図面を参照して説明する。尚、参照する図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている装置の構成、各種処理のフローチャートなどは、単なる説明例である。本発明をそれのみに限定する趣旨ではない。
<カラオケシステム1の概略>
本発明のカラオケシステム1は、一定期間のあいだあまり歌唱していないユーザに対して、そのユーザの嗜好に合うような楽曲をレコメンドする。ユーザは、好んで歌唱する楽曲の種類に応じて、予め複数のユニットに分類されている。たとえば、J−POPの男性の歌手の楽曲をよく歌うユーザが属するユニット、J−POPの女性の歌手の楽曲をよく歌うユーザが属するユニット、演歌をよく歌うユーザが属するユニット、アニメの主題歌をよく歌うユーザが属するユニット等の様々なユニットにユーザは分類される。カラオケステム1は、ユニットテーブル10と、ユニット・歌手テーブル20とを予め記憶している。ユニットテーブル10は、各ユーザがどのユニットに属するかを示す情報である。ユニット・歌手テーブル20は、各ユニットのユーザが、どのような歌手の楽曲を良く歌唱するかを示したテーブルである。カラオケシステム1は、ユニットテーブル10と、ユニット・歌手テーブル20とに基づいて、各ユーザに適した楽曲をレコメンドする。
図1を参照して、本発明を具現化した実施形態であるカラオケシステム1の概略について説明する。カラオケシステム1は、カラオケルームKRに設置されたカラオケ装置100と、リモコン200と、ホストサーバ300とを有する。
カラオケ装置100と、リモコン200とは、たとえばLocal Area Network(LAN)等のネットワークNW1を介し、互いに情報を送受信可能に接続されている。カラオケ装置100やリモコン200と、ホストサーバ300とは上記ネットワークNW1と、たとえば通信ネットワーク等のネットワークNW2とを介して、互いに情報を送受信可能に接続されている。
カラオケ装置100は、制御部101と、音声入力部102と、表示部103と、音声出力部104と、操作部105と、通信制御部106と、記憶装置107とを備えている。
制御部101は、図示しないCPUとRAMとROMとを備えている。制御部101は、RAMの一時記憶機能を利用しつつ、ROMや記憶装置107に予め記憶された各種のプログラムを実行する。これにより、制御部101は、カラオケ装置100全体の制御を行う。
記憶装置107は、たとえばHard Disk Drive(HDD)を用いることが出来る。記憶装置107には、歌唱履歴テーブル40や、制限ユニットのユニットIDなどが記憶される。歌唱履歴テーブル40は、ユーザがどのような楽曲を歌唱したかを示す歌唱履歴を記録したテーブルである。歌唱履歴テーブル40は、後述の楽曲再生処理によって、ユーザによって予約された楽曲が再生される時に更新される。歌唱履歴テーブル40や制限ユニットの詳細については後述する。
音声入力部102は、マイク等を備えたユーザの歌唱音声を入力する装置である。
表示部103は、たとえば液晶ディスプレイなどを備えた表示装置である。表示部103は、制御部101の指示に従って各種の表示を行う。
音声出力部104は、たとえば、アンプやスピーカーなどから構成される。音声出力部104は、制御部101の指示に従って、楽曲の再生や、ユーザの歌唱音声の出力を行う。
操作部105は、複数のキーやスイッチなどを備えている。操作部105は、ユーザの操作に従った信号を制御部101に出力する。
通信制御部106は、リモコン200やホストサーバ300との間で、ネットワークNW1やネットワークNW2を介して行われる通信の制御を行う装置である。通信制御部106としては、ネットワークカード等を採用することが出来る。
リモコン200は、ユーザが楽曲の選択等を行うための装置である。ユーザはリモコン200を操作して楽曲の予約等の各種の操作を行うことができる。リモコン200は、制御部201と、表示部203と、操作部205と、通信制御部206と、記憶装置207とを備えている。
制御部201は、図示しないCPU、RAM、ROMを備えている。制御部201は、RAMの一時記憶機能を利用しつつ、ROMや記憶装置207に予め記憶された各種のプログラムを実行する。これにより制御部201は、リモコン200全体の制御を行う。
表示部203は、たとえば液晶ディスプレイなどを備えた表示装置である。表示部103は、制御部201の指示に従って各種の表示を行う。
通信制御部206は、カラオケ装置100やホストサーバ300との間で、ネットワークNW1,や、ネットワークNW2を介して行われる通信の制御を行う装置である。通信制御部206としては、周知の無線ネットワークカード等を採用することが出来る。
記憶装置207は、不揮発性の記憶装置である。記憶装置207としては、たとえばNAND型のフラッシュメモリーなどを採用するのが好適である。
ホストサーバ300は、制御部301と、通信制御部306と、記憶装置307とを備えている。
制御部301は、図示しないCPU、RAM、ROMを備えている。制御部301は、RAMの一時記憶機能を利用しつつ、ROMや、記憶装置307に予め記憶された各種のプログラムを実行する。これにより、制御部301は、ホストサーバ300全体の制御を行う。
通信制御部306は、カラオケ装置100やリモコン200との間で、ネットワークNW1や、ネットワークNW2を介して行われる通信の制御を行う装置である。通信制御部406としては、周知のネットワークカード等を採用することが出来る。
記憶装置307は、たとえばHDDである。記憶装置307は、ユニットテーブル10、ユニット・歌手テーブル20、ユーザ過去歌唱歌手テーブル30、楽曲マスターテーブル50等の各種の情報を記憶している。また、記憶装置307は、楽曲のデータである楽曲データや、ユーザIDにひもづけられた認証情報を記憶している。認証情報は、ログインするユーザの認証を行う際に利用される。
ユニットテーブル10は、各ユーザが、そろぞれ、どのユニットに属するかを示した情報である。図2に示すように、ユニットテーブル10には、ユーザIDと、そのユーザの属するユニットのユニットIDとが対応付けられている。ユニットテーブル10は、カラオケシステム1の管理者により、予めホストサーバ300の記憶装置307に記憶されている。カラオケシステム1の管理者は、全国に配置されているカラオケ装置100から、所定のタイミングで後述の歌唱履歴テーブル40の歌唱履歴を抽出し、各地のカラオケ装置100から抽出した歌唱履歴と、過去に取得した歌唱履歴に基づいて、ユニットテーブル10を作成すればよい。若しくは、カラオケシステム1の管理者は、各ユーザにどのような楽曲が好きなのかについてアンケートを実施し、そのアンケート結果に基づいてユニットテーブル10を作成すればよい。
ユニット・歌手テーブル20は、何れのユニットのユーザに、何れの歌手の楽曲が良く歌われているかを示す情報である。図3に示すように、ユニット・歌手テーブル20では、ユニットIDに対して、第1歌手ID、第2歌手ID、第3歌手ID、第4歌手IDが、ひもづけられている。第1歌手IDは、そのユニットのユーザに最もよく歌唱されている歌手の歌手IDである。第2歌手IDは、そのユニットのユーザに2番目によく歌唱されている歌手の歌手IDである。第3歌手IDは、そのユニットのユーザに3番目によく歌唱されている歌手の歌手IDである。第4歌手IDは、そのユニットのユーザに4番目によく歌唱されている歌手の歌手IDである。ユニット・歌手テーブル20は、カラオケシステム1の管理者により、予めホストサーバ300の記憶装置307に記憶されている。カラオケシステム1の管理者は、全国に配置されているカラオケ装置100から、所定のタイミングで後述の歌唱履歴テーブル40の歌唱履歴を抽出し、各地のカラオケ装置100から取得した歌唱履歴と、過去に取得した歌唱履歴に基づいて、ユニット・歌手テーブル20を作成すればよい。
ユーザ過去歌唱歌手テーブル30は、各ユーザが過去に歌唱したことのある歌手を特定するための情報である。図4に示すように、ユーザ過去歌唱歌手テーブル30では、ユーザIDに対して、第1歌唱歌手ID、第2歌唱歌手ID、第3歌唱歌手ID、が紐付けられている。第1歌唱歌手IDは、そのユーザが過去に最もよく歌唱した歌手の歌手IDである。第2歌唱歌手IDは、そのユーザが過去に2番目によく歌唱した歌手の歌手IDである。第3歌唱歌手IDは、そのユーザが過去に3番目によく歌唱した歌手の歌手IDである。第4歌唱歌手IDは、そのユーザが過去に4番目によく歌唱した歌手の歌手IDである。ユーザ過去歌唱歌手IDテーブル30は、カラオケシステム1の管理者により、予めホストサーバ300の記憶装置307に記憶されている。カラオケシステム1の管理者は、全国に配置されているカラオケ装置100から、所定のタイミングで後述の歌唱履歴テーブル40の歌唱履歴を抽出し、各地のカラオケ装置100から抽出した歌唱履歴と、過去に抽出した歌唱履歴に基づいて、ユーザ過去歌唱歌手IDテーブル20を作成すればよい。
歌唱履歴テーブル40は、ユーザの歌唱履歴を記録したテーブルである。図5に示すように、歌唱履歴テーブル40には、ユーザID、楽曲ID、歌手ID、歌唱日時からなる歌唱履歴が記録されている。歌唱履歴テーブル40には複数の歌唱履歴から構成される。ユーザIDは、ユーザを識別するための情報である。楽曲IDは、楽曲を識別するための情報である。歌手IDは、その楽曲の歌手を識別する情報である。歌唱日時は、歌唱が行われた日時を示す情報である。歌唱履歴テーブル40は、カラオケ装置100の記憶装置107に記憶されている。歌唱履歴テーブル40は、利用者の楽曲の選択操作に伴って予約さされた楽曲が再生されたときに更新される。
楽曲マスターテーブル50は、カラオケシステム1において歌唱できる楽曲に関する各種の情報を示す情報である。楽曲マスターテーブル50には、カラオケシステム1において配信できる楽曲の楽曲IDと、その楽曲の歌手IDと、カラオケシステム1においてその楽曲が登録された日時である登録日時と、が記憶されている。カラオケシステム1は、登録された楽曲を各カラオケ装置1に配信を開始する。楽曲IDは、楽曲を識別するための情報である。楽曲マスターテーブル50は、カラオケシステム1の管理者により、予めホストサーバ300の記憶装置307に記憶されている。楽曲マスターテーブル50は、カラオケシステム1に新譜が登録される都度、管理者により更新される。
<カラオケ装置100の動作説明>
次に図7から図10を参照し、カラオケ装置100の動作について説明する。図7及び図8に示したレコメンド処理は、ユーザにレコメンドする楽曲を決定する処理である。制御部101は、最初の一人のユーザがログインをしたときに、レコメンド処理を開始する。
尚、ユーザは、リモコン200を操作して、「ログイン」のメニュー項目を選択した後、自身のユーザIDと、認証情報とを入力するログイン操作をすることで、ログインすることができる。入力されたユーザIDと、認証情報とは、ホストサーバ300へ送信され、ホストサーバ300において認証が行われる。また、ユーザは、リモコン200を操作して、「ログアウト」のメニュー項目を選択した後、自身のユーザIDを入力するログアウト操作をすることで、ログアウトすることができる。
制御部101は、現在ログインしているユーザであるログインユーザのユーザIDをRAMに記憶している。制御部101は、ログイン操作またはログアウト操作に伴って、RAMに記憶しているログインユーザのユーザIDを更新する。これらの処理は、レコメンド処理と並行して制御部101が行う。
レコメンド処理を開始すると、制御部101は、歌唱回数カウンタZに0をセットし、期間カウンタTCに0をセットする(S100)。セットされた値はRAMに格納される。尚、歌唱回数カウンタZは、後述の楽曲再生処理において、楽曲が再生される毎に1つカウントアップされる。即ち、歌唱回数カウンタZには、レコメンド処理を開始してからの楽曲の再生の累積回数が記憶されることになる。
歌唱回数カウンタZと、期間カウンタTCに0をセットした後、制御部101は、他のユーザのログインの待ち時間である所定時間が経過したか否かを判断する(S101)。所定時間として、たとえば5分経過したか否かを判断する。
所定時間経過していない場合は(S101:NO)、制御部101は、所定時間経過するまで待機する。
所定時間経過した場合は(S101:YES)、制御部101は、ログイン中のユーザであるログインユーザが全てログアウトしたか否かを判断する(S102)。
全ログインユーザがログアウトしたと判断した場合(S102:YES)、制御部101は、レコメンドすべきログインユーザがいないのでレコメンド処理を終了する。レコメンド処理を就労した後、制御部101は、再度、何れかのユーザがログインしたときに、再びレコメンド処理を開始する。
全ログインユーザがログアウトしていないと判断した場合(S102:NO)、制御部101は、現在のログインユーザの数を取得する(S103)。制御部101は、RAMに格納されているログインユーザのユーザIDをカウントすることで、現在のログインユーザの数を取得する。現在のログインユーザの数はRAMに記憶される。
ログインユーザの数を取得後、制御部101は、1期間歌唱回数Tをセットする(S104)。本実施形態においては、1期間歌唱回数Tは、S103において取得した現在のログインユーザ数×2で算出される値がセットされる。セットされた値はRAMに格納される。例えば、ログインユーザが3人いる場合、1期間歌唱回数Tは3×2=6となる。
次に、制御部101は、Z−(T×TC)≧Tの条件を満たすか否かを判断する(S105)。上述の条件を満たさない場合は(S105:NO)、S102に戻る。上述したように歌唱回数カウンタZには、楽曲の再生の累積回数がセットされている。例えば、再生の累積回数が5回、ログインユーザが3人、期間カウンタTCが0の場合は、Z−(T×TC)=5、T=6となるため、上述の条件を満たさない。歌唱回数の累積回数が1回増えて、歌唱回数の累積回数が6回、ログインユーザが3人、期間カウンタTCが0の場合は、Z−(T×TC)=6、T=6となるため上述の条件を満たす。
制御部101は、上述の条件が満たされるまで待機することにより、1期間歌唱回数Tの分だけ新たな歌唱履歴が貯まるまで待機する。上述したように、歌唱履歴テーブル30の歌唱履歴は後述の楽曲再生処理において楽曲が再生される都度更新される。
所定回数の楽曲の再生が行われ、上述の条件を満たす場合は(S105:YES)、制御部101は、各ログインユーザの1期間の歌唱数を取得する(S106)。具体的には、最近の1期間歌唱回数T分の歌唱履歴の中の、ログインユーザ毎の歌唱履歴の数を取得する。取得したログインユーザ毎の歌唱数は、RAMに記憶する。
各ログインユーザの1期間の歌唱数を取得した後(S106)、制御部101は、期間カウンタTCを1つカウントアップする(107)。これにより、制御部101は、次回のS105の処理において、次の1期間歌唱回数Tの分だけ新たな歌唱履歴が歌唱履歴テーブル40に追加されるまで待機することができる。
期間カウンタTCをカウントアップした後、制御部101は、S106で取得した歌唱数が2未満のログインユーザがいるか否かを判断する(S108)。カラオケ装置100は、1期間歌唱回数Tの中で歌唱数が2未満のログインユーザを、歌唱を促すために楽曲をレコメンドすべきターゲットユーザとして抽出する。
歌唱数が2未満のログインユーザが一人もいないと判断した場合(S108:NO)、楽曲の歌唱を促す必要がないので、S102に戻る。そして、次の1期間歌唱回数Tの分だけ新たな歌唱履歴が追加されるまで待機する。
歌唱数が2未満のログインユーザが一人でもいると判断した場合(S108:YES)、制御部101は、歌唱履歴テーブル40を参照し、歌唱数が1以下のログインユーザであるターゲットユーザのユーザIDを取得する(S109)。取得したターゲットユーザのユーザIDはRAMに記憶される。
ターゲットユーザのユーザIDを取得した後、制御部101は、取得したユーザIDに対応するユニットIDを取得する(S110)。具体的には、制御部101は、取得したユーザIDをホストサーバ300へ送信し、ホストサーバ300から、送信したユーザIDに対応するユニットIDを取得する。尚、カラオケ装置100からユーザIDを受信したホストサーバ300は、ユニットテーブル10を参照し、受信したユーザIDに対応するユニットIDをカラオケ装置100に送信する。制御部101は、ホストサーバ300から受信したユニットIDをRAMに記憶する。
ユニットIDを取得した後、制御部101は、制限ユニットユーザ判定処理を行う(S111)。制限ユニットユーザ判定処理は、レコメンドを制限すべきユーザを、ターゲットユーザから除外するための処理である。マニアックな嗜好をもつユーザの中には、公の場で自分の嗜好がさらけ出されることを恐れるユーザもいる。このようなユーザに対しては、そのユーザの嗜好が他人に知られないように、ユーザの嗜好に合った楽曲をあえてレコメンドしないほうが望ましい。詳細は後述するが、制限ユニットユーザ判定処理は、このような制限ユニットに属するユーザを、所定の条件に基づいてターゲットユーザから除外する処理である。
次に、図8を参照し、制限ユニットユーザ判定処理(S111)を行った後のレコメンド処理について説明する。制限ユニットユーザ判定処理を行った後、制御部101は、変数Cに0をセットする(S119)。変数Cにセットされた値は、RAMに記憶される。
変数Cに0をセットした後、制御部101は、変数Cの値が制限ユニットユーザ判定処理後のターゲットユーザの数よりも少ないか否かを判断する(S120)。
変数Cの値が制限ユニットユーザ判定処理後のターゲットユーザの数よりも少ない場合は(S121:YES)、一人目のターゲットユーザのユニットに対応する歌手のリストをユニット・歌手テーブル20から取得する(S121)。具体的には、一人目のターゲットユーザのユニットIDをホストサーバ300へ送信し、ホストサーバ300から返信されてくる第1歌手ID、第2歌手ID、第3歌手ID、第4歌手IDをRAMに記憶する。尚、カラオケ装置100からユニットIDを受信したホストサーバ300は、ユニット・歌手テーブル20を参照し、受信したユニットIDに対応する第1〜第4歌手IDをカラオケ装置100へ送信する。
第1〜第4歌手IDを取得した後、制御部101は、ユーザ過去歌唱歌手テーブル30から、そのターゲットユーザが過去に歌唱したことのある歌手のリストを取得する(S122)。具体的には、そのターゲットユーザのユーザIDをホストサーバ300へ送信し、ホストサーバ300から返信される第1歌唱歌手ID、第2歌唱歌手ID、第3歌唱歌手IDを受信し、それらをRAMに記憶する。ホストサーバ300は、ターゲットユーザのユーザIDを受信すると、ユーザ過去歌唱歌手テーブル40を参照し、受信したユーザIDに対応する第1歌唱歌手ID、第2歌唱歌手ID、第3歌唱歌手IDを送信する。
ホストサーバ300から、第1〜第4歌手IDと、第1〜第3歌唱歌手IDを受信すると、制御部101は、第1〜第4歌手IDの中に、第1〜第3歌唱歌手IDの何れかが含まれるか否かを判断する(S123)。
第1〜第4歌手IDの中に、第1〜第3歌唱歌手IDの何れかが含まれる場合は(S123:YES)、制御部101は、第1〜第4歌手IDの中で、第1〜第3歌唱歌手IDに含まれる歌手IDに対応する歌手の楽曲をレコメンド楽曲として決定する(S124)。具体的には、第1〜第4歌手IDの中で第1〜第3歌唱歌手IDに含まれる歌手IDをホストサーバ300へ送信し、ホストサーバ300から返信される楽曲IDを、レコメンド楽曲リストとしてRAMに記憶する。尚、ホストサーバ300は、カラオケ装置100から歌手IDを受信すると、楽曲マスターテーブル50を参照し、受信した歌手IDに対応付けら得ている楽曲IDを抽出し、抽出した楽曲IDをカラオケ装置100へ送信する。この際、ホストサーバ300は、受信した歌手IDに対応する楽曲IDの中で、登録日時が最近のものから3つの楽曲IDを抽出する。尚、これはあくまで一例であり、ホストサーバ300は、該当する楽曲IDの中で、登録日時は考慮せずにランダムに所定数の楽曲IDを抽出してもよい。
第1〜第4歌手IDの中に、第1〜第3歌唱歌手IDの何れかが含まれない場合は(S123:NO)、制御部101は、第1〜第4歌手IDの歌手の楽曲をレコメンド楽曲として決定する(S125)。具体的には、第1〜第4歌手IDをホストサーバ300に送信し、ホストサーバ300から返信される楽曲IDをレコメンド楽曲リストとしてRAMに記憶する。第1〜第4歌手IDを受信したホストサーバ300は、楽曲マスターテーブル50を参照し、受信した歌手IDに対応する楽曲IDを抽出する。尚、この際、ホストサーバ300は、受信した歌手IDに対応する楽曲IDの中で、登録日時が最近のものから3つの楽曲を抽出する。これはあくまで一例である。
S124、S125で、ターゲットユーザに対応するレコメンド楽曲リストを記憶した後、制御部101は、変数Cを一つカウントアップして(S127)、S120に戻る。
制御部101は、S121から、S125までの処理をターゲットユーザの数だけ繰り返し実行することにより、全てのターゲットユーザに対応するレコメンド楽曲リストをRAMに記憶する。
レコメンド楽曲リストに記録された楽曲は、後述の楽曲再生処理において、各ターゲットユーザに対してレコメンドされる。
変数Cがターゲットユーザの数と等しくなった場合(S120:NO)、制御部101は、上述のS102の処理(図7参照)に戻る。そして、次の1期間歌唱回数Tの分だけ、新たな歌唱履歴が蓄積されるまで待機する。
次に、図9を参照して、上述のS111において実行される制限ユニットユーザ判定処理について説明する。制限ユニットユーザ判定処理を開始すると、制御部101は、制限ユニットであるターゲットユーザが存在するか否かを判断する(S200)。制限ユニットのユニットIDは、予め記憶装置107に記憶されている。制御部101は、S110において取得したターゲットユーザのユニットIDと、記憶装置107に予め記憶されている制限ユニットのユニットIDとを参照し、ターゲットユーザの中に制限ユニットに属するユーザが存在するか否かを判断する。
制限ユニットに属するターゲットユーザが存在しない場合は(S200:NO)、上述のレコメンド処理のS119に移行する。制限ユニットに属するターゲットユーザが存在する場合は(S200:YES)、制限ユニットに属するターゲットユーザのユーザIDをRAMに記憶する。
制限ユニットに属するターゲットユーザのユーザIDを記憶した後、制御部101は、変数Mに0をセットする(S202)。変数Mにセットされた値はRAMに記憶される。
変数Mに0をセットした後、制御部101は、変数Mが制限ユニットに属するターゲットユーザの数よりも小さいか否かを判断する(S203)。
変数Mが、制限ユニットに属するターゲットユーザの数よりも小さい場合は(S203:YES)、制御部101は、その制限ユニットに属するターゲットユーザが、1期間内で楽曲を歌唱しているか否かを判断する(S204)。具体的には、歌唱履歴テーブル40の最近の1期間歌唱回数Tの分の歌唱履歴の中に、そのユーザの歌唱履歴が含まれているか否かに基づいて判断する。
そのターゲットユーザが、1期間内で楽曲を歌唱していると判断した場合(S204:YES)、制御部101は、制限ユニット楽曲判断処理を行う(S205)。制限ユニット楽曲判断処理は、そのターゲットユーザが歌唱した楽曲が、そのターゲットユーザが属する制限ユニットに対応する楽曲であるか否かを判断する処理である。制限ユニット楽曲判断処理の詳細は後述する。制限ユニット楽曲判断処理においては、ターゲットユーザが歌唱した楽曲が、そのターゲットユーザが属する制限ユニットに対応する楽曲である場合には、変数Nに1がセットされる。また、ターゲットユーザが歌唱した楽曲が、そのターゲットユーザが属する制限ユニットに対応する楽曲でない場合には、変数Nに0がセットされる。
制限ユニット楽曲判断処理の後、制御部101は、変数Nに0がセットされているか否かを判断する(S206)。
変数Nに0がセットされている場合、そのターゲットユーザは、制限ユニットに属しているにも係わらず、その制限ユニットにひもづけられた楽曲を歌唱していないことになる。すなわち、そのターゲットユーザは、その場では本性をまだ現していないことになる。このような状況においては、そのユーザの嗜好が他人に知られないように、そのユーザの嗜好に合った楽曲をあえてレコメンドしないほうが望ましい。
したがって、変数Nに0がセットされている場合は(S206:YES)、そのユーザをターゲットユーザから削除する(S207)。具体的には、S110においてRAMに記憶したターゲットユーザのユーザID群の中から、そのユーザのユーザIDを削除する。
また、上述のS204において、1期間内に1楽曲も歌唱していない場合は(S204:NO)、そのユーザが本性を現しているか否かを判断できないので、この場合も、そのユーザをターゲットユーザから削除する(S207)。
一方、S206において、N=0でないと判断された場合(S206:NO)、すなわち、変数Nに1がセットされている場合は、そのユーザは周りの目を気にすることなく、自身の嗜好にあった楽曲を歌唱している。この場合は、そのユーザをターゲットユーザからはずすことなく、S208へ移行する。
S208では、制御部101は、変数Mを一つカウントアップして上述のS203に戻る。制御部101は、変数Mが制限ユニットに属するターゲットユーザの数と等しくなるまで、S203からS208の処理を繰り返すことにより、S201で記憶した全ての制限ユニットのターゲットユーザに対して、ターゲットユーザから除外するか否かを判断し、必要に応じてターゲットユーザから除外する。
制限ユニットの全てのターゲットユーザに対してS204からS207の処理を繰り返した後(S203:NO)、レコメンド処理に戻る。
次に、制限ユニット楽曲判断処理について、図10を参照して説明する。先ず、制限ユニット楽曲判断処理を開始すると、制御部101は、変数Nに0をセットする(S300)。変数Nにセットされた値はRAMに記憶される。
次に、制御部101は、ユーザが歌唱した楽曲の歌手を楽曲マスターテーブル50から取得する(S301)。具体的には、ユーザが歌唱した楽曲の楽曲IDを、ホストサーバ300に送信し、ホストサーバ300から返信される歌手IDをRAMに記憶する。ホストサーバ300は、カラオケ装置100から楽曲IDを受信すると、楽曲マスターテーブル50を参照し、その楽曲IDに対応する歌手IDを抽出する。そして、抽出した歌手IDをカラオケ装置100へ返信する。
次に、制御部101は、ユニット・歌手テーブル20から、そのユーザの属する制限ユニットにひもづけられた第1歌手IDと、第2歌手IDと、第3歌手IDと、第4歌手IDとを取得する(S302)。具体的には、ユーザが属する制限ユニットのユニットIDをホストサーバ300に送信し、ホストサーバ300から返信される第1〜第4歌手IDをRAMに記憶する。ユーザが属する制限ユニットのユニットIDを受信したホストサーバ300は、ユニット・歌手テーブル20を参照し、受信したユニットIDにひもづけられている第1〜第4歌手IDをカラオケ装置100に返信する。
ユーザが歌唱した楽曲の歌手IDと、そのユーザが属する制限ユニットにひもづけられている第1〜第4歌手IDとを取得した後、制御部101は、第1〜第4歌手IDの何れかの歌手IDに、ユーザが歌唱した楽曲の歌手IDが含まれているか否かを判断する(S303)。
第1〜第4歌手IDの何れかの歌手IDに、ユーザが歌唱した楽曲の歌手IDが含まれている場合は(S303:YES)、変数Nに1をセットして(S304)、制限ユニットユーザ判定処理に戻る。変数Nにセットされた値はRAMに記憶される。
第1〜第4歌手IDの何れかの歌手IDに、ユーザが歌唱した楽曲の歌手IDが含まれていない場合は(S303:NO)、変数Nには0をセットしたまま、制限ユニットユーザ判定処理に戻る。
次に、カラオケ装置100の制御部101が行う楽曲再生処理について説明する。楽曲再生処理は、上述のレコメンド処理と並行して実行される。楽曲再生処理を開始すると、制御部101は、先ず、利用者により予約された楽曲があるか否かを判断する(S400)。
ユーザにより予約された楽曲がない場合(S400:NO)、制御部101は、ユーザからの予約があるまで待機する。ユーザは、リモコン200を操作して、歌唱した楽曲を選択することで、歌唱する楽曲を予約することができる。
ユーザにより予約された楽曲がある場合(S400:YES)、制御部101は、ユーザにより予約された楽曲の再生を行う。楽曲の再生は、ホストサーバ300から受信した楽曲データに基づいて行われる。カラオケ装置100は、楽曲の再生を行うためにホストサーバから必要に応じて楽曲データを取得する。ユーザは、楽曲の再生に合わせて、歌唱することができる。
楽曲の再生を行った後、制御部101は、歌唱回数カウンタZの値を1カウントアップする(S402)。
カウンタZの値を1カウントアップしたあと、制御部101は、S401で再生した楽曲についての歌唱履歴を歌唱履歴テーブル40に追加する(S403)。
次に、制御部101は、レコメンド楽曲があるか否かを判断する(S404)。レコメンド楽曲がない場合は(S404:NO)、上述のS400に戻る。レコメンド楽曲があるか否かについては、RAMに記憶されているレコメンド楽曲リストがあるか否かに基づいて判断することができる。レコメンド楽曲リストは、上述のS124、S125において記憶される。
レコメンド楽曲がある場合は(S404:YES)、制御部101は、表示部103に所定時間の間、レコメンド楽曲をユーザに対して表示する(S405)。レコメンド楽曲リストに複数の楽曲が記録されている場合、記録されているすべての楽曲を表示してもよい。若しくは、記録している楽曲のうち一部の楽曲のみを表示して、残りの楽曲については、次回以降に表示するようにしてもよい。レコメンド楽曲をユーザに対して表示した後、上述のS400に戻る。
以上、説明したようにカラオケシステム1によれば、ユーザが過去に歌唱したことがない楽曲や、ユーザが過去に歌唱したことがない歌手の楽曲であっても、ユーザが好んで歌唱すると推測できる楽曲をレコメンドできる。
本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加え得ることは勿論である。
上述の実施形態では、ユニットIDに対して歌手IDをひもづけたユニット・歌手テーブルを用いて、レコメンドする楽曲を抽出したが、本発明はこれに限るものではない。たとえば、ユニットIDに対して、そのユニットのユーザによく歌唱される楽曲の楽曲IDを直接ひもづけたユニット・楽曲テーブルを用いてレコメンドする楽曲を抽出するようにしてもよい。
また、上述の実施形態では、制限ユニットのユーザに対しては、その制限ユニットのユーザが自身のユニットに対応する楽曲を歌唱していないときは、楽曲をレコメンドしないようにしたが、本発明はこれに限るものではない。たとえば、制限ユニットのターゲットユーザに対しては、楽曲を歌唱しているか歌唱していないかに係わらず必ずレコメンドを行わないようにしてもよい。もしくは、上述のレコメンド処理においては制限ユニットユーザ判定処理を行わず、S109で取得した全てのターゲットユーザに対して楽曲をレコメンドするようにしてもよい。
また、上述の実施形態では、1期間歌唱回数Tとして、S103において取得した現在のログインユーザ数×2で算出される値を用いて説明したが、本発明はこれに限るものではない。1期間歌唱回数Tとしては、たとえば予め設定された固定値を用いてもよい。
また、上述の実施形態では、所定回数の歌唱履歴のなかで、歌唱数が少ないユーザに対してレコメンドしたが、本発明はそれに限定されるものではない。たとえば、所定時間の間に歌唱数が少ないユーザに対してレコメンドを行うようにしてもよい。
また、上述のS204においては、1期間歌唱回数の間に制限ユニットのユーザが歌唱していた場合に、そのユーザに対して楽曲をレコメンドしたが、本発明は、これに限らない。たとえば、所定時間の間にそのユーザが、自身のユニットに対応する楽曲を歌唱している場合は、ユーザに対して楽曲をレコメンドするようにしてもよい。