Patent Description:
For instance, generation of a meeting-specific language model requires the identification and collection of data relevant to a meeting. The generation of language models also consumes significant time and resources, as it requires at least accessing identified data sources, downloading the data that will be included in the adapted language model, and building the actual model. Yet another challenge is the requirement of data freshness. The use of old, stale data in an adapted language model reduces the potential benefit of such a model on meeting transcription accuracy. Moreover, the process of collecting data for language model adaptation and generating language models should be secure.

Systems for efficiently generating meeting-adapted language models are desired. <CIT> discloses that speech recognition typically works by loading a set of matched text and audio or reduced audio feature sets corresponding to expected words and phrases, said sets being known in the art as grammars, and matching the audio speech recorded with the audio or reduced audio feature sets in the grammar, and then using the text version from the grammar as the text to be recorded. In one embodiment the recognition engine considers, before beginning text rendition, the name and purpose of the conference, and may also consult historical records of past conferences, and grammars that may have been used for similar conferences, and loads one or more grammars accordingly. Grammars may also be loaded based on the identities of the participants. In another example, each participant's idiomatic language preferences may be stored and used to load individual-specific grammars in order to improve recognition accuracy. In the same or another embodiment engine may perform text parsing on attachments sent with the conference invitation to determine what grammar to load based at least in part on the existence of keywords or key phrases in the attachments. <CIT> discloses that the performance of a speech recognizer may be improved or augmented by use of a language model (e.g., representing likelihoods of transitions between words, such as based on n-grams) or speech model (e.g., representing acoustic properties of a speaker's voice) that is tailored to or based on an identified speaker. For example, once a speaker has been identified, the speech recognizer may use a language model that was previously generated based on a corpus of communications and other information items authored by the identified speaker. <CIT> discloses that language model(s) may provide context to distinguish between words and phrases that sound similar. A language model may, for example, be a statistical language model such as a unigram model, an N-gram model, a factored language model, etc. In some implementations, a language model may correspond with a conference type, e.g., with the expected subject matter of a conference. For example, a language model pertaining to medical terms may assign higher probabilities to the words "spleen" and "infarction" than a language model pertaining to non-medical speech. It is the object of the present invention to provide an improved method and system for speech recognition.

The following description is provided to enable any person in the art to make and use the described embodiments and sets forth the best mode contemplated for carrying out some embodiments. Various modifications, however, will be readily-apparent to those in the art.

Some embodiments improve speech recognition accuracy in meeting transcription tasks by automatically generating and using language models that have been adapted for a particular meeting. Some embodiments operate to identify multiple sources of meeting-related data that can be used to generate such adapted meeting-specific language models. Pre-processing is employed in some embodiments to ensure timely generation and availability of the models.

Some embodiments may utilize a single-provider, cloud-based e-mail, calendaring and document storage system (e.g., Microsoft O365) to identify and acquire meeting-related data. For example, some embodiments may utilize one or more of the following data sources for generating meeting-relevant adaptive language models: e-mails sent by each meeting participant; the full name of the meeting organizer and every meeting participant; the subject and the meeting body (description) from the meeting calendar item; and the content of any documents attached to the meeting calendar item. Other non-exhaustive examples of data sources include the names of people with whom meeting participants most often collaborate, documents generated by meeting participants, and chat sessions that include meeting participants.

<FIG> illustrates a system to generate and utilize meeting-adapted language models according to some embodiments. Each illustrated component may be implemented by one or more computing systems, including distributed storage and/or distributed processing nodes. According to some embodiments, one or more of the components may be implemented by one or more virtual machines provisioned in an ad-hoc manner in a cloud-based architecture.

Generally, meeting language model service <NUM> provides transcription service <NUM> with a meeting language model from among meeting language models <NUM>. Transcription service <NUM> adapts a generic language model <NUM> using the meeting language model to generate a meeting-adapted language model. Transcription service <NUM> receives audio <NUM> of an associated meeting and transcribes the meeting using the meeting-adapted language model.

