Apparatus and methods for converting textual information to audio-based output

A system for providing text-to-speech conversion of a body of text is presented. The system includes a first executable resource which generates text portions from the body of text in response to receiving an initial web request to convert the body of text to speech and provides an output in response to generating the text portions comprising a sequence of resource identifiers suitable for use in the text-to-speech conversion of the text portions. The system further includes a second executable resource which receives a text portion web request that requests the conversion of at least one text portion to an audio format, the text portion web request comprising the at least one text portion and one of the resource identifiers, and further provides at least one media file suitable for audio output based on the text portion web request.

BACKGROUND OF THE INVENTION

Historically, a computer can provide the ability to convert text passages to an audio output for a user. Typically, a user sitting at a computer requests the conversion of text to an audio output (e.g. text to speech). Then the computer executes text-to-speech (TTS) software that converts the text to the audio output, which the computer then plays through a speaker for the user to hear. The user may be an individual who is visually impaired who uses the TTS software to hear text displayed on the computer screen, a user accessing a computer system from an audio communication device (such as a telephone), or a user of a computer who prefers to hear speech output rather than reading text on the computer's visual display.

In one conventional approach to TTS conversion, the user of a client computer or telephone may request the conversion of text to speech over a remote or network connection to a remote computer (e.g. server) that is executing the TTS software. For example, if the user is using a telephone, the user may make a request for a stock report from the remote computer, which accesses the text for the stock report from a database and converts the text to audio-based output. The remote computer then sends the audio-based output to the audio telephone to be output through the speaker of the device. In another example, if the user is using a client computer, the TTS software on a remote computer typically converts the body of text to an audio-based output, such as an output file having an audio file format. One commonly used audio output file format is the WAV audio file format for storing sounds as waveforms, which specifies a “.wav” file extension, such as typically used by the Microsoft® Windows® operating system. The server then sends the audio file back to the client computer, which plays the audio file for the user, who hears the file through the speaker of the client computer.

In another example of a conventional approach, the client computer and server computers can be connected through the World Wide Web (WWW), which provides communication over a network using the Internet Protocol (IP) and transmits requests over the network based on the hypertext transport protocol (HTTP). Users sitting at a client computer can thus make HTTP requests to a server located on the web, which provides information and services to the user at the client computer. Typically, the user invokes a web browser at the client computer and makes the request to the web browser, which in turn makes the HTTP request over the WWW to a server to fulfill the request. Thus, the user can initiate an HTTP request to hear textual information over the WWW to a server that includes TTS software. The server receives the HTTP request and executes TTS software on the server to convert the textual information to an audio format, such as a WAV file. The TTS server returns the audio output file to the client computer, which then plays the audio output file through the client's speaker for the user.

One example of TTS software is the Festival Speech Synthesis System, which is a TTS application that can execute on a server to provide text-to-speech conversion. The Festival Speech Synthesis System is available from the Centre for Speech Technology Research (CSTR), University of Edinburgh, Edinburgh, United Kingdom.

SUMMARY OF THE INVENTION

In a conventional approach, such as the approaches described above, a TTS server receives the request over the network for the TTS conversion and converts the entire body of text into one audio output file. Typically, this conversion process is computation intensive and takes sufficient time such that the user of a client computer or non-visual device (e.g. telephone) may notice a delay before hearing the beginning of the audio output file. For the conversion of large bodies of text, the delay can be noticeable, such as a delay of seconds or minutes.

In one example of a conventional approach, suppose that a user of a non-visual device, such as a telephone, requests an audio output based on textual information using the telephone. The request is handled by a remote computer having TTS software, which is in communication with the non-visual device. As described above, a user may experience a substantial delay before beginning to hear the audio output representing the textual information due to the lengthy conversion process at the remote computer.

