Patent Description:
Recent technological advances have allowed meetings to be conducted more efficiently and effectively. For example, network-enabled devices have been deployed with solutions that allow people to conduct teleconferences with one another instead of requiring all participants to be in the same physical location. The solutions may also allow the participants to record video and/or audio during meetings, generate transcripts from meeting recordings, share notes and minutes with one another, find meeting times that work best for most or all participants, and/or interact or collaborate within a virtual or augmented environment.

However, individual automatic speech recognition (ASR) engines used to generate transcripts from meetings or other recordings can vary in performance under different conditions. For example, ASR engines may vary in their ability to recognize speech across different languages, vocabularies, accents, dialects, voices, speech patterns, and/or audio characteristics.

As the foregoing illustrates, what is needed is a technological improvement for improving the performance of ASR engines under varying conditions.

Detection of erroneous fragments in the output of an off-the-shelf ASR system is discussed in <CIT>.

Particular embodiments are defined by the subject-matter of the dependent claims. Embodiments which do not fall within the scope of the claims are to be interpreted merely as background information useful for understanding the invention.

One embodiment of the present invention sets forth a method for analyzing transcriptions of a recording, as defined in appended independent claim <NUM>. The method inter alia includes storing per-character differences between a first set of characters from a first transcription of the recording and a second set of characters from a second transcription of the recording in a matrix with a fixed width. The method also includes encoding the per-character differences in the matrix into a vector of the fixed width. The method further includes outputting the vector as a representation of a pairwise error rate between the first transcription and the second transcription.

At least one advantage and technological improvement of the disclosed techniques is increased accuracy of the ensemble model, which may reduce reliance on human transcriptions of the recordings and/or improve the usefulness of the best transcriptions to users. Consequently, the disclosed techniques provide technological improvements in the accuracy and/or performance of ASR engines, ensemble models, interactive virtual meeting assistants, and/or other applications or devices that are used to manage, review, and/or analyze recordings or transcriptions of meetings or other types of events.

So that the manner in which the above recited features of the various embodiments can be understood in detail, a more particular description of the inventive concepts, briefly summarized above, may be had by reference to various embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of the inventive concepts and are therefore not to be considered limiting of scope in any way, and that there are other equally effective embodiments.

In the following description, numerous specific details are set forth to provide a more thorough understanding of the various embodiments. However, it will be apparent to one of skilled in the art that the inventive concepts may be practiced without one or more of these specific details.

<FIG> illustrates a system <NUM> configured to implement one or more aspects of the present disclosure. As shown, system <NUM> includes, without limitation, a computing device <NUM> coupled via dial-in infrastructure networks <NUM> to multiple meeting participants <NUM>(<NUM>) to <NUM>(m).