In order to generate the meeting language model, meeting language model service <NUM> communicates with meeting service <NUM> to receive meeting information for a particular meeting from meeting data <NUM>. Meeting service <NUM> may comprise any suitable meeting/calendaring service. The meeting information received from meeting service <NUM> may include a meeting calendar item associated with the particular meeting to be transcribed. Such a calendar item may include names of the meeting organizer and every meeting participant, the meeting subject, the meeting description, and the content of any documents associated with the meeting. The meeting information may also include names of people with whom meeting participants most often collaborate, documents generated by meeting participants, chat sessions that include meeting participants. and any other meeting- or meeting participant-related information.

Based on the list of meeting participants received from meeting service <NUM>, meeting language model service <NUM> may communicate with e-mail service <NUM> to receive e-mail data associated with each meeting participant from user e-mail data <NUM>. E-mail service <NUM> may comprise any suitable system providing an e-mail service. A single service may provide meeting and e-mail services in some embodiments.

Meeting language model service <NUM> generates a meeting language model based on the received meeting information and the received e-mail information. Meeting language model service <NUM> may store the meeting language model in meeting language models <NUM> in associated with an identifier of the meeting. Accordingly, transcription service <NUM> may receive an instruction to provide transciption services for a particular meeting, and may then use an identifier of the particular meeting to retrieve an associated meeting language model from meeting language models <NUM>. As mentioned above, transcription service <NUM> adapts a base, or generic, language model <NUM> using the retrieved meeting language model to generate a meeting-adapted language model, and transcribes audio of the particular meeting using the meeting-adapted language model.

<FIG> is a flow diagram of a process to generate and utilize a meeting-adapted language model according to some embodiments. The <FIG> process and the other processes described herein may be performed using any suitable combination of hardware and software. The system of <FIG> may implement the <FIG> process in some embodiments. Software program code embodying these processes may be stored by any non-transitory tangible medium, including a fixed disk, a volatile or non-volatile random-access memory, a DVD, a Flash drive, or a magnetic tape, and executed by any number of processing units, including but not limited to processors, processor cores, and processor threads. Embodiments are not limited to the examples described below.

Initially, at S210, meeting language model service <NUM> receives an identifier of a meeting for which a meeting language model is to be generated. The meeting identifier may be received from meeting service <NUM> upon creation of a meeting within meeting data <NUM>, from an administrator, from a meeting organizer, or from any other suitable source. Other scenarios in which a meeting identifier may be received are described below with respect to <FIG> and <FIG>.

Meeting data associated with the meeting is acquired at S220. According to some embodiments, service <NUM> queries meeting service <NUM> for the meeting data using the meeting identifier. Such a query may be submitted to service <NUM> over a secure channel using token-based authentication or the like. Meeting service <NUM> then acquires the meeting data from meeting data <NUM> based on the meeting identifier and returns the meeting data to meeting language model service <NUM>.

The retrieved meeting data may include a meeting calendar item which in turn includes names of the meeting participants and their meeting roles, the meeting subject, the meeting description, and the content of any documents associated with the meeting. The meeting data may also include names of people with whom meeting participants most often collaborate, documents generated by meeting participants, chat sessions that include meeting participants. and any other meeting- or meeting participant-related information.

Meeting participants are determined at S230. According to some embodiments, the meeting participants are determined from the meeting data acquired at S220. Next, at S240, e-mail data associated with each meeting participant is acquired. In some embodiments, meeting language model service <NUM> communicates with e-mail service <NUM> to retrieve this e-mail data from user e-mail data <NUM>. Due to the sensitivity of e-mail data, such retrieval may also require authentication and authorization of meeting language model service <NUM>.

The retrieved e-mail data may comprise actual e-mails with or without attachments, or other data representative of the e-mails as described below. The retrieved e-mail data may encompass a particular time period (e.g., previous <NUM> months), and may, in some embodiments, include documents associated with (e.g., created by) the meeting participants. The particular volume and/or type of e-mails retrieved may depend upon the role of each meeting participant in the meeting (e.g., organizer, required, optional).

