Client playlist generation

Client playlist generation is described. In embodiments, relationships between media assets are determined to identify similar media assets that can be included in an automatic playlist of the similar media assets. Projection vectors of the asset-to-asset relationships can be generated for each of the media assets, where a projection vector for a media asset identifies the similar media assets. The projection vectors are then communicated to a client device that utilizes the projection vectors to generate the automatic playlist for any one of the media assets that is selected as a starting media asset of the automatic playlist.

BACKGROUND

Users interact with media assets, such as to play music or watch a video on a portable media player. A user can also subscribe to a music service from which music tracks and other media assets can be downloaded or otherwise accessed. The music service may also dynamically generate a playlist of music tracks for a user based on previous user selections and/or similarities to other music. One technique that is implemented at a music service to generate a playlist of recommended music tracks is collaborative filtering that is utilized to determine relationships between various music tracks. However, for any given music track or song, there may be thousands of other music tracks determined to be similar based on various relatable factors.

For a music library of millions of songs, such as one would expect to find available from a music service, the quantity of data needed to account for all of the possible relationships between the various music tracks is exceedingly voluminous. Conventional user devices, such as a portable media player, do not have near enough memory to store the relationship data for just a user's music collection that is available on the portable media player. Thus, a user device that is not connected or on-line with the music service will not be able to access or receive a dynamically generated playlist of music tracks if requested by a user of the device.

SUMMARY

This summary is provided to introduce simplified concepts of client playlist generation. The simplified concepts are further described below in the Detailed Description. This summary is not intended to identify essential features of the claimed subject matter, nor is it intended for use in determining the scope of the claimed subject matter.

Client playlist generation is described. In embodiments, relationships between media assets are determined to identify similar media assets that can be included in an automatic playlist of the similar media assets. Media assets may include digital files of music tracks, books that are stored as digital media, and video programs, such as movies or music videos. Projection vectors of the asset-to-asset relationships can be generated for each of the media assets, where a projection vector for a media asset identifies the similar media assets. The projection vectors are then communicated to a client device that utilizes the projection vectors to generate the automatic playlist for any one of the media assets that is selected as a starting media asset of the automatic playlist.

In other embodiments, the media assets are music tracks and a music service provider utilizes random projection to generate projection vectors of track-to-track relationships for each of the music tracks. The track-to-track relationships identify similar music tracks that can be used for generation of an automatic playlist of the similar music tracks. The projection vectors are then communicated to a client device that utilizes the projection vectors to generate the automatic playlist for any one of the music tracks that is selected as a starting music track of the automatic playlist. The client device can generate the automatic playlist when off-line from the music service provider.

DETAILED DESCRIPTION

Embodiments of client playlist generation provide techniques to associate similar media assets at a service provider, and then provide a client device with the asset relationship data that can be used to generate an automatic playlist when the client device is off-line from the service provider. For example, a music service provider can generate projection vectors for each music track, where a projection vector represents track-to-track relationships for each music track to other similar music tracks. The projection vectors are then communicated to a client device that utilizes the projection vectors to generate the automatic playlist for any one of the music tracks that is selected as a starting music track of the automatic playlist. A user can select one or more musical tracks as seeds to initiate generation of the automatic playlist at a client device, and then a list of music tracks is recommended from a music library of music tracks stored on the client device that are similar to the selected music tracks.

While features and concepts of the described systems and methods for client playlist generation can be implemented in any number of different environments, systems, and/or various configurations, embodiments of client playlist generation are described in the context of the following example systems and environments.

FIG. 1illustrates an example system100in which various embodiments of client playlist generation can be implemented. In this example, system100includes a service layer102that can be configured to communicate or otherwise provide media assets and data to any number of various client devices104via a communication network106. Some of the client devices104may also be referred to as portable devices and/or user devices. The client devices104can include wired and/or wireless devices, some of which may be implemented as components in a client system of a media asset distribution system.

The communication network106can be implemented to include a broadcast network, an IP-based network108, and/or a wireless network110that facilitates media asset distribution and data communication between the service layer102and any number of the various devices. The communication network106can also be implemented as part of a media asset distribution system using any type of network topology and/or communication protocol, and can be represented or otherwise implemented as a combination of two or more networks.

Service layer102can include one or more media content servers that are implemented to communicate, or otherwise distribute, the media assets112and/or other data to any number of the various client devices. In this example system100, service layer102includes storage media114to store or otherwise maintain various data and media assets, such as media assets112and media asset relationship data116. The storage media114can be implemented as any type of memory, random access memory (RAM), a nonvolatile memory such as flash memory, read only memory (ROM), and/or other suitable electronic data storage.