Conversely, the invention is directed to an improved approach for providing TTS services over a network, such as for users of telephones who are accessing textual information over a web (such as the WWW). Part of the approach of the invention is to divide the body of textual information to be converted into speech into text portions that can be converted into speech in a relatively brief amount of time. In one embodiment of the invention, an application server receives the request for the conversion of the textual information and divides the body of textual information into the text portions. For example, suppose that a user of a telephone requests access to textual information by telephone, and passes this request to an intermediary device (e.g. a proxy browser) that serves as an intermediary between the telephone and the web. The proxy browser passes the request (e.g. an HTTP request) to a web application executing on the application server. The web application determines the body of text to be converted, such as by locating the text in a database or over the web. The web application then divides the text into text portions. The web application also locates or determines a TTS server that is available and can handle the TTS conversion. The web application then sends back to the proxy browser a sequence of resource identifiers, such as Uniform Resource Locators (URL's). Each resource identifier includes a text portion and the identity of the TTS server. The sequence of the resource identifiers corresponds to the respective positions of the text portions in the body of text. The proxy browser can then make HTTP requests using the URL's to convert the text portions specified therein in a sequence that reflects the respective positions of the text portions in the body of text. The TTS server receives the requests, performs the conversions of the text portions, and provides back audio output files to the proxy browser. The proxy browser can then play back the audio output files over a connection to the telephone. Because the proxy browser makes the text portion web requests in sequence, then the user hears the body of text, for example over the telephone, in a substantially continuous manner as though the TTS server had converted the body of text as a whole into one audio file that the proxy browser plays for the user.

In another example of the invention, a user who is sitting at a client computer that does not have TTS software available on it, uses a web browser on the client computer to access a web application performing on an application server, and desires to have textual information converted to speech. The textual information may be initially passed from the browser to the web application in its entirety. Alternatively, the textual information originates from or is stored in a database accessed by the web application, or otherwise obtained by the web application (e.g. over the web). In any event, the web application divides the textual information into text portions and returns resource identifiers, such URL's, including respective text portions, to the client, as described above for the user of a telephone accessing a web application. The client's browser can then make HTTP requests using the resource identifiers to a TTS server identified in the resource identifiers. The TTS server converts each text portion and returns an audio output file to the client representing each text portion. The client computer can then play each audio output file to the user over the speaker of the client computer.

In one embodiment, the invention is directed to a system for providing text-to-speech conversion of a body of text. The system includes a first executable resource and a second executable resource. For example, the first executable resource can be a web application on one server computer that handles the initial request for the conversion of textual information to speech, and the second executable resource can be a TTS application on a different server computer than performs the conversion. The first executable resource generates text portions from the body of text in response to receiving an initial web request to convert the body of text to speech, and provides an output in response to generating the text portions. The output includes a sequence of resource identifiers suitable for use in the text-to-speech conversion of the text portions. Each of the resource identifiers includes a corresponding one of the text portions and an identity of a resource capable of performing the text-to-speech conversion. The second executable resource receives a text portion web request that requests the conversion of one or more text portions to an audio format. The text portion web request includes the text portion and one of the resource identifiers. The second executable resource provides one or more media files suitable for audio output in response to receiving the text portion web request. Thus, for example, a requester, such as a user of a client device, can hear the media files which represent the body of text that the first executable resource (e.g. web application) had previously divided into text portions.

In another embodiment, the first executable resource generates the text portions in response to receiving an initial hypertext transport protocol (HTTP) request to convert the body of text to speech and provides a hypertext markup language (HTML) page including uniform resource locators (URL's) that includes text character strings suitable for conversion to the audio format. The identity of the resource includes an HTTP address of the resource. The second executable resource receives one or more HTTP requests including one or more URL's in response to providing the output. For example, a user can access the system from a local computer or client device, and then the system can perform the conversion from text to speech for the user over the web without requiring that any TTS software be installed on the local computer or client device.

In one embodiment, the invention is directed to a method for providing text-to-speech conversion of a body of text. The method includes generating text portions from the body of text in response to receiving an initial web request to convert the body of text to speech, and providing an output in response to generating the text portions. The output includes a sequence of resource identifiers suitable for use in the text-to-speech conversion of the text portions. Each of the resource identifiers includes a corresponding one of the text portions and an identity of a resource capable of performing the text-to-speech conversion. The method further includes receiving a text portion web request that requests the conversion of one or more text portions to an audio format. The text portion web request includes the text portion and one of the resource identifiers in response to providing the output. The method additionally includes providing one or more media files suitable for audio output in response to receiving the text portion web request. Thus, for example, the method provides output media files to a client device to play to a user, so that the user hears an audio version of the body of text based on the text portions without the delay caused in conventional systems by waiting for the TTS conversion of one relatively large, undivided body of text to one media file.

Another embodiment of the method of the invention includes generating text portions in response to receiving an initial HTTP request to convert the body of text to speech, and providing an HTML page comprising URL's that include text character strings suitable for conversion to the audio format. The identity of the resource includes an HTTP address of the resource. The method further includes receiving one or more HTTP requests that include one or more of the URL's in response to providing the output. The method provides for the conversion of the text portions representing the body of text over the web using HTTP protocols. Thus, a user who has access to the web can request the TTS conversion of text over the web.

In one embodiment, the invention is directed to a server for providing text-to-audio resource information. The server includes a network interface and an executable resource. The executable resource generates text portions from a body of text, formats resource identifiers suitable for use in text-to-audio conversion of the text portions, and provides, through the network interface, an output comprising the resource identifiers in response to formatting the resource identifiers. Each of the resource identifiers includes a corresponding one of the text portions and an identity of a resource capable of performing the text-to-audio conversion.

In another embodiment, the resource identifiers are URL's having text portions that include character strings suitable for conversion to an audio format. The identity of the resource is an HTTP address of the resource. In a further embodiment, the executable resource provides the resource identifiers in a prescribed sequence based on respective positions of the text portions in the body of text. For example, the executable resource (e.g. a web application) divides the body of text into smaller portions that are more readily converted to speech and identifies a TTS resource (e.g. a TTS application) that is capable of performing the TTS conversion of the text portions in the prescribed sequence. Thus, after the TTS conversion, a listener hears a speech version of the body of text as though converted in one step, and the conversion occurs more quickly than would occur in a conventional system that converts the body of text as a whole.

In one embodiment, the invention is directed to a method in a server for providing text-to-audio resource information. The method includes generating text portions from a body of text, formatting resource identifiers suitable for use in text-to-audio conversion of the text portions, and providing an output that includes the resource identifiers in response to formatting the resource identifiers. Each of the resource identifiers includes a corresponding one of the text portions and an identity of a resource capable of performing the text-to-audio conversion. In another embodiment, the method includes receiving an initial request for a text-to-audio conversion of the body of text, and generating the text portions in response to receiving the initial request. Thus, the body of text is divided into text portions in response to an initial request that can be converted to audio more readily than the conversion of the body of text as a whole, as would be done in a conventional system.

In an additional embodiment, the method includes generating each text portion in a manner suitable for inclusion in an HTTP request. Another embodiment of the invention includes providing the resource identifiers in the form of URL's having text portions that include character strings suitable for conversion to an audio format. The identity of the resource includes an HTTP address of the resource. In another embodiment, the method includes providing the resource identifiers in a prescribed sequence based on respective positions of the text portions in the body of text. For example, the executable resource (e.g. web application) divides the body of text into smaller portions that are more readily converted to speech and identifies a TTS resource (e.g. TTS application) that is capable of performing the TTS conversion of the text portions in the prescribed sequence. Thus, after the conversion, a listener hears a speech version of the body of text as though converted in one step, but more quickly than would occur for converting the body of text as a whole as would be done using a conventional system.

In one embodiment, the invention is directed to a server for providing text-to-audio resource information. The server includes a network interface and a means for producing resource identifiers. The producing means generates text portions from a body of text, formats resource identifiers suitable for use in text-to-audio conversion of the text portions, and provides, through the network interface, an output comprising the resource identifiers in response to the step of formatting the resource identifiers. Each of the resource identifiers includes a corresponding one of the text portions and an identity of a resource capable of performing text-to-audio conversion. In another embodiment, the resource identifiers are URL's having text portions that include character strings suitable for conversion to an audio format, and the identity of the resource is an HTTP address of the resource.

In one embodiment, the invention is directed to a computer program product that includes a computer readable medium having instructions stored thereon for providing text-to-audio resource information. The instructions, when carried out by a computer, cause the computer to perform any or all of the operations disclosed herein of the invention. For example, the instructions cause the computer to generate text portions from a body of text, format resource identifiers suitable for use in text-to-audio conversion of the text portions, and provide an output comprising the resource identifiers in response to formatting the resource identifiers. Each of the resource identifiers includes a corresponding one of the text portions and an identity of a resource capable of performing the text-to-audio conversion.

In one embodiment, the invention is directed to a text-to-audio server for providing text-to-audio conversion of a body of text. The text-to-audio server includes a network interface and an executable resource. The executable resource receives, through the network interface, a text portion web request that requests a conversion to an audio format of one or more text portions generated from a body of text and generates a response suitable for audio output in response to receiving the text portion web request. The text portion web request includes one or more text portions and the identity of a resource capable of text-to-audio conversion. In another embodiment, the text portion web request includes a URL that includes character strings suitable for conversion to an audio format, and the identity of the resource comprises an HTTP address of the resource. In a further embodiment, the response includes media files suitable for the audio output. Thus, a requester (e.g. client device or intermediary computer) of the TTS conversion of a body of text can make and fulfill requests for a text portion to be converted to a media file in a relatively quick manner for each text portion compared to the time needed to convert the whole body of text to speech in one step, and make additional requests for each text portion until the conversion of the body of text is complete. As the conversion occurs for each media file, then a user (e.g. of a client device) hears the media file for each text portion as soon as each text portion has been converted.

In one embodiment, the invention is directed to a method in a text-to-audio server for providing text-to-audio conversion of a body of text. The method includes receiving a text portion web request that requests a conversion to an audio format of one or more text portions generated from a body of text, and generating a response suitable for audio output in response to receiving the text portion web request. The text portion web request includes one or more text portions and the identity of a resource capable of text-to-audio conversion. In another embodiment, the method includes receiving a URL that includes character strings suitable for conversion to an audio format, and the identity of the resource includes an HTTP address of the resource. In an additional embodiment, the method includes generating media files suitable for the audio output. Thus, as noted above, a requester (e.g. a client device or intermediary computer) of the TTS conversion of a body of text can make and fulfill requests for a text portion to be converted to a media file in a relatively quick manner for each text portion compared to the time needed to convert the whole body of text to speech in one step, and make additional requests for each text portion until the conversion of the body of text is complete. As the conversion occurs for each media file, then a user (e.g. of a client device) hears the media file for each text portion as soon as each one has been converted.

In another embodiment, the invention is directed to a text-to-audio server for providing text-to-audio conversion of a body of text. The text-to-audio server includes a network interface and means for converting text to audio. The converting means receives through the network interface a text portion web request that requests the conversion to an audio format of one or more text portions generated from a body of text, and generates a response suitable for audio output in response to receiving the text portion web request. The text portion web request includes the text portion and the identity of a resource capable of text-to-audio conversion. In a further embodiment, the text portion web request includes a URL that includes character strings suitable for conversion to the audio format, and the identity of the resource includes an HTTP address of the resource.

In a further embodiment, the invention is directed to a computer program product that includes a computer readable medium having instructions stored thereon for providing text-to-audio conversion of a body of text. The instructions, when carried out by a computer, cause the computer to perform any or all of the operations disclosed herein of the invention. For example, the instructions cause the computer to receive a text portion web request that requests the conversion to an audio format of one or more text portions generated from a body of text, and generates a response suitable for audio output in response to receiving the text portion web request. The text portion web request includes one or more text portions and the identity of a resource that is capable of text-to-audio conversion.

In one embodiment, the invention is directed to a method in a browser for providing text-to-speech conversion of a body of text. The method includes requesting conversion of the body of text to speech, receiving a prescribed sequence of resource identifiers including respective text portions generated sequentially from the body of text, providing the resource identifiers in the prescribed sequence to the resource, and providing audio-based output according to the prescribed sequence, based on media files received from the resource in response to providing the resource identifiers. The media files represent the respective text portions. Each of the resource identifiers includes one of the respective text portions and an identity of a resource capable of performing the text-to-speech conversion.

In another embodiment, the method includes receiving an HTML page that includes URL's that include text character strings suitable for conversion to an audio format. The method further includes providing HTTP requests to a resource. The identity of the resource includes an HTTP address of the resource. For example, a proxy browser may be in communication with a client device, such as a cell phone or device without its own browser. In response to a request from the client device, the proxy browser can request the conversion of text to speech using HTTP protocols over the web and coordinate the playback of audio files representing the text portions through the client device.

In another embodiment, the invention is directed to a resource identifier suitable for use in requesting text-to-audio conversion over a network. The resource identifier includes a text portion generated from a body of text and an identity of a resource capable of converting the text portion to an audio format. In a further embodiment of the resource identifier, the text portion includes character strings suitable for conversion to the audio format. In an additional embodiment of the resource identifier, the identity of the resource is the HTTP address of the resource. Thus, the resource identifier provides a relatively compact way of requesting the conversion of a piece of text (i.e. a text portion) using a low overhead format for the request, such as an HTTP request.

In one embodiment, the invention is directed to a computer data propagated signal embodied in a propagated medium, having a packet of data comprising a hypertext transport protocol (HTTP) request, which includes a text portion generated from a body of text and an identity of a resource capable of converting the text portion to an audio format. Thus, a computer receiving the propagated signal can convert the text portion received over the propagated medium to audio by making a request for the conversion to the identified resource.

In some embodiments, the techniques of the invention are implemented primarily by computer software. The computer program logic embodiments, which are essentially software, when executed on one or more hardware processors in one or more hardware computing systems cause the processors to perform the techniques outlined above. In other words, these embodiments of the invention are generally manufactured as a computer program stored on a disk, memory, card, or other such media that can be loaded directly into a computer, or downloaded over a network into a computer, to make the device perform according to the operations of the invention. In one embodiment, the techniques of the invention are implemented in hardware circuitry, such as an integrated circuit (IC) or application specific integrated circuit (ASIC).

DETAILED DESCRIPTION

The invention is directed to techniques for providing TTS services over a network, such as the Internet, to a user of a device, such as a client computer or non-visual device (e.g. telephone). The user accesses textual information over a network (e.g. web), which the user desires to convert to an audio format and hear over the speaker of the client computer or non-visual device. Part of the approach of the invention is to divide a body of text to be converted into speech into text portions and to provide to the requester the text portions along with an identity of a TTS resource that can convert the text portions into speech. In one embodiment, an application server receives the request for the conversion of the text, divides the body of text into text portions, and returns these text portions in a series of resource identifiers, each including a respective text portion.

For example, in one embodiment of the invention, suppose a user of a telephone has requested access to textual information over the web by using the telephone, and passes this request to a proxy browser that serves as an intermediary between the telephone and the web. The proxy browser passes the request, (e.g. an HTTP request) to a web application executing on the application server. The web application accesses the web to locate the body of text to be converted and then divides the text into text portions. The web application also locates, such as by looking up in a table in a database, a TTS server that is available and can handle a TTS conversion of those text portions. The web application then returns to the proxy browser, or other intermediary, a sequence of resource identifiers (e.g. URL's), each resource identifier including a text portion and the identity of the TTS server. The sequence of the resource identifiers corresponds to the respective positions of the text portions in the body of text. The proxy browser can then make text portion web requests (e.g. HTTP requests) using the URL's to convert the text portions in a sequence that reflects the respective positions of the text portions in the body of text. The TTS server receives the requests in sequence from the proxy browser, performs the conversions of the text portions, and provides back audio output files to the proxy browser. For example, the proxy browser can then play back the audio output files over a connection to the telephone. Because the proxy browser makes the text portion web requests in sequence, then the user hears the body of text over the telephone in a substantially continuous manner as though the TTS server had converted the body of text as a whole into one audio file that the proxy browser plays for the user.

In another example of one approach of the invention, a user is sitting at a client computer that does not have TTS software available on it, uses a web browser on the client computer to access a web application performing on an application server, and desires to have textual information converted to speech. The web application divides the textual information into text portions and returns resource identifiers, such URL's, to the client, as described above for the user of a telephone accessing a web application. The client's browser can then make HTTP requests using the resource identifiers to a TTS server identified in the resource identifiers. The TTS server converts each text portion and returns an audio output file to the client representing each text portion. The client computer can then play each audio output file to the user over the speaker of the client computer.

Generally the approach of the invention is well suited for any client devices (e.g. computer, communication, or other type of device) that do not have TTS software performing natively on the client device. The approach of the invention also applies to client devices that do not have TTS software or a web browser resident on the client devices, in which case a proxy browser provides a connection between the client device and a web server, such as a TTS server, as will be discussed in connection withFIG. 1below.

FIG. 1is a diagram showing a sample approach for providing TTS services via an IP network50according to one embodiment of the invention.FIG. 1illustrates client computers42(shown individually as42aand42b), a unified world IP (Internet Protocol) network50, user client devices18(shown individually as clients18a,18b,18c,18d,18e, and18f), proxy browser62, web server64, application server66, application environment68, TTS server302, and TTS application304. The clients18include a cordless telephone18a, a fax machine18bhaving an attached telephone, an analog telephone18c, a mobile phone18d, a handheld computing device18e, and a pager18f(as described in more detail later).

In general, a client (e.g. one of42a,42b,18a-18f) makes a request for a text-to-audio conversion of textual information to the application server66(either directly for a client computer42or through the proxy browser62for clients18a-18f). The application server66divides the textual information or body of text into a sequence of text portions based on the respective positions of the text portions in the body of text. The application server66provides to the client computer42or to the proxy browser62a sequence of resource identifiers (e.g., Uniform Resource Locators or URL's) including the text portions and the identity (e.g., network hostname or address) of the TTS server302. The client computer42or the proxy browser62can then use (e.g., can access or reference) the resource identifiers in a sequence of network requests (e.g., HTTP requests) corresponding to the sequence of the text portions in the text body to request from the TTS server302the conversion of each text portion to an audio-based output format (e.g., a WAV file). The TTS server302then converts the text portions in each request to audio-based output format and returns the audio-based output for each request to the client computer42or the proxy browser62. The client computer42then plays or otherwise reproduces the audio-based output for the user through a speaker included or associated with the client computer42. For client devices18, the proxy browser62plays the audio output by providing electrical or other signals representing the audio output through a connection to the client18so that the user hears the audio output on a speaker that is part of or associated with the client18. This process will be described in more detail later in connection with the flow charts illustrated inFIGS. 4,5, and6. The individual components illustrated inFIG. 1will be discussed in more detail in the following paragraphs.

The web server64is preferably a server computer including a processor, a memory, and communication hardware that enables communication over a network, such as the IP network50. The web server64provides a communication connection between the proxy browser62and the application server66. In one embodiment, the web server64is a server providing communications over the World Wide Web.

The application server66is a server computer including a processor, a memory, and communication hardware that enables communication over a network, such as the IP network50. The application server66also includes an executable resource or web application68that provides services in response to requests received over the network (e.g. HTTP requests received from the proxy browser62).

The TTS server302is a server computer including a processor, a memory, and communication hardware that enables communication over a network, such as the IP network50. The TTS server302includes an executable resource or TTS application304that provides text-to-speech conversion services in response to requests received over the network (e.g. HTTP requests). Each executable resource68or304includes one or more programs, scripts, procedures, routines, objects, and/or other software entities, capable of executing on a computing device.

The proxy browser62is a computing device including a processor, a memory, and communication hardware that enables communication over the IP network50. The proxy browser62provides browser services over the World Wide Web for clients that have limited capabilities and which do not typically include their own web browsers. The proxy browser62is capable of making requests (e.g. HTTP requests) over the network to the application server66and the TTS server302.

The fat client42ais a computer system including a processor, a memory, an output device, such as a visual display, an input device for the customer to provide input, and communication hardware that enable communication over a network, such as the IP network50. The fat client42aincludes a web browser56and a local application44running on the fat client42aand providing services to the fat client42a. The fat client42atypically has the capacity to provide TTS software performing on the fat client42a, but the user of the fat client42amay not install TTS software on the fat client42aand may choose to access TTS services over the IP network50.

The thin client42bis a computer system including a web browser56. The thin client42btypically does not have the capacity to provide TTS software performing on the thin client42bitself and accesses the TTS services from a server over the IP network50.

The user client devices18a,18b, and18c, illustrated as a cordless telephone18a, a fax machine18bhaving an attached telephone, and an analog telephone18c, are referred to herein as “skinny clients,” defined as devices that are able to interface with a user to provide voice and/or data services (e.g., via a modem) but cannot perform any direct control of the associated access subnetwork. The wireless user client devices18d,18e, and18f, illustrated as a mobile or cellular telephone18d, a handheld computing device (e.g., a 3-Com Palm Computing or Windows CE-based handheld device)18e, and a pager18f, are referred to as tiny clients. “Tiny clients” tend to have even less functionality than skinny clients in providing input and output interaction with a user. The handheld computing device18eand pager18fmay require text-to-audio conversion of textual information if the devices18eand18finclude a speaker that can provide the audio output representing textual information to the user of the device18eand18f. The client devices18athrough18fdo not typically include a browser or TTS software resident or performing on them, and rely on the proxy browser62as an intermediary to handle text-to-audio conversion of textual information (through the application server66and TTS server302as described above).

FIG. 2is a block diagram illustrating an application server66, a TTS server302, browser308(e.g. proxy browser), and client310. Each of the components illustrated inFIG. 2is configured to operate according to embodiments of the invention. The application server66includes an executable resource or web application68, as described above, and a network interface306athat provides communication to other devices, such as the TTS server302. The TTS server302includes an executable resource or TTS application304, as described above, and a network interface306bthat provides communication to other devices, such as the application server66. In one embodiment, the browser308is a computing device that provides browsing services over a network (e.g. the World Wide Web). In another embodiment, the browser308is a software application or program providing browsing services over a network (such as a software browser installed and performing on a client computer or device310). The proxy browser62shown inFIG. 1is one example of a browser308. The client310is a client device that does not have (or does not choose to use) TTS services available on the client310. The client310can be one of the clients42a,42b,18a-18fshown inFIG. 1. The client310also includes other computing or communication devices that may require TTS services, and are able to access the application server66and TTS server302. For example, the client310can be an IP telephony device in communication with a browser62or client42aor42b.

In one embodiment, a computer program product380including a computer readable medium (e.g. one or more CDROM's, diskettes, tapes, etc.) provides software instructions for the browser308, web application68, and/or TTS application304. The computer program product380can be installed by any suitable software installation procedure, as is well known in the art. In another embodiment, the software instructions can also be downloaded over a wireless connection. A computer program propagated signal product382embodied on a propagated signal on a propagation medium (e.g. a radio wave, an infrared wave, a laser wave, sound wave, or an electrical wave propagated over the Internet or other network) provides software instructions for the browser308, web application68, and/or TTS application304. In alternate embodiments, the propagated signal is an analog carrier wave or a digital signal carried on the propagated medium. For example, the propagated signal can be a digitized signal propagated over the Internet or other network. In one embodiment, the propagated signal is a signal that is transmitted over the propagation medium over a period of time, such as the instructions for a software application sent in packets over a network over a period of seconds, minutes, or longer. In another embodiment, the computer readable medium of the computer program product380is a propagation medium that the computer can receive and read, such as by receiving the propagation medium and identifying a propagated signal embodied in the propagation medium, as described above for the computer program propagated signal product382

FIG. 3illustrates a sample body of text400to be converted to speech, and resource identifiers412(e.g. URL's) including portions of text generated based on conversion of the body of text400to the text portions402according to one embodiment of the invention. The text-to-speech conversion process will be described in connection with the flow charts illustrated inFIGS. 4,5, and6. The sample body of text400includes, by way of example only, four lines or portions of text, referred to generally as text portions402. After the conversion process of the invention, the four text portions402-1,402-2,402-3, and402-4correspond to four URL's412-1,412-2,412-3, and412-4, which include reformatted versions of the respective text portions402-1,402-2,402-3, and402-4. URL412-1includes text portion402-1; URL412-2includes text portion402-2; URL412-3includes text portion402-3; and URL412-4includes text portion402-4. URL412-1shows, by way of example only, one arrangement of the resource identifier412. The first part420of the URL412-1includes the HTTP address (e.g., a hostname in this example) of a text-to-speech server, referred to here as “TTSSERVER”. The second part422of the URL412-1includes the name of a script, referred to here as “MAIN.CGI” used to perform the TTS conversion. In one embodiment, the script422corresponds to an application68executing on the application server66. The third part of the URL412-1includes a portion of text424, formatted so that it can be included in the URL412-1and corresponding to the first portion of text402-1in the sample body of text400.

FIG. 4is a flow chart of the process500of providing resource identifiers (e.g. URL's) generated from a body of text400according to one embodiment of the invention. In step502, a browser308receives an initial request312-1(seeFIG. 2) to convert a body of text400to speech. For example, the browser308initially receives the body of text400from a client310or receives the body of text400as the result of service or information requested by the client310of the browser308in an initial request312-1from the client310to the browser308(seeFIG. 2). Then, the browser308provides a body of text400in a request (e.g. HTTP FORM POST request)312-2to the application server66.

In another example, a client310makes an initial request312-1to a browser308for information or a service, such as a stock report describing an analysis of a stock that is to be returned to the client310as audio-based output to be played through a speaker included or associated with the client device310. The browser308passes on the request312-1from the client310as a request312-2to the application server66(seeFIG. 2). The web application68retrieves textual information as a result of the request312-2, for example, from a local database of stock reports or by accessing a stock report service over the web.

In step504, the web application68divides the body of text400into portions of text402in response to receiving the initial web request312-2. The web application68sizes the text portions402so that they will be suitable for inclusion in a network request316(seeFIG. 2). For example, the network request316includes a URL, as shown by sample URL's412inFIG. 3. If the request316is a HTTP GET request, then the size of the resource identifier412including a text portion should be no more than, for example, 100 characters, in one embodiment.

In step506, the web application68provides an output314(seeFIG. 2) that includes resource identifiers412(e.g. URL's) that can be used in converting the text portions402from text to speech. Each resource identifier412includes one of the text portions402and the identity of a resource (e.g. HTTP address) that can be used in converting the text portion402into an audio format (seeFIG. 3). For example, the web application68provides an HTML page314including URL's412to the browser308. The browser308can then make text portion web requests (e.g. HTTP requests)316to a TTS server302based on the URL's provided in the HTML page314. The TTS server302provides the text-to-speech conversion and then responds to the requests316, as described below forFIG. 5.

FIG. 5is a flow chart of the process600of converting a text portion402to an audio output file318according to one embodiment of the invention. In step602, the TTS server302receives the text portion web request316, including a resource identifier, from the browser308(seeFIG. 2). In one embodiment, the resource identifier412includes a reference to a script422and the text portion424to be converted to speech, as described forFIG. 3. For example, the browser308sends an HTTP request316including one of the URL's412from an output HTML page314including a list of the URL's412-1,412-2,412-3,412-4. The application server66provides the URL's412in the output HTML page314in a sequence such that the text portions424in the URL's412-1,412-2,412-3,412-4represent the respective positions of the text portions,402-1,402-2,402-3, and402-4, in the body of text400. The browser308then sends the URL's412in the same sequence (i.e.412-1,412-2,412-3,412-4) to the TTS server302as a sequence of text portion web requests316, so that the browser308can use the responses318(e.g. audio output files) to provide audio output320that represents the text portions402-1,402-2,402-3,402-4in their respective positions in the body of text400. In effect, the user of the client device310hears all of the body of text400typically without noticeable delay.

In step604, the TTS server302parses the resource identifier412and identifies the script422(e.g. MAIN.CGI) and parses out the text portion424from the resource identifier412.

In step606, the TTS server302passes the text portion424to the script422and the script422converts the text portion424from the URL format into a text format that the script422can use. For example, the TTS server302removes the plus signs (+) and other delimiters from the character string that makes up the text portion424to produce a reformatted text portion that the TTS server302provides as input to the script422.

In step608, the script422executes a TTS converter to convert the reformatted text portion into an audio format (such as a WAV audio file format) and stores the audio version of the reformatted text portion in an audio output file318(e.g. WAV file).

In step610, the TTS server302provides a response318(e.g. HTML page) to the browser308listing the audio output file produced in step608. The browser308then references the audio output file to provide an audio output320(e.g. electrical or other signals based on the audio output file provided in the response318) to the client device310, which plays the audio output320on a speaker associated with the client device310for the user of the client310.

FIG. 6is a flow chart of the process700of requesting and playing audio files by the browser308from the application server66and TTS server302, for one embodiment of the invention. In step702the application server66sends the HTML page314to the browser308. The HTML page314lists URL1, ULR2, and ULR3(see e.g. URL412inFIG. 3). URL1, URL2, and URL3each include an HTTP address (see e.g.420inFIG. 3) for the TTS server302and one text portion (see e.g.424inFIG. 3).

In step704, the browser308performs an HTTP GET request316using URL1(see e.g.412-1inFIG. 3) to the TTS server302to send the first portion of text (e.g.402-1) to the TTS server302and request its conversion to audio format. In step706, the TTS server302receives URL1and generates an audio format file (e.g. WAV1) representing the first text portion (e.g.402-1). In step708, the TTS server302sends the audio format file WAV1as a response318to the browser308. In step710, the browser308plays WAV1for the client device310(i.e. sends electrical or other signal representing the WAV1file to the client device310which the client device310outputs as audio output320through a speaker) so that the user of the client device310hears audio output320representing the first text portion (e.g.402-1).

In step712, the browser308performs an HTTP GET request316using URL2(e.g.412-2) to the TTS server302to send the second portion of text (e.g.402-2) to the TTS server302and request its conversion to audio format. In step714, the TTS server302receives URL2and generates an audio format file (e.g. WAV2) representing the second text portion (e.g.402-2). In step716, the TTS server302sends the audio format file WAV2as a response318to the browser308. In step718, the browser308plays WAV2for the client device310so that the user of the client device310hears audio output320representing the second text portion (e.g.402-2).

In step720, the browser308performs an HTTP GET request316using URL3(e.g.412-3) to the TTS server302to send the third portion of text (e.g.402-3) to the TTS server302and request its conversion to audio format. In step722, the TTS server302receives URL3and generates an audio format file (e.g. WAV3) representing the third text portion (e.g.402-3). In step724, the TTS server302sends the audio format file WAV3as a response318to the browser308. In step718, the browser308plays WAV3for the client device310so that the user of the client device310hears audio output320representing the third text portion (e.g.402-3).

If the application server66provided additional URL's in the output314, then the process700described forFIG. 6continues until all the text portions402represented in the URL's412have been played, and the user of the client device310hears the entire body of text400.

Alternately, each URL (e.g., URL1, URL2, URL3) is referenced by the browser308in parallel. The TTS server302then handles the URL processing (i.e., TTS conversion) concurrently and returns the audio-based output to the browser308in a predetermined order. In another alternative, while the browser308plays one audio output file based on one URL (e.g., URL1), the browser308sends the next URL (e.g., URL2) to the TTS server302.

For example, the approach of the invention does not require the IP network50illustrated inFIG. 1to be based only on the IP (Internet Protocol) but can be based on other network protocols, or communication arrangements among computing and other types of devices, allowing for the sending and receiving of requests among the devices. Similarly, the approach of the invention does not require the requests to be web requests, IP requests, or HTTP requests, but can be other types of requests communicated over a network or connections among computing and other types of devices.

In one embodiment, the web server64and application server66can be both implemented on one server computer system. In addition, the application server66and TTS server302can be implemented on one server computer system. In general, the functions of the web server64, application server66, and TTS server302can be implemented on one or more computing systems in a distributed computing model, such as a distributed object approach.

In addition, the client310and browser308arrangement ofFIG. 2is not required by the invention. For example, the client310can communicate directly with the application server66and the TTS server68. As a further example, a user can provide input directly (e.g. sit at and type in input) to a browser308(e.g. computing device including its own web browser) and hear the audio output320through a speaker associated with the browser308without the involvement of any separate client device310.