A meeting language model is generated at S250 based on the received meeting data and the received e-mail data. Any suitable techniques for building a language model from text data and language model formats may be employed at S250. More-specific implementations will be described below. Meeting language model service <NUM> may store the generated meeting language model in meeting language models <NUM>, in associated with the received meeting identifier.

At S260, an adapted language model is generated based on the meeting language model and a generic language model. The adapted language model may be generated by meeting language model service <NUM> or by another entity. Generation of the adapted language model at S260 may occur at any time prior to meeting transcription. Some embodiments may generate the adapted language model once the meeting language model is generated. In some embodiments, the meeting language model is retrieved and used to generate the adapted language model shortly before the meeting. According to some embodiments, the adapted language model is generated on-the-fly during transcription using the meeting language model and the generic language model.

Audio associated with the meeting is transcribed using the adapted language model at S270. For example, transcription service <NUM> may receive an instruction to provide transciption services for a particular meeting, and may then use an identifier of the particular meeting to retrieve an associated meeting language model from meeting language models <NUM>. As mentioned above, transcription service <NUM> may then adapt a generic language model <NUM> using the retrieved meeting language model to generate a meeting-adapted language model, and transcribe audio of the particular meeting using the meeting-adapted language model.

Since the data used to generate an adapted language model often includes sensitive customer data, some embodiments include features to support security and compliance rules and regulations. Some embodiments do not store sensitive data on storage disks. For example, preparation of adapted language models and the use of the models by a transcription service may be performed completely in memory. Embodiments may also run in a compliant "eyes-off" environment which prohibits user access to and viewing of the adapted language models.

<FIG> illustrates a system to generate and utilize meeting-adapted language models according to some embodiments. The system of <FIG> may comprise a specific implementation of the system of <FIG>, but embodiments are not limited thereto.

Meeting language model service <NUM> provides transcription service <NUM> with a meeting language model from among meeting language models <NUM>. Transcription service <NUM> adapts a generic language model <NUM> using the meeting language model to generate a meeting-adapted language model. Transcription service <NUM> then receives audio <NUM> of an associated meeting and transcribes the meeting using the meeting-adapted language model.

According to the <FIG> system, meeting language model service <NUM> generates meeting language nodels <NUM> based on n-grams <NUM>. n-grams <NUM> include user e-mail n-grams <NUM> and meeting n-grams <NUM>. An n-gram as referred to herein is a model which assigns probabilities to the sequences of words. An n-gram model may be used to predict the occurrence of a word based on the occurrence of a previous n-<NUM> words.

n-gram service <NUM> may, periodically or on-demand, communicate with e-mail service <NUM> to retrieve e-mail data <NUM> of various users (e.g., those users who are registered for transcription and/or eligible to participate in teleconferences). In some embodiments, n-gram service <NUM> also retrieves documents associated with the various users. n-gram service <NUM> may generate n-gram models for each of such users based on the retrieved data using any system for generating n-gram models which is or becomes known. These n-gram models may be stored among user e-mail n-grams <NUM> in association with identifiers of corresponding users for later on-demand retrieval by meeting language model service <NUM>. According to some embodiments, n-gram service <NUM> periodically updates n-gram models associated with various users based on new user e-mail data retrieved from e-mail service <NUM>.

n-gram service <NUM> may also, periodically or on-demand, communicate with meeting service <NUM> to retrieve meeting data <NUM> associated with various meetings defined within meeting data <NUM>. As described above, the meeting data <NUM> may include names of the meeting participants and their meeting roles, the meeting subject, the meeting description, the content of any documents associated with the meeting, names of people with whom meeting participants most often collaborate, documents generated by meeting participants, chat sessions that include meeting participants. and any other meeting- or meeting participant-related information. n-gram service <NUM> may generate n-gram models for the various meetings using any system for generating n-gram models which is or becomes known. These meeting n-gram models may be stored among meeting n-grams <NUM> in association with identifiers of the corresponding meetings, such that the models may be retrieved on-demand by meeting language model service <NUM>.