The media assets112can include any type of audio, video, and/or image data received from any type of media content or data source. As described throughout, media assets can include music (e.g., digital music files of songs), television programming, movies, on-demand media assets, interactive games, network-based applications, and any other audio, video, and/or image data (e.g., to include program guide data, user interface data, advertising content, closed captions data, content metadata, search results and/or recommendations, etc.).

The media asset relationship data116represents relationships between the media assets112and can be used to identify media assets that are similar to each other, such as by artist, performer, singer, actor, genre, tempo, or by any other relatable feature or aspect of the media assets. A genre describes the media assets, such as music content or video content. A genre of video content may be described as being an advertisement, a movie, a comedy show, a sporting event, a news program, a sitcom, a talk show, an action/adventure program, or as any number of other category descriptions. A genre of music content may be described as country-western, blues, jazz, rock, instrumental, acoustic, easy-listening, or as any number of other category descriptions.

The service layer102includes an asset model generation service118that can be implemented as computer-executable instructions and executed by processors to implement the various embodiments and/or features described herein. In addition, the service layer102can be implemented with any number and combination of differing components as further described with reference to the example device shown inFIG. 5. The asset model generation service118, as well as other functionality described to implement embodiments of client playlist generation, can also be provided as a service apart from the service layer102(e.g., on a separate server or by a third party service), or as a distributed service.

In an embodiment, the service layer102is a music service provider and the media assets112are music tracks that can be downloaded to a client device104and/or accessed for playback at a client device, such as when a client device subscribes to the music service provider. The asset model generation service118is implemented to determine track-to-track relationships from the media asset relationship data116to identify similar music tracks that can be included in an automatic playlist of the similar music tracks. For example, the track-to-track relationships can be determined utilizing conditional probability, lift cosine distance, and the like. A relationship between music tracks can be based on a similarity measure, either by usage or probability. For example, there is a probability that when a user selects to playback a song A, then a song B will also be selected for playback. The probability or measure can be represented by a number, and if the number relation is above a defined threshold, then song B can be determined similar to song A. The asset model generation service118can then generate projection vectors120of the track-to-track relationships for each of the music tracks. A projection vector120for a music track identifies the similar music tracks that are related to the music track.

The projection vectors120can then be communicated to any of the client devices104when requested. Any of the various client devices104can include a playlist generator122that utilizes the projection vectors to generate an automatic playlist124for any one of the music tracks that is selected as a starting music track of the automatic playlist. The playlist generator122is implemented to calculate the distances between the starting music track and the similar music tracks using the projection vectors for each music track to generate the automatic playlist. The automatic playlist124is a list of music tracks that are recommend from a library of media assets126, such as music tracks stored on the client device that are similar to the selected music tracks. When a user at a client device wants to create a playlist, a music track is selected as the seed to the client-side playlist generator122. The playlist generator122then calculates the distances between music tracks using the projection vectors for each music track. The projection distance between each music track can be given by the Hamming distance between each projection vector.

The asset model generation service118at the service layer102is implemented to utilize random projection to generate the projection vectors120of the asset-to-asset relationships for each of the media assets, or similarly the projection vectors120of the track-to-track relationships for each of the music tracks in the ongoing example of a music service provider. A projection vector120for a music track is generated based on a weighted similarity measure between the music track and each of the similar music tracks. In an embodiment, a projection vector for a music track is generated by initializing the projection vector of a dimension length, and then for each of the similar music tracks, a random number is generated from a track identifier that is unique to each of the similar music tracks. The identifier for a music track can be run through a hashing algorithm that returns an integer, and the integer number is then input to a random number generator which produces a series of numbers between −1 and +1, and the numbers produced is equal to the dimensionality of the projection. Each music track identifier results in a different sequence of random numbers as generated by the random number generator.

A product is then generated by multiplying the random number by a weight of the track-to-track relationship between the music track and the similar music track. The product is added to the projection vector at a next position index in the projection vector. A projection vector120is a compressed representation of all the music tracks, and each element of the projection vector is a floating point number. Each element in the projection vector can then be quantized to either positive one (+1) or zero for a binary representation of the elements. For example, if an element number is greater than zero, then the number is set as positive one (+1), and if an element number is less than or equal to zero, then the number is set as zero. This series of integers can then be communicated to a client device104for use by the playlist generator122. This description can be represented by the pseudo-code:

