RELATED APPLICATIONSThis application is a continuation of U.S. patent application Ser. No. 12/195,628, filed on Aug. 21, 2008, entitled P2P REAL TIME MEDIA RECOMMENDATIONS, which is a continuation-in-part of U.S. patent application Ser. No. 11/484,130, filed on Jul. 11, 2006, entitled P2P NETWORK FOR PROVIDING REAL TIME MEDIA RECOMMENDATIONS, now U.S. Pat. No. 7,680,959, the disclosures of both are hereby incorporated herein by reference in their entireties.
FIELD OF THE DISCLOSUREThe present disclosure relates to media recommendations, such as music or video recommendations, and more specifically relates to peer-to-peer (P2P) real time media recommendations.
BACKGROUNDIn recent years, there has been an enormous increase in the amount of digital media, such as music, available online. Services, such as Apple's iTunes Music Store® service, enable users to legally purchase and download music. Other services such as Yahoo!® Music Unlimited and RealNetwork's Rhapsody provide access to millions of songs for a monthly subscription fee. As a result, music has become much more accessible to listeners worldwide. However, the increased accessibility of music has only heightened a long-standing problem for the music industry, which is namely the issue of linking audiophiles with new music that matches their listening preferences.
Many companies, technologies, and approaches have emerged to address this issue of music recommendation. Some companies have taken an analytical approach. They review various attributes of a song, such as melody, harmony, lyrics, orchestration, vocal character, and the like, and assign a rating to each attribute. The ratings for each attribute are then assembled to create a holistic classification for the song that is then used by a recommendation engine. The recommendation engine typically requires that the user first identify a song that he or she likes. The recommendation engine then suggests other songs with similar attributions. Companies using this type of approach include Pandora, SoundFlavor, MusicIP, and MongoMusic (purchased by Microsoft in 2000).
Other companies take a communal approach. They make recommendations based on the collective wisdom of a group of users with similar musical tastes. These solutions first profile the listening habits of a particular user and then search similar profiles of other users to determine recommendations. Profiles are generally created in a variety of ways such as looking at a user's complete collection, the playcounts of their songs, their favorite playlists, and the like. Companies using this technology include Last.fm, Music Strands, WebJay, Mercora, betterPropaganda, Loomia, eMusic, musicmatch, genielab, upto11, Napster, and iTunes with its celebrity playlists.
The problem with these traditional recommendation systems is that they fail to consider peer influences. For example, the music that a particular teenager listens to may be highly influenced by the music listened to by a group of the teenager's peers, such as his or her friends. As such, there is a need for a music recommendation system and method that recommends music to a user based on the listening habits of a peer group.
SUMMARYThe present disclosure relates to systems and methods for providing peer-to-peer (P2P) media recommendations in real-time, or substantially real-time. The media recommendations may be, for example, song recommendations or video recommendations. In one embodiment, a central streaming media service operates to stream media presentations to user devices of users registered with the central streaming media service. For each user desiring to send and receive media recommendations, each time a media presentation is streamed to and played by a user device of the user, the central streaming media service provides a media recommendation identifying the media presentation to one or more other users associated with the user. In addition, while the media presentation is being streamed to and played by the user device of the user, the central streaming media service provides media recommendations to the user from one or more other users in response to corresponding media presentations being streamed to and played by the one or more other users. Once streaming and playback of the media presentation is complete or substantially complete, the central streaming media service automatically selects a next media presentation to be streamed to and played by the user device of the user from a group of media presentations including the media presentations identified by the media recommendations provided to the user. Once the next media presentation is selected, the central streaming media service begins streaming the selected media presentation to the user device of the user.
Those skilled in the art will appreciate the scope of the present disclosure and realize additional aspects thereof after reading the following detailed description of the preferred embodiments in association with the accompanying drawing figures.
BRIEF DESCRIPTION OF THE DRAWING FIGURESThe accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure, and together with the description serve to explain the principles of the disclosure.
FIG. 1 illustrates a system incorporating a peer-to-peer (P2P) network for real time media recommendations according to one embodiment of the present disclosure;
FIG. 2 is a flow chart illustrating the operation of the peer devices ofFIG. 1 according to one embodiment of the present disclosure;
FIG. 3 illustrates the operation of the system ofFIG. 1 according to one embodiment of the present disclosure;
FIG. 4 illustrates a system incorporating a P2P network for real time media recommendations according to a second embodiment of the present disclosure;
FIG. 5 illustrates the operation of the system ofFIG. 4 according to one embodiment of the present disclosure;
FIG. 6 is a flow chart illustrating a method for automatically selecting media to play based on recommendations from peer devices and user preferences according to one embodiment of the present disclosure;
FIG. 7 illustrates an exemplary graphical user interface (GUI) for configuring user preferences according to one embodiment of the present disclosure;
FIG. 8 illustrates an exemplary GUI for assigning weights to various categories of media content as part of configuring the user preferences according to one embodiment of the present disclosure;
FIG. 9 illustrates an exemplary GUI for assigning weights to individual users within a user category as part of configuring the user preferences according to one embodiment of the present disclosure;
FIG. 10 illustrates an exemplary GUI for assigning weights to individual genres from a genre category as part of configuring the user preferences according to one embodiment of the present disclosure;
FIG. 11 illustrates an exemplary GUI for assigning weights to individual decades from a decade category as part of configuring the user preferences according to one embodiment of the present disclosure;
FIG. 12 illustrates an exemplary GUI for assigning weights to individual availability types from an availability type category as part of configuring the user preferences according to one embodiment of the present disclosure;
FIG. 13 illustrates an exemplary GUI displaying a playlist including both songs from a local music collection of a peer device and recommended songs from other peer devices, where the songs are sorted by a score determined based on user preferences according to one embodiment of the present disclosure;
FIG. 14 illustrates an exemplary GUI displaying a playlist including both songs from a local music collection of a peer device and recommended songs from other peer devices, where the songs are sorted by a both genre and score according to one embodiment of the present disclosure;
FIG. 15 is a block diagram of a peer device ofFIG. 1 according to one embodiment of the present disclosure;
FIG. 16 is a block diagram of a peer device ofFIG. 4 according to one embodiment of the present disclosure;
FIG. 17 illustrates a system for providing P2P media recommendations according to another embodiment of the present disclosure;
FIG. 18 is a flow chart illustrating the operation of a streaming and recommendation function of the central media service ofFIG. 17 according to one embodiment of the present disclosure;
FIG. 19 is a more detailed flow chart illustrating the operation of the streaming and recommendation function of the central media service ofFIG. 17 according to one embodiment of the present disclosure;
FIG. 20 is a block diagram of the central server ofFIG. 17 according to one embodiment of the present disclosure; and
FIG. 21 is a block diagram of one of the user devices ofFIG. 17 according to one embodiment of the present disclosure.
DETAILED DESCRIPTIONThe embodiments set forth below represent the necessary information to enable those skilled in the art to practice the embodiments and illustrate the best mode of practicing the embodiments. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the disclosure and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.
FIG. 1 illustrates asystem10 incorporating a P2P network for providing real time song recommendations according to one embodiment of the present disclosure. Note that while the discussion herein focuses on song recommendations for clarity and ease of discussion, the present disclosure is equally applicable to providing recommendations for other types of media presentations such as video presentations, as will be apparent to one of ordinary skill in the art upon reading this disclosure. Exemplary video presentations are movies, television programs, and the like. In general, thesystem10 includes a number of peer devices12-16 which are optionally connected to asubscription music service18 via anetwork20, which may be a distributed public network such as, but not limited to, the Internet. Note that while three peer devices12-16 are illustrated, the present disclosure may be used with any number of two or more peer devices.
In this embodiment, the peer devices12-16 are preferably portable devices such as, but not limited to, portable audio players, mobile telephones, Personal Digital Assistants (PDAs), or the like having audio playback capabilities. However, the peer devices12-16 may alternatively be stationary devices such as a personal computer or the like. The peer devices12-16 include local wireless communication interfaces (FIG. 15) communicatively coupling the peer devices12-16 to form a peer-to-peer (P2P) network. The wireless communication interfaces may provide wireless communication according to, for example, one of the suite of IEEE 802.11 standards, the Bluetooth standard, or the like.
Thepeer device12 includes amusic player22, arecommendation engine24, and amusic collection26. Themusic player22 may be implemented in software, hardware, or a combination of hardware and software. In general, themusic player22 operates to play songs from themusic collection26. Therecommendation engine24 may be implemented in software, hardware, or a combination of hardware and software. Therecommendation engine24 may alternatively be incorporated into themusic player22. Themusic collection26 includes any number of song files stored in one or more digital storage units such as, for example, one or more hard-disc drives, one or more memory cards, internal Random-Access Memory (RAM), one or more associated external digital storage devices, or the like.
In operation, each time a song is played by themusic player22, therecommendation engine24 operates to provide a recommendation identifying the song to theother peer devices14,16 via the P2P network. The recommendation does not include the song. In one embodiment, the recommendation may be a recommendation file including information identifying the song. In addition, as discussed below in detail, therecommendation engine24 operates to programmatically, or automatically, select a next song to be played by themusic player22 based on the recommendations received from theother peer device14,16 identifying songs recently played by theother peer devices14,16 and user preferences associated with the user of thepeer device12.
Like thepeer device12, thepeer device14 includes amusic player28, arecommendation engine30, and amusic collection32, and thepeer device16 includes amusic player34, arecommendation engine36, and amusic collection38.
Thesubscription music service18 may be a service hosted by a server connected to thenetwork20. Exemplary subscription based music services that may be modified to operate according to the present disclosure are Yahoo! Music Unlimited digital music service and RealNetwork's Rhapsody digital music service.
FIG. 2 illustrates the operation of thepeer device12 according to one embodiment of the present disclosure. However, the following discussion is equally applicable to theother peer devices14,16. First, the peer devices12-16 cooperate to establish a P2P network (step200). The P2P network may be initiated using, for example, an electronic or verbal invitation. Invitations may be desirable when the user wishes to establish the P2P network with a particular group of other users, such as his or her friends. Note that this may be beneficial when the user desires that the music he or she listens to be influenced only by the songs listened to by, for example, the user's friends. Invitations may also be desirable when the number of peer devices within a local wireless coverage area of thepeer device12 is large. As another example, thepeer device12 may maintain a “buddy list” identifying friends of the user of thepeer device12, where thepeer device12 may automatically establish a P2P network with the peer devices of the users identified by the “buddy list” when the peer devices are within a local wireless coverage area of thepeer device12.
Alternatively, thepeer device12 may establish an ad-hoc P2P network with theother peer devices14,16 by detecting theother peer devices14,16 within the local wireless coverage area of thepeer device12 and automatically establishing the P2P network with at least a subset of the detectedpeer devices14,16. In order to control the number of peer devices within the ad-hoc P2P network, thepeer device12 may compare user profiles of the users of theother peer devices14,16 with a user profile of the user of thepeer device12 and determine whether to permit theother peer devices14,16 to enter the P2P network based on the similarities of the user profiles.
At some point after the P2P network is established, thepeer device12 plays a song (step202). Initially, before any recommendations have been received from theother peer devices14,16, the song may be a song from themusic collection26 selected by the user of thepeer device12. Prior to, during, or after playback of the song, therecommendation engine24 sends a recommendation identifying the song to theother peer devices14,16 (step204). The recommendation may include, but is not limited to, information identifying the song such as a Globally Unique Identifier (GUID) for the song, title of the song, or the like; a Uniform Resource Locator (URL) enabling other peer devices to obtain the song such as a URL enabling download or streaming of the song from thesubscription music service18 or a URL enabling purchase and download of the song from an e-commerce service; a URL enabling download or streaming of a preview of the song from thesubscription music service18 or a similar e-commerce service; metadata describing the song such as ID3 tags including, for example, genre, the title of the song, the artist of the song, the album on which the song can be found, the date of release of the song or album, the lyrics, and the like.
The recommendation may also include a list of recommenders including information identifying each user having previously recommended the song and a timestamp for each recommendation. For example, if the song was originally played at thepeer device14 and then played at thepeer device16 in response to a recommendation from thepeer device14, the list of recommenders may include information identifying the user of thepeer device14 or thepeer device14 and a timestamp identifying a time at which the song was played or recommended by thepeer device14, and information identifying the user of thepeer device16 or thepeer device16 and a timestamp identifying a time at which the song was played or recommended by thepeer device16. Likewise, if thepeer device12 then selects the song for playback, information identifying the user of thepeer device12 or thepeer device12 and a corresponding timestamp may be appended to the list of recommenders.
Thepeer device12, and more specifically therecommendation engine24, also receives recommendations from theother peer devices14,16 (step206). The recommendations from theother peer devices14,16 identify songs played by theother peer devices14,16. Optionally, therecommendation engine24 may filter the recommendations from theother peer devices14,16 based on, for example, user, genre, artist, title, album, lyrics, date of release, or the like (step208).
Therecommendation engine24 then automatically selects a next song to play from the songs identified by the recommendations received from theother peer devices14,16, optionally songs identified by previously received recommendations, and one or more songs from themusic collection26 based on user preferences (step210). In one embodiment, therecommendation engine24 considers only those songs identified by recommendations received since a previous song selection. For example, if the song played instep202 was a song selected by therecommendation engine24 based on prior recommendations from thepeer devices14,16, therecommendation engine24 may only consider the songs identified in new recommendations received after the song was selected for playback instep202 and may not consider the songs identified in the prior recommendations. This may be beneficial if the complexity of therecommendation engine24 is desired to be minimal such as when thepeer device12 is a mobile terminal or the like having limited processing and memory capabilities. In another embodiment, therecommendation engine24 may consider all previously received recommendations, where the recommendations may expire after a predetermined or user defined period of time.
As discussed below, the user preferences used to select the next song to play may include a weight or priority assigned to each of a number of categories such as user, genre, decade of release, and availability. Generally, availability identifies whether songs are stored locally in themusic collection26; available via thesubscription music service18; available for download, and optionally purchase, from an e-commerce service or one of theother peer devices14,16; or are not currently available where the user may search for the songs if desired. The user preferences may be stored locally at thepeer device12 or obtained from a central server via thenetwork20. If thepeer device12 is a portable device, the user preferences may be configured on an associated user system, such as a personal computer, and transferred to thepeer device12 during a synchronization process. The user preferences may alternatively be automatically provided or suggested by therecommendation engine24 based on a play history of thepeer device12. In the preferred embodiment discussed below, the songs identified by the recommendations from theother peer devices14,16 and the songs from themusic collection26 are scored or ranked based on the user preferences. Then, based on the scores, therecommendation engine24 selects the next song to play.
Once the next song to play is selected, thepeer device12 obtains the selected song (step212). If the selected song is part of themusic collection26, thepeer device12 obtains the selected song from themusic collection26. If the selected song is not part of themusic collection26, therecommendation engine24 obtains the selected song from thesubscription music service18, an e-commerce service, or one of theother peer devices14,16. For example, the recommendation for the song may include a URL providing a link to a source from which the song may be obtained, and thepeer device12 may obtain the selected song from the source identified in the recommendation for the song. Once obtained, the selected song is played and the process repeats (steps202-212).
FIG. 3 illustrates the operation of the peer devices12-16 to provide real time song recommendations according to one embodiment of the present disclosure. The illustrated process is the same as discussed above with respect toFIG. 2. As such, the details will not be repeated. In general, thepeer devices14,16 play songs and, in response, provide song recommendations to the peer device12 (steps300-306). Thepeer device12 may optionally filter the recommendations from thepeer devices14,16 (step308). Therecommendation engine24 of thepeer device12 then automatically selects the next song to play from the songs identified by the recommendations, optionally songs identified by prior recommendations from thepeer devices14,16, and locally stored songs from themusic collection26 based on user preferences of the user of the peer device12 (step310). Thepeer device12 then obtains and plays the selected song (steps312-314). Either prior to, during, or after playback of the selected song, therecommendation engine24 of thepeer device12 provides a recommendation identifying the selected song to theother peer devices14,16 (step316-318).
FIG. 4 illustrates thesystem10′ according to second embodiment of the present disclosure. In this embodiment, thepeer devices12′-16′ form a P2P network via thenetwork20 and aproxy server40. Thepeer devices12′-16′ may be any device having a connection to thenetwork20 and audio playback capabilities. For example, thepeer devices12′-16′ may be personal computers, laptop computers, mobile telephones, portable audio players, PDAs, or the like having either a wired or wireless connection to thenetwork20. As discussed above with respect to thepeer device12, thepeer device12′ includesmusic player22′, arecommendation engine24′, and amusic collection26′. Likewise, thepeer device14′ includes amusic player28′, arecommendation engine30′, and amusic collection32′, and thepeer device16′ includes amusic player34′, arecommendation engine36′, and amusic collection38.
FIG. 5 illustrates the operation of thesystem10′ ofFIG. 4. Prior to beginning the process, thepeer devices12′-16′ form a P2P network. Since the number ofpeer devices12′-16′ that may be connected to thenetwork20 may be very large, thepeer devices12′-16′ may implement some technique for identifying a desired group of peer devices for the P2P network. For example, the P2P network may be initiated using, for example, an electronic or verbal invitation. As another example, thepeer device12′ may maintain a “buddy list” identifying friends of the user of thepeer device12′, where thepeer device12′ may automatically establish a P2P network with the peer devices of the users identified by the “buddy list” when the peer devices are connected to thenetwork20. Alternatively, thepeer devices12′-16′ may form an ad-hoc network where the participants for the ad-hoc network are selected based on similarities in user profiles.
In this example, once the P2P network is established, thepeer device14′ plays a song and, in response, provides a song recommendation identifying the song to thepeer device12′ via the proxy server40 (steps400-404). While not illustrated for clarity, thepeer device14′ also sends the recommendation for the song to thepeer device16′ via theproxy server40. Thepeer device16′ also plays a song and sends a song recommendation to thepeer device12′ via the proxy server40 (steps406-410). Again, while not illustrated for clarity, thepeer device16′ also sends the recommendation for the song to thepeer device14′ via theproxy server40.
From this point, the process continues as discussed above. More specifically, therecommendation engine24′ may optionally filter the recommendations from theother peer devices14′,16′ based on, for example, user, genre, artist, title, album, lyrics, date of release, or the like (step412). Therecommendation engine24′ then automatically selects a next song to play from the songs identified by the recommendations received from theother peer devices14′-16′, optionally songs identified by previously received recommendations from thepeer devices14′-16′, and one or more songs from themusic collection26′ based on user preferences (step414). In the preferred embodiment discussed below, the songs identified by the recommendations from theother peer devices14′-16′ and the songs from themusic collection26′ are scored based on the user preferences. Then, based on the scores, therecommendation engine24′ selects the next song to play.
Once the next song to play is selected, thepeer device12′ obtains the selected song (step416). If the selected song is part of themusic collection26′, thepeer device12′ obtains the selected song from themusic collection26′. If the selected song is not part of themusic collection26′, therecommendation engine24′ obtains the selected song from thesubscription music service18, an e-commerce service, or one of theother peer devices14′-16′. For example, the selected song may be obtained from a source identified in the recommendation for the song. Once obtained, the selected song is played and a recommendation for the song is provided to theother peer devices14′-16′ via the proxy server40 (steps418-426). Note that whileFIG. 5 illustrates two separate song recommendation files sent from thepeer device12′ to theproxy server40, the present disclosure is not limited thereto. One of ordinary skill in the art will appreciate that a single song recommendation file may be provided from thepeer device12′ to theproxy server40. Theproxy server40 may then forward the song recommendation file to thepeer devices14′ and16′.
FIG. 6 illustrates the process of automatically selecting a song to play from the received recommendations and locally stored songs at thepeer device12′ according to one embodiment of the present disclosure. However, the following discussion is equally applicable to the peer devices12-16 ofFIG. 1, as well as theother peer devices14′-16′ ofFIG. 4. First, the user preferences for the user of thepeer device12′ are obtained (step500). The user preferences may include a weight or priority assigned to each of a number of categories such as, but not limited to, user, genre, decade of release, and availability. The user preferences may be obtained from the user during an initial configuration of therecommendation engine24′. In addition, the user preferences may be updated by the user as desired. The user preferences may alternatively be suggested by therecommendation engine24′ or theproxy server40 based on a play history of thepeer device12′. Note that thatproxy server40 may ascertain the play history of thepeer device12′ by monitoring the recommendations from thepeer device12′ as the recommendations pass through theproxy server40 on their way to theother peer devices14′-16′. The user preferences may be stored locally at thepeer device12′ or obtained from a central server, such as theproxy server40, via thenetwork20.
Once recommendations are received from theother peer devices14′-16′, therecommendation engine24′ of thepeer device12′ scores the songs identified by the recommendations based on the user preferences (step502). Therecommendation engine24′ also scores one or more local songs from themusic collection26′ (step504). Therecommendation engine24′ then selects the next song to play based, at least on part, on the scores of the recommended and local songs (step506).
FIG. 7 illustrates an exemplary graphical user interface (GUI)42 for configuring user preferences. First, the user assigns a weight to various categories. In this example, the categories are users, genre, decade, and availability. However, the present disclosure is not limited thereto. The weights for the categories may be assigned alphabetically by selectingradio button44, customized by the user by selectingradio button46, or automatically suggested based on a user profile of the user by selectingradio button48. If alphabetical weighting is selected, the weights are assigned by alphabetically sorting the categories and assigning a weight to each of the categories based on its position in the alphabetically sorted list of categories. As illustrated inFIG. 8, if customized weighting is selected, the user may be presented with aGUI50 for customizing the weighting of the categories. As illustrated in the exemplary embodiment ofFIG. 8, the weights of the categories may be assigned by adjusting corresponding sliding bars52-58. Slidingbar60 may be adjusted to assign a weight to a “no repeat factor.” The no repeat factor is a dampening factor used to alter a song's score based on when the song was previously played at thepeer device12′ in order to prevent the same song from being continually repeated.
Once the weights are assigned, the user may select anOK button62 to return to theGUI42 ofFIG. 7 or select aREVERT button64 to return the weights of the categories to their previous settings. In addition, the user may select a SUGGEST FROMPROFILE button66 to have therecommendation engine24′ or theproxy server40 suggest weights for the categories based on a user profile. Note that thebutton66 has the same effect as theradio button48 ofFIG. 7.
Returning toFIG. 7, radio buttons68-72 are used to select a desired method for assigning weights to each user in the P2P network, radio buttons74-78 are used to select a desired method for assigning weights to each of a number of genres of music, radio buttons80-84 are used to select the desired method for assigning weights to each of a number of decades, and radio buttons86-90 are used to select the desired method for assigning weights to a number of song availability types.
Regarding users, if theradio button68 is selected, the users are assigned weights based on their respective positions in an alphabetically sorted list of users. If theradio button70 is selected, a GUI92 (FIG. 9) enabling the user to customize the weights assigned to a number of users from which recommendations are received. An exemplary embodiment of theGUI92 is illustrated inFIG. 9, where sliding bars94-98 enable the user to assign customized weights to corresponding users. Returning toFIG. 7, if theradio button72 is selected, therecommendation engine24′ or theproxy server40 generates suggested weights for the users based on a user profile associated with thepeer device12′.
Regarding genres, if the radio button74 is selected, the genres are assigned weights based on their respective positions in an alphabetically sorted list of genres. If theradio button76 is selected, a GUI100 (FIG. 10) enabling the user to customize the weights assigned to a number of genres. An exemplary embodiment of theGUI100 is illustrated inFIG. 10, where sliding bars102-116 enable the user to assign customized weights to corresponding genres. Returning toFIG. 7, if theradio button78 is selected, therecommendation engine24′ or theproxy server40 generates suggested weights for the genres based on a user profile associated with thepeer device12′.
Regarding decades, if theradio button80 is selected, the decades are assigned weights based on their respective positions in a chronologically sorted list of decades. If theradio button82 is selected, a GUI118 (FIG. 11) enabling the user to customize the weights assigned to a number of decades. An exemplary embodiment of theGUI118 is illustrated inFIG. 11, where sliding bars120-130 enable the user to assign customized weights to corresponding decades. Returning toFIG. 7, if theradio button84 is selected, therecommendation engine24′ or theproxy server40 generates suggested weights for the decades based on a user profile associated with thepeer device12′.
Regarding availability, if theradio button86 is selected, the availability types are assigned weights based on their respective positions in an alphabetically sorted list of availability types. If theradio button88 is selected, a GUI132 (FIG. 12) enabling the user to customize the weights assigned to a number of availability types. An exemplary embodiment of theGUI132 is illustrated inFIG. 12, where sliding bars134-140 enable the user to assign customized weights to corresponding availability types. Returning toFIG. 7, if theradio button90 is selected, therecommendation engine24′ or theproxy server40 generates suggested weights for the availability types based on a user profile associated with thepeer device12′.
An exemplary equation for scoring a particular song is:
Score=NRF·(WU·WUA+WG·WGA+WD·WDA+WA·WAA)·100,
where NRF is the “no repeat factor”; WU is the weight assigned to the user category; WUA is the weight assigned to the user attribute of the song, which is the user recommending the song; WG is the weight assigned to the genre category; WGA is the weight assigned to the genre attribute of the song, which is the genre of the song; WD is the weight assigned to the decade category; WDA is the weight assigned to the decade attribute of the song, which is the decade in which the song or the album associated with the song was released; WA is the weight assigned to the availability category; and WAA is the weight assigned to the availability attribute of the song, which is the availability of the song.
The NRF may, for example, be computed as:
As an example, assume that the following category weights have been assigned:
| |
| User Category | 1 |
| Genre Category | 7 |
| Decade Category | 7 |
| Availability Type Category | 5 |
| NRFW | 9 |
| |
Further assume that the attributes for the categories have been assigned weights as follows:
|
| User | Genre | Decade | Availability |
|
|
| User A | 5 | Alternative | 8 | 1950s | 2 | Local | 8 |
| User B | 5 | Classic Rock | 5 | 1960s | 4 | Subscription Network | 2 |
| User C | 5 | Arena Rock | 5 | 1970s | 7 | Buy/Download | 1 |
| | Jazz | 5 | 1980s | 9 | Find | 1 |
| | New Wave | 2 | 1990s | 5 |
| | Punk | 4 | 2000s | 5 |
| | Dance | 2 |
| | Country | 2 |
|
Thus, if a particular song to be scored is recommended by the user “User C,” is from the “Alternative Genre,” is from the “1980s” decade, and is available from the
subscription music service18, the score of the song may be computed as:
where if the song was last played88 songs ago,
Thus, the score for the song is
FIG. 13 is anexemplary GUI142 showing a playlist for thepeer device12′ including both local and recommended songs according to the present disclosure. However, note that a similar list may be maintained internally by thepeer device12 ofFIG. 1 and potentially optimized to display at least a portion of theGUI142 on the display of thepeer device12. In this example, both the local and recommended songs are scored, as described above, and sorted according to their scores. In addition, as illustrated inFIG. 14, the songs may be sorted based on another criterion, which in the illustrated example is genre, and score.
TheGUI142 may optionally allow the user to block songs having particular identified fields. In the examples ofFIGS. 13 and 14, the user has identified the genre “country” and the artist “iron maiden” as fields to be blocked, as illustrated by the underlining. The user may select fields to block by, for example, clicking on or otherwise selecting the desired fields. Songs having the blocked fields are still scored but are not obtained or played by thepeer device12′
In one embodiment, therecommendation engine24′ of thepeer device12′ may provide a download queue containing all songs to be downloaded, and optionally purchased, from an external source such as thesubscription music service18, an e-commerce service, or anotherpeer device14′-16′. Songs in the download queue having scores above a first predetermined or user defined threshold and previews of other songs in the download queue having scores above a second predetermined or user defined threshold but below the first threshold may be automatically downloaded to thepeer device12′.
FIG. 15 is a block diagram of an exemplary embodiment of thepeer device12 ofFIG. 1. However, the following discussion is equally applicable to theother peer devices14,16. In general, thepeer device12 includes acontrol system144 having associatedmemory146. In this example, themusic player22 and therecommendation engine24 are at least partially implemented in software and stored in thememory146. Thepeer device12 also includes astorage unit148 operating to store the music collection26 (FIG. 1). Thestorage unit148 may be any number of digital storage devices such as, for example, one or more hard-disc drives, one or more memory cards, RAM, one or more external digital storage devices, or the like. Themusic collection26 may alternatively be stored in thememory146. Thepeer device12 also includes acommunication interface150. Thecommunication interface150 includes a local wireless communication interface for establishing the P2P network with theother peer devices14,16. The local wireless interface may operate according to, for example, one of the suite of IEEE 802.11 standards, the Bluetooth standard, or the like. Thecommunication interface150 may also include a network interface communicatively coupling thepeer device12 to the network20 (FIG. 1). Thepeer device12 also includes auser interface152, which may include components such as a display, speakers, a user input device, and the like.
FIG. 16 is a block diagram of an exemplary embodiment of thepeer device12′ ofFIG. 4. However, the following discussion is equally applicable to theother peer devices14′-16′. In general, thepeer device12′ includes acontrol system154 having associatedmemory156. In this example, themusic player22′ and therecommendation engine24′ are at least partially implemented in software and stored in thememory156. Thepeer device12′ also includes astorage unit158 operating to store themusic collection26′ (FIG. 4). Thestorage unit158 may be any number of digital storage devices such as, for example, one or more hard-disc drives, one or more memory cards, RAM, one or more external digital storage devices, or the like. Themusic collection26′ may alternatively be stored in thememory156. Thepeer device12′ also includes acommunication interface160. Thecommunication interface160 includes a network interface communicatively coupling thepeer device12′ to the network20 (FIG. 4). Thepeer device12′ also includes a user interface162, which may include components such as a display, speakers, a user input device, and the like.
FIG. 17 illustrates asystem166 for providing P2P media recommendations according to another embodiment of the present disclosure. In general, thesystem166 includes acentral server168 and a number of user devices170-1 through170-N having associated users172-1 through172-N. Thecentral server168 and the user devices170-1 through170-N are connected via anetwork174 such as, for example, the Internet. However, the present disclosure is not limited thereto. Thenetwork174 may be any type of Wide Area Network (WAN), Local Area Network (LAN), or the like, or any combination thereof. Still further, thenetwork174 may include wired components, wireless components, or a combination thereof. Note that while a singlecentral server168 is illustrated for clarity and ease of discussion, it will be readily apparent to one having ordinary skill in the art upon reading this disclosure that thesystem166 may include multiplecentral servers168 for purposes of load balancing and redundancy.
Thecentral server168 includes astreaming media service176, auser account repository178, and amusic repository180. Thestreaming media service176 may be implemented in software, hardware, or a combination thereof. In general, as discussed below, thestreaming media service176 provides streaming of songs from themusic repository180 to the user devices170-1 through170-N. In addition, thestreaming media service176 exchanges P2P song recommendations between the users172-1 through172-N in a manner similar to that discussed above. Again, note that while the discussion herein focuses on songs and song recommendations, the present disclosure is not limited thereto. Other types of media presentations may also be used.
Theuser account repository178 includes a user account for each of the users172-1 through172-N. Using the user172-1 as an example, the user account of the user172-1 includes a list of friends, or contacts, of the user172-1. The “friends” of the user172-1 are other users from the users172-2 through172-N that have been identified as friends or contacts of the user172-1. Note that the manner in which the friends of the user172-1 are identified is not central to the present disclosure. Any appropriate manual or automated technique may be used. For example, an invitation process may be used. As another example, a profile matching process may be used to select other users having user profiles (e.g., demographics, user preferences, play histories, or the like) similar to that of the user172-1 as friends of the user172-1. In addition, the user account of the user172-1 includes user preferences of the user172-1. As discussed above, in one embodiment, the user preferences of the user172-1 include weights assigned to each of a number of categories (e.g., genre, decade, recommending user, availability, or the like) and, for each category, weights assigned to a number of attributes within that category (e.g., for the genre category, Rock, Metal, Alternative, Country, Bluegrass, Jazz, or the like). The user account of the user172-1 may also include a user profile of the user172-1. The user profile may include demographic information describing the user172-1, a play history of the user172-1, information identifying media items in a media collection of the user172-1 stored on the user device170-1, statistical information describing the media items in the media collection of the user172-1, or the like.
Themusic repository180 includes a number of songs available for streaming to the user devices170-1 through170-N. In addition, themusic repository180 includes metadata describing each of the songs. The metadata for a song may include, for example, a title of the song, an artist of the song, an album on which the song was released, a date of release, a genre of the song, or the like.
In this embodiment, thestreaming media service176 includes a number of streaming and recommendation functions182-1 through182-N corresponding to the users172-1 through172-N. Thus, for example, the streaming and recommendation function182-1 serves the user172-1, the streaming and recommendation function182-2 serves the user172-2, etc. Note that the streaming and recommendation functions182-1 through182-N are exemplary and are not intended to limit the scope of the present disclosure. Numerous alternative embodiments of thestreaming media service176 will be apparent to one having ordinary skill in the art upon reading this disclosure. In general, the streaming and recommendation functions182-1 through182-N operate to stream songs to the corresponding user devices170-1 through170-N. In addition, the streaming and recommendation functions182-1 through182-N send, receive, and process song recommendations as discussed below.
Each of the user devices170-1 through170-N may be, for example, a personal computer, a portable media player having network capabilities, a mobile smart phone having media playback capabilities, a set-top box, a gaming console having network and media playback capabilities, or the like. The user devices170-1 through170-N include streaming clients184-1 through184-N, respectively. The streaming clients184-1 through184-N may be implemented in software, hardware, or a combination thereof. In general, the streaming media clients184-1 through184-N provide playback of streaming songs received from thecentral server168. In addition, the streaming media clients184-1 through184-N enable the users172-1 through172-N to take desired actions during playback such as pausing, fast-forwarding, rewinding, skipping from one song to another, or the like.
FIG. 18 is a flow chart illustrating the operation of the streaming and recommendation function182-1 according to one embodiment of the present disclosure. This discussion is equally applicable to the other streaming and recommendation functions182-2 through182-N. First, the streaming and recommendation function182-1 identifies friends of the user172-1 (step600). The friends of the user172-1 may be manually identified by the user172-1 using, for example, an invitation process. Alternatively, the friends of the user172-1 may be identified via an automatic process. For example, the streaming and recommendation function182-1 may identify other users having user profiles (e.g., demographic information) and/or user preferences that match that of the user172-1 to at least a threshold degree as friends for the user172-1.
Next, the streaming and recommendation function182-1 streams a song to the user device170-1 of the user172-1 (step602). In the preferred embodiment, the streaming and recommendation function182-1 maintains a list of songs, such as a playlist, for the user172-1. As discussed above, the list of songs includes songs identified by song recommendations received from other users identified as friends of the user172-1. In addition, the list of songs may include one or more songs selected by the user172-1. Still further, the list may include one or more songs selected or recommended by thestreaming media service176 such as, for example, theTop 10 songs from the Billboard charts, one or more of the songs most played by the users172-1 through172-N, or the like. Thus, for this first iteration, the user172-1 may select a song from the list to play. In response, the streaming and recommendation function182-1 begins streaming the selected song to the user device170-1 of the user172-1 for playback.
In response to streaming the song to the user device170-1 and playback of the song at the user device170-1, the streaming and recommendation function182-1 sends a song recommendation identifying the song to one or more other users identified as friends of the user172-1 (step604). The song recommendation includes information identifying the song such as, for example, a GUID of the song, a reference (e.g., URL) to the song in themusic repository180, a title of the song, or the like. The streaming and recommendation function182-1 may send the recommendation substantially immediately and automatically upon initiation of playback of the song, upon completion of playback of a threshold amount of the song, or after completion of playback of the song.
In one embodiment, in order to send the song recommendation to the other users identified as friends of the user172-1, the streaming and recommendation function182-1 sends the song recommendation to corresponding ones of the streaming and recommendation functions182-2 through182-N. In another embodiment, the streaming and recommendation function182-1 stores the song recommendations in corresponding data structures maintained for the users identified as friends of the user172-1. For example, if the user172-2 is identified as a friend of the user172-1, the song recommendation may be stored in a list of received song recommendations maintained for the user172-2 in, for example, the user account of the user172-2. This list of received song recommendations may thereafter be processed by the streaming and recommendation function182-2 associated with the user172-2.
In this example, while streaming the song to the user device170-1 of the user172-1, the streaming and recommendation function182-1 receives one or more song recommendations from one or more other users identified as friends of the user172-1 (step606). More specifically, song recommendations are automatically sent to the user172-1 in response to playback of corresponding songs by the users identified as friends of the user172-1. Again, the song recommendations may be provided directly to the streaming and recommendation function182-1 or stored in a data structure associated with the user172-1. After receiving the song recommendations, the streaming and recommendation function182-1 may optionally filter the song recommendations based on, for example, user, genre, artist, title, album, lyrics, date of release, or the like (step608).
Based on the user preferences of the user172-1, the streaming and recommendation function182-1 then automatically selects a next song to play from a group of songs including the songs identified by the song recommendations received instep606, or the song recommendations that were not filtered or removed if thefiltering step608 is performed (step610). The group of songs may be only the songs identified by the song recommendations received instep606 or the song recommendations resulting from thefiltering step608 if filtering is performed. In another embodiment, the group of songs includes the songs identified by the song recommendations received instep606 or resulting from thefiltering step608 and one or more of the following: one or more songs identified by previous song recommendations sent to the user172-1, one or more songs identified by the user172-1, one or more songs selected or recommended by themedia service176, or the like. Further, in the preferred embodiment, the group of songs is maintained as a list of songs such as, for example, a play list. Note that if previous song recommendations are considered, previous song recommendations may expire, and therefore no longer be considered, after a defined amount of time has lapsed since the song recommendations were received.
As discussed above, the user preferences used to select the next song to play may include a weight or priority assigned to each of a number of categories such as user, genre, decade of release, and availability. Generally, in this embodiment, availability identifies whether the user172-1 has access rights to the corresponding song. For example, availability may refer to whether songs are available to the user176-1 for free or for some fee (e.g., purchase fee, subscription fee, or the like).
In the preferred embodiment, the next song to play is selected by first scoring the songs in the group of songs associated with the user172-1 based on the user preferences of the user172-1 and then selecting the song having the highest or most preferred score as the next song to play. Once the next song to play is selected, thestreaming media service176 obtains the next song from the music repository180 (step612). At this point, the process returns to step602 such that the streaming and recommendation function182-1 begins streaming the next song to the user device170-1 of the user172-1.Steps602 through612 are repeated until the playback session is terminated.
FIG. 19 is a more detailed flow chart illustrating the operation of the streaming and recommendation function182-1 according to an exemplary embodiment of the present disclosure. First, a playlist for the user172-1 is initialized (step700). In this embodiment, the playlist may be initialized with one or more songs selected by the user172-1, one or more songs selected or recommended by thestreaming media service176, one or more songs previously recommended to the user172-1 by other users identified as friends of the user172-1, or the like. Further, in this exemplary embodiment, the songs in the playlist are scored based on the user preferences of the user172-1, and the playlist is sorted based on the scores of the songs. Note that in an alternative embodiment, the playlist may be initialized as an empty playlist.
Next, assuming that the playlist is not initialized to an empty playlist, the streaming and recommendation function182-1 begins streaming a select song from the playlist to the user device170-1 of the user172-1 for playback (step702). In this exemplary embodiment, the select song may be a first song in the playlist, which is the song having the highest or most preferred score. The streaming and recommendation function182-1 then determines whether it is time to select a next song to stream to the user device170-1 of the user172-1 for playback (step704). A determination that it is time to select the next song to stream to the user device170-1 may be made when, for example, a threshold amount of the current song has been streamed to and/or played by the user device170-1 or when the user172-1 chooses to skip to the next song.
If a determination is made that it is not time to select the next song, the streaming and recommendation function182-1 then determines whether a song recommendation has been received on behalf of the user172-1 (step706). Note that while receipt and processing of a single song recommendation is discussed, multiple song recommendations may be received and processed at this time. Again, the song recommendations provided to the user172-1 from other users identified as friends of the user172-1 may be sent directly to the streaming and recommendation function182-1 or stored in a data structure associated with the user172-1 such as, for example, the user account of the user172-1. If a song recommendation has not been received, then the process returns to step702 such that the current song is continued to be streamed to the user device170-1 of the user172-1 and the process is repeated.
If a song recommendation has been received, then the streaming and recommendation function182-1 optionally filters the song recommendation based on one or more filtering criteria such as, for example, artist, genre, date or decade of release, recommending user, or the like (step708). If the song recommendation is to be filtered, then the streaming and recommendation function182-1 disregards or discards the song recommendation (step710), and the process then returns to step702 and is repeated. If the song recommendation is not to be filtered, then the streaming and recommendation function182-1 scores the song identified by the song recommendation based on the user preferences of the user172-1 (step712). The song recommendation function then updates the playlist of the user172-1 to include an entry for the song identified by the song recommendation (step714). When updating the playlist, the song identified by the song recommendation may be inserted into the playlist at a position determined based on the score of the song such that the playlist remains sorted based on the scores of the media items in the playlist. Alternatively, the song identified by the song recommendation may be inserted at any arbitrary location within the playlist. The playlist may then be sorted based on score. At this point, the process returns to step702 and streaming of the current song is continued.
Note that if the user172-1 does not have access rights to the song identified by the song recommendation that was added to the playlist, access rights to the song may be automatically obtained for the user172-1 by, for example, charging a corresponding fee to an account of the user172-1. Alternatively, if the user172-1 does not have access rights, a preview of the song, rather than the song, may be added to the playlist.
Returning to step704, once a determination is made that it is time to select the next song to be streamed to and played by the user device170-1 of the user172-1, the streaming and recommendation function182-1 sends a song recommendation identifying the song to one or more other users identified as friends of the user172-1 (step716). Then, a no-repeat-factor (NRF) is applied to the song in order to decrease the score of the song as discussed above (step718). The playlist is then updated (step720). More specifically, in this embodiment, the no-repeat-factor and thus the scores of songs previously played are updated. The playlist is then resorted based on the updated scores of the song being played or just completed as well as the updated scores of songs previously played. The streaming and recommendation function182-1 then automatically selects a song from the playlist having the highest or most preferential score as the next song to play (step722). The process then returns to step702 such that streaming of the next song begins, and the process is repeated.
FIG. 20 is a block diagram of thecentral server168 ofFIG. 17 according to one embodiment of the present disclosure. In general, thecentral server168 includes acontrol system186 having associatedmemory188. In this example, thestreaming media service176 is implemented in software and stored in thememory188. However, the present disclosure is not limited thereto. Thestreaming media service176 may be implemented in software, hardware, or a combination thereof. Thecentral server168 also includes one ormore storage units190 such as, for example, one or more hard disk drives. In one embodiment, theuser account repository178 and themusic repository180 are stored in the one ormore storage units190. However, the present disclosure is not limited thereto. Thecentral server168 also includes acommunication interface192 communicatively coupling thecentral server168 to the network174 (FIG. 17). Lastly, thecentral server168 may include auser interface194, which may include components such as, for example, a display, one or more user input devices, or the like.
FIG. 21 is a block diagram of the user device170-1 ofFIG. 17 according to one embodiment of the present disclosure. This discussion is equally applicable to the other user devices170-2 through170-N. In general, the user device170-1 includes acontrol system196 having associatedmemory198. In this example, the streaming client184-1 is implemented in software and stored in thememory198. However, the present disclosure is not limited thereto. The streaming media client184-1 may be implemented in software, hardware, or a combination thereof. The user device170-1 also includes acommunication interface200 communicatively coupling the user device170-1 to the network174 (FIG. 17). Lastly, the user device170-1 includes auser interface202, which may include components such as, for example, a display, one or more speakers, one or more user input devices, or the like.
The present disclosure provides substantial opportunity for variation without departing from the spirit or scope of the present disclosure. For example, whileFIG. 1 illustrates the peer devices12-16 forming the P2P network via local wireless communication andFIG. 4 illustrates thepeer devices12′-16′ forming the P2P network via thenetwork20, the present disclosure is not limited to either a local wireless P2P network or a WAN P2P network in the alternative. More specifically, a particular peer device, such as thepeer device12, may form a P2P network with other peer devices using both local wireless communication and thenetwork20. Thus, for example, thepeer device12 may receive recommendations from both thepeer devices14,16 (FIG. 1) via local wireless communication and from thepeer devices14′-16′ (FIG. 4) via thenetwork20.
As another example, while the discussion herein focuses on song recommendations, the present disclosure is not limited thereto. The present disclosure is equally applicable to recommendations for other types of media presentations such as, for example, other types of audio presentations such as podcasts, audio books, or audio programs; video presentations such as movies, television programs, or user-generated video clips; or the like. Thus, the present disclosure may additionally or alternatively provide movie recommendations, television program recommendations, or the like.
Those skilled in the art will recognize improvements and modifications to the preferred embodiments of the present disclosure. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.