According to some embodiments, meeting model trigger <NUM> communicates with meeting service <NUM> to identify upcoming meetings. If a meeting is identified which is scheduled to begin within a certain threshold time (e.g., <NUM> minutes from the present time), meeting model trigger <NUM> transmits a message to meeting language model service <NUM> to begin generation of a meeting language model corresponding to the meeting. As a result, the meeting language adapted model is ready for use at the commencement of the meeting.

Meeting language model service <NUM> generates a meeting language model based on meeting n-grams <NUM> and user e-mail n-grams <NUM>. In some embodiments, meeting language model service <NUM> uses meeting data <NUM> of a meeting to identify individual email n-grams <NUM> which correspond to the meeting participants, and to identify a meeting n-gram <NUM> which corresponds to the meeting. The identified n-grams are merged into a single set of n-grams using any suitable techniques which are or become known. Next, an ARPA language model is built from the merged n-gram model using any suitable technique which are or become known.

<FIG> is a flow diagram of a process to generate and utilize a meeting-adapted language model according to some embodiments. Embodiments are not limited to the examples described below.

At S410, a meeting language model service receives an instruction to generate a meeting language model associated with a meeting. As described above, such an instruction may be received from a service such as meeting model trigger <NUM>, which monitors a meeting data store (e.g., meeting data <NUM>) for upcoming meetings. The received instruction may include a meeting identifier which references a meeting whose data is stored in the data store.

Meeting participants are determined at S420. According to some embodiments, the meeting participants are determined by acquiring the meeting data stored in the data store using the identifier. In some embodiments, meeting language model service <NUM> queries meeting service <NUM> for the meeting data using the meeting identifier. Such a query may be submitted to service <NUM> over a secure channel using token-based authentication or the like. Meeting service <NUM> then acquires the meeting data from meeting data <NUM> based on the meeting identifier and returns the meeting data to meeting language model service <NUM>.

Next, at S430, an n-gram model is determined for each meeting participant based on e-mail data associated with each meeting participant. According to some embodiments, S430 comprises determining identifiers of the meeting participants from the meeting data and using the identifiers to retrieve participant e-mail n-grams from periodically-updated user e-mail n-grams data store <NUM>. In other embodiments, a meeting language model service or other service generates the e-mail n-gram models of each meeting participant from e-mail data at S430 as described above with respect to n-gram service <NUM>.

A meeting data n-gram model is determined based on meeting data associated with the meeting at S440. According to some embodiments, S440 comprises retrieving a meeting n-gram model from user meeting n-grams data store <NUM> using the meeting identifier. In some embodiments, a meeting language model service or other service generates the meeting n-gram model at S440 based on the meeting data as described above with respect to n-gram service <NUM>.

A meeting language model is generated based on the meeting data n-gram model and the meeting participant n-gram models at S450. In some embodiments, the n-gram models are merged into a single n-gram model and an ARPA language model is built from the merged n-gram model using any suitable technique which are or become known.

An adapted language model is generated at S460 based on the meeting language model and a generic language model. The adapted language model may be generated by meeting language model service <NUM>, by transcription service <NUM>, or by another entity. In some embodiments, the adapted language model is generated once the meeting language model is generated. In some embodiments, the meeting language model is retrieved and used to generate the adapted language model shortly before the meeting. According to some embodiments, the adapted language model is generated on-the-fly during transcription using the meeting language model and the generic language model.

Audio associated with the meeting is transcribed using the adapted language model at S470. For example, transcription service <NUM> receives an instruction to provide transciption services for a particular meeting, and then uses an identifier of the meeting to retrieve an associated meeting language model from meeting language models <NUM>. As mentioned above, transcription service <NUM> may then adapt a generic language model <NUM> using the retrieved meeting language model to generate a meeting-adapted language model, and transcribe audio of the particular meeting using the meeting-adapted language model.