Calculate the asset-to-asset relationships;Project the asset-to-asset relationships into random space as follows:For each asset:Initialize a projection vector of length M to zero for all elements.M is the dimensionality of the projection;For each related asset:Initialize a random number generator using a related asset identifieras a seed to the random number generator;For index = 0 to M − 1Get the next random number using the random number generator.The number is in the range of doubles [−1, 1];Multiply the random number by the asset-to-asset weight asdetermined above;Add the resulting product to the projection vector at position index;EndEndStore resulting projection vector into database.End

In an embodiment, the asset model generation service118at the service layer102can receive an automatic playlist124from a client device104after the automatic playlist is generated. The asset model generation service118can then determine additional music tracks that are related to the similar music tracks in the automatic playlist, yet the additional music tracks are not stored for playback at the client device. The client device can then download the additional music tracks and/or access and playback the additional music tracks as part of the automatic playlist.

In this example system100, wireless devices can include any type of device implemented to receive and/or communicate wireless data, such as any one or combination of a mobile phone128(e.g., cellular, VoIP, WiFi, etc.), a portable computer device130, a media device132(e.g., a personal media player, portable media player, etc.), and/or any other wireless device that can receive media assets in any form of audio, video, and/or image data. A client system can include a respective client device and display device134that together render or playback any form of audio, video, and/or image media content and media assets.

The display device134can be implemented as any type of a television, high definition television (HDTV), LCD, or similar display system. A client device can be implemented as any one or combination of a television client device136(e.g., a television set-top box, a digital video recorder (DVR), etc.), a computer device138, a gaming system140, an appliance device, an electronic device, and/or as any other type of client device or user device that may be implemented to receive media assets in any form of audio, video, and/or image data in a media asset distribution system.

Any of the various user devices104can be implemented with one or more processors, communication components, memory components, signal processing and control circuits, and a media asset rendering system. Further, any of the wireless devices and/or other client devices can be implemented with any number and combination of differing components as further described with reference to the example device shown inFIG. 2, and with reference to the example device shown inFIG. 5. A user device may also be associated with a user (i.e., a person) and/or an entity that operates the device such that a user device describes logical devices that include users, software, and/or a combination of devices.

Any of the user devices104can communicate with service layer102via a two-way data communication link of the communication network106. It is contemplated that any one or more of the arrowed communication links, along with communication network106, facilitate two-way data communication, such as from a user device104to the service layer102and vice-versa.

FIG. 2illustrates an example system200in which various embodiments of client playlist generation can be implemented. Example system200includes a portable device202(e.g., a wired and/or wireless device) that can be any one or combination of a mobile personal computer204, a personal digital assistant (PDA), a mobile phone206(e.g., cellular, VoIP, WiFi, etc.) that is implemented for data, messaging, and/or voice communications, a portable computer device208(e.g., a laptop computer, a laptop computer with a touch-screen, etc.), a media device210(e.g., a personal media player, portable media player, etc.), a gaming device, an appliance device, an electronic device, and/or any other type of portable device that can receive, display, and/or communicate data in any form of audio, video, and/or image data.

Each of the various portable devices (e.g., also referred to as client devices) can include an integrated display and/or an integrated touch-screen, as well as selectable input controls via which a user can input data and/or selections. For example, mobile personal computer204includes an integrated touch-screen212on which a user interface214can be displayed that includes displayable objects and/or user interface elements216, such as any type of an icon, image, graphic, text, selectable button, user-selectable control, menu selection, map element, and/or any other type of user interface displayable feature or item.

Any of the various portable devices described herein can be implemented with one or more sensors, processors, communication components, data inputs, memory components, storage media, processing and control circuits, and/or a content rendering system. Any of the portable devices can also be implemented for communication via communication networks that can include any type of a data network, voice network, broadcast network, an IP-based network, and/or a wireless network that facilitates data, messaging, and/or voice communications. A portable device can also be implemented with any number and combination of differing components as described with reference to the example device shown inFIG. 5. A portable device may also be associated with a user (i.e., a person) and/or an entity that operates the device such that a portable device describes logical devices that include users, software, and/or a combination of devices.

In this example, portable device202includes one or more processors218(e.g., any of microprocessors, controllers, and the like), a memory220, a communication interface222for data, messaging, and/or voice communications, and data inputs224to receive media items226and/or media content, as well as projection vectors228. Media items can include any type of email messages, text messages, digital photos, song selections, and the like. Media content (e.g., to include recorded media content) can include any type of audio, video, and/or image data received from any media content or data source, such as messages, television media content, music, video clips, data feeds, interactive games, network-based applications, and any other content.

