以下、本発明の一実施形態について、図面を参照して説明する。図1を参照し、配信システム1について説明する。配信システム1は、配信装置11および再生装置12、13、14(以下、総称して「再生装置15」ともいう。)を備える。再生装置12、13、14は、それぞれ、ユーザ21、22、23(以下、総称して「ユーザ24」ともいう。)によって使用される。配信装置11および再生装置15は、IP網などのネットワーク20を介して互いに通信可能に接続する。配信装置11は再生装置15に対して、ダウンロード方式やストリーミング方式等の配信方式によって楽曲を配信する。再生装置15は、配信装置11から配信された楽曲を、スピーカ158から出力する。配信装置11の一例として、周知の配信サーバが挙げられる。再生装置15の一例として、周知のスマートフォン、タブレット端末、パーソナルコンピュータなどの装置が挙げられる。
配信装置11は、楽曲の生音の波形を示すデータ(以下、「楽曲データ」という。)を、第一テーブル31(図2参照、後述)に記憶する。楽曲データの具体例として、曲のデータ、声のデータ、効果音のデータなどが挙げられる。配信装置11は、第一テーブル31から楽曲データを読み出し、再生装置15に対して送信することによって、楽曲を配信する。配信装置11が楽曲の配信に楽曲データを用いる理由は次のとおりである。即ち、楽曲データに基づいて再生装置15のスピーカ158から出力される楽曲は、楽器ごとの演奏パートを記述したデータ(以下、「楽音データ」という。)に基づいてスピーカ158から出力される楽曲と比較して、再現性がよく且つ原音により近いためである。楽曲データの形式の例として、AAC形式、MP3形式等が挙げられる。楽音データの形式の例として、MIDI(Musical Instrument Digital Interface)形式が挙げられる。
また再生装置15を使用するユーザ24は、配信装置11から配信された楽曲の中で気に入った楽曲を、評価した楽曲(以下、「評価楽曲」ともいう。)として配信装置11に登録することができる。具体的には次のとおりである。ユーザ24は、再生装置15を使用して評価楽曲の登録操作を行う。ユーザ24による登録操作が再生装置15に対して行われた場合、再生装置15は、評価楽曲を示すID(以下、「評価楽曲ID」という。)を、配信装置11に対して送信する。配信装置11は、評価楽曲IDを再生装置15から受信し、第三テーブル33(図4参照、後述)に評価楽曲IDを記憶する。これによって評価楽曲は、配信装置11に登録される。以下、楽曲を評価したユーザ24を、「評価ユーザ」ともいう。評価ユーザを示すIDを、「評価ユーザID」ともいう。なお、登録された評価楽曲は、配信装置11が再生装置15に対して配信する楽曲を選択する場合に使用される。詳細は後述する。
なお以下では、ユーザ21、22、23はそれぞれ再生装置12、13、14を使用することを想定して説明するが、例えばユーザ21は、再生装置12以外の再生装置13、14も使用することが可能である。ユーザ21は、再生装置12、13、14に対してログイン操作を行う。ログイン操作によって入力されたユーザアカウント、およびパスワードは、配信装置11に送信される。ユーザアカウント、およびパスワードを受信した配信装置11は、あらかじめ記憶されたユーザアカウント、およびパスワードに基づいて認証処理を実行する。認証が許可されれば、ユーザ21、22、23はそれぞれ再生装置12、13、14のいずれも使用可能となる。以下、認証されたユーザが使用する再生装置15を、ユーザが使用する再生装置15と記載する。
配信装置11の電気的構成について説明する。配信装置11は、配信装置11の制御を司るCPU111を備えている。CPU111は、ROM112、RAM113、ハードディスクドライブ(HDD)114、通信I/F115、およびドライブ装置116と電気的に接続する。ROM112には、ブートプログラムやBIOS等が記憶される。RAM113には、タイマやカウンタ、一時的なデータが記憶される。
HDD114には、CPU111の制御プログラムが記憶される。またHDD114には、第一テーブル31(図2参照)、第二テーブル32(図3参照)、第三テーブル33(図4参照)、および第四テーブル34(図5参照)が記憶される。通信I/F115は、ネットワーク20を介して再生装置15と通信を行う。ドライブ装置116は、記憶媒体117に記憶された情報を読み出す。例えば配信装置11のセットアップ時、記憶媒体117に記憶されたプログラムは、ドライブ装置116によって読み出され、HDD114に記憶される。
再生装置15の電気的構成について説明する。再生装置15は、再生装置15の制御を司るCPU151を備えている。CPU151は、ROM152、RAM153、フラッシュメモリ154、通信I/F155、表示部156、入力部157、およびスピーカ158と電気的に接続する。ROM152には、ブートプログラムやBIOS等が記憶される。RAM153には、タイマやカウンタ、一時的なデータが記憶される。フラッシュメモリ154には、CPU151の制御プログラムが記憶される。通信I/F155は、ネットワーク20を介して配信装置11と通信を行う。表示部156は、画像を表示するディスプレイである。入力部157は、再生装置15に対して入力操作を行うためのタッチパネルである。
配信装置11のCPU111は、再生装置15に配信する楽曲の選択を、次の手順で実行する。はじめにCPU111は、楽曲の特徴量である楽曲特徴量、および楽音特徴量に基づき、特徴量ベクトルを楽曲ごとに作成する。またCPU111は、再生装置15から受信した評価楽曲IDに基づき、楽曲に対するユーザ24の嗜好を示す嗜好ベクトルを作成する。そしてCPU111は、作成した嗜好ベクトルと類似する特徴量ベクトルを特定し、特定した特徴量ベクトルに対応する楽曲を選択する。これによって、ユーザ24の嗜好に近い楽曲が選択される。選択された楽曲は、再生装置15に配信される。CPU111は、HDD114に記憶された第一テーブル31〜第四テーブル34を参照することによって楽曲を選択する。
第一テーブル31〜第四テーブル34について説明する。はじめに図2を参照し、第一テーブル31について説明する。第一テーブル31には、楽曲データ Gx(xは楽曲ID)、および特徴量(楽曲特徴量 Wxおよび楽音特徴量 Mx)が、楽曲を識別する楽曲ID xに対応付けて記憶される。楽曲データは、楽曲の配信時にCPU111によって第一テーブル31から読み出され、再生装置15に対して送信される。楽曲データは、配信装置11の管理者による登録操作によって第一テーブル31に直接記憶されるか、または、再生装置15から楽曲データが投稿された場合に、第一テーブル31に記憶される。
特徴量は、楽曲における特徴的な性質を示すパラメータである。楽曲特徴量は、楽曲データから抽出される特徴量である。楽曲特徴量 Wxには、要素 w1(x),w2(x),・・・wk(x)が含まれる。楽曲特徴量の要素として、例えば一番音の大きな周波数帯、各周波数帯ごとの音の強さ等が挙げられる。CPU111は、第一テーブル31に記憶された楽曲データから楽曲特徴量を抽出し、楽曲IDおよび楽曲データに対応付けて第一テーブル31に記憶する(S19、図6参照、後述)。
楽音特徴量は、楽音データから抽出される特徴量である。楽音特徴量 Mxには、要素 m1(x),m2(x),・・・mn(x)が含まれる。楽音特徴量の要素として、例えば楽器ごとのパートの音の大きさ、演奏時間全体の中で楽器ごとのパートが演奏されている時間の割合等が挙げられる。楽曲データと異なり、楽音データは第一テーブル31に記憶されていない。このためCPU111は、図示外の楽音データベースに楽音データが記憶されている場合に、記憶されている楽音データから楽音特徴量を抽出し、第一テーブル31に記憶する(S15、図6参照、後述)。なお、楽音データベースに楽音データが記憶されていない場合に楽音特徴量を決定する方法(S23〜S27、図6参照、後述)については、登録処理(図6参照)を参照して後述する。
なお、楽音特徴量の要素として、楽器ごとのパートの基本周波数、または周波数特性などが用いられてもよい。
なお、第一テーブル31に楽曲データが記憶されていなくてもよい。例えば楽曲データは、図示外の楽曲データベースに記憶されてもよい。第一テーブル31には、楽曲データベースに記憶された楽曲データを参照することが可能なパス情報が、楽曲データの代わりに記憶されていてもよい。またCPU111は、図示外の楽音データベースに記憶された楽音データから楽音特徴量を抽出して第一テーブル31に記憶するのではなく、図示外の特徴量データベースから楽音特徴量を直接取得し、第一テーブル31に記憶してもよい。
図3を参照し、第二テーブル32について説明する。第二テーブル32には、楽曲ID xに特徴量ベクトル Sxが対応付けられて記憶される。特徴量ベクトルは、楽曲特徴量及び楽音特徴量の要素(図2参照)の特徴を示す。CPU111は、第一テーブル31に記憶された楽曲特徴量 Wx、および楽音特徴量 Mxに基づいて、特徴量ベクトルを楽曲ごとに作成し、第二テーブル32に記憶する(S31、図6参照、後述)。特徴量ベクトル Sxは、楽曲特徴量の要素 w1(x),w2(x),・・・wk(x)、および楽音特徴量の要素 m1(x),m2(x),・・・mn(x)を有する。特徴量ベクトル Sxの次元数は、楽曲特徴量の要素数 kと楽音特徴量の要素数 nを加算したk+nとなる。
なお、第二テーブル32に記憶される特徴量ベクトルは、楽曲特徴量 Wxおよび楽音特徴量 Mxに基づいて作成される場合だけではなく、楽音特徴量 Mxのみに基づいて作成される場合もある(S17:NO、図6参照、後述)。この場合にCPU111は、楽音特徴量の要素 m1(x),m2(x),・・・mn(x)を有する特徴量ベクトルを作成し、第二テーブル32に記憶する。この場合の特徴量ベクトルの次元数は、楽音特徴量の要素数と同じnとなる。
図4を参照し、第三テーブル33について説明する。第三テーブル33には、評価ユーザIDに評価楽曲IDが対応付けられて記憶される。評価楽曲IDは、再生装置15から受信した評価楽曲IDである。評価ユーザIDは、評価楽曲IDの楽曲を評価したユーザ24のIDである。CPU111は、再生装置15から登録要求を受信した場合、登録要求に含まれる評価ユーザIDおよび評価楽曲IDを第三テーブル33に記憶する(S57、図7参照、後述)。
図5を参照し、第四テーブル34について説明する。第四テーブル34には、ユーザID yおよび嗜好ベクトル Uyが対応付けられて記憶される。嗜好ベクトルは、楽曲に対するユーザ24の嗜好を示す特徴量ベクトルである。CPU111は、第三テーブル33(図4参照)に記憶された評価楽曲IDの楽曲の楽曲特徴量 Wxおよび楽音特徴量 Mx(図2参照)に基づいて、嗜好ベクトル Uyをユーザ24ごとに作成する。
具体的には次のとおりである。CPU111は、第三テーブル33に記憶された評価楽曲IDを、評価ユーザIDごとに抽出する。CPU111は、抽出した評価楽曲IDの楽曲の楽曲特徴量 Wxおよび楽音特徴量 Mxを、第一テーブル31から抽出する。複数の評価楽曲IDが一の評価ユーザIDに対応付けられている場合、複数の楽曲特徴量 Wxおよび楽音特徴量 Mxが抽出されることになる。CPU111は、抽出した楽曲特徴量 Wxの要素 w1(x),w2(x),・・・wk(x)、および楽音特徴量 Mxの要素 m1(x),m2(x),・・・mn(x)に対して所定の重み付けを行う。重み付けの方法の一例として、平均化が挙げられる。CPU111は、重み付けを行った楽曲特徴量 Wxおよび楽音特徴量 Mxを、評価ユーザIDごとに結合し、嗜好ベクトル Uyを作成する。
CPU111は、作成した嗜好ベクトル UyをユーザID yに対応付け、第四テーブル34に記憶する(S59、図7参照)。嗜好ベクトル Uyは、楽曲特徴量 Wxの要素 w1(x),w2(x),・・・wk(x)、および楽音特徴量 Mxの要素 m1(x),m2(x),・・・mn(x)と同一種別の要素 w1(y),w2(y),・・・wk(y),m1(y),m2(y),・・・mn(y)を有する。嗜好ベクトル Uyの次元数はk+nであり、特徴量ベクトル(図3参照)と同次元である。
なお、第二テーブル32に記憶される特徴量ベクトルが、楽音特徴量 Mxのみに基づいて作成される場合、嗜好ベクトルも同様に、楽音特徴量 Mxのみに基づいて作成される。特徴量ベクトルと嗜好ベクトルの次元数は常に一致する。
CPU111は、ユーザ24によって使用される再生装置15に対して配信する楽曲のリストを、第二テーブル32(図3参照)および第四テーブル34(図5参照)を参照して次のように選択する(S83、図8参照、後述)。CPU111は、配信先の再生装置15を使用するユーザのユーザIDに対応する嗜好ベクトル Uyを、第四テーブル34から抽出する。CPU111は、抽出した嗜好ベクトル Uyと、第二テーブル32に記憶された特徴量ベクトルとの内積を算出する。第二テーブル32には特徴量ベクトルが楽曲ごとに記憶されているので、内積の算出は楽曲ごとに実行される。ここで内積の算出結果は、嗜好ベクトル Uyに含まれる楽曲特徴量および楽音特徴量の要素と、特徴量ベクトル Sxに含まれる楽曲特徴量および楽音特徴量の要素との類似関係を示す。内積の算出結果が大きいほど、双方のベクトルに含まれる要素は類似する。なお以下、楽曲特徴量の要素が類似することを、「楽曲特徴量が類似する。」ともいい、楽音特徴量の要素が類似することを、「楽音特徴量が類似する」ともいう。嗜好ベクトル Uyは、楽曲に対するユーザ24の嗜好を示しているので、双方のベクトルに含まれる楽曲特徴量および楽音特徴量が類似する場合、計算結果として内積が大きい特徴量ベクトル Sxに対応する楽曲は、ユーザ24の嗜好に近い楽曲であることになる。すなわち、評価楽曲IDの楽曲の少なくとも楽音特徴量 Mxを用いて楽音特徴量に含まれる演奏パートごとの特徴を基に楽曲データが抽出される。また楽音特徴量に基づく特徴量ベクトルが生成されるので、演奏パート毎の特徴を比較することが可能である。CPU111は、特徴量ベクトルに対応する楽曲IDを、内積の算出結果の大きい順に並べ、IDリストを作成する(S45、図7参照、後述)。CPU111は、IDリストに格納された楽曲IDの楽曲を、ユーザ24によって使用される再生装置15に対して順番に送信する。
なお上述においてCPU111は、嗜好ベクトル Uyと、第二テーブル32に記憶された特徴量ベクトルとの内積の算出結果が大きい特徴量ベクトル Sxに対応する楽曲を、ユーザ24の嗜好に近い楽曲としたが、本発明はこれに限定されない。例えばCPU111は、単にこの2つのベクトルの方向の一致度で算出されてもよい。すなわちCPU111は、2つのベクトルのなす角が小さい特徴量ベクトル Sxに対応する楽曲を、ユーザ24の嗜好に近い楽曲としてもよい。
以上のようにCPU111は、嗜好ベクトルを用いてユーザ24の嗜好に近い楽曲を選択することによって、ユーザ24の嗜好に近い楽曲の選択精度を向上させることができる。またCPU111は、IDリストに格納された楽曲IDの順に楽曲を選択することによって、再生装置15への楽曲の配信を、ユーザ24の嗜好により近い楽曲から順番に実行することが可能となる。
特徴量ベクトルおよび嗜好ベクトルを作成する場合に、少なくとも楽音特徴量が使用される理由は次のとおりである。楽音特徴量の基となる楽音データは、楽器ごとの演奏パートが記述されている。このためCPU111は、演奏パートごとの特徴を示す要素を含む楽音特徴量を、楽音データから抽出することが可能となる。このため、楽音特徴量に基づいて特徴量ベクトルおよび嗜好ベクトルが作成された場合、CPU111は、演奏パートごとの演奏方法等がユーザの嗜好に近い楽曲を選択することが可能となる。
一方、楽曲特徴量の基となる楽曲データは、楽曲を構成する全ての音が1つの波形で表現されている。このため、楽曲特徴量のみに基づいて特徴量ベクトルおよび嗜好ベクトルが作成された場合、CPU111は、複数の楽器の演奏音が一体となった音を判断することになるので、楽曲の詳細な特徴部分がユーザの嗜好に近いか否かの判断が困難になる。このため楽曲特徴量のみに基づいて特徴量ベクトルおよび嗜好ベクトルが作成された場合、ユーザの嗜好と異なる楽曲が選択される可能性がある。このためCPU111は、少なくとも楽音特徴量に基づいて特徴量ベクトルおよび嗜好ベクトルを作成する。これによってCPU111は、よりユーザの嗜好に近い楽曲を精度良く選択することが可能となる。
さらに上述において、特徴量ベクトルおよび嗜好ベクトルを作成する場合に、楽音特徴量に加えて楽曲特徴量が使用される理由は次のとおりである。楽音データベースに楽音データが記憶されていない場合、楽音データから楽音特徴量を抽出してユーザの嗜好に近い楽曲を抽出することができない。一方、楽曲の配信時には楽曲データが再生装置15に対して送信されるので、HDD114には楽曲データが記憶される。このためCPU111は、楽曲データから楽曲特徴量を適切に抽出することが可能である。従ってCPU111は、楽音特徴量に加えて楽曲特徴量を使用し、特徴量ベクトルおよび嗜好ベクトルを作成する(S19、S21、S23〜S27、図6参照、後述)。これによってCPU111は、楽音データから楽音特徴量を直接抽出できない場合でも、ユーザの嗜好に近い楽曲を選択できるようにしている。
なお本実施形態では、楽曲特徴量および楽音特徴量の要素のうち一部を除外した特徴量ベクトルおよび嗜好ベクトルが作成される。詳細は、リスト作成処理(図8参照)を参照して後述する。
配信装置11のCPU111によって実行される処理(登録処理(図6参照)および配信装置メイン処理(図7))について説明する。CPU111は、HDD114に記憶された制御プログラムに基づいて処理を実行する。登録処理は、配信装置11による楽曲の配信が開始される前に、CPU111によって実行される。配信装置メイン処理は、登録処理の終了後、CPU111によって実行される。
図6を参照し、登録処理について説明する。CPU111は、登録処理を一回実行することによって、一曲分の楽曲に関する情報を第一テーブル31および第二テーブル32に記憶することができる。このため、複数曲分の楽曲に関する情報を第一テーブル31および第二テーブル32に記憶する場合、CPU111は、登録処理を複数回実行することになる。なお登録処理が開始される前の状態では、第一テーブル31に楽曲IDおよび楽曲データのみが記憶され、楽曲特徴量および楽音特徴量は記憶されていない。また、第二テーブル32には特徴量ベクトルが記憶されていない。登録処理では、楽曲特徴量および楽音特徴量が抽出され、第一テーブル31に記憶される。また特徴量ベクトルが作成され、第二テーブル32に記憶される。以下詳説する。
CPU111は、第一テーブル31のうち楽曲データに対応する楽音データが、楽音データベースに記憶されているかを判断する(S11)。楽音データが楽音データベースに記憶されていない場合(S11:NO)、楽音データから楽音特徴量を抽出することができないので、処理はS17に進む。一方、楽音データベースに楽音データが記憶されている場合(S11:YES)、CPU111は、楽音データベースから楽音データを読み出し、楽音特徴量を抽出する(S13)。CPU111は、抽出した楽音特徴量を、楽曲IDおよび楽曲データに対応付けて第一テーブル31に記憶する(S15)。処理はS17に進む。
CPU111は、特徴量ベクトルを作成する場合に楽曲特徴量を使用するか否かを判断する(S17)。なお、楽曲特徴量を使用するか否かは、配信装置11の管理者が設定できる。楽曲特徴量を使用しないと設定された場合、特徴量ベクトルの作成時に、楽音特徴量のみを使用すると判断する(S17:NO)。この場合、楽音データが楽音データベースに記憶されているとS11で判断されている場合には(S18:YES)、処理はS29に進む。一方、S11において、楽音データが楽音データベースに記憶されていないと判断されている場合(S18:NO)、処理はS21に進む。一方、CPU111は、配信装置11の管理者によって楽曲特徴量を使用すると設定された場合、特徴量ベクトルの作成時に、楽音特徴量および楽曲特徴量を使用すると判断する(S17:YES)。この場合、CPU111は、第一テーブル31に記憶された楽曲データから楽曲特徴量を抽出する(S19)。CPU111は、抽出した楽曲特徴量を、楽曲IDおよび楽曲データに対応付けて第一テーブル31に記憶する。
なお、楽曲特徴量を使用するか否かは、別の方法によって判断されても良い。例えばCPU111は、S11で楽音データが楽音データベースに記憶されていないと判断した場合(S11:NO)、楽曲特徴量を使用すると判断してもよい。一方、S11で楽音データが楽音データベースに記憶されていると判断し(S11:YES)、楽音データから楽音特徴量を抽出して第一テーブル31に記憶している場合(S13、S15)、CPU111は楽曲特徴量を使用しないと判断してもよい。また、楽曲のジャンルや登録された時期、その他登録される楽曲のメタデータに応じて自動的に決定されても良い。
CPU111は、第一テーブル31に楽音特徴量が記憶されているか判断する(S21)。S13で楽音データから楽音特徴量を抽出し、S15で楽音特徴量を第一テーブル31に記憶している場合(S21:YES)、処理はS29に進む。一方、楽音データベースに楽音データが記憶されておらず(S11:NO)、楽音データを第一テーブル31に記憶していない場合(S21:NO)、CPU111は、以下のようにして楽音特徴量を特定し、第一テーブル31に記憶する。
はじめにCPU111は、楽音特徴量が対応付けられていない楽曲データ(以下、「未対応楽曲データ」という。)に対応付けられている楽曲特徴量(「未対応楽曲特徴量」という。)を特定する。CPU111は、未対応楽曲特徴量に類似する他の楽曲特徴量であって、楽音特徴量が対応付けられている楽曲特徴量を、第一テーブル31から検索する(S23)。CPU111は、未対応楽曲特徴量と他の楽曲特徴量とが類似するか否かを、未対応楽曲特徴量と他の楽曲特徴量との内積を算出することによって判断する。例えばCPU111は、内積の算出結果が所定の第一しきい値よりも大きい場合、未対応楽曲特徴量と他の楽曲特徴量とが類似していると判断する。なお、類似判定は内積ではなく、未対応楽曲特徴量と他の楽曲特徴量とのユークリッド距離によって判断されても良い。CPU111は、類似する他の楽曲特徴量を特定した場合、特定した他の楽曲特徴量に対応付する楽音特徴量を抽出する(S25)。CPU111は、抽出した楽音特徴量を、未対応楽曲データに対応付けて第一テーブル31に記憶する(S27)。処理はS29に進む。また、ここでは1曲から抽出したが、類似していると判断された楽曲特徴量が複数存在する場合、これらの楽曲特徴量に対応する楽音特徴量の平均や加重平均を用いて算出した楽音特徴量を記憶しても良い。
例えば図2の第一テーブル31では、楽曲ID 2に対応する楽音特徴量が記憶されていない。この場合、CPU111は、楽曲データ G2(未対応楽曲データ)に対応付けられている楽曲特徴量 W2(未対応楽曲特徴量)を特定する。CPU111は、楽音特徴量が対応付けられている楽曲特徴量 W1、W3を、第一テーブル31から検索する。CPU111は、楽曲特徴量 W2(未対応楽曲特徴量)と、楽曲特徴量 W1、W3とが類似するかを判断する(S23)。楽曲特徴量 W1と楽曲特徴量 W2(未対応楽曲特徴量)とが類似していたとする。この場合、CPU111は、楽曲特徴量 W1に対応する楽音特徴量 M1を抽出する(S25)。CPU111は、抽出した楽音特徴量 M1を、楽曲データ G2(未対応楽曲データ)に対応付けて第一テーブル31に記憶する(S27)。
このようにCPU111は、楽音特徴量が対応付けられていない未対応楽曲データが第一テーブル31に含まれる場合でも、未対応楽曲特徴量と類似する他の楽曲特徴量に対応する楽音特徴量を特定し、未対応楽曲データに対応付けることができる。このためCPU111は、楽音データベースに楽音データが記憶されていない場合でも、楽音特徴量を第一テーブル31に記憶することが可能となる。
CPU111は、第一テーブル31に記憶された楽曲特徴量および楽音特徴量に基づいて、特徴量ベクトルを作成する(S29)。楽音特徴量のみを使用すると判断している場合(S17:NO)、CPU111は、楽音特徴量の要素のみを有する特徴量ベクトル(次元数 n)を作成する。一方、楽音特徴量および楽曲特徴量を使用すると判断している場合(S17:YES)、CPU111は、楽曲特徴量の要素、および楽音特徴量の要素を有する特徴量ベクトル(次元数 k+n)を作成する(S29)。CPU111は、作成した特徴量ベクトルに楽曲IDを対応付け、第二テーブル32に記憶する(S31)。登録処理は終了する。
図7を参照し、配信装置メイン処理について説明する。なお配信装置メイン処理の開始前において、登録処理(図6)が既に実行されている。このため、第一テーブル31には楽曲データ、楽曲特徴量、および楽音特徴量が記憶され、第二テーブル32には特徴量ベクトルが記憶されている。
CPU111は、再生装置15から送信されるリスト要求、配信要求、および登録要求のうちいずれかを受信したか判断する(S41)。リスト要求は、配信楽曲のリストである楽曲リストを再生装置15が要求する場合に、再生装置15から送信されるデータである。リスト要求には、ユーザIDおよび楽曲数が含まれる。ユーザIDは、リスト要求を送信した再生装置15を使用しているユーザのIDである。楽曲数は、楽曲リストに含める楽曲の曲数である。配信要求は、楽曲の配信開始を再生装置15が要求する場合に、再生装置15から送信されるデータである。登録要求は、再生装置15から配信装置11に対して、評価楽曲の登録を要求するデータである。リスト要求、配信要求、および登録要求のいずれも受信しない場合(S41:NO)、処理はS41に戻る。リスト要求、配信要求、および登録要求のうちいずれかを受信した場合(S41:YES)、CPU111は、リスト要求を受信したか判断する(S43)。リスト要求を受信していない場合(S43:NO)、配信要求または登録要求が受信されていることになるので、処理はS49に進む。一方、リスト要求を受信した場合(S43:YES)、CPU111は、再生装置15に送信する楽曲リストを作成する処理(リスト作成処理、図8参照)を実行する(S45)。
図8を参照し、リスト作成処理について説明する。なお以下では、楽曲特徴量および楽音特徴量の両方が使用される場合(S17:YES、図6参照)を想定して説明する。CPU111は、S41(図7参照)で受信したリスト要求に含まれるユーザIDを取得する。取得されたユーザIDは、リスト要求を送信した再生装置15を使用するユーザのIDに相当する。CPU111は、第三テーブル33のうち、取得したユーザIDに対応する評価楽曲IDを抽出する。CPU111は、第一テーブル31のうち、抽出した評価楽曲IDと同一の楽曲IDに対応する楽曲特徴量および楽音特徴量を抽出する。CPU111は、抽出した楽曲特徴量および楽音特徴量の要素の分散を、要素種別ごとに算出する。
例えば要求リストに、ユーザID 23が含まれていたとする。CPU111は、第三テーブル33のうち評価ユーザID 23に対応する評価楽曲ID 1、3・・・を抽出する。CPU111は、第一テーブル31のうち、楽曲ID 1、3・・・に対応する楽曲特徴量 W1、W3・・・、および楽音特徴量 M1、M3、・・・を抽出する。CPU111は、抽出した楽曲特徴量 W1、W3・・・の要素 (w1(1),w2(1),・・・wk(1))(w1(3),w2(3),・・・wk(3))・・・を抽出する。同様にCPU111は、抽出した楽音特徴量 M1、M3・・・の要素 (m1(1),m2(1),・・・mn(1))(m1(3),m2(3),・・・mn(3))・・・を抽出する。CPU111は、抽出した要素を要素種別ごとにまとめ、分散を算出する。分散は、要素種別の数 k+n分算出される。算出される分散をσ()(括弧内は要素)で表記した場合、分散 σ(w1(1),w1(3),・・・)、σ(w2(1),w2(3),・・・)・・・σ(wk(1),wk(3),・・・)、σ(m1(1),m1(3),・・・)、σ(m2(1),m2(3),・・・)・・・σ(mn(1),mn(3),・・・)が算出される。
図8に示すように、次にCPU111は、要素種別ごとに算出したそれぞれの分散が、所定の第二しきい値よりも大きいかを判断する(S71)。所定の第二しきい値よりも大きい分散がある場合(S71:YES)、CPU111は、第二テーブル32に記憶されたすべての特徴量ベクトルの要素のうち、第二しきい値よりも大きくなった分散に対応する要素を削除した特徴量ベクトルをリスト作成処理に用いる(S73)。これによって、使用される特徴量ベクトルの次元数は、k+nよりも小さくなる。またCPU111は、後述する処理(S59参照)によって第四テーブル34に記憶される嗜好ベクトルの要素のうち、S41(図7参照)で受信した要求リストに含まれるユーザIDに対応する嗜好ベクトルについて、第二しきい値よりも大きくなった分散に対応する要素を削除した嗜好ベクトルをリスト作成処理に用いる(S73)。処理はS75に進む。一方、算出されたすべての分散が第二しきい値以下である場合(S71:NO)、特徴量ベクトルおよび嗜好ベクトルから要素を削除する処理は行われず、処理はS83に進む。
例えば分散 σ(w1(1),w1(3),・・・)、即ち、楽曲特徴量の要素のうち1番目の要素に基づいて算出された分散が、第二しきい値よりも大きくなったとする。この場合、第二テーブル32に記憶された特徴量ベクトル Sxの要素のうち、要素 w1(x)(w1(1)、w1(2)、w1(3)・・・)が削除された特徴量ベクトルSxが、リスト作成処理に用いられる。また、第四テーブル34に記憶された嗜好ベクトル Uyの要素のうち、要素w1(y)(w1(21)、w1(22)、w1(23)・・・)が削除された嗜好ベクトル Uyが、リスト作成処理に用いられる。
以上のように、CPU111は、特徴量ベクトルおよび嗜好ベクトルの要素のうち、分散が大きく安定しない要素を削除した特徴量ベクトルおよび嗜好ベクトルを、リスト作成処理に用いる。CPU111は、不安定な要素を削除した特徴量ベクトルおよび嗜好ベクトルに基づいて、ユーザ24に配信する楽曲を選択する。このためCPU111は、ユーザ24の嗜好を示す要素のうち安定的な要素に基づいて楽曲を選択することができる。従ってCPU111は、ユーザ24の嗜好に近い楽曲を安定的に抽出することが可能となる。
図8に示すように、次にCPU111は、要素種別ごとに算出された分散が第二しきい値よりも大きくなった要素種別の数を特定する。CPU111は、特定した要素種別の数が第三しきい値よりも大きいか判断する(S75)。要素種別の数が所定の第三しきい値よりも大きい場合(S75:YES)、CPU111は、第二テーブル32に記憶されたすべての特徴量ベクトルの要素のうち、楽音特徴量の要素をすべて削除した特徴量ベクトルを、リスト作成処理に用いる(S77)。これによって特徴量ベクトルは、楽曲特徴量の要素のみを有することになる。特徴量ベクトルの次元数はkになる。またCPU111は、後述する処理(S59参照)によって第四テーブル34に記憶される嗜好ベクトルのうち、S41(図7参照)で受信した要求リストに含まれるユーザIDに対応する嗜好ベクトルについて、楽音特徴量の要素をすべて削除した嗜好ベクトルを、リスト作成処理に用いる(S77)。これによって嗜好ベクトルは、特徴量ベクトルと同様、楽曲特徴量の要素のみを有することになる。処理はS83に進む。一方、特定した分散の数が第三しきい値以下である場合(S75:NO)、特徴量ベクトルおよび嗜好ベクトルから楽音特徴量の要素を削除する処理は行われない。処理はS83に進む。
なお上述においてCPU111は、分散の大きさで楽音特徴量の要素を削除するか否かを判定した。これに対してCPU111は、ユーザ24の過去の評価楽曲の特徴量に基づく他の処理によって決定されても良い。例えば、楽音特徴量の分散がすべて所定の閾値以下であることを条件としてもよい。また例えば、評価楽曲のすべてに対して計算処理を行うのではなく、直近の一定期間の評価楽曲、もしくは、直近の一定個数の評価楽曲等、ユーザの嗜好が反映され易い評価楽曲の部分集合を用いて分散を算出しても良い。
S83において、CPU111は、S41(図7参照)で受信した要求リストに含まれるユーザIDに対応する嗜好ベクトル Uyを、第四テーブル34から抽出する。CPU111は、抽出した嗜好ベクトル Uyと、第二テーブル32に記憶された特徴量ベクトルとの内積を算出する。これによってCPU111は、双方に含まれる要素の類否を判断する。CPU111は、内積の算出結果の大きい順に、特徴量ベクトルに対応する楽曲IDを並べ、IDリストを作成する(S83)。CPU111は、作成したIDリストをRAM113に記憶する。リスト作成処理は終了し、処理は配信装置メイン処理(図7参照)に戻る。
例えばS71において、楽曲特徴量および楽音特徴量の要素種別ごとに算出した分散が第二しきい値以下と判断された場合(S71:NO)、k+n次元となる特徴量ベクトル、および嗜好ベクトルが内積の算出に用いられる。また例えばS71において、楽曲特徴量および楽音特徴量の要素種別ごとに算出した分散が第二しきい値より大きいと判断され(S71:YES)、S75において、特定された要素種別の数が第三しきい値以下と判断された場合(S75:NO)、第二しきい値よりも大きくなった分散に対応する要素が使用されないk+nよりも小さい次元となる特徴量ベクトルおよび嗜好ベクトルが内積の算出に用いられる。また例えばS71において、楽曲特徴量および楽音特徴量の要素種別ごとに算出した分散が第二しきい値より大きいと判断され(S71:YES)、S75において、特定された要素種別の数が第三しきい値より大きいと判断された場合(S75:YES)、第二しきい値よりも大きくなった分散に対応する要素が使用されず、かつ楽音特徴量の要素が使用されない特徴量ベクトルおよび嗜好ベクトルが内積の算出に用いられる。
以上のようにCPU111は、分散の大きい要素が楽音特徴量に多く含まれる場合に、楽音特徴量の要素を削除した特徴量ベクトルおよび嗜好ベクトルが、リスト作成処理に用いられる。これによってCPU111は、楽音特徴量の要素のばらつき度合いが大きく安定しない場合、楽曲特徴量の要素のみを有する特徴量ベクトルおよび嗜好ベクトルを使用し、楽曲を選択する。理由は次のとおりである。登録処理(図6参照)において、楽音データベースに楽音データが記憶されていない場合、未対応楽曲特徴量と類似する他の楽曲特徴量に対応付けられた楽音特徴量を、未対応楽曲データに対応付けて第一テーブル31に記憶している。このため、本来の楽音データから抽出される楽音特徴量と、未対応楽曲データに対応付けられた楽音特徴量とが相違する可能性がある。この場合、特徴量ベクトルおよび嗜好ベクトルに基づいて選択される楽曲と、ユーザ24の嗜好する楽曲とが大きく異なり、楽曲選択の精度が低下する可能性がある。このためCPU111は、分散の大きい要素が楽音特徴量に多く含まれる場合には、楽音特徴量の要素をすべて削除した特徴量ベクトルおよび嗜好ベクトルが、リスト作成処理に用いられる。CPU111は、楽曲特徴量の要素のみを含む特徴量ベクトルおよび嗜好ベクトルに基づいて、楽曲を選択する。これによってCPU111は、ユーザの嗜好に近い楽曲の選択精度を向上させることができる。
図7に示すように、リスト作成処理(S45)の終了後、CPU111は、再生装置15の表示部156に表示される表示画面を構成する表示画面データを作成する。表示画面データには楽曲リストが含まれる。楽曲リストには、RAM113に記憶されたIDリストに含まれる楽曲IDの楽曲が、S41で受信したリスト要求に含まれる楽曲数分含まれている。尚、この楽曲リストは、楽曲を含まず、評価楽曲の楽曲IDに関連付けられた楽曲の記憶領域のパスが含まれてもよい。CPU111は、楽曲リストを含む表示画面データを、リスト要求を送信した再生装置15に対して配信する(S47)。また、表示画面の作成処理、および表示画面の配信処理は、必ずしも必要でなく、楽曲ID、または評価楽曲の楽曲IDに関連付けられた楽曲の記憶領域のパスを含む楽曲リストだけを配信してもよい。処理はS49に進む。なお再生装置15は、表示画面データを受信した場合、表示画面データに基づき、表示部156に表示画面を表示する(S95、図9参照、後述)。
CPU111は、再生装置15から送信される配信要求を受信したか判断する(S49)。配信要求が受信されない場合(S49:NO)、処理はS55に進む。再生装置15は、楽曲リストを受信した場合、楽曲リストに含まれる楽曲IDに関連付けられる楽曲の配信を要求する配信要求を配信装置11に対して送信する。CPU111は、配信要求を受信する(S49:YES)。CPU111は、配信要求に含まれる楽曲IDに対応する楽曲データを、第一テーブル31から取得する。CPU111は、取得した楽曲データを再生装置15に対して送信することによって、楽曲の配信を開始する(S51)。再生装置15は、配信装置11から配信された楽曲を受信してスピーカ158から出力する(S101、図9参照、後述)。
再生装置15を使用するユーザ24が、出力中の楽曲を気に入ったとする。そしてユーザ24が、評価楽曲の登録を指示する操作を、入力部157を介して行ったとする。この場合、再生装置15から配信装置11に対して、評価楽曲の登録を要求する登録要求が送信される(S105、図9参照、後述)。登録要求には、評価ユーザIDおよび評価楽曲IDが含められる。
CPU111は、楽曲を配信している再生装置15から、登録要求を受信したか判断する(S55)。登録要求を受信した場合(S55:YES)、CPU111は、登録要求に含まれる評価ユーザIDおよび評価楽曲IDを取得する。CPU111は、取得した評価ユーザIDおよび評価楽曲IDを対応付け、第三テーブル33に記憶する(S57)。次にCPU111は、第四テーブル34を参照し、受信した評価ユーザIDに対応する嗜好ベクトルを取得する。CPU111は、第一テーブル31を参照し、受信した評価楽曲IDに対応する楽曲特徴量および楽音特徴量を取得する。CPU111は、取得された嗜好ベクトル、楽曲特徴量、および楽音特徴量に基づき、評価ユーザIDに対応する嗜好ベクトルを作成する(S58)。CPU111は、作成した嗜好ベクトルをユーザIDに対応付け、第四テーブル34に記憶する(S59)。処理はS41に戻る。なお、取得した評価楽曲IDの他に評価楽曲IDが第三テーブル33に記憶されていない場合、嗜好ベクトルは特徴量ベクトルそのものとする。
図9を参照し、再生装置15のCPU151によって実行される再生装置メイン処理について説明する。CPU151は、フラッシュメモリ154に記憶された制御プログラムを実行することによって、再生装置メイン処理を実行する。CPU151は、再生装置15の使用を開始するためのログイン操作を、入力部157を介してユーザ24から受け付けた場合、再生装置メイン処理を開始する。ユーザ24は、ログイン操作時にユーザ24から受け付けたIDを、再生装置15を使用するユーザ24のユーザIDとしてRAM153に記憶する。
CPU151は、楽曲の配信開始を指示する入力操作が、入力部157を介して行われたか判断する(S91)。入力操作が行われていない場合(S91:NO)、処理はS91に戻る。楽曲の配信開始を指示する入力操作が行われた場合(S91:YES)、CPU151は、楽曲リストを要求するためのリスト要求を、配信装置11に対して送信する(S93)。CPU151は、RAM153に記憶されたユーザID、および楽曲数を、リスト要求に含める。なお配信装置11は、リスト要求を受信し(S43、図7参照)、楽曲リストを作成する(S45、図7参照)。配信装置11は、作成した楽曲リストを、再生装置15に対して送信する(S47、図7参照)。
CPU151は、配信装置11から配信された楽曲リストを受信する(S95)。CPU151は、楽曲リストを示す表示画面を表示部156に表示する(S95)。CPU151は、受信した楽曲リストに基づき、楽曲IDを配信要求に格納し、配信装置11に対して配信要求を送信する(S97)。配信装置11は、配信要求を受信し(S49、図7参照)、楽曲の配信を開始する(S51、図7参照)。CPU151は、配信装置11から配信された楽曲を受信し(S99)、スピーカ158から出力することによって、楽曲の再生を開始する(S101)。ユーザ24は、再生装置15のスピーカ158から出力される楽曲を聴くことができる。
CPU151は、評価楽曲の登録を指示する操作が、入力部157を介して入力されたか判断する(S103)。登録を指示する操作が入力されていない場合(S103:NO)、処理はS107に進む。登録を指示する操作が入力された場合(S103:YES)、CPU151は、スピーカ158から出力している楽曲のIDを、評価楽曲IDとして取得する。CPU151は、RAM153に記憶されたユーザID、および、取得した評価楽曲IDを含む登録要求を、配信装置11に対して送信する(S105)。処理はS107に進む。なお、登録要求に含まれる評価楽曲IDは、配信装置11において登録される(S57、図7参照)。
CPU151は、楽曲の再生を停止させるための操作が、入力部157を介して入力されたか判断する(S107)。楽曲の再生を停止させるための操作が入力された場合(S107:YES)、楽曲の再生を中断し、処理はS91に戻る。一方、楽曲の再生を停止させるための操作が入力されていない場合(S107:NO)、CPU151は、楽曲の再生を継続する。一曲分の楽曲の再生時間が経過した場合、CPU151は、楽曲の再生を終了させる(S109)。CPU151は、S95で受信した表示画面で示される楽曲リストに含まれる楽曲のうち、未だ再生されていない楽曲が残っているか判断する(S111)。楽曲が残っている場合(S111:YES)、次の楽曲の配信を要求する配信要求を配信装置11に対して送信するために、処理はS97に戻る。一方、楽曲リストに含まれる楽曲をすべて再生した場合(S111:NO)、新たな楽曲リストを配信装置11に対して要求するために、処理はS93に戻る。
以上説明したように、配信装置11は、ユーザ24の評価楽曲に対応する楽音特徴量と類似する他の楽音特徴量を特定し、特定した楽音特徴量に対応する楽曲データを、ユーザ24の使用する再生装置15に送信することができる。楽音特徴量の基となる楽音データは、楽器ごとの演奏パートが記述されているため、抽出可能な特徴量の要素数は、楽曲特徴量の要素数と比較して多くなる。このため、評価楽曲の楽音特徴量と類似する他の楽音特徴量の楽曲は、ユーザ24の嗜好に近い可能性が高くなる。従って配信装置11は、楽音特徴量が評価楽曲と類似する楽曲を、再生装置15に配信する楽曲として選択する。これによって配信装置11は、ユーザ24の嗜好に近い楽曲の選択精度を向上させることが可能となる。ユーザ24は、自身の嗜好に近い楽曲を、再生装置15を介して聴くことができる。
なお本発明は上述の実施形態に限定されず、種々の変更が可能である。例えば、ユーザ21が再生装置12に対してログイン操作を行い、配信装置11を使用して評価情報を配信装置11に登録した後、ユーザ21が再生装置13に対してログイン操作を行い、再生装置13を使用して配信装置11に楽曲の配信開始を要求してもよい。このような場合でも配信装置11は、再生装置13を使用するユーザ21の嗜好に近い楽曲を抽出し、再生装置13に対して楽曲を配信することができる。
上述の実施形態において、配信装置11は、再生装置15から登録要求を受信し、第三テーブル33に評価ユーザIDおよび評価楽曲IDを記憶することによって、評価楽曲を登録した。評価楽曲の登録は、別の方法で行われてもよい。例えば評価楽曲は、配信装置11に設けられた図示外の入力部を介して入力されることによって登録されてもよいし、ネットワーク20に接続する別の通信端末(PCなど)を介して評価楽曲が入力されることによって、配信装置11に登録されても良い。
上述の実施形態では、楽曲特徴量および楽音特徴量の要素の分散を要素種別毎に算出することによって、特徴量ベクトルおよび嗜好ベクトルから削除する要素種別を決定した(S71、S73)。これに対してCPU111は、楽音特徴量の要素の分散のみを要素種別毎に算出することによって、特徴量ベクトルおよび嗜好ベクトルから削除する要素を決定してもよいし、楽曲特徴量の要素の分散のみを要素種別ごとに算出することによって、特徴量ベクトルおよび嗜好ベクトルから削除する要素を決定してもよい。
上述の実施形態において、CPU111は、特徴量ベクトルおよび嗜好ベクトルに基づき、再生装置15に配信する楽曲を選択した。これに対してCPU111は、特徴量ベクトルおよび嗜好ベクトルを用いることなく直接的に楽曲を選択してもよい。例えばCPU111は、再生装置15から受信した登録要求に含まれる評価楽曲IDによって特定される楽曲の楽音特徴量を、第一テーブル31から抽出してもよい。またCPU111は、抽出した楽音特徴量と類似する他の楽音特徴量を、第一テーブル31から抽出してもよい。そしてCPU111は、抽出した楽音特徴量に対応する楽曲データの楽曲を、再生装置15に配信する楽曲として選択してもよい。
上述の実施形態において、CPU111は、楽曲特徴量および楽音特徴量に基づき、特徴量ベクトルを楽曲ごとに作成し、第二テーブル32に記憶した。またCPU111は、特徴量ベクトルと嗜好ベクトルとの内積を算出し、算出結果に基づいて、ユーザ24の嗜好に近い楽曲を選択した。これに対してCPU111は、評価楽曲に対応する楽音特徴量と、嗜好ベクトルのうち楽音特徴量の要素とを直接比較することによって、ユーザ24の嗜好に近い楽曲を選択してもよい。
上述では、楽曲特徴量および楽音特徴量の要素の分散を算出し、算出結果と第二しきい値を比較することによって、要素のばらつきの大きさを判断した。これに対してCPU111は、要素のばらつき具合を示す別の統計解析を行うことによって、要素のばらつきの大きさを判断してもよい。例えば、分散の代わりに偏差が算出されてもよい。また例えば、個々の要素と、要素の平均との差分が算出されても良い。CPU111は、これらのパラメータを用いることによって、要素のばらつきの大きさを判断してもよい。
上述の実施形態において、再生装置15のCPU151は、ユーザ24が気に入った楽曲のIDを、評価楽曲IDとして登録要求に含め、配信装置11に送信した。これに対してCPU151は、ユーザ24が自身の嗜好に合わない(気に入らない)と判断した楽曲のIDを、評価楽曲IDとして登録要求に含め、配信装置11に送信してもよい。配信装置11のCPU111は、受信した評価楽曲IDを第三テーブル33に記憶してもよい。またCPU111は、良い評価がされた評価楽曲IDに対応する楽曲特徴量および楽音特徴量と、悪い評価がされた評価楽曲IDに対応する楽曲特徴量および楽音特徴量とを、異なるパラメータで重み付けを行うことによって、嗜好ベクトルを作成してもよい。
第一テーブル31は、HDD114に記憶されていなくてもよい。例えば、ネットワーク20に接続するデータベースサーバが、第一テーブル31〜第四テーブル34を記憶してもよい。配信装置11は、データベースサーバに問い合わせることによって、第一テーブル31〜第四テーブル34に記憶された情報を参照してもよい。また上述の実施形態では、楽音データは楽音データベースに記憶された。これに対し、楽音データと楽曲データとが対応付けられ、第一テーブル31に記憶されてもよい。
配信装置11、および再生装置15のプログラムは、ネットワーク20を介してサーバからダウンロードできるようにしてもよい。再生装置15のCPU151は、ネットワーク20を介して取得したプログラムをフラッシュメモリ154に記憶し、記憶したブログラムに基づいて各種処理を実行してもよい。
なお、S55の処理を行うCPU111が本発明の「受付手段」に相当する。登録要求に含まれる評価楽曲IDが本発明の「識別情報」に相当する。S45の処理を行うCPU111が本発明の「抽出手段」に相当する。S51の処理を行うCPU111が本発明の「配信手段」に相当する。S58の処理を行うCPU111が本発明の「作成手段」に相当する。嗜好ベクトルが本発明の「嗜好情報」に相当する。S21、S23、S25、S27の処理を行うCPU111が本発明の「記憶制御手段」に相当する。S105の処理を行うCPU151が本発明の「送信手段」に相当する。S101の処理を行うCPU151が本発明の「再生手段」に相当する。S55の処理が本発明の「受付ステップ」に相当する。S45の処理が本発明の「抽出ステップ」に相当する。S51の処理が本発明の「配信ステップ」に相当する。
楽曲が配信される再生装置15を使用するユーザ24が本発明の「対象ユーザ」に相当する。第一テーブル31を記憶するHDD114が本発明の「記憶手段」に相当する。図2の楽曲データ G2が本発明の「未対応楽曲データ」に相当する。