<FIG> illustrates a system for describing operation during a meeting according to some embodiments. The <FIG> system includes elements of <FIG> for purposes of example; these elements may be substituted for similarly-named elements of the <FIG> system.

It will be assumed that a meeting has been created and defined in data of meeting data <NUM>. The data of the meeting may be associated with a meeting identifier in meeting data <NUM>. The data of the meeting may include connection and authentication information.

On or around a designated meeting start time, meeting participants operate respective client devices <NUM>-<NUM> to communicate with meeting service <NUM> and join the meeting. In response, meeting service <NUM> may pass the meeting identifier to transcription service <NUM> and request transcription of audio associated with the meeting. Transcription service <NUM> may proceed to execute a process according to the claimed invention such as that shown in <FIG>.

Specifically, after receipt of the request at S610, transcription service <NUM> requests a meeting language model associated with the meeting. With respect to the <FIG> example, transcription service <NUM> may pass an identifier of the meeting to meeting language model service <NUM> along with a request for a corresponding meeting language model. If it is determined at S630 that no corresponding meeting language model is available (e.g., meeting language model service <NUM> returns an error or other negative response), transcription service <NUM> transcribes audio received from meeting service <NUM> at S640 using a generic language model <NUM>.

Flow proceeds to S650 if meeting language model service <NUM> returns a meeting language model corresponding to the meeting. The returned meeting language model may be generated using any of the techniques described herein. At S650, transcription service <NUM> generates an adapted language model based on the returned meeting language model and the generic language model. Transcription service <NUM> transcribes audio received from meeting service <NUM> using the adpated language model at S660.

Finally, transcribed audio is stored at S670 in association with the meeting. The transcribed audio is stored at S670 regardless of whether the generic language model or the adapted language model was used to transcribe the meeting audio. In some embodiments of S670, transcription service <NUM> transmits a file including text of the audio to meeting service <NUM>. Meeting service <NUM> may store the file in association with the meeting identifier within meeting data <NUM>. The stored file may then be accessed by the meeting organizer, meeting participants, and/or any other set of users to whom access is granted.

According to some embodiments of the claimed invention, more than one meeting language model are applicable to a meeting. The applicable meeting language models may be associated with various degrees of specificity to the meeting. For example, meeting language models <NUM> may include a meeting language model generated based only on the meeting data and not based on participant e-mail data, or a meeting language model based on meeting data of one or more previous meetings including the same meeting participants. Meeting language model service <NUM> one or more of such applicable models to provide to transcription service <NUM> at S630 in some embodiments. If more than one model is provided, transcription service <NUM> may combine these models using offline and online interpolation techniques, associating higher weights to the more specific and thus more relevant models. If transient failures occur during the use of the combined model, transcription service <NUM> may fall back to a less specific model or to the generic model.

<FIG> illustrates distributed system <NUM> according to some embodiments. System <NUM> may be cloud-based and components thereof may be implemented using on-demand virtual machines, virtual servers and cloud storage instances. As shown, meeting language model service <NUM> may be implemented as a cloud service providing meeting language models to other services such as transcription service <NUM>.

Meeting participants operate respective client devices <NUM>-<NUM> to communicate with meeting server <NUM> and join a meeting defined within meeting data <NUM>. In response, meeting server <NUM> requests transcription of the meeting audio from transcription service <NUM> and includes an identifier of the meeting in the request. Transcription service <NUM> may pass the identifier to meeting language model service <NUM> to request a corresponding meeting language model.

Meeting language model service <NUM> returns a meeting language model corresponding to the meeting. The returned meeting language model may be previously-generated based on the meeting data associated with the meeting and on user e-mail data associated with the meeting participants and retrieved from e-mail server <NUM>, as described herein. Transcription service <NUM> generates an adapted language model based on the returned meeting language model and a generic language model. During the meeting, transcription service <NUM> receives audio from meeting server <NUM> and transcribes the audio using the adapted language model. The transcribed audio may be stored in meeting data <NUM> in association with the meeting.