Portable device202is implemented with a device manager230that includes any one or combination of a control application, software application, signal processing and control module, code that is native to the particular device, and/or a hardware abstraction layer for the particular device. Portable device202also includes a rendering system232to render user interfaces and user interface elements for display on any of the portable devices. The rendering system232is also implemented to receive and render any form of audio, video, and/or image data received from any media content and/or data source.

Portable device202includes various software and/or media applications234that may incorporate components and/or modules that can be processed or otherwise executed by the processors218. The media applications234can include a music and/or video player, a Web browser, an email application, a messaging application, a photo viewer, and the like. The software and/or media applications234can also include an operating system and a playlist generator236to implement various embodiments of client playlist generation at a client device as described herein. Features and aspects of the playlist generator236are described with reference to the playlist generator122shown inFIG. 1at a client device104.

Example methods300and400are described with reference toFIGS. 3 and 4in accordance with one or more embodiments of client playlist generation. Generally, any of the functions, methods, procedures, components, and modules described herein can be implemented using hardware, software, firmware, fixed logic circuitry, manual processing, or any combination thereof. A software implementation represents program code that performs specified tasks when executed by a computer processor. The example methods may be described in the general context of computer-executable instructions, which can include software, applications, routines, programs, objects, components, data structures, procedures, modules, functions, and the like. The methods may also be practiced in a distributed computing environment by processing devices that are linked through a communication network. In a distributed computing environment, computer-executable instructions may be located in both local and remote computer storage media and/or devices. Further, the features described herein are platform-independent and can be implemented on a variety of computing platforms having a variety of processors.

FIG. 3illustrates example method(s)300of client playlist generation. The order in which the method is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method, or an alternate method.

At block302, asset-to-asset relationships are determined to identify similar media assets that can be included in an automatic playlist of the similar media assets. In various implementations, the media assets112may be digital files of music tracks, books stored as digital media, or video programs, such as television programs, movies, music videos, and the like. For example, the asset model generation service118, such as at a music service provider (e.g., the service layer102), determines track-to-track relationships to identify similar music tracks that can be included in the automatic playlist of the similar music tracks.

At block304, projection vectors of the asset-to-asset relationships for each of the media assets are generated utilizing random projection. For example, the asset model generation service118generates the projection vectors120of the track-to-track relationships for each of the music tracks. A projection vector120for a music track identifies the similar music tracks that are related to the music track. The asset model generation service118utilizes random projection to generate the projection vectors based on a weighted similarity measure between a music track and each of the similar music tracks. Generation of the projection vectors is further described with reference toFIG. 4.

At block306, a request is received from a client device for the projection vectors. For example, a client device104requests the projection vectors120for each of the music tracks that are included in a music library126stored on the client device. At block308, the projection vectors are communicated to a client device that utilizes the projection vectors to generate the automatic playlist. For example, a playlist generator122at a client device104utilizes the projection vectors to generate the automatic playlist for any one of the music tracks stored on the client device that is selected as a starting music track of the automatic playlist. The automatic playlist124can be generated when the client device is off-line from the music service provider.

At block310, the automatic playlist is received from the client device after the automatic playlist is generated and, at block312, additional music tracks that are related to the similar music tracks in the automatic playlist are determined. For example, the music service provider (e.g., the service layer102) receives the automatic playlist124from the client device104that generates the automatic playlist. The music service provider then determines additional music tracks that are not stored for playback at the client device, yet that are related to the similar music tracks in the automatic playlist.

At block314, the asset-to-asset relationships are updated to include additional media assets. For example, the asset model generation service118, such as at a music service provider (e.g., the service layer102), updates the asset-to-asset relationships to include any new or additional media assets, such as when new music tracks are released. A new music track may be similar to existing music tracks, and the new music track is included as a similar music track. Similar to block304, additional projection vectors of the asset-to-asset relationships for each of the additional media assets are generated by the asset model generation service118, and similar to block308, the additional projection vectors are communicated to a client device104(e.g., when requested) to update the client device for the additional media assets.

FIG. 4illustrates example method(s)400of client playlist generation, and describes an embodiment to generate the projection vectors. The order in which the method is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method, or an alternate method.

