Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
5721827
Logan , ; et al.
February 24, 1998
Title
System for electrically distributing personalized information
Abstract
An audio program and message distribution system in which a host system organizes and transmits program segments to client subscriber locations. The host organizes the program segments by subject matter and creates scheduled programming in accordance with preferences associated with each subscriber. Program segments are associated with descriptive subject matter segments, and the subject matter segments may be used to generate both text and audio cataloging presentations to enable the user to more easily identify and select desirable programming. A playback unit at the subscriber location reproduces the program segments received from the host and includes mechanisms for interactively navigating among the program segments. A usage log is compiled to record the subscriber's use of the provided program materials, to return data to the host for billing, to adaptively modify the subscriber's preferences based on actual usage, and to send subscriber-generated comments and requests to the host for processing. Voice input and control mechanisms included in the player allow the user to perform hands-free navigation of the program materials and to dictate comments and messages which are returned to the host for retransmission to other subscribers. The program segments sent to each subscriber may include advertising materials which the user can selectively play to obtain credits against the subscriber fee. Parallel audio and text transcript files for at least selected programming enable subject matter searching and synchronization of the audio and text files. Speech synthesis may be used to convert transcript files into audio format. Image files may also be transmitted from the server for synchronized playback with the audio programming.
Inventors:
Logan; James
(Windham,
NH
)
, Goessling; Daniel F.
(Wayland,
MA
)
, Call; Charles G.
(Hingham,
MA
)
Assignee:
Logan; James
(Windham,
NH
)
Appl. No.:
724811
Filed:
October 2, 1996
Current U.S. Class:
709/217
Current International Class:
G06Q 30/00 (20060101)
Field of Search:
395/200.36,200.47,200.49,610,200.18 348/13,571 455/4.1,4.2,5.1,6.3
U.S. Patent Documents
4305131
December 1981
Best
4931950
June 1990
Isle et al.
5307456
April 1994
Mackay
5319455
June 1994
Hoarty et al.
5485611
January 1996
Astle
Primary Examiner:
Ramirez; Ellis B.
Attorney, Agent or Firm:
Banner & Witcoff, Ltd.
Claims
What is claimed is:
1. A personalized electronic information delivery system comprising, in combination,
a host subsystem comprising:
a file storage server for storing a library of program segments, at least some of which include natural language text recorded in digital compressed form,
means for storing a category description for each of a plurality of subject matter categories,
means for storing a program description of each of said program segments, each of said program descriptions including the identification of one or more of said subject matter categories to which the described program segment belongs,
means for storing a subscriber description of each of a plurality of subscribers, each of said subscriber descriptions containing information indicative of particular subject matter categories designated as being of interest to the described subscriber,
means for compiling a personalized catalog of suggested program segments for a given one of said subscribers, said personalized catalog consisting of category descriptions and program descriptions selected in accordance with the subscriber description for said given subscriber,
means for transmitting said personalized catalog upon request, and
means for transmitting identified ones of said program segments upon request,
a data communications pathway, and
a client player device located remotely from said file storage server, said player device comprising, in combination:
means for establishing a bi-directional data transfer connection between said player device and said file storage server,
means for transferring information to said host system for inclusion in a subscriber description for a designated subscriber having access to said player device,
means for transmitting to said host system a request for a personalized catalog compiled for said designated subscriber,
means for receiving the requested catalog from said host subsystem,
means for transmitting said to said host system a request for one or more desired program segments selected from the suggested program segments in the requested catalog, and
means for receiving said desired program segments from said host system, and
means for reproducing said natural language text in a form comprehensible to a human user from selected ones of said program segments.
2. A personalized electronic information delivery system as set forth in claim 1 wherein said natural language text recorded in compressed form consists of a digital audio recording of spoken natural language text.
3. A system as set forth in claim 2 wherein said host subsystem further includes means for storing digital data representing a transcript of at least a portion of the spoken natural language text recorded in at least some of said program segments.
4. A personalized electronic information delivery system as set forth in claim 1 wherein said natural language text recorded in compressed form consists of digital data representing a sequence of words expressed as text characters and wherein said means for reproducing said natural language text in a form comprehensible to a human user comprises speech synthesis means for converting said word into audible spoken form understandable to a human listener.
5. A personalized electronic information delivery system as set forth in claim 1 wherein said subscriber descriptions include information describing the attributes of a given subscriber and wherein at least selected ones of said program descriptions contain subscriber attribute information specifying the attributes of subscribers to whom the described program segment may be of interest, and wherein said means for compiling a personalized catalog includes means for matching the attributes in said subscriber descriptions to the subscriber attribute information in said program descriptions.
6. A stem as set forth in claim 5 wherein said subscriber attribute information specifies the age of said subscriber and wherein said program descriptions specify the ages of subscribers to whom the described segment may be of interest.
7. A system as set forth in claim 5 wherein said subscriber attribute information specifies the sex of said subscriber and wherein said program descriptions specify the sex of subscribers to whom the described segment may be of interest.
8. A system as set forth in claim 5 wherein said subscriber attribute information specifies the marital status of said subscriber and wherein said program descriptions specify the marital status of subscribers to whom the described segment may be of interest.
9. A system as set forth in claim 5 wherein said subscriber attribute information specifies the geographic location of said subscriber and wherein said program descriptions specify the geographic location of subscribers to whom the described segment may be of interest.
10. A personalized electronic information delivery system as set forth in claim 1 wherein at least some of said category descriptions further contain information indicative of other cross-referenced subject matter categories to which the described category is related and wherein said means for compiling said catalog includes means for including said cross-referenced category descriptions in said catalog.
11. A personalized electronic information delivery system as set forth in claim 1 wherein said data communications pathway is a digital transmission system and wherein said file storage server stores said programs in identified files which may be transmitted via said digital transmission system.
12. A personalized electronic information delivery system as set forth in claim 11 wherein each of said program descriptions includes means for identifying one or more files stored on said file storage server which relate to the program segment described by that program description.
13. A personalized electronic information delivery system as set forth in claim 1 wherein said host subsystem further comprises:
means for receiving from a subscriber via said communications pathway a search request for the identification of program segments satisfying criteria specified in said search request,
means for compiling a listing of said programs satisfying said criteria, and
means for transmitting said listing to that subscriber which issued said search request.
14. A personalized electronic information delivery system as set forth in claim 1 wherein said host subsystem further comprises means for compiling a program schedule consisting of an ordered sequence of selected ones of said program segments and means for transferring said program schedule to said client player via said communications pathway, and wherein said client player includes means for reproducing said selected ones of said program segments.
15. A system as set forth in claim 14 wherein said client player includes means for reproducing said selected ones of said program segments in the order specified in said program schedule.
16. A system as set forth in claim 14 wherein said client player includes means for altering said program schedule to form an edited schedule and means for reproducing the program segments in the order specified in said edited schedule.
17. A system as set forth in claim 14 wherein said client player includes means locally storing program segments received from said host subsystem, means for comparing the specification of program segments contained in said program schedule with the identity of program segments locally stored by said client player, and means for transmitting a request to said server subsystem for programs segments specified in said program schedule but not locally stored by said client player.
18. A personalized electronic information delivery system as set forth in claim 1 wherein said client player system includes means for recording a usage log containing the identification of program segments played and means for transmitting said usage log to said host subsystem, and wherein said host subsystem includes means for processing said usage log to produce billing information for said subscriber.
19. A personalized electronic information delivery system as set forth in claim 1 wherein said client player system includes means for recording a usage log containing the identification of program segments played and means for transmitting said usage log to said host subsystem, and wherein said host subsystem includes excluding from said catalog of suggested program segments at least some of the program segments identified on said usage log as having been played.
20. A personalized electronic information delivery system as set forth in claim 14 wherein said client player system includes means for recording a usage log containing the identification of program segments played and means for transmitting said usage log to said host subsystem, and wherein said host subsystem includes excluding from said program schedule at least some of the program segments identified on said usage log as having been played.
21. A personalized electronic information delivery system comprising, in combination,
an Internet host subsystem comprising:
a file storage server for storing a plurality of program segments, at least some of which include natural language text recorded in digital compressed form and stored as named retrievable files,
means for storing a category description for each of a plurality of subject matter categories,
means for storing a program description of the information content of each of said program segments, each of said program descriptions including the identification of one or more of said subject matter categories to which the described program segment belongs,
means for storing a subscriber description of at least one subscriber, said subscriber description containing information indicative of particular subject matter categories designated as being of interest to said subscriber,
means for compiling a personalized catalog of suggested program segments for use by said subscriber, said personalized catalog consisting of category descriptions and program descriptions selected in accordance with said subscriber description,
a port for establishing a data communications pathway to the Internet,
means for transferring said personalized catalog to said subscriber, and
means for transmitting identified ones of said program segments to said subscriber upon request, and
a client player device accessible to said subscriber at a geographic location remote from said host subsystem, said player device comprising, in combination:
means for establishing a data transfer connection via the Internet between said player device and said Internet host subsystem,
means for transferring information describing said subscriber to said host system for inclusion in said subscriber description,
means for transmitting to said host system a request for a said personalized catalog,
means for receiving the requested catalog from said host subsystem,
means for transmitting said to said host system a request for one or more desired program segments selected from the suggested program segments in the requested catalog, and
means for receiving said desired program segments from said host system, and
means for reproducing said natural language text in a form comprehensible to a human user from selected ones of said program segments.
22. A personalized electronic information delivery system as set forth in claim 21 wherein said natural language text recorded in compressed form consists of a digital audio recording of spoken natural language text.
23. A system as set forth in claim 22 wherein said host subsystem further includes means for storing digital data representing a transcript of at least a portion of the spoken natural language text recorded in at least some of said program segments.
24. A personalized electronic information delivery system as set forth in claim 21 wherein said natural language text recorded in compressed form consists of digital data representing a sequence of words expressed as text characters and wherein said means for reproducing said natural language text in a form comprehensible to a human user comprises speech synthesis means for converting said word into audible spoken form understandable to a human listener.
25. A personalized electronic information delivery system as set forth in claim 21 wherein said subscriber descriptions include information describing the attributes of a given subscriber and wherein at least selected ones of said program descriptions contain subscriber attribute information specifying the attributes of subscribers to whom the described program segment may be of interest, and wherein said means for compiling a personalized catalog includes means for matching the attributes in said subscriber descriptions to the subscriber attribute information in said program descriptions.
26. A system as set forth in claim 25 wherein said subscriber attribute information specifies the age of said subscriber and wherein said program descriptions specify the ages of subscribers to whom the described segment may be of interest.
27. A system as set forth in claim 26 wherein said subscriber attribute information specifies the sex of said subscriber and wherein said program descriptions specify the sex of subscribers to whom the described segment may be of interest.
28. A system as set forth in claim 27 wherein said subscriber attribute information specifies the marital status of said subscriber and wherein said program descriptions specify the marital status of subscribers to whom the described segment may be of interest.
29. A system as set forth in claim 28 wherein said subscriber attribute information specifies the geographic location of said subscriber and wherein said program descriptions specify the geographic location of subscribers to whom the described segment may be of interest.
30. A personalized electronic information delivery system as set forth in claim 21 wherein at least some of said category descriptions further contain information indicative of other cross-referenced subject matter categories to which the described category is related and wherein said means for compiling said catalog includes means for including said cross-referenced category descriptions in said catalog.
31. A personalized electronic information delivery system as set forth in claim 21 wherein said data communications pathway is a digital transmission system and wherein said file storage server stores said programs in identified files which may be transmitted via said digital transmission system.
32. A personalized electronic information delivery system as set forth in claim 31 wherein each of said program descriptions includes means for identifying one or more files stored on said file storage server which relate to the program segment described by that program description.
33. A personalized electronic information delivery system as set forth in claim 21 wherein said host subsystem further comprises:
means for receiving from a subscriber via said communications pathway a search request for the identification of program segments satisfying criteria specified in said search request,
means for compiling a listing of said programs satisfying said criteria, and
means for transmitting said listing to that subscriber which issued said search request.
34. A personalized electronic information delivery system as set forth in claim 21 wherein said host subsystem further comprises means for compiling a program schedule consisting of an ordered sequence of selected ones of said program segments and means for transferring said program schedule to said client player via said communications pathway, and wherein said client player includes means for reproducing said selected ones of said program segments.
35. A system as set forth in claim 34 wherein said client player includes means for reproducing said selected ones of said program segments in the order specified in said program schedule.
36. A system as set forth in claim 34 wherein said client player includes means for altering said program schedule to form an edited schedule and means for reproducing the program segments in the order specified in said edited schedule.
37. A system as set forth in claim 34 wherein said client player includes means locally storing program segments received from said host subsystem, means for comparing the specification of program segments contained in said program schedule with the identity of program segments locally stored by said client player, and means for transmitting a request to said server subsystem for programs segments specified in said program schedule but not locally stored by said client player.
38. A personalized electronic information delivery system as set forth in claim 21 wherein said client player system includes means for recording a usage log containing the identification of program segments played and means for transmitting said usage log to said host subsystem, and wherein said host subsystem includes means for processing said usage log to produce billing information for said subscriber.
39. A personalized electronic information delivery system as set forth in claim 21 wherein said client player system includes means for recording a usage log containing the identification of program segments played and means for transmitting said usage log to said host subsystem, and wherein said host subsystem includes excluding from said catalog of suggested program segments; at least some of the program segments identified on said usage log as having been played.
40. A personalized electronic information delivery system as set forth in claim 37 wherein said client player system includes means for recording a usage log containing the identification of program segments played and means for transmitting said usage log to said host subsystem, and wherein said host subsystem includes excluding from said program schedule at least some of the program segments identified on said usage log as having been played.
Description
FIELD OF THE INVENTION
This invention relates to electronic information distribution systems and more particularly to a system for selectively distributing personalized information and entertainment programming to subscribers.
BACKGROUND OF THE INVENTION
Conventional broadcasting systems offer a wide variety of programming from a large number of simultaneously operating radio and television broadcasting stations. The listening audience generally discovers, through trial and error or through investigation of printed program guides, particular stations that broadcast information and entertainment programming of particular types, and these selected stations are then depended upon for most of the programming that is received. Unfortunately, the listener or viewer is seldom able to receive the programming that is most desirable because it is broadcast at inconvenient times, or cannot be identified among the large amount of programming which is being broadcast at any given time.
The shortcomings of conventional broadcasting are particularly noticeable to business travelers and commuters who are necessarily confined to their automobile for prolonged periods which might be more productive if it were possible to obtain access to specialized news and information of value seldom available by from commercial broadcasters.
It is accordingly a principal object of the present invention to deliver personalized information tailored to the personal interests and preferences of individual subscribers.
SUMMARY OF THE INVENTION
In a principle aspect, the present invention take the form of a personalized information delivery system which provides information and entertainment programming to individual subscribers from a library consisting of a large number of diverse programs, and which incorporates mechanisms for selectively delivering a subset of those programs to a given subscriber based on that subscriber's characteristics, subject matter preferences and interests, and express requests.
As contemplated by the invention, the library of programs is created and maintained by a server subsystem to which a remotely located subscriber/player subsystem can connect by means of a conventional data transmission link, such as a dial up Internet connection. The programs making up the library are subdivided into program segments, one of which contains an audio presentation of the content of the program and, if that content includes a voice narrative, it is preferably accompanied by a text file transcript. Each program segment is associated with a subject category description which typically describes a plurality of related program segments, and a program topic description describes the content of each individual program segment. Combinations of these category and program descriptions which are of interest to a particular subscriber are transferred from the server subsystem to that subscriber's player subsystem, thereby providing a subject matter catalog from which the subscriber may expressly request particular programs.
In the preferred embodiment of the invention, to facilitate use of the system by the subscriber, the server subsystem accepts from the subscriber indications of the subscriber's general interests, characteristics and preferences and this subscriber characterization data is periodically matched against the characteristics of each stored program segment to identify those segments of significant potential appeal to that subscriber. The catalog of programs supplied to the user may accordingly be limited to, or otherwise emphasize, categories and selections to which the subscriber's attention should be specifically directed.
In order to match the subscriber's preferences to the programming most likely to match those preferences, the server subsystem creates data for each program segment characterizing a series of attributes of persons likely to have an interest in that program segment. The server further includes means for matching the attributes of each subscriber against the attributes of each program segment to form a weighted value indicative of the extent to which the preferences of the subscriber match the attributes of the target audience for that program. Programs which have the highest weighted value for a given user are then brought to the attention of that user, either by including those programs in the user's catalog, or by including the program in an actual proposed listening schedule when space permits.
These and other objects, features and advantages of the present invention may be more completely understood by considering the following detailed description of a preferred embodiment of the invention. In the course of this description, reference will frequently be made to the attached drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block schematic diagram of an electronic program and advertising distribution system which embodies the invention;
FIG. 2 is a flow chart illustrating the principle steps followed in the course of the performing the information distribution functions contemplated by the invention;
FIG. 3 is a flow chart illustrating the principle steps performed during a playback session in the illustrative embodiment;
FIG. 4 is an information structure and data flow diagram illustrating the manner in which programming is selected and accounting functions are performed in the illustrative embodiment of the invention;
FIG. 5 is an information structure diagram illustrating the manner in which the program segments are dynamically selected and played in response to the user's preferences and control decisions;
FIG. 6 is a flow chart which describes a preferred procedure for preparing the program content which is distributed to subscribers in accordance with the invention; and
FIG. 7 is an information structure diagram illustrating the manner in which a narrative text file expressed in hypertext markup language (HTML) may be translated in to the combination of an audio speech file, a text file transcript, and a sequencing file used by the player to create a multimedia presentation.
DESCRIPTION OF THE PREFERRED EMBODIMENT
The illustrative embodiment of the invention shown in FIG. 1 utilizes the Internet to provide communications between a host computer indicated generally at 101 and an audio player device illustrated at 103.
Subscriber Audio Player
The player 103 may be advantageously implemented by a conventional laptop or desktop personal computer including a processor (the client CPU 105), a time of day clock 106, and a data storage system consisting of both high speed RAM storage and a persistent mass storage device, such as a magnetic disk memory, the data storage system being used for storing audio, text and image data at 107 and for storing usage data at 109 which records the nature of the programming reproduced by the player 103. The player 103 further includes a sound card 110 which receives audio input from a microphone input device 111 for accepting voice dictation and commands from a user and which delivers audio output to a speaker 113 in order to supply audio information to the user. The program data stored at 107 may advantageously include compressed audio recordings and/or text (files of characters) which may be converted into audio form by conventional speech synthesis programs executed by the client CPU 105.
The sound card 110 is conventional and preferably complies with the recommendations detailed in the Hardware Design Guide for Microsoft Windows 95, by Doug Klopfenstein, Microsoft Press (1994), ISBN 1-55615-642-1. The sound card 110
advantageously supports a 44 kHz, 16-bit, stereo codec providing analog to digital conversion of audio input signals from the microphone 111 as well as digital to analog conversion for programming directed to the speaker 111. The sound card provides external connections and hardware support for Microphone-In, Line-In, Line-Out, and Headphones-Out, with volume controlled by the player software (including volume level logging as discussed later in connection with FIG. 3 of the drawings).
To support multimedia capabilities, the CPU 105 should meet or exceed the capabilities of an Intel 486 DX2-66 computer to provide consistently good playback results and the sound card 110 should include a 16-bit digital-to-analog converter for playback and a 16-bit analog-to-digital converter for recording. The sound card 110 should further support 8, 11, 22, and 44 kHz waveforms. A frequency of 44 kHz is used for CD-quality sound and fractions of 44, such as 11 and 22, are often used for compressed waveforms meant to save CPU processing. Support for an 8 kHz frequency should be in order to properly support Windows 95 TrueSpeech.TM. compression, which is optimized for compression and playback of human speech. Using TrueSpeech compression, programs containing largely voice narrative data can be substantially condensed, and users can record annotations and voice mail responses as discussed later.
In addition, the sound card 110 should be capable of reproducing downloaded MIDI (Musical Instrument Device Interface) commands, enabling the system take a MIDI data stream and produce sound according to the compressed files consisting of digital sheet music instructions. Preferably, the sound card should support at least 16-voice polyphony (the ability to play several sounds at the same time), and polymessage MIDI, an capability included in Windows 95 that allows a sound card to receive and batch-process multiple MIDI messages (such as Note On and Note Off). The sound card 110 should also a microphone port for microphone 111, a speaker-out port (for one or two (stereo) unpowered speakers 113, and a headphone-out port.
The personal computer CPU 105 is also preferably connected to a conventional personal computer video display 118 and a standard keyboard 119, as well as a pointing device (such as a mouse, trackball or touchpad, not shown). The facilities provided by the operating system, such as Windows 95, typically includes multimedia support, as noted above, as well as a standard WINSOCK TCP/IP stack and modem dial up driver software to support a SLIPP/PPP Internet connection, as next discussed.
The player 103 further includes a conventional high speed data modem 115 for receiving (downloading) the program information 107 from the remote server 101 and for transmitting (uploading) program selections and preferences as well as usage data in the file 109 to the server 101. To effect these file transfers, the modem 115 is connected via conventional dial up telephone SLIP or PPP TCP/IP series data communication link 117 to an Internet service provider 121 which provides access to the Internet. The service provider 121 is in turn connected to the host server 101 via a high speed Internet link seen at 123.
Host File Server
The host server 101 provides a FTP server interface 125 which provides file transfer protocol services to the player 103, a CGI interface 127 which performs Common Gateway Interface script program execution in response to requests from the player
103, and an HTML interface 129 which provides hypertext transport protocol (HTTP) World Wide Web server functions to the connected player 103. The host server 101 stores and maintains a plurality of data files including a program data library indicated generally at 130 consisting of a collection of compressed audio program segments 131, announcement ("glue") segments 132, text program segments 133, image segments 134, advertising segments 135 and program catalog information 137.
The compressed audio segments program segments comprise audio voice and music files which may be compressed using conventional compression mechanisms suited to the data being compressed, such as TrueSpeech compression for voice signals and MIDI files for compressed synthetic music reproducible by the sound card 110 as noted earlier.
Compressed voice programming in the database 131 may advantageously be accompanied by text transcripts (files of characters) stored in the text database 133. Similarly, images stored in the image database 134 may be used to provide a multimedia presentation which combines images reproduced on the display 118 of player 103 with concurrently presented audio at the speaker 113 and/or displayed text. Program segments which present advertising , illustratively shown as being resident in a separate database 135 in FIG. 1, may likewise consist of audio, text and/or image segments, as may the program segments which provide announcements between program segments as well as audible and visible menu options which the user may select as described later.
As hereinafter described in connection with FIG. 5, each voice or text program segment preferably includes a sequencing file which contains the identification of highlighted passages and hypertext anchors within the program content. This sequencing file may further contain references to image files and the start and ending offset locations in the audio presentation when each image display should begin and end. In this way, the image presentation may be synchronized with the audio programming to provide coherent multimedia programming.
As contemplated by the invention, information which is available in text form from news sources, libraries, etc. may be converted to compressed audio form either by human readers or by conventional speech synthesis. If speech synthesis is used, the conversion of text to speech is preferably performed at the client station 103 by the player. In this way, text information alone may be rapidly downloaded from the server 101 since it requires much less data than equivalent compressed audio files, and the downloaded text further provides the user with ready access to a transcript of voice presentations. In other cases, where it is important to capture the quality and authenticity of the original analog speech signals, a text transcript file which collaterally accompanies a compressed voice audio file may be stored in the database 133 from which a transcript may be made available to the user upon request.
The host server 101 further stores web page data 141 which is made available to the player 103 by means of the HTML interface 128. The host server 101 additionally stores and maintains a user data and usage log database indicated at 143 which stores uploaded usage data received from the store 109 in the player 103 via the Internet pathway 123 and the FTP server interface 125. The user data 143 further contains additional data describing the preferences, demographic characteristics and program selections unique to each subscriber which is developed largely from user-supplied data obtained when users submit HTML form data via the Internet pathway 123 for processing by the CGI mechanism 127.
The host server 101 periodically transmits a download compilation file 145 upon receiving a request from the player 103. The file 145 is placed in a predetermined FTP download file directory and assigned a filename known to the player 103. At a time determined by player 103 monitoring the time of day clock 106, a dial up connection is established via the service provider 121 and the Internet to the FTP server 125 and the download compilation 145 is transferred to the program data store 107 in the player 103. The compilation 145 is previously written to the download directory by a download processing mechanism seen at 151 in the server 101. Download processing, as described in more detail later, extracts from the library 130 data defining compressed program, advertising, and glue segments, and/or associated text program data, based on selections and preferences made by (or inferred for) the user as specified in the subscriber data and usage log database 143.
The download compilation file 145, though represented as a single file in FIG. 1, preferably takes the form of one or more subscriber and session specific files which contain the identification of separately stored storable files. By way of example, the recommended order and the identification of the program files making up an individual playback session are stored in a session schedule file (to be described in detail in connection with FIG. 5) which contains program identifiers of the program segments to be played during an upcoming session. The player 103 downloads the session schedule file and then issues download requests for those identified program segment files which are not already available in the player's local storage unit
107.
Usage data in the store 109 maintained by the player 103 is preferably uploaded as a file bearing a predetermined file name indicative of the particular subscriber and upload time and stored in a predetermined FTP upload directory. This upload advantageously occurs at the same time the player 103 establishes a download connection to the FTP server 125 as noted earlier, and occurs prior to the download of the compilation 145. Because the upload data from the store 109 in the player 103
identifies program segments desired by the subscriber, program segments newly requested by the user are appended to the compilation 145. Note that, in typical cases, programming in addition to the specifically requested programming will be included in the download compilation, and the transfer of that programming can begin immediately while the newly uploaded user selections and other information are being processed as indicated at 153 to identify additional information to be included in the download compilation.
As indicated at 161 in FIG. 1, the host server upload processing mechanism 153 also provides a number of reports, as described in more detail later, based upon the record of actual player use by individual subscribers and the community of subscribers as a whole. This report processing is advantageously performed on a periodic basis in connection with financial and accounting functions including subscriber and advertiser billing, content provider royalty payment accounting, and marketing analysis processing.
It should be understood that numerous other information storage, processing and communications schemes may be substituted for the preferred Internet server and PC client player architecture shown in FIG. 1. A dedicated host computer which communicates directly with client stations via dial up telephone facilities may be used, and cellular radio, cable modem and satellite links may be used to provide data communications in lieu of the conventional SLIP/PPP telephone and Internet links shown in FIG. 1. To facilitate use of the system in an automobile, a "player" computer may be linked to the Internet via a local communications server computer via a radio or infrared link when the car is parked at the subscriber's home or office. The Infrared Data Association's (IrDA) wireless infrared (IR) standard provides a highly effective, low-cost communications pathway rapidly becoming a standard feature in all notebook computers and PDAs. The IrDA international standard provides interoperability among widely diverse systems, involves no governmental regulation, are provided at low cost, provide high speed file transfers (e.g., 4 Mbs data rates), are small and can be easily incorporated into portable computers of the type which may be used in a car or on public transportation. Alternatively, the files downloaded from the host may be stored on a replaceable media, such as an optical disk cartridge, which may then be inserted into a portable computer or simplified player for mobile use. A direct link between a mobile client player (such as a laptop PC) may be implemented using the Cellular Digital Packet Data (CDPD) service presently available in major metropolitan areas to provide low-cost access to the Internet using the TCP/IP protocol, and provides the advantage that needed program segments can be downloaded while a session is in progress, eliminating the need for a complete download before the mobile unit is disconnected from its data source.
Upload and Download Sequence--Overview
FIG. 2 illustrates the sequence of major events which are executed the program dissemination system contemplated by the invention.
As indicated at 203, an interested subscriber invokes programming services by first supplying personal information and initial programming preferences during an account initialization procedure. Preferably, as explained in more detail later, account initialization is accomplished by presenting the subscriber with HTML forms to complete and submit to CGC script programs which execute on the server to post subscriber supplied information into an initial user dataset. Based on the information supplied by the user, the server then compiles one or more files for downloading to the subscriber at step 207 which include programming and advertising segments as well as additional data and utility programs needed by the player 103 to begin operation. The download operation preferably occurs at a time established by the player which establishes a dial up connection via the SLIP/PPP serial connection 117 to the local Internet service provider 121 which provides an Internet connection to the host FTP server 125. The download file or files containing programming and advertising segments as well as subscriber specific data are designate by filenames provided by the requesting client/player 103 and moved from storage unit 145 utilizing the FTP server
125 and the Internet connection into local storage at 107 in the client/player 103. The filenames used to specify the files in the server 125 may conveniently be formed from the program.sub.-- id value used internally by both the host and the player to identify and differentiate the different program segments used.
The data downloaded includes a recommended program sequence file which provisionally identifies the order in which downloaded program segments are to be played, with the initial selection and sequence being established based on user preference data by the download compilation processing mechanism seen at 151 at the server.
Before a playback session begins, as indicated at 211, the subscriber has the opportunity to review and alter the provisional program selections and sequence established as a default by the downloaded information from the server. Utilizing the programming data and a utility program previously supplied by the server, the subscriber may alter the selection and sequence of program materials to be played, including altering the extent to which advertising will be played along with the selected programming.
At the request of the user, the sequence of programming defined by the program sequence file (the selections file illustrated at 351 in FIG. 5) is then reproduced for the listener. As contemplated by the invention, the player 103 includes controls which enable the user to easily move from program segment to program segment, skipping segments in a forward or reverse direction, or to jump to a particular segment, and thus alter the preprogrammed sequence. Nevertheless, when any given program segment concludes, the next segment which is specified as following the given segment will begin playing unless the listener intervenes. Thus, although the segments are stored in randomly addressable locations in the local mass storage unit, they are nonetheless played at step 212 in the sequence established initially by the server and (optionally) modified by the subscriber, with the player providing the ability to dynamically switch to any position in this sequence under the listeners control. As indicated at 213 in FIG. 2, the listener may at any time return to the sequence editing step 211 to manually reorder the playing sequence if desired. As indicated at 215, a session usage log is recorded during the playback session to identify every segment actually played, the volume and speed at which that segment was played, and the start and end times.
At step 211, in addition to deleting and reordering items on the program schedule, the user may alter his or her selections and general subject matter preferences to control the manner in which the host assembles program schedules for future sessions. When programs are included in a current schedule which are of particular interest, the subscriber may assign a priority value to the scheduled program and, in that way, inform the host that the user has an interest in receiving more programming in the same subject matter categories in which the identified program is classified. When a program in a serialized sequence is assigned a new or different priority value at step 211, the host system 101 assigns a corresponding Importance value to the program.sub.-- segment record for each of the remaining unplayed programs in that serialized sequence. Note that, by expressly approving advertising segments or categories of acceptable advertising in this fashion, the subscriber may be granted a rate reduction since advertisers are generally willing to pay more for advertising directed to customers having a known interest in a given subject.
At the conclusion of a session, subscriber is given the opportunity at 217 to select programming which should be included in the next programming download. To facilitate this selection process, additional programming which fits the subscriber's indicated subject matter preferences, along with additional programming which the server includes as being of particular interest, is identified in a catalog (as periodically supplemented by a download file seen at 308 in FIG. 4) and presented to the user in the form of a proposed program schedule together with a catalog of additional selections which may be substituted or inserted into the proposed schedule. At step 219, the selections made by the user at 217 as well as the contents of the usage log recorded at 215 are uploaded to the server as a requested file (seen at 301 in FIG. 4). This upload step may occur at the same time the SLIP/PPP dial-up connection is established by the player 103 to accomplish the download, with the upload occurring first by an FTP file transfer from the usage data store 107 to the FTP server 125 followed by the downloading of files requested by the client 103 from the FTP server.
In addition to the downloaded catalog of available items which may be viewed by the subscriber from the available downloaded information, the user may re-establish an Internet connection to the HTML web server 129 which presents HTML program selection and search request forms, enabling the subscriber to locate remotely stored programming which may be of particular interest to the subscriber. When such programs are selected in the HTML session, the user's additional preferences and selections may be posted into the user data file 143 and the identification of the needed files may be passed to the client/player 103 for inclusion in the next download request.
Account Initialization
As contemplated by the invention, a subscriber account may be established by any user having a personal computer equipped to provide the capabilities needed to implement the player 103 as described above, together with Internet access via a service provider 121. Although a conventional modem dial up connections will perform satisfactorily, the time required for uploading and downloading the necessary files may be substantially reduced using higher speed access, such as an ISDN or cable modem link, when those services are available.
To establish a new account, a prospective subscriber may use a conventional web browser program, such as Mosaic, Netscape Navigator or Microsoft's Internet Explorer, which executes in the client CPU 105 to establish a conventional HTTP request/response dialog with server 101. The account initialization begins with the transmission of an HTML form from the web page store 141 which is completed by the user at the keyboard (not shown) of the client CPU 105. The account information is then transmitted to using a HTTP post method directed at a form processing CGI script executed by the server at 127 to place descriptive information about the user in an assigned user data file as seen at 143. After the account has been established, utility programs and data may be downloaded from the FTP server 125 to the client/player 103. These utility programs advantageously include programs which perform functions including (a) program decompression, playback and navigation; (b) recording of a usage log file identifying the program and advertising segments played and the start time, ending time, volume level and playing speed for each such segment; and (c) the selection and updating of programming preferences and selections for future downloading.
The data fields supplied by a new subscriber at the initialization step 203 may advantageously include the user's full name and billing address, credit card information or the like for use in subscriber billing; and descriptive data about the subscriber (and others who may share the downloaded material), such as: age, profession, sex, and marital status; the identification of subject matter categories of interest to the subscriber, preferably with assigned weighting factors indicating the level of interest in each category. The subscriber may also indicate general preferences with respect to the including advertising, including an indication of the amount of advertising which is acceptable to defray subscription costs, ranging from fully advertised programming for minimum subscription charges to the complete exclusion of advertising.
In addition, the subscriber may request and be presented with an HTML form which lists available programs in a particular selected subject matter area, with a priority weighting factor pre-assigned to each in accordance with the subscriber's previous specification for that category. The form presented thus reflects the previously entered level of interest weighting factor for each program based on its subject matter category, but permits the subscriber to override the suggested default value on a program by program basis. Similarly, the subscriber is given the opportunity to override the default amount of advertising desired.
Advertising may be associated with particular subject matter categories as well as with particular programs. For example, an airline may wish to advertise generally in connection with programming in the "travel" category whereas a particular resort hotel may wish to advertise only in connection with a particular travelogue program for the region where it is located. Subscribers may wish to hear advertising in connection with the programming in the travel category, but to eliminate commercials from a daily program presenting "today's weather report." The result is clearly advantageous for the advertiser, since advertising is focused more clearly on those having an interest in the subject matter and an expressed willingness to listen to commercial messages, while the subscriber is able to receive advertising which may be regarded as useful while eliminating unwanted advertising.
Because personal data describing each subscriber's subject matter interests is available, along with personal data (age, marital status, zip code, etc.), particular advertising segments may be directed to only those subscribers having a likely interest in the goods or services advertised. This targeted advertising need not be presented at any time during the playback for the designated subscriber and need not be timed for presentation with particular programs. For example, a subscriber indicating an interest in travel programming may be supplied with advertising from an airline at any time, and not necessarily concurrent with selected travel programming.
Because a subscriber may have a particular interest in or enjoy some advertising, and may have a particular dislike for other specific advertising, the user may advantageously be presented with a listing of advertising organized by advertiser and subject, providing the subscriber with the opportunity to select additional desired advertising on the list while suppressing others. Since the voluntary acceptance of advertising preferably reduces the programming charge to the subscriber, the utility program which executes on the client CPU 105 to enable program and advertising selection, sequencing and editing preferably provides an advisory indication to the subscriber of the charges or credits to be accrued if the currently programmed sequence is played. This feature enables subscribers to better control the costs of the service by accepting sufficient advertising content to reduce the subscription cost to an acceptable level. Subscribers may also set a player system variable to a value indicating the subscription costs per unit time that the subscriber is willing to accept, and the player 103 can then automatically insert advertising segments between program segments in sufficient quantity to achieve a net charge at the desired level.
Player Operation
The playback operation indicted generally at 212 in FIG. 2 is illustrated in more detail in FIG. 3.
In order to limit access to the downloaded programming materials to the subscriber or persons authorized by the subscriber, the playback utility program executing on the client CPU 105 (FIG. 1) advantageously begins the session by requesting the entry of a password as indicated at 231. The entry of this or a different password may also be required for access to the utility programs used to modify the subscriber's personal data, future program selections, and current program selections and sequencing. Similarly, information which might be revealed concerning an individual subscriber by the host server 101 is advantageously password protected.
As with all Internet transactions, the actual data transmissions of information other than publicly available programming may also be encrypted. To this end, the client and server ends of the pathway may exchange public keys to enable encrypted transmission using conventional RSA encryption. By placing the decryption capability within the capability of the playback unit which is capable of directing decrypted content only to the system's speakers and display screen, but not to a file, the system insures that the internal usage accounting mechanism cannot be bypassed by reproducing downloaded program segments using other means. In addition, and as a part of this secure accounting arrangement, the host system can be programmed to require the receipt of an uploaded usage log (from which subscriber and advertising charges and content provider payments can be determined) before releasing additional programming materials for downloading from the FTP server 125.
As described in more detail later in connection with FIGS. 4 and 5, the sequence of program segments to be presented to the user is formed into a schedule file (seen at 307 in FIG. 4) consisting of a sequence of program segment identification numbers which are used to compile a sequencing file, called the selections file, illustrated at 351 in FIG. 5, which contains more detailed information about the sequence of events which occur during playback. The player obtains information from the selections file which identifies the individual program segments to be fetched from mass storage and played for the user, as well as the segment identification information which is recorded in a usage logging file in the manner illustrated in FIG. 3.
As indicated at 233, the playback session begins with the presentation of an audio (and/or displayed) menu which allows the user to jump to any program segment within that sequence to start (or resume) playback at 235, or terminate the session at
236.
The playback operation itself continues from the designated playback point in the selections file (seen at 351 in FIG. 5) which follows a program sequence initially created by the host server and downloaded with the program segments themselves, and then (optionally) modified by the addition, deletion and re-sequencing of segment identifiers as discussed earlier in connection with step 211 in FIG. 2. Note however that, if the user elects to have advertising segments automatically inserted between program segments to achieve a predetermined cost level, that insertion occurs under the control of the playback mechanism at 235 such that advertising segments not identified in the selections file may be added or advertising segments specified in the selections file may be automatically skipped.
As playing progresses, the current playback position may be advantageously indicated by a variety of means. In the most simple form, the current playback position within the session file of selections (discussed in more detail in connection with FIG. 5) may be indicated by a simple numerical readout indicating the position on a scale of 1-100. In this way, a user listening to the programming in scheduled order is provided with an indication of the duration of programming remaining to be played. In a player implemented by a personal computer provided with a screen display, the current playback position may be advantageously indicated by displaying the program segment topic descriptions in a scrolling listing, with the description of the program currently being displayed being highlighted. The scheduled duration of each program segment may be displayed, along with the elapsed time remaining to be played in the currently playing segment, to enable the user to more easily determine when to skip the remainder of the currently playing segment. When such a concurrent visual display is available, means may also be included to respond to the users selection of a given program on the scrollable listing by means of a mouse or the like, and then automatically continue the play at the beginning of the program segment thus selected.
Each time the playback begins a new programming, advertising or announcement segment, the segment start time is recorded in the usage log file stored at 109 (FIG. 1). Each usage log record contains a program segment identification number (ProgramID) obtained from the selections file as well as a start time and date stamp encoded into a 32 bit date-time value, a volume level setting indicating the volume at which the player was set at that time, and a playing speed value indicating the playing speed or playing being used.
As indicated at 237 in FIG. 3, each time a new program segment is started, a new segment handling procedure is executed at 239. If the user desires to have advertising inserted to defray the costs of the subscription, the current actual cost per unit time is calculated and compared with the desired cost per unit time. If the cost is determined to exceed the desired level, an additional advertising segment is started; otherwise, the next program segment in the program sequence 214 is played. In either case, the segment id of the newly starting segment is recorded in the log file along with the start time for that segment. Note that it is unnecessary to record the end time for the prior segment since it is the same value as the start time for the next segment. When play is concluded, a terminating record indicating the time of turnoff is recorded to enable the duration of the last segment to be calculated.
Recording Volume and Playing Speed Changes
As indicated at 251, if the user changes the volume level or playback speed by a significant amount, a new record is posted to the usage log at 253, indicating the continuation of the last program at a new volume level (thus producing two records in sequence having the same program segment ID numbers but having differing start times and volume levels). The user adjusts the volume by means of a software control displayed when the player is active. The user adjusts the control using the mouse or keyboard to adjust the volume. When the volume control experiences a change in level greater than a predetermined deviation, it sends a message to the player routine at 251 to cause the new volume level to be recorded at 253. New volume settings do not affect the program sequence and the recording of the volume level change takes place transparently to the user. Likewise, when the user changes the playing speed, or switches to highlight mode, the new playing speed setting is recorded (using the PlayingSpeed variable in a Usage Record, to be discussed)
The cost accounting program which calculates subscriber charges and fees to advertisers may thereby treat volume levels below a predetermined threshold level, or playing speeds in excess of a certain level, as being equivalent to skipped programming. In addition, if a subscriber reduces the volume on selected programs or programs in particular subject matter categories, frequently increases the volume for other programs or subject matter categories, or sets the playing speed to play highlights only of other programs, that data can be used to infer preferences and dislikes which can be used to better select desired programming to be included in future download compilations.
User Playback Controls
The player mechanism seen at 103 includes both a keyboard and a microphone for accepting keyed or voice commands respectively which control the playback mechanism. As indicated at 261, the receipt of a command, which may interrupt the playback of the current selection, and the character of the command is evaluated at 262 to select one of six different types of functions.
The player 103 responds to the first command, "Accept" indicated at 263, by temporarily suspending the playback in order to accept a spoken "comment" from the user which is recorded as indicated at 264. After the conclusion of the comment, control is returned to 261 to test for additional commands before playback is resumed at 235. As described in more detail later, comments dictated by the user are saved and later uploaded to the host system where they exist as program.sub.-- segments. By allowing the user to dictate and record comments, the system provides a number of useful capabilities, including posting comments and messages to the host (requests for help or additional information), posting comments and messages either privately or publicly to the originator of a program segment being played, thereby enabling private interchanges to occur between users, to enable the interchanges to take place in publicly available threads analogous to the UseNet and Listserv newsgroups employed on the Internet to facilitate public discussions related to predetermined topics. In addition, the ability to accept and upload user-generated comments and information provides a valuable mechanism by which the user can evaluate and comment on the program material being provided by the host. As described later in connection with FIGS. 5 and 7, the mechanism seen at 263 and 264 for introducing a pause in the session playback while a voice response or comment from the user is recorded can also be employed to produce program generated prompts which request information followed by automatic response recordings, thereby enabling the system to be used to collect data, program evaluations, and other information from the user.**
A first command, "Go" indicated at 265, causes the player to make an immediate shift to a different program segment. For example, the spoken voice command "FIVE" can indicate a request to go to a predetermined numbered program segment while the spoken command "NEWS" could switch to the subject announcement segment for news programs. Alternatively, a mouse click on a screen-displayed menu of items, or a push-button on a hand controller connected by an infrared link to the player computer, could similarly be processed as a command to go to a predetermined program segment associated with that command signal. In such cases, the system records the start of the new segment on the log file (seen at 215 in FIG. 2) at 267 and switches the current playback position in the program sequence file 214 to the new setting at 269, and the playback continues at 235.
In the preferred arrangement, described in more detail in conjunction with FIG. 5 of the drawings, the program being played may contain passages which relate to other program segments in the compilation. These passages may be indicated by direct announcement, such as: "Say `Go` when any of the following automotive companies are named to obtain additional information: . . . Ford . . . General Motors . . . Chrysler . . . Honda . . . " Alternatively, an audible cue signal, such a distinctive tone or chime, might immediately precede a passage which anchors a link to another program segment. Players equipped with stereo audio output capabilities can make cues distinctive by playing cued announcements in one stereo channel, with or without a supplemental cue signal in the other channel. When a cue signal indicates a hyperlink passage, a simple "Go" voice command causes the player to reset to a new location from which playing continues until a "Return" command, seen at 266, causes the player to return to the original sequence.
As discussed later in connection with FIG. 5, hyperlinks of this type may be used to identify program segments which are not available in the player 103 because they were not downloaded for inclusion in a scheduled session. In that event, the "Go" handling routine seen at 265 posts a record to the usage log containing the ProgramID of the requested but unavailable segment so that the requested segment can be included in the Requested file 301 seen at 301 in FIG. 4.
When a communications pathway such as an Internet or cellular phone link is available to connect the player 103 to the server, an immediate request may be sent to the server to download a needed but locally unavailable segment. In that case, the downloading and playing may proceed concurrently by placing the downloaded information into a memory buffer to which the downloaded program segment is written as it is concurrently read for reproduction as described U.S. Pat. No. 5,371,551 issued to James Logan and Daniel F. Goessling. To eliminate breaks in the program sequence, the player 103 may advantageously perform a look-ahead operation, sending a file request to the file server via the communication link by pre-scanning the program sequence file 214 to identify program segments to be played which are not in local storage and requesting those segments before they are needed.
Because announcement or "glue" segments are frequently repeated in different program segments, these segments are preferably retained in local storage by the player to avoid the need to be downloaded. The player advantageously processes the usage file at the end of each session and tags each program segment which has been played as being eligible for replacement to make room when necessary for incoming segments. Announcement segments, however, are preferentially retained even though they have been played because of the higher probability they may again be included in upcoming session schedules.
The third command, the SKIP command indicated at 275 in FIG. 3, causes the player to advance to the beginning of the next program segment in the program sequence, recording the start of the next sequence at 267 and resetting the playback position at 269. If the program segment has been subdivided (e.g. into paragraphs), the SKIP command causes the player to skip forward to beginning of the next subdivision within that segment. If desired, SKIP commands may be subdivided into two types, a SKIP TOPIC command and a SKIP SUBJECT command. When programming material such as news reports are grouped into topics within subject categories, as described later in connection with FIG. 5, a SKIP SUBJECT command allows the user to skip over all program segments within that subject and resume playback at the leading description of the next subject. In contrast, the SKIP TOPIC command always advances to the next topic (program segment or program segment subdivision) in the sequence. If desired, the SKIP TOPIC command can produce a jump to the next program segment or subdivision which does not contain advertising, making it unnecessary for the listener to listen to advertising while scanning the program sequence for the next desired program segment.
The BACK command indicated at 278 operates like the SKIP command but in the reverse ("rewind") direction. Similarly, the BACK command may be subdivided into two commands, a BACK SEGMENT and a BACK SUBJECT command, which respectively reset the playback point to the beginning of the prior segment or the beginning of the prior subject description. Note that, after any given segment has played for a predetermined amount of time, the BACK command should reset the playback to be beginning of the current segment or topic respectively, allowing the user to start the current segment or topic from the beginning unless the playback point is already near the beginning, in which case the transition is made to the prior segment. The system responds to BACK commands by resetting the playback point to the desired point in the sequence and recording the start time, volume setting and new program segment ID in the log file as indicated at 267.
In the preferred form of the invention described in more detail in connection with FIG. 5, the context sensitive SKIP and BACK commands are used instead of the SKIP TOPIC, SKIP SUBJECT, BACK TOPIC and BACK SUBJECT commands discussed above. In the preferred arrangement, the program materials include subject and topic announcement program segments in addition to the program segments (both programming and advertising). When the user issues a SKIP or BACK command while the player is playing a subject or topic announcement, the player skips the entire subject or topic being announced and moves to the next subject or topic announcement respectively, automatically bypassing the intervening program segments which comprise the skipped subject or topic.
The fifth command, a "MARK" command at 280, is used to place a "bookmark" into the usage log which identifies a program segment, or a portion of a program segment, which the listener wishes to designate for future use. In its simplest form, the bookmark recording function indicated at 281 may simply record a bookmark and the Program.sub.-- ID of the current program segment into log file. By bookmarking a program segment, that segment may be recalled by the subscriber and all or part of it saved for later use in local storage, from which it may be reproduced, forwarded as an attachment to an email message, and the like.
More elaborate bookmark functions which may be readily incorporated into the system if desired include the following:
Dictating or keyboarding an annotation at a predetermined position in the bookmarked program segment, the annotation being saved in local storage so that, when the bookmarked program segment is reproduced, it will include the annotation. The bookmarked program segment and the annotation may then be saved as a unit for future reference or forwarded to another person.
Bookmarked program segments, or annotations to bookmarked program segments, may be used in conjunction as an auxiliary audio voice mail and email handling system in which a subscriber's email and voice mail items are organized as topics in the playback session, enabling the subscriber to bookmark particular incoming messages (program segments) for further attention, or to dictate voice mail responses, or responses that can be converted to text form by a human typist or by a voice recognition system. This aspect of the present invention allows the subscriber to review and respond to incoming email and voice mail messages while commuting or traveling to more productively utilize travel time. Voice annotations may be stored in separate files which are uploaded to the host with the usage file and keyed to the program segment passages which they annotate by records in the usage log file.
The sixth command type, the "MENU" command indicated at 283 in FIG. 3 switches the player to a predetermined menu program segment, records the start of a menu mode state in the log file at 285 and places the player in the menu mode at 233. Using a hands free voice command system, the player may reproduce a menu program segment in which a sequence of options are enunciated on the system's audio output speaker with short pauses between the recited options. By providing the voice command "Go" during or shortly after a desired option, the user may cause the system to branch to that selection. Menu options of this type may be conveniently implemented using the hyperlink capability described later in connection with FIG. 5. Alternatively, as noted earlier, the menu of options may be displayed on the screen with the desired playback point being selected using the keyboard or a pointing device. In all cases, each transition to a new program segment is recorded into the usage log for later uploading to the server and subsequent processing.
Program Compilation & Billing
FIG. 4 illustrates the principle data processing steps and information structures employed by the preferred embodiment of the invention to compile programming information personalized to the preferences of individual subscribers, to perform accounting functions which produce billing charges to subscribers and advertisers, and to determine royalty payments due to content providers.
The program, advertising and announcement segments to be made available to an individual subscriber include those program selections which the subscriber chooses from the supplied catalog of recommended programs, or additional selections chosen during a dial-up dialog with the host, as described above in connection with step 217 seen in FIG. 2. The selections made by and uploaded from the subscriber take the form of a file (sequence) of 32 bit integers, each integer (ProgramID) designating a particular program segment. This file of integers is placed in a relational database Requested Table seen at 301 in FIG. 4, with each row (record) in the Requested Table being an identification number which specifies a corresponding record (row) in a database table 303 called the Programs Table. The Requested Table 301 includes not only express requests from the user based on catalog selections but also requests which result from failed hyperlink requests which occur when the listener requested hyperlinked information during the session which was unavailable in local storage at the player. The program segments (which include programs, advertising and announcements) have a plurality of attributes which are described in the data fields of each record (row) in the Program Table 303. The following Pascal type declarations define the content of each record in the Programs Table 303:
______________________________________ Type Classtype = (advertisement, program, announcement); Program.sub.-- Segment = record ProgramID: integer; { unique key } ProviderID: integer; Class: Classtype; URL: pchar; Created: datetime; SubjectDesc: integer; TopicDesc: integer; GroupID, Episode: integer; CommentOn: integer; Subjects: array[0..15] of integer; Importance: array[0..15] of integer; Youngest, Oldest, male, female: byte; HouseLow, HouseHigh: byte; Duration: integer; Plays: integer; TotalTime: double; PlaysRate, TimeRate: integer; Timeliness: integer; end; ______________________________________
Each Program.sub.-- Segment record in the Programs Table 303 is identified by a unique key integer value, ProgramID, which is the primary key value upon which the Programs Table 303 is indexed and accessed. The Program.sub.-- Segment records in the Programs Table 303 are relationally linked using the ProgramID key to other tables including:
the Requested Table 301 discussed above,
a Schedule Table 307 which contains the recommended sequence of program segments for the next playback session,
a New.sub.-- Catalog Table 308 which contains the identities of new available program selections to be added to the subscriber's catalog of available programming, and
an Advertisements Table 311 containing entries which describe advertising program segments to be brought to the attention of the subscriber.
The relational database system employed by the preferred embodiment of the invention further includes a Subscribers Table 313 which contains information describing each subscriber, a Content.sub.-- Providers Table 315 containing information about each person or firm which supplies royalty-bearing information for dissemination to subscribers, and an Advertiser Table 317 which contains information about each advertiser that provides advertising program segments to subscribers. Mailing addresses and other information for subscribers, content providers and advertisers is contained in a single Account Table 321 to simplify the data structures needed.
A Usage.sub.-- Log Table seen at 333 is uploaded from-the subscriber, typically at the same time the express program requests in the Requested Table 301 are transferred, and processed at 350 to update the Subscribers Table 313, the Content Providers Table 315, the Advertisements Table 311, the Programs Table 303, and the Requested Table 301 as described below.
Program Schedule Generation
In accordance with the invention, the host server receives and supplements the user's initial selection of a sequence of desired programs, first by adding the program selections specified in failed hypertext requests as indicated by the Usage.sub.-- Log Table 333 during usage log processing at 350, and then by adding advertisements, announcements and additional program segments tailored to the subscriber's known preferences as indicated at 340 in FIG. 4, thereby producing the recommended Schedule Table 307 which is transferred to the subscriber, along with program segments, during the download transfer. Indeed, if the subscriber provides no selections at all, the host will prepare a Schedule Table 307 containing program segment selected entirely by the host on the subscriber's behalf. The programs, advertising and announcement segments which are added to the Request Table 301 to form the Schedule Table 307 are determined by a matching procedure 342 which may be better understood by first considering the content of the data structures which provide data utilized to make those selections.
The Programs Table 303, as noted above, contains Program.sub.-- Segment records which describe the nature of each programming, advertising and announcement segment in the library which is potentially reproducible by the player 103. As illustrated by the type declaration above, each Program.sub.-- Segment record specifies the account number (ProviderID) of the advertiser or content provider if any who may be charged or compensated for the actual playing of the program segment by subscribers. The record further contains a Classtype variable Class which indicates whether this segment is an advertisement, a program, a comment or an announcement.
The Class variable may also used to further subclass each program segment; for example, program segments which hold user-recorded comments may be designated as being "public" comments made generally available to all subscribers, "private" comments to be directed solely to the provider of the program.sub.-- segment commented upon, and "host" comments to be directed to the host system.
The Program.sub.-- Segment record's URL field specifies the location of the file containing the program segment in the file storage facility indicated at 304 in FIG. 4 (i.e., normally on the FTP server 125 seen in FIG. 1, but potentially including storage areas on the web server 141 or at any other accessible location on the Internet). In addition, the subscriber may wish to designate for future play a program segment already loaded into the player 103 by virtue of a prior download. The subscriber may elect to include an already loaded file because it was not reached in a prior playback session or because the subscriber wishes replay the selection. In that event, the ProgramID of such a selection is nonetheless included in the uploaded selection list (Requested Table 301), recognizing that at the time of actual download, the player 103 will only request the transfer of those program segments not already present in local storage. The uploaded Requested list 301 should accordingly be understood to be indicative of the requested content of a future planned playback session and not necessarily a listing of programs to be downloaded. The selection of files to download is preferably made by the player which issues FTP download requests from the server by specifying the URLs of the needed files.
The Created field contains a timestamp value specifying the data and time of day the program segment was created. In Created field allows user or host to select program segments by date and permits the listing of segments in chronological order in program catalog listings.
The Program.sub.-- Segment record further contains a SubjectDesc field and a TopicDesc field, both of which take the form of ProgramID integers which identify other program segment records which contain detailed information on audio announcement and displayable text descriptions of subjects and topics. The descriptive text files for subjects and topics are displayable by the player 103 as part of descriptive catalog entries which enable the user to choose desired segments. Together, the subject and topic program segments provide a hierarchical catalog listing which provides the descriptive information about the associated content segments which enables the subscriber to make informed selections. The text specified by the SubjectDesc and TopicDesc fields may be searched using conventional keyword searching techniques to permit the subscriber to locate and identify particular programming of interest from the locally stored catalog or, in a dial up CGI interaction with the host, to list and select programs from the larger library available on the server.
Serialized Programs
As contemplated by the invention, programing may include serialized sequences of programs. A given program segment may represent an episode in a series which is selected as a group by the subscriber, or a subscriber may select an individual program in a serial sequence and the host may then further installments or related programs within the series to the catalog or session content thereafter sent to the subscriber. The Program.sub.-- Segment record contains a GroupID field which specifies the series as a whole, and an Episode integer field specifies the position of the given program segment within the serialized sequence. When a serialized sequence is requested, the host may download the entire series in one download for playback at requested intervals, or less than all of the episodes when all are not yet available or when it is desirable to limit the total download content. When a subscriber selects and plays a given program segment, as indicated in the usage log, without having expressly selecting the entire series, the host may then add the next installment to the catalog or the next proposed session. If desired, a hyperlink (to be described) may be placed at the conclusion of each installment which specifies the next installment as the linked program segment. In this way, the listener may request that the next installment be played immediately (if it is available) or included-in the next installment (if it is unavailable and the hyperlink fails).
The usage log may be employed to insure that the subscriber has an opportunity to hear episodes that may have been skipped. By monitoring the usage log, if an episode included in any given proposed session was not in fact played, the host may include it in the next proposed session as well. Note further that the serialization mechanism which has been described can be used to provide serialized advertisements to a subscriber, insuring that a subscriber does not hear a particular ad twice and further insuring that the advertising is presented to the subscriber in the intended sequence.
In addition, the serialization mechanism may be used to provide sequential presentation relationships between related programs. For example, if a subscriber indicates an interest by selecting and actually playing a program on an evolving topic; for example, a news story about the America's Cup yacht races, further new stories on that topic may be assigned the same Group ID number so that they are automatically routed into the subscriber's catalog or program session if space is available.
Fields supporting "Comments"
Serialized programs are related to, but should be distinguished from, the parent-child relationships that exist between program segments and the annotations and comments made on those program segments by users. As noted earlier with respect to the Accept command seen at 263-264 of FIG. 3, the player 103 of FIG. 1 permits the user to create an "annotation" or "comment" (typically in the form of a recorded audio message or a keyboarded text message) which is uploaded to the host 101 and stored as a program segment. The CommentOn field of the Program.sub.-- Segment record contains the Program.sub.-- ID of the program segment commented on, the Provider.sub.-- ID field identifies the subscriber generating the comment, the Created field specifies the date and time when the comment was recorded, and the default values of the subject matter fields (discussed next) are copied from the subject matter fields of the program segment being commented on. These field entries provide a mechanism for supporting the comment handling features which are described in more detail below under the heading "Comment Handling."
Program Selection
The Program.sub.-- Segment record further includes a Subjects field which is an array of 16 integers, each of which may be a non-zero code value indicating a predetermined subject matter categories, allowing each programing segment to be matched against like codes specified as being subjects of interest by the subscriber, as well as codes indicating subjects to which advertised goods and services may relate.
The Program.sub.-- Segment record also contains an Importance field which is also an array of 16 integers which (at least initially) holds an integer containing the reviewer/editor's assessment of the "importance" of the program segment relative to the subject matter code specified in the corresponding cell in the Subjects array. Thus, if Subjects[7]=12345 and Importance[7]=231, this program segment has been assigned a importance level of 231 with respect to the subject specified by code 12345. Another segment may also be relevant to the same subject, but with a different level of importance to that subject. These fields may be used by the host as a weighting factor used to route programs of greater probable interest to the subscriber. Note also The "importance" value associated with any given program may also be adaptively altered based on the actual use as reflected by the usage logs and by subscribers' catalog selections. By way of example, program segments which are started but frequently skipped while in progress may have their importance value decreased while program which are frequently selected from the catalog and listened to may have their importance values increased. In this way, the system adaptively learns, for each category or programs, which programs subscribers have found to be of interest and which ones were seldom used. Serialized programs (identified by a common Group ID) may be assigned importance values based on the actual usage of earlier episodes in the same series. Thus, when a series proves to be popular based on repeat selections of its episodes, all episodes (including those not yet issued may be assigned a higher importance value.
The Youngest and Oldest fields (each storing a byte value 0-255) contains an indication of the age range to which a particular program segment should appeal. Similarly, the byte values Female and Male allow the entry of an estimate of the relative interest of a given program to the different sexes: thus, a program devoted to sports news could be assigned the values Female=60, Male=170 where the value 127 would indicate gender-neutral content. The MaritalStatus field is a single character ("S"=single, "M"=married, "W"=widowed, "D"=divorced).
The fields HouseLow and HouseHigh represents a range of household sizes range that may have a special interest in the program segment. Thus, programming directed to family interests may be directed to subscribers who are married with a household size equal to 3 or more.
The Duration field of the Program.sub.-- Segment record specifies the duration of the program segment expressed in seconds. The Plays field is an accumulator field which is incremented by incoming Usage.sub.-- Log records to reflect the total number of times a given program segment has been actually played by all subscribers. Similarly, the TotalTime value represents the total time a given program segment has been actually played by users. Together, these records can be used to determine the advertising fee due from the advertiser, or royalty amount payable to the content provider (the advertiser or content provider being specified the ProviderID field) for the use of this segment.
The Program.sub.-- Segment record contains two signed integer values, PlaysRate and TimeRate, permitting an advertising charge or royalty payment (Amount) to be calculated as a value calculated by the executable formula:
If PlaysRate=0, the amount of the royalty or advertising fee for actual use of the segment can calculated based solely on the actual time duration of the played segment (so that little credit or charge is assigned if the segment is begun but then skipped). Alternatively, if TimesRate=0, the charge can be based solely on the number of times playing the segment was commenced, which may be deemed appropriate when it may be considered the responsibility of the advertiser or the content provider to hold the user's attention once a segment begins. Note that, as usage records are posted to increment the Plays and TotalTime fields in the Program.sub.-- Segment records, as described later, any program segment which was played for less that a predetermined minimum amount of time may be disregarded, enabling the subscriber to "surf" through selections while listening to minimal information per segment without incurring subscription charges or generating advertising fees or royalty payments.
Program segments are selected for inclusion in the output Schedule Table 307 and/or the NewCatalog Table 308 by comparing the content of the Programs Table 303, the Subscribers Table 313, and the Advertisements Table 311. The fields contained in the Subscribers and Advertisements Tables are set forth in the following Pascal record type declarations:
______________________________________ Account = record AccountNo: integer; { Unique key } Name, Title, CompanyName: pchar; Addr1, Addr2, City: pchar; State: string[2]; Zip code, AreaCode, Phone, Fax, Email: phcar; end; Subscriber = record AccountNo: integer; Birthdate: Date; Sex, MaritalStatus: Char; HouseholdSize: byte; Interests: array[0..15] of integer; TopChoices, ChoiceCounts: array[0..15] of integer; ChargeLevel: byte; DataRate: Integer; Capacity: Integer; WeekDays: array[0..6] of Compilation; end; Advertisement = record ProgramID: integer; AccountNo: integer; DemographicMatch: function.sub.-- id; DemographicWeight: byte; Earliest, Latest: datetime; Subscribers: integer; Repeats: byte; end; ______________________________________
The Accounts Table seen at 321 in FIG. 4 is indexed by a key value AccountNo which is unique to each of its Account records. The fields of those records contain name, mailing address, telephone, fax and email information for all subscribers, advertisers and content providers in a single shared file. A person or firm specified by a record in the Accounts Table could simultaneously be a subscriber, advertiser and a content provider, in which case the same AccountNo key value would appear in each of the three tables: Subscribers 313, Content.sub.-- Providers 315 and Advertisers 317. Prospective or inactive subscribers, content providers and advertisers may also be described by entries in the Accounts Table which are not referred to in any other tables.
Additional information about each active subscriber is contained in the Subscriber record indexed by AccountNo (a key shared with the Accounts Table). The Subscriber record specifies personal information about the subscriber, including birth date (from which age may be determined), sex, marital status, and household size, all of which may be of use in better selecting program material of possible interest which should be brought to the attention of the subscriber.
Each Subscriber record further includes two arrays of integers which indicated the subscriber's subject matter preferences. The Interests array contains 0 to 16 integers each indicating a subject matter category of interest to the subscriber, the integers having the same meaning and being take from the same category listing as the integers placed in the Program.sub.-- Segment record's Subject array. These integers are placed in the Interests array in response to the subscriber's indication of subject matter preferences when the account is established as indicated at 203 in FIG. 2 or at any time thereafter when the subscriber elects to modify the stated preferences at step 217 in FIG. 2.
A second array of 16 integers called TopChoices is an ordered list of the same subject matter integers; however, in this array the subject matter integers are listed in order of actual playing frequency as indicated by the parallel array of ChoiceCounts integers. For example, the subject matter integer 321 in TopChoices[3] and the count 18 in ChoiceCounts[3] indicates that 18 selections had been played in the category 321 which was the fourth most-frequently played category. The ChoiceCounts array is modified whenever the usage log indicates that a selection in a particular category has been played by that subscriber. As a consequence, the TopChoices and ChoiceCounts arrays provide an indication of the subscriber's interests as indicated by his or her actual use of the player.
The ChargeLevel field in the Subscriber record indicates the subscriber's willingness to accept the insertion of commercial messages into the programming in order to defray subscription costs. A ChargeLevel value of zero indicates that the subscriber desires to pay the minimum charge and correspondingly is willing to accept sufficient advertising content to achieve that goal. At the other extreme, a ChargeLevel value of 255 indicates that the subscriber wishes to eliminate all commercial messages except those specifically requested.
The DataRate field indicates the rate at which information can be downloaded to the subscriber over the available communications link (typically dependent on the capacity of the modem used by the subscriber). The DataRate field is initially established from information supplied by the subscriber when the account is established (at step 203 in FIG. 2) but is thereafter altered to reflect actual averaged transmission rates experienced during download operations. Similarly, the Capacity field indicates the available mass storage file space available for program data in the player store (seen at 109 in FIG. 1). This value is initially supplied by the subscriber during account initialization, automatically reduced whenever the utility programs executing on the processor 105 detect less space available, and increased whenever the subscriber consents to the allocation of more available space when the utility programs detect that space is available and that additional space could be beneficially utilized given the download time available and the subscriber's desired session lengths.
Desired session lengths are contained in seven records each of type Compilation as defined in the following record definition:
______________________________________ Compilation = record Earliest, Latest: datetime; PlayMinutes, Longterm: Integer; end; ______________________________________
Each Compilation record describes the download requirements for a specific day of the week and contains fields specifying the earliest and latest times of day when download can be begun, with the latest download time being at least a predetermined time in advance of the session start. In this regard, it should be noted that playback and download can occur concurrently, with the Schedule Table being downloaded first, the NewCatalog Table being downloaded second, program segments specified in the Schedule Table which have not previously been downloaded being transferred third (in the order of the expected presentation as stated in the Sequence Table), with program segments selected by the subscriber for future sessions being downloaded last as download time permits. In accordance with the invention, it is desirable to download the equivalent of a full session's programming in addition to the currently scheduled session programs so that, in the event of a temporary communication link or host failure, programming will be nonetheless be available. In installations which utilize download information to a removable media cartridge or a transportable player which is then played back in an automobile or elsewhere, and hence disconnected from the data link to the host, it will of course be necessary to complete the download prior to the disconnection, meaning that the Latest field in the compilation record should be a time which is in advance of the earliest expected session start time by a duration equal to the maximum expected download time. Because the subscriber may wish to use different download timing on different days of the week, a separate compilation record exists for each day.
The compilation record further specifies the expected duration of the playback session for that day using the variable PlayMinutes. The variable Longterm indicates the maximum duration in which extended play may be required. For example, a commuter who sometimes experiences long traffic delays on Mondays and Fridays may specify that an extra hour of extended programming should be provided for those days. Such extended programming is preferably consists of non-time critical programming which can be stored for future use as needed by the player.
Note that the compilation records noted above are used by the server to optimize the content of the recommended program schedule and not to initiate actual downloads to the player. As contemplated by the invention, the player initiates the actual downloads by sending download requests to the server. Nonetheless, the server can transmit to the client player an indication of optimum times when downloading should be requested. In this way, the load imposed on the server can be spread over time to avoid delays.
Program segments which are of interest to the user and which should be included in either the Schedule Table 307 or the Catalog Table 308 may be automatically identified by the following mechanisms:
the subject matter codes (Interests, TopChoices and ChoiceCounts) for a given subscriber for whom the Schedule Table 307 and Catalog Table 308 are being prepared may be compared with the subject matter contained in the Program.sub.-- Segment record's Subject for each subject category description and each individual program description. Note that the Program.sub.-- Segment record for a subject category description may identify related categories. In this way, an indication that a subscriber is interested in a particular category may be used to identify that category, any related category, and any program which specifies that category in its Program.sub.-- Segment record. A weighting value may be calculated to indicate the extent to which the subscriber's stated interests match a given program or category of programs. Programs to which high weighting values are assigned are placed in the Schedule Table if the usage log data does not indicate the subscriber has already played that program, whereas the remaining programs having a weighting value greater than a predetermined threshold are placed in the Catalog Table 308. The duration of the programs specified in the Schedule file 307 is governed by the scheduled session lengths, communications throughput, and client storage capacity values contained in the DataRate, Capacity and WeekDays fields of the Subscriber record.
The attributes of the subscriber (birthdate, sex, marital status, and household size) specified in the Subscriber record may be matched against the corresponding descriptions contained in the subject and program Program.sub.-- Segment records (youngest, oldest, male, female, houselow, househigh) to identify programs and categories of programs likely to be of interest to a subscriber having those attributes. An advertiser-supplied function defining this relationship is specified by the DemographicMatch function.sub.-- id field of the Advertiser record, as discussed below.
The host server may advantageously use an optimization technique such as linear programming to complete the segment selection process. The optimizer will take into account the Subscriber's time constraints, cost constraints, and subject preferences. The time constraints used in the optimization are: the playing time available for the current day at the player, the download time available, the percentage of segments usually skipped by the Subscriber. The cost constraints are Subscriber ChargeLevel and the accumulated value of individual advertising segments. The subject preferences are based on the user's expressly stated interests and others interests inferred from the user's playing selections, as noted earlier. Each segment resident in the database at the time of download is evaluated against the constraints and the optimizer thus chooses a set of segments which is best for the subscriber at that time.
The weighting value computed for a segment in the database may also be advantageously varied in accordance with the age of the segment; that is, segments will decline in value as they age with the rate of decline being depend on the Timeliness attribute stored in the Program.sub.-- Segment record. If the subscriber misses a download for a given day, the timeliness factor will allow the host server to compensate for the lost listening opportunity by adding articles from prior days which are still of interest to the Subscriber.
Targeted Advertising
In order to identify and insert advertising program segments into the Schedule Table 307, the preferred embodiment of the invention utilizes additional information which describes each advertisement to be placed before subscribers. This information is placed in an Advertisement record having the structure defined earlier and held in the Advertisements Table 311. The ProgramID field of the Advertisement record identifies a Program.sub.-- Segment record (described earlier) which describes the content of the advertisement itself. The remainder of the Advertisement record contains additional information used to control the manner in which the identified advertising program segment is selected for insertion into the programming supplied to subscribers.
The AccountNo field of the Advertisement record identifies the entity requesting the advertisement which is typically the same as, but not necessarily the same as, the entity specified in the ProviderID field of the Program.sub.-- Segment record for advertising segment. The Subjects and Importance arrays in the program segment for the advertising (specified by the ProgramID field) may be matched the subject matter categories used by or created for subscribers to indicate their interest and may be used to produce a numerical value InterestMatch indicative of the extent to which a given advertisement is likely to be suited to the interests of a particular subscriber. The following algorithm, expressed as a function in Pascal, returns an integer value, which may be employed to derive the InterestMatch value indicating the degree to which any program segment matches the interests of a given subscriber:
______________________________________ function InterestMatch (SR: subscriber; PSR: program.sub.-- segment): integer; var I: integer; InterestCount: integer; ChoiceCount: integer; begin InterestCount:=0; ChoiceCount:=0; for I:=0 to 15 do if PSR.subjects[I] > 0 then for j:=0 to 15 do begin if SR.Interests[j] = PSR.Subjects[I] then inc(InterestCount, PSR.Importance[I]); if SR.TopChoices[j] = PSR.Subjects[I] then inc(ChoiceCounts, (20-j)*PSR.Importance[I]); end else break; return (InterstCount + (ChoiceCounts div 10); end; { InterestMatch function } ______________________________________
The foregoing function identifies all of the Subjects codes specified by the program.sub.-- segment record for a program segment (including a segment specified the ProgramID value of the Advertisement record for that advertisement) which also match a subject matter code in which the subscriber described by the subscriber record SR has expressly stated an interest, or has shown an interest base on programs actually played. In each case where a match was found, the Interest.sub.-- Match value is increased by an amount related to both the weight given to the category in advertising program's Importance array and the level of interest indicated for the subscriber. Note the InterestMatch function described above can be used to generate a numerical indication of the degree to which a given subscriber may have an interest in any program segment, whether that segment contains advertising, entertainment, news, or other content. In the case of advertising program segment however, the Subject and Importance values are assigned by the advertiser in order to define the interests held by target subscriber to whom the advertiser wished to direct the advertisement.
In addition to the InterestMatch value determined above, weight may be given to the subscriber's personal characteristics using a similar weighting function specified th the function.sub.-- id DemographicMatch which, like interest match, returns a value based on an advertiser specified relationship based on the subscriber's personal characteristics (age, sex, marital status, size of household, etc.) as previously noted. The value DemographicWeight may be used to specify the relative importance of demographic values derived by the the DemographicMatch function and the value returned by InterestMatch.
All advertisements scheduled for a given subscriber may then be prioritized based on the resulting calculated weight assigned to each advertisement by matching algorithms which compare the characteristics of the subscriber with the makeup of the target audience defined by the fields of the Advertisement record. These advertisements are then preferably inserted into the programming Sequence with the advertisement having the highest weight being scheduled to occur first in the sequence, thereby insuring that the best fitting advertisements are included in the programming and most likely to be played by the subscriber.
Controlling the Quantity of Advertising Delivered
The rate at which advertising is actually inserted by the player is controlled by the ChargeLevel value in the Subscriber record for each subscriber. The ChargeLevel value (a number from 0-255) indicates the rate at which a subscriber is willing to accept advertisements. An advertisement duration count variable (not shown) maintained by the player 103 accumulates the total duration of actually played advertising while a program duration count variable accumulates the total duration of actually played programming. An integer division of these to duration count values indicates the proportion of time being devoted to advertising. If this proportion falls below a threshold value determined by the value of ChargeLevel, additional advertising is inserted between program segments until the desired proportion is again reached. In this way, advertising skipped by a subscriber will be replaced later by different advertising to yield the proper proportion of programming to advertising, thereby achieving the subscription charge rate requested by the user.
The Schedule 307 downloaded to the player, and the associated programming, announcement and advertising segments sufficient to provide a complete program sequence with adequate advertising to meet the preference of the subscriber, creates total program content longer than the expected playing time indicated by the PlayMinutes variable of the days Compilation record. As a consequence, the player builds a collection of program and advertising segments which can be played in the future and need not be downloaded. Downloading of actual program segments therefore preferably occurs at the request of the player which scans the Schedule for program and advertising segments not already available and issues a request for the needed segments using the URLs contained in the players catalog of Program.sub.-- Segment records. In addition, as noted earlier, the subscriber has the opportunity to review the local catalog for particular program segments of interest which can be placed in the next day's schedule (and downloaded then at the request of the player if not already resident). The catalog of available items is supplemented by the NewCatalog Table items downloaded from the server as library items are identified whose makeup matches that of the subscriber and should be included, either immediately in the days Schedule Table, or made available by inclusion in the downloaded NewCatalog Table alone.
Accounting Functions
The preferred embodiment of the invention processes the usage log data created during the playback session as described in connection with FIG. 3 to produce a variety of accounting and analysis reports and billing functions.
Each advertising, announcement and program segment played on the player creates a UsageRecord stored as an record in the Usage Log Table having the following content:
______________________________________ UsageRecord = record Subscriber: integer; ProgramID: integer; Start: datetime; Volume: Integer; PlayingSpeed: Integer; end; ______________________________________
The Subscriber field contains the AccountNo of the subscriber which used the program segment, and the program segment itself is identified by the ProgramID field. If the value of ProgramID is negative, the record indicates a failed hyperlink attempt and the ProgramID is posted to the Requested Table 301 so that the formerly missing program segment will become a candidate for downloading to the player. In the UsageRecord, the Start field contains the starting time of day (to the nearest second), the Volume field contains a value indicating the level at which the volume was played, and the PlayingSpeed field contains a value indicating the playing speed. A negative playing speed value may be used to indicate that the player was placed in the "play highlights" mode so that only highlight passages were being played.
As noted earlier, each UsageRecord is processed to modify the Subscriber record field TopChoices by first building an ordered list of subject matter categories and the corresponding counts of the number of times each category was played in the session described by the Usage Log Table. These counts are then used to increase the existing Choice Counts for the subject matter codes indicated in the TopChoices array, and the TopChoices and ChoiceCounts arrays are then jointly resorted into order by descending number of plays. To insure that subject matter categories recently used are allowed entry into the list, the lowest five old entries are discarded each time if necessary to make room for the five most frequently played categories in the current usage log which were not already on the list. The TopChoices array accordingly contains an adaptively learned set of subscriber subject matter preferences which is continuously modified automatically without requiring attention from the subscriber.
Subscriber billing is based on the accumulated amount of programming actually played by the subscriber with credit being given for advertising actually presented to the subscriber. To accomplish this, a detailed billing history can be constructed from the usage log which indicates the programs heard, the duration of each, and the cost (or credit) attributable to that program segment. The TimeRate value specified in the Program.sub.-- Segment record for each item specified in the UsageRecord's ProgramID is multiplied times the segment duration (determined by subtracting the start time of the segment from the start time of the next segment specified in the next UsageRecord). The TimeRate is a signed integer, with negative values being indicative of credits (for advertising) and positive values being indicative of charges for programming. Note that each program segment and advertising segment can have a different rate, allowing the system to accommodate charging rates that reflect different programming costs.
Such costs frequently are affected by the royalty rates