<FIG> is a block diagram of system <NUM> according to some embodiments. System <NUM> may comprise a general-purpose server computer and may execute program code to provide meeting language models as described herein. System <NUM> may be implemented by a cloud-based virtual server according to some embodiments.

System <NUM> includes processing unit <NUM> operatively coupled to communication device <NUM>, persistent data storage system <NUM>, one or more input devices <NUM>, one or more output devices <NUM> and volatile memory <NUM>. Processing unit <NUM> may comprise one or more processors, processing cores, etc. for executing program code. Communication interface <NUM> may facilitate communication with external devices, such as client devices, and data providers as described herein. Input device(s) <NUM> may comprise, for example, a keyboard, a keypad, a mouse or other pointing device, a microphone, a touch screen, and/or an eye-tracking device. Output device(s) <NUM> may comprise, for example, a display (e.g., a display screen), a speaker, and/or a printer.

Data storage system <NUM> may comprise any number of appropriate persistent storage devices, including combinations of magnetic storage devices (e.g., magnetic tape, hard disk drives and flash memory), optical storage devices, Read Only Memory (ROM) devices, etc. Memory <NUM> may comprise Random Access Memory (RAM), Storage Class Memory (SCM) or any other fast-access memory.

Meeting language model service <NUM> may comprise program code executed by processing unit <NUM> to cause system <NUM> to generate meeting language models <NUM> associated with various meetings as described herein. Such generation may be based on e-mail data n-gram models <NUM> and meeting data n-gram models <NUM> as described above. E-mail data n-gram models <NUM> and meeting data n-gram models <NUM> may be generated by an n-gram service based on e-mail data and meeting data as described above. Data storage device <NUM> may also store data and other program code for providing additional functionality and/or which are necessary for operation of system <NUM>, such as device drivers, operating system files, etc..

Each functional component and process described herein may be implemented at least in part in computer hardware, in program code and/or in one or more computing systems executing such program code as is known in the art. Such a computing system may include one or more processing units which execute processor-executable program code stored in a memory system.

Processor-executable program code embodying the described processes may be stored by any non-transitory tangible medium, including a fixed disk, a volatile or non-volatile random-access memory, a DVD, a Flash drive, or a magnetic tape, and executed by any number of processing units, including but not limited to processors, processor cores, and processor threads. Embodiments are not limited to the examples described herein.

The foregoing diagrams represent logical architectures for describing processes according to some embodiments, and actual implementations may include more or different components arranged in other manners. Other topologies may be used in conjunction with other embodiments. Moreover, each component or device described herein may be implemented by any number of devices in communication via any number of private networks. Two or more of such computing devices may be located remote from one another and may communicate with one another via any known manner of network(s) and/or a dedicated connection. Each component or device may comprise any number of hardware and/or software elements suitable to provide the functions described herein as well as any other functions. For example, any computing device used in an implementation of a system according to some embodiments may include a processor to execute program code such that the computing device operates as described herein.

Claim 1:
A method for generating a transcript of a meeting, the method comprising:
receiving (S610) a request to transcribe audio (<NUM>) associated with a meeting;
requesting (S620) a meeting language model (<NUM>) associated with the meeting;
determining (S630) whether the meeting language model (<NUM>) is available;
in response to determining that the meeting language model (<NUM>) is unavailable:
transcribing (S640) audio (<NUM>) associated with the meeting based on a generic language model (<NUM>);
in response to determining that the meeting language model (<NUM>) is available:
generating (S650) an adapted language model based on the meeting language model (<NUM>) and a generic language model (<NUM>); and
transcribing (S660) audio (<NUM>) associated with the meeting based on the adapted language model; and
storing (S670) the transcribed audio in association with the meeting.