The asset model generation service118at a music service provider (e.g., the service layer102) generates a projection vector utilizing random projection for each music track as described with reference to blocks402-408. At block402, a projection vector of a dimension length is initialized for a music track. Then, for each of the other music tracks, a projection vector index for a similar music track is determined at blocks404-408. At block404, a random number is generated from a track identifier that is unique to each of the similar music tracks. At block406, a product is generated by multiplying the random number by a weight of the track-to-track relationship between the music track and the similar music track. At block408, the product is added to the projection vector at a next position index in the projection vector. Blocks404-408are then repeated to generate the projection vector indexes for the similar music tracks, and blocks402-408are repeated for each music track.

FIG. 5illustrates various components of an example device500that can be implemented as any type of device and/or service layer as described with reference toFIGS. 1 and 2to implement embodiments of client playlist generation. In embodiments, device500can be implemented as any one or combination of a wired and/or wireless device, as any form of television client device (e.g., television set-top box, digital video recorder (DVR), etc.), consumer device, computer device, server device, portable computer device, user device, communication device, video processing and/or rendering device, appliance device, gaming device, electronic device, and/or as any other type of device. Device500may also be associated with a user (i.e., a person) and/or an entity that operates the device such that a device describes logical devices that include users, software, firmware, and/or a combination of devices.

Device500includes communication devices502that enable wired and/or wireless communication of device data504(e.g., received data, data that is being received, data scheduled for broadcast, data packets of the data, etc.). The device data504or other device content can include configuration settings of the device, media content stored on the device, and/or information associated with a user of the device. Media content stored on device500can include any type of audio, video, and/or image data. Device500includes one or more data inputs506via which any type of data, media content, and/or inputs can be received, such as user-selectable inputs, messages, music, television media content, recorded video content, and any other type of audio, video, and/or image data received from any content and/or data source.

Device500also includes communication interfaces508that can be implemented as any one or more of a serial and/or parallel interface, a wireless interface, any type of network interface, a modem, and as any other type of communication interface. The communication interfaces508provide a connection and/or communication links between device500and a communication network by which other electronic, computing, and communication devices communicate data with device500.

Device500includes one or more processors510(e.g., any of microprocessors, controllers, and the like) which process various computer-executable instructions to control the operation of device500and to implement embodiments of client playlist generation. Alternatively or in addition, device500can be implemented with any one or combination of hardware, firmware, or fixed logic circuitry that is implemented in connection with processing and control circuits which are generally identified at512. Although not shown, device500can include a system bus or data transfer system that couples the various components within the device. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures.

Device500also includes computer-readable media514, such as one or more memory components, examples of which include random access memory (RAM), non-volatile memory (e.g., any one or more of a read-only memory (ROM), flash memory, EPROM, EEPROM, etc.), and a disk storage device. A disk storage device may be implemented as any type of magnetic or optical storage device, such as a hard disk drive, a recordable and/or rewriteable compact disc (CD), any type of a digital versatile disc (DVD), and the like. Device500can also include a mass storage media device516.

Computer-readable media514provides data storage mechanisms to store the device data504, as well as various device applications518and any other types of information and/or data related to operational aspects of device500. For example, an operating system520can be maintained as a computer application with the computer-readable media514and executed on processors510. The device applications518can include a device manager (e.g., a control application, software application, signal processing and control module, code that is native to a particular device, a hardware abstraction layer for a particular device, etc.). The device applications518also include any system components or modules to implement embodiments of client playlist generation. In this example, the device applications518can include a playlist generator522when device500is implemented as a client device, and can include an asset model generation service524when device500is implemented as a server device or service layer. The playlist generator522and the asset model generation service524are shown as software modules and/or computer applications. Alternatively or in addition, the playlist generator522and the asset model generation service524can be implemented as hardware, software, firmware, or any combination thereof.

Device500also includes an audio and/or video input-output system526that provides audio data to an audio system528and/or provides video data to a display system530. The audio system528and/or the display system530can include any devices that process, display, and/or otherwise render audio, video, and image data. Video signals and audio signals can be communicated from device500to an audio device and/or to a display device via an RF (radio frequency) link, S-video link, composite video link, component video link, DVI (digital video interface), analog audio connection, or other similar communication link. In an embodiment, the audio system528and/or the display system530are implemented as external components to device500. Alternatively, the audio system528and/or the display system530are implemented as integrated components of example device500.

Although embodiments of client playlist generation have been described in language specific to features and/or methods, it is to be understood that the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as example implementations of client playlist generation.