As shown, computing device <NUM> includes, without limitation, a processor <NUM>, input/output (I/O) devices <NUM>, and a memory <NUM>. Processor <NUM> may be any technically feasible form of processing device configured to process data and execute program code. Processor <NUM> could be, for example, a central processing unit (CPU), a graphics processing unit (GPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and so forth. I/O devices <NUM> may include devices configured to receive input or provide output, including, for example, a keyboard, a mouse, a display, and so forth.

Memory <NUM> may be any technically feasible storage medium configured to store data and software applications. Memory <NUM> may be, for example, a hard disk, a random-access memory (RAM) module, a read-only memory (ROM), and so forth. As also shown, memory <NUM> includes, without limitation, an interactive virtual meeting assistant <NUM>, which is a software application that, when executed by processor <NUM>, causes processor <NUM> to execute an interactive virtual meeting assistant application. Interactive virtual meeting assistant <NUM> may include any technically feasible type of virtual meeting assistant, such as the EVA application from VOICERA, INC.

Dial-in infrastructure networks <NUM> may be any technically feasible network or set of interconnected communication links that enable interactive virtual meeting assistant <NUM>, as executed by processor <NUM>, to participate in a meeting with one or more meeting participants <NUM>(<NUM>) to <NUM>(m). In various embodiments, dial-in infrastructure networks <NUM> may include, without limitation, one or more telephone line connections or one or more computer connections, such as a local area network (LAN), wide area network (WAN), the World Wide Web, or the Internet, among others. Dial-in infrastructure networks <NUM> may also allow interactive virtual meeting assistant <NUM> to access other information via the networks, such as by accessing information via the World Wide Web, or the Internet, among others.

Meeting participants <NUM>(<NUM>) to <NUM>(m) represent one or more human and/or computer participants in a meeting environment. Each of meeting participants <NUM>(<NUM>) to <NUM>(m) may be connected to other meeting participants and interactive virtual meeting assistant <NUM>, as executed by processor <NUM>, via any technically feasible device that forms a connection to other meeting participants, such as a telephone, smartphone, computing device, or personal data assistant, among others. The connections linking meeting participants <NUM>(<NUM>) to <NUM>(m) may be any technically feasible communication link(s), including, without limitation, communication links in dial-in infrastructure networks <NUM> and/or external communication links such as telephone line connections and/or network connections to a local area network (LAN), wide area network (WAN), the World Wide Web, or the Internet, among others.

Although <FIG> shows interactive virtual meeting assistant <NUM> stored in memory <NUM> of computing device <NUM>, in alternative embodiments, interactive virtual meeting assistant <NUM> may be stored in part or entirely in memory <NUM> and/or on any technically feasible memory device internal to or external to computing device <NUM>, including any memory device coupled to computing device <NUM> through a wired connection, a wireless connection, a network connection, and so forth.

Interactive virtual meeting assistant <NUM> includes functionality to generate, track, and/or store metadata and recordings related to a meeting. For example, interactive virtual meeting assistant <NUM> may obtain a title, location (e.g., physical address, building number, conference room name, teleconferencing link, phone number, etc.), description, agenda, time, duration, list of participants, inviter or organizer, and/or other information describing the meeting from a calendar invitation, email, text message, chat message, voicemail, phone call, and/or other communication related to the meeting. Interactive virtual meeting assistant <NUM> may also, or instead, capture audio and/or video of the meeting; record notes or action items generated during the meeting; and/or generate a transcript from the audio and/or video recording of the meeting, as described in further detail below with respect to <FIG>. Interactive virtual meeting assistant <NUM> may further record "highlights" that are flagged by one or more meeting participants <NUM>(<NUM>) to <NUM>(m) as important. A meeting participant may activate recording of a highlight by issuing a voice command and/or other type of input to interactive virtual meeting assistant <NUM>.

<FIG> is a more detailed illustration of functionality provided by interactive virtual meeting assistant <NUM> of <FIG>, according to various embodiments of the present invention. As shown, the functionality may be provided by a processing engine <NUM>, a transcription engine <NUM>, and an analysis engine <NUM>, which can be implemented as part of and/or separately from interactive virtual meeting assistant <NUM>. Each of these components is described in further detail below.

As mentioned above, interactive virtual meeting assistant <NUM> may include functionality to generate a transcript of a recording of a meeting (or any other type of activity or event). More specifically, interactive virtual meeting assistant <NUM> may use ensemble modeling of automatic speech recognition (ASR) output to assemble the transcript from multiple possible transcriptions <NUM>-<NUM> generated by a number of ASR engines <NUM> (individually referred to as an "ASR engine <NUM>") from the recording. Each ASR engine <NUM> may utilize a different model and/or technique to transcribe the recording. As a result, ASR engines <NUM> may differ in performance based on languages, vocabularies, accents, dialects, voices, speech patterns, volume, noise, distortions, audio quality, and/or other conditions associated with or found in the recording.

Processing engine <NUM> may execute or otherwise use ASR engines <NUM> to generate transcriptions <NUM>-<NUM> of the recording. For example, processing engine <NUM> may execute ASR engines <NUM> to generate transcript lattices <NUM>. Processing engine <NUM> may also, or instead, obtain one or more transcript lattices <NUM> from ASR engines <NUM> that execute independently from processing engine <NUM>.

Each transcript lattice includes a set of terms <NUM>, locations <NUM> of terms <NUM> in the recording, and confidences <NUM> in terms <NUM>. Terms <NUM> may include words, phrases, morphemes, n-grams, syllables, phonemes, and/or other representations of speech or text that is extracted from the recording. When ASR techniques are used to generate non-word terms <NUM> (e.g., morphemes, phonemes, syllables, etc.) from the recording, the non-word terms may be converted into words. The words may then be included in the corresponding transcript lattices <NUM>, in lieu of or in addition to the non-word terms used to produce the words.

Locations <NUM> may represent the positions of terms <NUM> in the recording. For example, each location may specify a start and end timestamp for each term, a start timestamp and a duration for each term, and/or another representation of the portion of the recording occupied by the term.

Confidences <NUM> may include measures of accuracy in terms <NUM> generated by the ASR techniques from the recording. For example, each confidence may be represented by a value with a range of <NUM> to <NUM>, which represents the probability that a word predicted by the corresponding ASR engine exists at the corresponding location.

After terms <NUM>, locations <NUM>, and confidences <NUM> are generated in each transcript lattice, the transcript lattice may be represented as a Weighted Finite-State Transducer and/or other type of graph. Nodes in the graph may represent states, and edges in the graph may represent transitions between pairs of states. For example, each edge in a lattice may be represented using the following format:
<start state id> <end state id> <input symbol> <output symbol> <weight>
In the above representation, the edge connects two states represented by "start state id" and "end state id. " The "input symbol" may represent an identifier for the edge, and the "output symbol" may represent an identifier for a word. The "weight" may encode one or more probabilities, duration, penalty, and/or other quantity that accumulates along one or more paths representing transcriptions of words, phrases and/or other units of speech in the recording.

In turn, processing engine <NUM> may combine terms <NUM>, locations <NUM>, and/or confidences <NUM> from transcript lattices <NUM> into a unified representation <NUM> of all transcriptions <NUM>-<NUM> produced by ASR engines <NUM> from the recording. Representation <NUM> may include all possible paths <NUM> formed by a graph of terms <NUM> in each transcript lattice, according to locations <NUM> of terms <NUM> in the transcript lattice. For example, a recording containing the phrase "hi there" may include the following possible paths <NUM> in representation <NUM>:.

In other words, each possible path in representation <NUM> may include a linear sequence of consecutive, non-overlapping terms <NUM> from a corresponding transcript lattice.

Processing engine <NUM> may also associate possible paths <NUM> in representation <NUM> with the corresponding ASR engines <NUM>. For example, processing engine <NUM> may store, in representation <NUM>, a mapping of each possible path to identifiers for one or more ASR engines used to produce the path.

Processing engine <NUM> further identifies portions of possible paths <NUM> that pertain to snippets <NUM> of voice activity in the recording. For example, processing engine <NUM> and/or another component may use a voice activity detection technique to identify snippets <NUM> as time intervals in the recording that contain voice activity. The voice activity detection technique may identify and/or filter noise in the recording and classify fixed-duration frames (e.g., one-second frames) of the remaining audio signal as containing or not containing speech. Snippets <NUM> may then be defined and/or represented as consecutive frames in the recording that are classified as containing speech.

Processing engine <NUM> and/or another component may also, or instead, divide intervals of voice activity in the recording into smaller snippets <NUM>. For example, the component may divide a five- to seven-second interval of voice activity into snippets <NUM> of individual phonemes, syllables, words, and/or other representations of speech that can be produced and/or processed by ASR engines <NUM>.

Processing engine <NUM> identifies a set of possible transcriptions <NUM>-<NUM> of each snippet based on a subset of possible paths <NUM> spanned by the snippet. For example, processing engine <NUM> may identify transcriptions <NUM>-<NUM> of a snippet as linear sequences of terms <NUM> in possible paths <NUM> that are contained within the time interval spanned by the snippet. Each possible path may include words, phrases, and/or other units of speech from one or more transcript lattices <NUM> and/or ASR engines <NUM>. In other words, a given possible path may be composed of a sequence of multiple sub-lattices from multiple ASR engines <NUM>.

After possible transcriptions <NUM>-<NUM> for snippets <NUM> are identified, transcription engine <NUM> may select a best transcription (e.g., best transcriptions <NUM>) of each snippet from the set of possible transcriptions <NUM>-<NUM>. In particular, transcription engine <NUM> may divide ASR engines <NUM> into a set of contributor ASRs <NUM> and a different set of selector ASRs <NUM>. Contributor ASRs <NUM> may represent ASR engines <NUM> that are used to generate best transcriptions <NUM> of snippets <NUM>, and selector ASRs <NUM> may represent ASR engines <NUM> that produce transcriptions <NUM> for use in assessing the correctness or accuracy of transcriptions <NUM> from contributor ASRs <NUM>.

Transcription engine <NUM> may use a number of criteria to select contributor ASRs <NUM> and selector ASRs <NUM> from the available ASR engines <NUM>. For example, transcription engine <NUM> may identify contributor ASRs <NUM> as a certain number of ASR engines <NUM> with the best historical performance or accuracy in transcribing recordings and selector ASRs <NUM> as remaining ASR engines <NUM> that are not selected as contributor ASRs <NUM>. In another example, transcription engine <NUM> may select contributor ASRs <NUM> as ASR engines <NUM> with the best performance in generating transcripts under certain conditions associated with the recording (e.g., languages, dialects, accents, voices, speech patterns, noise characteristics, distortion, volume, audio quality, etc.). The conditions may be determined by analyzing the recording and/or metadata associated with the recording (e.g., metadata for a meeting captured in the recording).

Next, transcription engine <NUM> may input transcriptions <NUM>-<NUM> into a machine learning model <NUM>. For example, machine learning model <NUM> may be an artificial neural network (ANN) and/or other type of model that accepts, as input, one transcription of a snippet from a contributor ASR and additional transcriptions <NUM> of the snippet from selector ASRs <NUM>.

Input to the ANN may also, or instead, include features related to the corresponding transcriptions from the contributor ASR and selector ASRs <NUM>. For example, the features may include the number of words in each transcription, a difference in the number of words in the transcription from the contributor ASR and the number of words in the transcription from each selector ASR, a pairwise word agreement or disagreement rate between the transcription from the contributor ASR and the transcription from each selector ASR, and/or the confidence of each ASR in the corresponding transcription.

For each inputted set of transcriptions <NUM>-<NUM> and/or associated features, machine learning model <NUM> may generate a score (e.g., scores <NUM>) reflecting the accuracy or correctness of the transcription from the contributor ASR, based on the corresponding transcriptions <NUM> and/or distribution of transcriptions <NUM> produced by selector ASRs <NUM>. For example, machine learning model <NUM> may produce a score that represents an estimate of the overall or cumulative error rate between the transcription from the contributor ASR and the corresponding collection of transcriptions <NUM> produced by selector ASRs <NUM>. During calculation of the score, machine learning model <NUM> may apply different weights to certain transcriptions <NUM> and/or portions of one or more transcriptions <NUM>-<NUM> (e.g., words of different lengths, words at the beginning or end of each transcription, etc.). As a result, machine learning model <NUM> may use transcriptions <NUM> from selector ASRs <NUM> as "votes" regarding the correctness or accuracy of a transcription from a given contributor ASR.

More specifically, transcription engine <NUM> may input each transcription of a snippet from contributor ASRs <NUM> and the corresponding set of transcriptions <NUM> of the snippet from selector ASRs <NUM> into machine learning model <NUM> to generate a different score for the transcription from contributor ASRs <NUM>. Transcription engine <NUM> may then compare scores <NUM> for all transcriptions <NUM> of the snippet from contributor ASRs <NUM> to select the best transcription of the snippet. For example, transcription engine <NUM> may sort transcriptions <NUM> by scores <NUM> and select the transcription with the best or highest score (e.g., similarity to the corresponding collection of transcriptions <NUM>, accuracy, correctness, etc.) as the best transcription of the snippet.

After best transcriptions <NUM> are selected and/or identified for all snippets <NUM> of voice activity in the recording, transcription engine <NUM> and/or another component may generate a transcript of the recording from best transcriptions <NUM>. For example, the component may order best transcriptions <NUM> by the positions of the corresponding snippets <NUM> within the transcript.

Analysis engine <NUM> may assess the performance and/or accuracy of machine learning model <NUM> in generating best transcriptions <NUM>. More specifically, analysis engine <NUM> may input features related to best transcriptions <NUM> and/or the corresponding transcriptions <NUM> from contributor ASRs <NUM> and/or selector ASRs <NUM> into machine learning model <NUM>, and machine learning model <NUM> may estimate scores <NUM> representing the accuracy of best transcriptions <NUM> based on the features.

As shown, features inputted into machine learning model <NUM> may include best transcription features <NUM>, transcription features <NUM>, pairwise comparison features <NUM>, and recording features <NUM>. Best transcription features <NUM> may include features that describe and/or are generated from best transcriptions <NUM>, and transcription features <NUM> may include features that describe and/or are generated from other transcriptions <NUM>-<NUM> that are used to select and/or produce best transcriptions <NUM>. For example, best transcription features <NUM> and transcription features <NUM> may be produced for one or more snippets in the recording and/or a transcription of the entire recording. Each set of features may include, but is not limited to, a length of a given transcription (e.g., a best transcription selected by machine learning model <NUM> or an ASR transcription), a confidence in the transcription, and/or a letters per second associated with the transcription.

Pairwise comparison features <NUM> may include features that are generated from pairs of transcriptions selected from best transcriptions <NUM> and transcriptions <NUM>-<NUM>. For example, pairwise comparison features <NUM> may be produced between a best transcription of each snippet and every other transcription of the snippet produced by contributor ASRs <NUM> and/or selector ASRs <NUM>. Pairwise comparison features <NUM> may also, or instead, be produced between pairs of transcriptions <NUM>-<NUM> produced by contributor ASRs <NUM> and/or selector ASRs <NUM>.

Pairwise comparison features <NUM> may include measures of differences between the pairs of transcriptions. For example, pairwise comparison features <NUM> may include a pairwise word error rate representing the number of substitutions, insertions, and/or deletions between each pair of transcriptions divided by the length of one of the transcriptions. Such measures may also, or instead, include a difference in character length between each pair of transcriptions. Pairwise word error rates and/or character length differences may additionally be aggregated into an average pairwise word error rate and/or average character length difference across all pairs of transcriptions.

According to the present invention, pairwise comparison features <NUM> additionally include encodings of per-character differences between pairs of transcriptions. To produce the encodings, per-character differences between each pair of transcriptions are stored in a matrix with a fixed width. Per-character differences along each column of the matrix are then aggregated into a single numeric value, which is stored in a vector of the same fixed width. The vector is then used as a fixed-length representation of the per-character differences and inputted into machine learning model <NUM>. Vector-based encodings of per-character differences between transcriptions are described in further detail below with respect to <FIG>.

Recording features <NUM> may include features that represent audio characteristics of the recording from which transcriptions <NUM>-<NUM> and best transcriptions <NUM> are generated. For example, recording features <NUM> may include the duration of audio associated with each snippet, the duration of the entire recording, and/or the offset of each snippet in the recording. Recording features <NUM> may also, or instead, include audio features such as a mel-frequency cepstral coefficient (MFCC), a perceptual linear prediction (PLP), a root mean square (RMS), a zero crossing rate, a spectral flux, a spectral energy, a chroma vector, and/or a chroma deviation.

In one or more embodiments, machine learning model <NUM> includes an ANN and/or another type of model that estimates scores <NUM> representing word error rates between best transcriptions <NUM> and ground truth transcriptions of the recording based on best transcription features <NUM>, transcription features <NUM>, pairwise comparison features <NUM>, and/or recording features <NUM>. For example, machine learning model <NUM> may estimate scores <NUM> as percentage and/or proportional differences between each "best transcription" associated with the recording and a corresponding ground truth transcription generated by a human from the recording.

After machine learning model <NUM> outputs an estimated word error rate for a given "best transcription" of a snippet and/or recording, analysis engine <NUM> may apply one or more thresholds to the word error rate to characterize the accuracy (e.g., accuracies <NUM>) of the best transcription. For example, analysis engine <NUM> may include a first threshold for a high error rate (e.g., an error rate that exceeds a certain threshold) and a second threshold for a low error rate (e.g., an error rate that falls below a certain threshold) for the best transcription's estimated word error rate. If the estimated word error rate exceeds the first threshold, the best transcription may be characterized as highly inaccurate. If the estimated word error rate falls below the second threshold, the best transcription may be characterized as highly accurate. If the estimated word error rate falls between the first and second thresholds, the best transcription may be characterized as neither highly accurate nor highly inaccurate.

Analysis engine <NUM> may also determine a candidacy of the snippet and/or recording for human transcription based on the characterized accuracy of the best transcription. For example, analysis engine <NUM> may select one or more best transcriptions <NUM> with accuracies <NUM> that fall between the threshold for high accuracy and the threshold for low accuracy as candidates for human transcription.

Analysis engine <NUM> and/or another component may display and/or output the selected best transcriptions <NUM> in a user interface that is provided by interactive virtual meeting assistant <NUM> and/or separately from interactive virtual meeting assistant <NUM>. For example, the component may provide a graphical user interface (GUI), web-based user interface, voice user interface, and/or other type of interface between a human and an electronic device. Users may interact with the user interface to provide user feedback related to the selected best transcriptions <NUM>. For example, each user may interact with one or more user-interface elements to hear the recording and view the best transcription of the recording outputted by machine learning model <NUM>. The user may also interact with one or more user-interface elements to confirm the correctness or accuracy of a best transcription of a snippet; select an alternative transcription of the snippet that is more accurate (e.g., a transcription from a different ASR engine); and/or manually input a correct transcription of the snippet.

In turn, transcription engine <NUM>, analysis engine <NUM>, and/or another component may update machine learning models <NUM> and <NUM> based on the user feedback. For example, the component may obtain human transcriptions of one or more snippets <NUM> from the user feedback and use differences between the human transcriptions and the corresponding best transcriptions <NUM> to retrain parameters (e.g., coefficients, weights, etc.) of machine learning model <NUM> and/or machine learning model <NUM>. Such retraining may occur in an online, offline, and/or nearline basis to accommodate requirements or limitations associated with the performance or scalability of the system and/or the availability of best transcriptions <NUM> and/or the corresponding user feedback. As a result, machine learning model <NUM> may generate best transcriptions <NUM> that are closer to the ground truth transcriptions, and machine learning model <NUM> may estimate word error rates between best transcriptions <NUM> and the ground truth transcriptions more accurately.

<FIG> is an illustration of the encoding of per-character differences <NUM> between two transcriptions <NUM>-<NUM> of a recording, according to various embodiments of the present invention. As described above, transcriptions <NUM>-<NUM> may be generated by two different ASRs, or transcriptions <NUM>-<NUM> may include one "best transcription" of the recording produced by an ensemble model (e.g., machine learning model <NUM> of <FIG>) and another transcription produced by an ASR from the recording.

Per-character differences <NUM> may include multiple types and/or sets of character-based changes between transcriptions <NUM>-<NUM>. For example, a "diff" utility or tool may be applied to transcriptions <NUM>-<NUM> to produce three sets of per-character differences <NUM> between transcriptions <NUM>-<NUM>. One set of per-character differences <NUM> may contain character-level additions that are applied to one transcription to produce the other transcription (e.g., an addition of the letter 'd' to the end of "ad" to produce "add"). A second set of per-character differences <NUM> may contain character-level substitutions that are applied to one transcription to produce the other transcription (e.g., substituting 'i' in "will" with an 'e' to produce "well"). A third set of per-character differences <NUM> may contain character-level deletions that are applied to one transcription to produce the other transcription (e.g., deleting 's' from "dessert" to produce "desert").

Within a given set of per-character differences <NUM> (i.e., additions, substitutions, or deletions), each difference may be represented by a character associated with the change, as well as the position of the change with respect to one of the transcriptions. For example, per-character differences <NUM> between the strings "welcome" and "well come" may be represented as "wel<ins>l </ins>come" (i.e., insertion of the characters 'l' and '' after "wel" in the first string to produce the second string), or conversely as "wel<del>l </del>come" (i.e., deletion of the characters 'l' and '' after "wel" in the second string to produce the first string).

Each set of per-character differences <NUM> between transcriptions <NUM>-<NUM> is stored in a matrix <NUM> with a fixed width <NUM> (i.e., a fixed number of columns <NUM>-<NUM>). More specifically, elements of matrix <NUM> represent character positions in one transcription (e.g., the transcription to which per-character differences <NUM> are applied to produce the other transcription), with the characters wrapping around to subsequent rows in the matrix until all characters in the entire transcription have been assigned to different elements of matrix <NUM>. Per-character differences <NUM> between the transcription and another transcription are then stored at the corresponding elements of matrix <NUM>.

For example, characters in the string "welcome to our meeting" may have the following mapping to elements of matrix <NUM>: <MAT> The above representation of matrix <NUM> includes a five-element fixed width <NUM> into which characters of the string are positioned. The first row of matrix <NUM> includes five elements representing the first five characters of the string (i.e., "welco"), the second row of matrix <NUM> includes five elements representing the second set of five characters from the string (i.e., "me to"), the third row of matrix <NUM> includes five elements representing the third set of five characters from the string (i.e., " our "), the fourth row of matrix <NUM> includes five elements representing the fourth set of five characters from the string (i.e., "meeti"), and the fifth row of matrix <NUM> includes five elements, the first two of which represent the last two characters in the string (i.e., "ng").

Continuing with the previous example, matrix <NUM> may store a set of per-character differences between the strings "welcome to our meeting" and "well come to hour meeting" as the following: <MAT> More specifically, the above representation of matrix <NUM> may include counts of insertions into the first string to produce the second string. Within matrix <NUM>, the third element of the first row includes two character insertions after the first three characters of the first string (i.e., insertion of "l" after "wel"). The first element of the third row includes one insertion after the first ten characters of the first string (i.e., insertion of 'h' after "welcome to "). All remaining elements of matrix <NUM> include null values.

Next, per-character differences <NUM> stored in individual columns <NUM>-<NUM> of matrix <NUM> are aggregated into corresponding elements <NUM>-<NUM> of a vector <NUM> with the same fixed width <NUM>. More specifically, per-character differences <NUM> along each column of matrix <NUM> may be aggregated using row-based encodings <NUM>-<NUM> associated with different rows of matrix <NUM>, and the aggregated row-based encodings <NUM>-<NUM> may be stored in elements <NUM>-<NUM> of vector <NUM>.

To produce row-based encodings <NUM>-<NUM>, the position of each row in matrix <NUM> may be represented by a corresponding prime number in the sequence of prime numbers. Thus, the first row of matrix <NUM> may be assigned the first prime number of <NUM>, the second row of matrix <NUM> may be assigned the second prime number of <NUM>, the third row of matrix <NUM> may be assigned the third prime number of <NUM>, and so on.

When an element of matrix <NUM> in a given row contains a non-null numeric value (e.g., a value representing the number of insertions, substitutions, or deletions at a corresponding character of a transcription), the prime number may be raised to the value. Prime numbers along each column of matrix <NUM> may then be multiplied with one another to produce a single number that encodes all per-character differences <NUM> along the column, and the number may be stored in a corresponding element of vector <NUM> that is indexed by the column's position in matrix <NUM>.

Continuing with the above example, the representation of matrix <NUM> that stores per-character differences <NUM> between the strings "welcome to our meeting" and "well come to hour meeting" may be converted into the following representation of vector <NUM>: <MAT> The first element of the above vector <NUM> includes a value of <NUM>, which is obtained by raising the third prime number of <NUM> to the power of <NUM> stored in the first element of the third row of matrix <NUM>. The third element of the above vector <NUM> includes a value of <NUM>, which is obtained by raising the first prime number of <NUM> to the power of <NUM> stored in the third element of the first row of matrix <NUM>.

In turn, vector <NUM> may be included as a fixed-size representation of a variable number of per-character differences <NUM> that is inputted into an ANN and/or other type of machine learning model <NUM> that accepts a fixed set of features. Because each element of vector <NUM> contains a number that can be factorized into a product of prime numbers, the number may encode the numbers and positions of per-character differences <NUM> along the corresponding column of matrix <NUM>, which may allow machine learning model <NUM> to make predictions and/or inferences based on the encoded per-character differences <NUM>.

<FIG> is a flow diagram of method steps for analyzing a best transcription of a recording, according to various embodiments of the present invention. Although the method steps are described in conjunction with the systems of <FIG>, persons skilled in the art will understand that any system configured to perform the method steps, in any order, can be used.

As shown, analysis engine <NUM> generates <NUM> features representing transcriptions produced by multiple ASR engines from voice activity in the recording and a best transcription of the recording produced by an ensemble model (e.g., machine learning model <NUM>) from the transcriptions. For example, analysis engine <NUM> may generate a first set of features from the ASR transcriptions, a second set of features from pairwise comparisons of the transcriptions, a third set of features from the best transcription, and/or a fourth set of features from the recording. The first set of features may include a length of a transcription, a confidence in the transcription, and/or a letters per second associated with the transcription. The second set of features may include a word error rate between each pair of transcriptions, a difference in length between the pair of transcriptions, an average word error rate across all pairs of transcriptions, an average difference in length across all pairs of transcriptions, and/or a fixed-size encoding of per-character differences between two transcriptions. The third set of features may include a first feature representing a pairwise comparison of the best transcription and each of the transcriptions (i.e., any of the features in the second set, generated between the best transcription and each ASR transcription) and a second feature representing an attribute of the best transcription (i.e., any of the features in the first set, generated for the best transcription). The fourth set of features may include a duration of the voice activity, a position of the voice activity in the recording, and/or an audio feature (e.g., MFCC, PLP, RMS, zero crossing rate, spectral flux, spectral energy, chroma vector, chroma deviation, etc.).

Next, analysis engine <NUM> applies <NUM> a machine learning model to the features to produce a score representing an accuracy of the best transcription. For example, analysis engine <NUM> may output, based on the features, a numeric score ranging from <NUM> to <NUM> that represents the error rate of the best transcription, compared with a ground truth human transcription of the same recording. A low score may represent a low error rate, and a high score may represent a high error rate.

Analysis engine <NUM> stores <NUM> the score in association with the best transcription. For example, anaysis engine <NUM> may update a database, data warehouse, flat file, distributed filesystem, and/or another data store with a mapping between the best transcription and/or an identifier for the best transcription and the corresponding score outputted by the machine learning model.

Analysis engine <NUM> applies <NUM> one or more thresholds to the score to characterize the accuracy of the best transcription and subsequently determines <NUM> a candidate of the recording for human transcription based on the characterized accuracy. For example, analysis engine <NUM> may identify the recording as a candidate for human transcription when the score falls between a first threshold for a high error rate and a second threshold for a low error rate.

Analysis engine <NUM> and/or another component then generates <NUM> training data for the ensemble model from the best transcription and the human transcription. For example, the component may provide a user interface that outputs the best transcription and recording to users. The users may interact with the user interface to confirm the correctness or accuracy of the best transcription, select an alternative transcription that is more accurate (e.g., a transcription from a different ASR engine), and/or manually input a correct transcription of the recording.

Finally, the component updates <NUM> parameters of the ensemble model based on the training data <NUM>. For example, the component may use differences between the human transcription and the best transcription to update parameters of the ensemble model. The component may optionally use the differences to update the parameters of the machine learning model used to characterize the accuracy of the best transcription, thereby improving subsequent estimates of best transcription accuracy by the machine learning model.

<FIG> is a flow diagram of method steps for analyzing pairs of transcriptions of a recording, according to various embodiments of the present invention. Although the method steps are described in conjunction with the systems of <FIG>, persons skilled in the art will understand that any system configured to perform the method steps, in any order, can be used.

As shown, analysis engine <NUM> stores <NUM> per-character differences between a first set of characters from a first transcription of a recording and a second set of characters from a second transcription of the recording in a matrix with a fixed width. For example, analysis engine <NUM> may apply a "diff" operation to the transcriptions to identify one or more sets of per-character differences between the first and second sets of characters, with each set representing additions, substitutions, or deletions applied to one set of characters to produce the other set of characters.

Next, analysis engine <NUM> encodes <NUM> the per-character differences in the matrix into a vector of the fixed width. Encoding per-character differences between transcriptions into matrices and vectors of fixed width is described in further detail below with respect to <FIG>.

Analysis engine <NUM> then outputs <NUM> the vector as a representation of a pairwise error rate between the transcriptions. For example, analysis engine <NUM> may store the vector as a feature associated with the pair of transcriptions. Analysis engine <NUM> may also, or instead, provide the vector as a feature that is inputted into a machine learning model that outputs a score representing the accuracy of one of the transcriptions, as discussed above.

<FIG> is a flow diagram of method steps for encoding per-character differences between two transcriptions of a recording, according to various embodiments of the present invention. Although the method steps are described in conjunction with the systems of <FIG>, persons skilled in the art will understand that any system configured to perform the method steps, in any order, is within the scope of the present invention.

As shown, analysis engine <NUM> wraps <NUM> a first set of characters around a matrix with a fixed width. For example, analysis engine <NUM> may sequentially assign each character in the first set of characters to a corresponding element in the matrix. When all elements in a row of the matrix have been assigned to characters, additional characters in the first set of characters may be assigned to elements in a subsequent row of the matrix.

Next, analysis engine <NUM> stores <NUM> a representation of each per-character difference between the first set of characters and a second set of characters in a corresponding element in the matrix. For example, the first and second sets of characters may include two different transcriptions of the same recording. The number of additions, substitutions, or deletions applied to a given character's position in the first set to convert the first set of characters into the second set of characters may be stored in the corresponding element of the matrix.

For each column of the matrix, analysis engine <NUM> combines <NUM> prime numbers representing rows of the matrix with the stored per-character differences along the rows in the column into an aggregate representation of the stored per-character differences. For example, analysis engine <NUM> may denote the position of each row in the matrix by a corresponding prime number in the sequence of prime numbers. When an element of the column contains a numeric value representing the number of per-character differences of a certain type (e.g., additions, substitutions, or deletions) between the two sets of characters, analysis engine <NUM> may raise the prime number associated with the elements' row by the numeric value. Analysis engine <NUM> may then multiply all exponentiated prime numbers associated with the column to generate a single number that encodes all per-character differences stored in the column as a product of prime numbers, which represent the positions and numbers of per-character differences in the column.

Finally, analysis engine <NUM> stores <NUM> the aggregate representation in an element of a vector with the same fixed width at the position of the column. For example, analysis engine <NUM> may create the vector to have the same number of elements as the number of columns in the matrix. Analysis engine <NUM> may then store the numeric encoding of per-character differences along each column in the matrix in the corresponding element of the vector (i.e., the vector element that matches the column's position in the matrix).

In sum, the disclosed techniques can be used to assess and/or characterize the accuracy of a "best transcription" that is produced by an ensemble model from multiple ASR transcriptions of a recording. Features associated with the best transcription, ASR transcriptions, and/or recording may be inputted into a machine learning model that estimates the accuracy of the best transcription compared with a ground truth transcription that is produced by a human from the same recording. Differences between pairs of variable-length transcriptions may additionally be encoded into fixed-width vector representations to enable inclusion of the differences in a fixed set of features inputted into the machine learning model. When the machine learning model outputs an estimated accuracy that falls between a threshold for high accuracy and another threshold for low accuracy, the best transcription may be categorized as a candidate for human transcription to improve the performance of the machine learning model and/or ensemble model.

By identifying recordings as candidates for human transcription based on predicted accuracies of an ensemble model that generates "best transcriptions" of the recordings, the disclosed embodiments may streamline the generation of additional training data that is likely to improve the performance of the ensemble model. In turn, the increased accuracy of the ensemble model may reduce reliance on human transcriptions of the recordings and/or improve the usefulness of the best transcriptions to users. Consequently, the disclosed techniques provide technological improvements in the accuracy and/or performance of ASR engines, ensemble models, interactive virtual meeting assistants, and/or other applications or devices that are used to manage, review, and/or analyze recordings or transcriptions of meetings or other types of events.

Aspects of the present embodiments may be embodied as a system, method or computer program product. Accordingly, aspects of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "module" or "system. " In addition, any hardware and/or software technique, process, function, component, engine, module, or system described in the present disclosure may be implemented as a circuit or set of circuits. Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

Claim 1:
A method for analyzing transcriptions of a recording, comprising:
storing per-character differences (<NUM>) between a first set of characters from a first transcription (<NUM>) of the recording and a second set of characters from a second transcription (<NUM>) of the recording in a matrix (<NUM>) with a fixed width (<NUM>), the first and second transcriptions generated by a number of automatic speech recognition engines, wherein storing the per-character differences between the first set of characters and the second set of characters in the matrix comprises:
wrapping the first set of characters around the matrix by sequentially assigning each character in the first set of characters to a corresponding element (<NUM>, <NUM>) in the matrix, such that, when characters have been assigned to all elements in a row of the matrix, additional characters in the first set of characters are assigned to elements in a subsequent row of the matrix; and
storing a representation of each per-character difference between the first set of characters and the second set of characters in a corresponding position in the matrix;
encoding the per-character differences in the matrix into a vector (<NUM>) of the fixed width, the encoding comprising aggregating the per-character differences along columns of the matrix into the vector of the fixed width;
outputting the vector as a representation of a pairwise error rate between the first transcription and the second transcription; and
applying a machine learning model (<NUM>) to features comprising the vector to produce a score (<NUM>) representing an accuracy of the first transcription.