The present invention relates generally to quantization and compression of linear transforms and, more particularly, to compressing a feature space transform discriminatively trained using a minimum phone error objective function.
Automatic speech recognition (ASR) systems have found widespread usage in a host of different and varied applications. Some example applications include, but are not limited to, telephony, data entry, transcription, and machine control. Some ASR systems are implemented in other systems (and generally referred to as embedded devices) such as appliances and vehicles.
It is known, however, that an ASR system performs more accurately when it is trained on data associated with, or representative of, the application in which it will operate. Various techniques have been proposed to improve the ASR training process, and thus the real-time (test) usage of the ASR system. One technique is generally referred to as feature space transformation where the feature space that is generated by extraction of cepstral features from the input speech signal is transformed in some manner in order to improve the overall operation of the ASR system. One such feature space transformation technique is known as fMPE (described in further detail below) which provides for discriminative training of the feature space for an ASR system using a minimum phone error (MPE) objective function. The result of the fMPE process is a transform parameter space that can be relatively large and, thus, may present a challenge for ASR systems implemented as embedded devices which may have limited processor and memory capacities.
Principles of the invention provide, for example, methods for compressing a transform associated with a feature space. While the principles of the invention illustratively described herein are particularly suitable to ASR systems and feature space transformation related thereto, the inventive compression techniques are not so limited and thus may be applied to various other linear transforms.
In accordance with a first aspect of the invention, a method for compressing a transform associated with a feature space comprises obtaining the transform comprising a plurality of transform parameters, assigning each of a plurality of quantization levels for the plurality of transform parameters to one of a plurality of quantization values, and assigning each of the plurality of transform parameters to one of the plurality of quantization values to which one of the plurality of quantization levels is assigned. One or more of obtaining the transform, assigning of each of the plurality of quantization levels, and assigning of each of the transform parameters are implemented as instruction code executed on a processor device.
In accordance with a second aspect of the invention, a system for compressing a transform associated with a feature space is provided. The system comprises modules for implementing the above method.
In accordance with a third aspect of the invention, apparatus for compressing a transform associated with a feature space is provided. The apparatus includes a memory and a processor coupled to the memory. The apparatus is configured to perform the above method.
In accordance with a fourth aspect of the invention, an article of manufacture for compressing a transform associated with a feature space is provided. The article of manufacture is tangibly embodying a computer readable program code which, when executed, causes the computer to carry out the above method.
In accordance with a fifth aspect of the invention, a method of automatic speech recognition comprises transforming training-speech data to a transform in a feature space. The transform comprises a plurality of transform parameters. The method further comprises assigning each of a plurality of quantization levels for the plurality of transform parameters to one of a plurality of quantization values, and assigning each of the plurality of transform parameters to one of the plurality of quantization values to which one of the plurality of quantization levels is assigned. One or more of obtaining the transform, assigning of each of the plurality of quantization levels, and assigning of each of the transform parameters are implemented as instruction code executed on a processor device. Further, a Viterbi algorithm may be employed for use in non-uniform level/value assignments.
Advantageously, principles of the invention provide, for example, a reduction by up to approximately 95% to 98% in the amount of memory required for automatic speech recognition, without substantially degrading accuracy of speech recognition.
These and other features, objects and advantages of the present invention will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings.
Principles of the present invention will be described herein in the context of illustrative methods for automated speech recognition. It is to be appreciated, however, that the principles of the present invention are not limited to the specific methods and devices illustratively shown and described herein. Rather, the principles of the invention are directed broadly to techniques for quantization of general linear transforms. For this reason, numerous modifications can be made to the embodiments shown that are within the scope of the present invention. That is, no limitations with respect to the specific embodiments described herein are intended or should be inferred.
As illustratively used herein, quantization in the context of signal processing is the process of mapping or approximating a very large set of values, or a continuous range of values, by a relatively small, set of symbols or values.
As illustratively used herein, a phone is an individual sound unit of speech without concern as to whether or not it is a phoneme of some language.
As illustratively used herein, a hidden Markov model (HMM) is a statistical model in which the system being modeled is assumed to be a Markov process with an unobserved state. An HMM may be considered, for example, as the simplest dynamic Bayesian network. In a regular Markov model, the state is directly visible to the observer, and therefore the state transition probabilities are the only parameters. In a HMM, the state is not directly visible, but output dependent on the state is visible. Note that the adjective “hidden” refers to the state sequence through which the model passes, not to the parameters of the model; even if the model parameters are known exactly, the model is still hidden.
As illustratively used herein, the Viterbi algorithm is a dynamic programming algorithm for finding the most likely sequence of hidden states, called the Viterbi path, which results in a sequence of observed events, especially in the context of Markov information sources, and more generally, HMMs. The terms “Viterbi path” and “Viterbi algorithm” are also applied to related dynamic programming algorithms that discover the single most likely explanation for an observation. For example, in statistical parsing, a dynamic programming algorithm can be used to discover the single most likely context-free derivation (parse) of a string, which is sometimes called the “Viterbi parse.”
For ease of reference, the remainder of the detailed description is divided into the following sections. In section I (Discriminative Training of Feature Space), the fMPE is generally explained including processing and memory issues, and illustrative principles of the invention for overcoming these and other issues are outlined. In section II (fMPE Parameters and Processing Pipeline), fMPE is described in more detail. In section III (Quantization of Level 1 Transforms), an inventive quantization methodology for compressing the transform parameter space associated with the fMPE process is described. In section IV (Optimal Quantization Level and Bit Allocation with a Viterbi Search), a Viterbi search procedure is described for use with the quantization methodology of section III. In section V (Illustrative ASR System and Methodology), an illustrative ASR system and methodology that implements the illustrative principles of section III is described. In section VI (Illustrative Computing System), an illustrative computing system for use in implementing one or more systems and methodologies of the invention is described.
I. Discriminative Training of Feature Space
fMPE is a technique for discriminative training of feature space (DTFS) for automatic speech recognition systems (ASR) using a minimum phone error (MPE) objective function. fMPE is disclosed in Povey, D., et. al., “FMPE: Discriminatively Trained Features for Speech Recognition,” in ICASSP, 2005, the disclosure of which is incorporated herein by reference, and later enhanced as disclosed in Povey, D., “Improvements to fMPE for Discriminative Training of Features,” in Interspeech, 2005, the disclosure of which is incorporated herein by reference.
MPE is a technique, using a minimum phone error objective (MPE objective function) function, for discriminative training of hidden Markow model (HMM) parameters. fMPE is a method of discriminatively training features. fMPE applies the minimum phone error objective function to the features, transforming the data with a kernel-like method and training, for example, millions of parameters.
DTFS in an ASR system using an MPE objective function has been shown to yield accurate, consistent and stable results, for example, when used in conjunction with either discriminatively or maximum likelihood trained HMM parameters.
On an automotive speech recognition of Chinese language task, the above DTFS using fMPE have given remarkable improvements over prior techniques. For instance, in an embedded setup the sentence error rate for a maximum likelihood trained system is 10.13%, with model space discriminative training, the error rate is 8.32%, and with DTFS with fMPE, the error rate is 7.24%.
The price of the improvement associated with DTFS with fMPE in ASR is a parameter space (e.g., a transform parameter space) consisting of a very large number (e.g., millions) of parameters, and recognition accuracy that rapidly degrades when the number of parameters are reduced. This introduces a tradeoff in embedded ASR systems where optimal fMPE performance translates into unacceptable consumption of memory.
Thus, an undesirable tradeoff in embedded ASR systems is that the optimal fMPE performance corresponds to use of very large amounts of memory, for example, unacceptably large amounts of memory associated with the very large number of parameters.
Accordingly, principles of the invention provide, for example, techniques to maintain optimal, or near optimal, fMPE performance while reducing the required memory by as much as approximately 95% to 98%. This is achieved by a quantization methodology which minimizes the error between the true fMPE computation and the computation produced with quantized parameters. The transform parameters of the transform are quantized. Very little, if any, degradation in sentence error rate is caused by quantizing the transform parameters. Dimension dependent quantization tables may be used and the quantization values may be learned with a fixed assignment of transform parameters to quantization values.
Principles of the invention further provide, for example, methods to assign the transform parameters to quantization values, and methods of using a Viterbi algorithm to gradually reduce the amount of memory needed by optimally assigning variable number of bits to dimension dependent quantization tables.
Principles of the invention further provide, for example, methods to reduce fMPE associated memory size requirements, while maintaining recognition accuracy. The memory size reduction with maintained accuracy may be achieved by quantizing blocks of fMPE transform parameters using separate quantization tables, and learning the optimal quantization values for a given assignment of transform parameter to quantization values.
Principles of the invention may further provide a Viterbi procedure or algorithm that determines the number of quantization levels to use for each quantization table.
Principles of the invention may further provide for the learned mapping of transform parameters to quantization values.
Principles, methods and techniques of the invention may also be applied to quantization of general linear transforms.
II. fMPE Parameters and Processing Pipeline
The AVE process can be described by two fundamental stages. The first stage, level 1, relies on a set of Gaussians to convert an input d-dimensional feature vector xt to offset features:
where t denotes time, and i denotes offset dimension. γg is the posterior probability of g ε given xt. The set , of size G, is arrived at by clustering the Gaussians of the original acoustic model.
In general o(t,g,i) contains (d+1)G elements for each time t. For computational efficiency all γg below a threshold γcut are set to 0 resulting in a sparse o(t,g,i).
The offset features are operated on by a level 1 transform M1(g,i,j,k):
where M1 is parameterized by Gaussian g ε, offset dimension i ε{1, . . . , d+1}, an outer-context j ε{1, . . . , 2J+1} and final output dimension k ε{1 . . . d}.
The next stage of fMPE, level 2, takes as input b(t+τ,j,k) for τε{−Λ, . . . , Λ}. It computes its output as:
The output of level 2, δ(t,k), is added to xt(k) to compute the fMPE features.
By way of example only, G=128, d=40, J=2, and Λ=8. This results in M1 with 128*41*40*5=1049600 parameters. The posterior threshold γcut is typically 0.1, resulting in a small number of active Gaussians per xt. For each active Gaussian, level 1 requires 41*40*5=8200 floating point operations. At level 2, M2 contains 5*40*(2*8+1)=3400 parameters, and computation of δ(t,k) at level 2 requires 3400 floating point operations.
As seen above, the level 1 fMPE process dominates in the amount of CPU and memory used. For the example given here, 1.05 million M1 parameters use 4.2M of memory, about twice the memory used by our standard non-fMPE embedded acoustic model.
It is also realized that, in other configurations, fMPE transform size could be up to 50 times the acoustic model size, making it imperative to reduce memory footprint of this transform if it is to be used in resource constrained environments.
III. Quantization of Level 1 Transforms
In accordance with illustrative principles of the invention, to quantize level 1 transform M1, the strategy of quantizing blocks of parameters using separate quantization tables is used. Once the blocks are decided, a number of quantization levels to use for each block is chosen. The quantization values are then initialized and each parameter is assigned to a quantization value.
A. Initialization.
Global, linear (GlobalL), Per Gaussian, k-means (GaussK), and Per Dimension, k-means (DimK) parameter blocks and initialization strategies are considered.
Next, iteratively optimize quantization values and parameter to quantization value assignments as described herein below.
B. Optimization of Quantization Values
Let δQ(t,k) denote the feature perturbation obtained using the quantized level 1 transform M1Q. To learn M1Q, minimize
Using indicators Ip(g,i,j,k) and quantization table q={qp}, M1Q(g,i,j,k) can be written as:
To ensure that M1Q(g,i,j,k) is equal to one of the quantization values in q, impose the additional constraint that for each (g,i,j,k) only one of Ip(g,i,j,k) can be equal to 1. The quantized level 1 features, corresponding to EQ. 2 are:
and the quantized perturbation (EQ. 3):
Define the level 1 statistic as:
and define the level 2 statistic as:
The quantized perturbation (EQ. 7) becomes:
and the error (EQ. 4) is a quadratic in q:
where:
The minimum is achieved at:
If there is a separate quantization table q(k) per dimension, then
with:
E(k)=A(k)+qT(k)B(k)q(k)−2qT(k)c(k), EQ. 13
and minimum attained at:
{acute over (q)}(k)=B−1(k)c(k), EQ. 14
with:
É(k)=A(k)+{acute over (q)}T(k)B(k){acute over (q)}(k)−2{acute over (q)}T(k)c(k). EQ. 15
Note that the sufficient statistics, and consequently the optimum {acute over (q)}(k), are a function of Iq(g,i,j,k). Further reduction in error may be obtained by reassigning M1 entries to quantization levels (i.e., updating Iq(g,i,j,k)) and iterating. This is discussed in the consideration of optimization of partition indicators herein below.
C. Scale Invariance, Level 1 and 2 Scaling
From EQ. 2 and EQ. 3, note that δ(t,k) can be expressed in terms of the product M1(g,i,j,k)M2(j,k,l). δ(t,k) is therefore invariant to the following form of scaling:
The quantization levels do not satisfy the same scale invariance, and so {acute over (q)}(k) and the accuracy of the quantization will change with the scaling a(j,k).
With the a(j,k) scaling the level 2 statistic (EQ. 9) becomes:
where the summation across outer dimension j has been removed. The error to be minimized becomes:
Given that the analytic minimum with respect to q(k) is known, the per dimension error is:
where:
It may not be clear how to optimize (EQ. 19) analytically with respect to {a(j,k)}j; therefore, numerical optimization is used. The gradient of E(k) is given by:
It is noted that the quantization levels do not satisfy the same scale invariance, and so {acute over (q)}(k) and the accuracy of the quantization will change with the scaling a(j,k).
D. Optimizing the Partition Indicators Iq(g,i,j,k)
This section discusses optimizing the partition indicators Ip(g,i,j,k). It seems logical that having a large number of quantization levels in q, the Euclidean distance based assignment of parameters to quantization values would be sufficient. However, for smaller number of quantization levels this may be significantly suboptimal.
Combining EQ. 2 and EQ.3 gives:
Use
Defining:
the fMPE perturbation is given as:
Quantization of the level 1 transform results in:
δQ(t,k)=Σj
The quantization error for dimension k now becomes:
where:
is the [G(d+1)]×[G(d+1)] matrix containing the training time statistic for outer context pair j1,j2 and dimension k. Note that the statistics Vj
which is 66 gigibits (GB) when stored as floats.
Using EQ. 5, the vector
The quantization level selector matrix S(j,k) is a matrix of dimension G(d+1)×n where n is the number of levels in q(k). The row of S(j,k) corresponding to element M1Q(g,i,j,k) consists of partition indicators Ip(g,i,j,k). As discussed earlier, each row has a single 1 (one) indicating the selected quantization value, and all other entries are 0 (zero). The optimization will entail changing the positions of the indicators in the S(j,k) matrix. For row r, the quantization level re-assignment from level p to x is represented as:
S′(j,r,k)=S(j,k)−erepT+erexT, EQ. 28
where er is a vector of dimension G(d+1), containing a 1 (one) in dimension r; and ep,ex are vectors of dimension n, containing a 1 (one) in the pth and xth dimension respectively.
Changing quantization level assignment of outer context j and row r produces a resultant change in E(k) of EQ. 25. For convenience in what follows index k is droped as all computations are specific to a particular dimension. Substituting EQ. 28 and EQ. 27 into EQ. 25 gives:
Δ
Δ
and Δq(x)=(ex−ep)Tq.
Expanding EQ. 29 and collecting terms forms the quadratic expression:
ΔE=a(j,r)Δq(x)2+b(j,r)Δq(x)+c(j,r), EQ. 31
where a(j,r) and b(j,r) are:
and c(j, r) is a constant that is not relevant to optimization.
For a given dimension k with (r,j) entry update of the quantization level for matrix M1Q(j), the updated error is:
E′(k)=E(k)+ΔE(k), EQ. 32
where E(k) is the unchanged contribution. From EQ. 31 and definition Δq(x)=(exT−epT)·qn, minimization of ΔE(k) yields the updated quantization value {acute over (q)}x.
where the (r,j) entry is re-assigned to quantization level x if:
∥{acute over (q)}x−qx∥2<∥{acute over (q)}x−qi∥2, 1≦i≦n(k),i≠x EQ. 34
where n(k) denotes the number of available quantization levels for dimension k.
E. Training Procedure for Quantization Values and Partition Indicators
All optimizations are performed separately for each dimension. The following procedure may be used:
Partition indicator learning (step 4 above) could also be accomplished using the LS result. For the sake of simplicity this is not presented herein, as this requires generation of the statistic (EQ. 26) in the scaled space.
Multiple iterations through all (r,j) pairs is performed until the percentage of quantization level re-assignments become negligible. Note that once step 4 is complete, the quantization values as in step 2 may be refined; this is denoted by LM-L (qLearn+Mapping and learned values). Alternatively, quantization values and scale could be learned as in step 3; this is denoted by LM-LS (qLearn+Mapping and qLearn+Scale).
IV. Optimal Quantization Level and Bit Allocation with a Viterbi Search
Let 1≦n(k)≦L denote the number of levels in q(k). The independence of errors E(k) across dimensions allows a Viterbi procedure to be formulated that finds optimal allocation n(k). Optimal allocation with respect to the total number of levels
has previously been found. However, the total number of levels is related to the size in a nonlinear way; the size of M1Q in an optimal encoding is:
There will be additional processing overhead (e.g., processing by a processor device) to encode n(k) optimally when n(k) is not a power of 2 (two). The following Viterbi procedure takes storage and implementation into account:
By forcing the number of levels to be 2b, exactly b bits to encode the corresponding level can be used. One or more of the Viterbi procedures described herein are carried out after LMLS as discussed above in section III E.
V. Illustrative ASR System and Methodology
We now give an overall explanation of the functionality of the components of an illustrative ASR system employing such inventive compression in the form of quantization as described above.
As shown, the model learning portion 100A of ASR system 100 accepts training speech as input for the purpose of training the acoustic model, for example, an HMM, to be used in the speech recognition portion 100C for subsequent automatic speech recognition. The speech to be recognized by portion 100C is termed herein as test speech. Both training speech and test speech are, for example, dialog spoken into a microphone and converted by the microphone into an analog signal. The microphone may be considered as part of a pre-processor (PP) 101.
Portions 100A, B and C comprise at least one pre-processor 101. Pre-processors 101 receive the training speech and test speech and generate representative speech waveforms, i.e., a speech signal. The pre-processors 101 may include, for example, an audio-to-analog transducer (microphone) and an analog-to-digital converter which respectively transduce the speech into an electrical signal (e.g., an analog signal) and then convert the electrical signal into a digital signal representative of the speech uttered. Further, the pre-processors 101 may sample the speech signal and partition the signal into overlapping frames so that each frame is discretely processed by the remainder of the system. The output signal of the pre-processors 101 are the sampled speech waveforms or speech signal which is recorded and provided to feature extractors 102.
Portions 100A, B and C comprise at least one feature extractor 102 coupled to a pre-processor 101. Feature extractors 102 receive the speech signals from the pre-processors 101 and extracts or computes features of the speech. For example, extracted features of the training speech and test speech may represent the spectral-domain content of the speech (e.g., regions of strong energy at particular frequencies). By way of example only, these features may be computed every 10 milliseconds, with one 10-millisecond section called a frame. By way of example only, as is known in the art, the features may be cepstral features extracted at regular intervals from the signal, for example, about every 10 milliseconds. The cepstral features are in the form of feature or speech vectors (signals). Features are then passed to transform modules 1031, 1033 or 1034 as indicated by the flows in
The model learning portion 100A further comprises a transform module 1031 and the acoustic model estimator 104. The transform module 1031 performs fMPE transformation (as explained in detail above in section II) using, for example, the MPE objective function. Referring to the model learning portion 100A, as is known in the art, the features (e.g., the speech vectors) representing the training speech are transformed according to the fMPE transform process and used to train acoustic models such as, for example, Gaussian mixture models or HMMs, which may then be used by the system, in the speech recognition portion 100C, to decode test speech received during the course of, for example, a real-time application.
The quantization portion 100B further comprises a transform module 1031, a quantized transform module 1033 and a summing module 107. The transform module 1033 may also use, for example, the MPE objective function. The operation of 100B follows the process described in section III. That is, the quantization portion 100B minimizes an error by comparing or summing a function δ(t,k), resulting from application of both level 1 and level 2 transforms by transform module 1031, and a function δQ(t,k), resulting from application a level 1 transform with quantization and a level 2 transform. The error is described in section III B and expressed there as error function
As indicated by a feedback path from the output of the summing module 107 to the quantized transform module 1033, the error may be minimized by iteratively repeating the quantization associated with the level 1 transform and the subsequent level 2 transform by the quantized transform module 1033, and the calculation of the error function by the summing module 107. The feedback illustrates the iterative change in quantization values and subsequent assignment from floating point parameter values to one of the quantization levels. Thus, EQ. 4 is optimized, resulting in learning the quantization levels as expressed by EQ. 12, and resulting in the corresponding mapping to the learned quantization levels as expressed by EQ. 33 and EQ. 34. The quantization level learning and mapping may be thus iterated.
Note that, in one embodiment, because the transform modules 1031 and 1033 provide transforms using the minimum phone error objective function, the assignment of the quantization levels and/or the assigning of the transform parameters are, therefore, according to the minimum phone error function.
Once the error is minimized or reduced to an acceptable level, for example, a predetermined level, the learning procedure terminates with the final assignment of quantization levels to quantization values and assignment of parameters to quantization values as described above in section III. At this point, the quantization is considered learned or formed and is useful for application in the speech recognition portion 100C.
The speech recognition portion 100C comprises, in addition to a pre-processor 101 and a feature extractor 102, a transform module 1034 which includes the optimized fMPE transform as learned during the learning procedure employing quantization portion 100B. The speech recognition portion 100C further comprises an acoustic model scoring module 105, applying the acoustic model learned or formed during the training procedure by the model learning section 100A, and a search module 106 in order to recognize speech after being transformed by the quantized level 1 and the level 2 transform. The methods employed by the acoustic model scoring module 105 and the search module 106 are known in the art.
Step 210 transforms features of the training data into a high-dimensional space according to the fMPE method previously described. The transform produces a very high number of transform parameters. Thus, step 210 provides a transform of the training data. The transform comprises a plurality of transform parameters.
Step 220 groups the transform parameters into a number of groups. Grouping may be, for example, according to the GaussK or DimK methods previously described in section III A. Alternately, the transform parameters may not be subdivided but remain in a single group according to the GlobalL method previously described in section III A. In the GaussK method, the groups of transform parameters are determined according to correspondence of each of the transform parameters with one or more Gaussian indices of the transform. In the DimK method, the groups of transform parameters are determined according to correspondence of each of the transform parameters with one or more dimension indices of the transform.
Step 230 determines the number of quantization levels, that is, the number of quantization levels to use for each quantization table. The number of quantization levels is determined according to methods previously presented in section III. If there is more than one group of parameters, the number of quantization levels may be determined for each group of parameters, that is, the determining of the number of levels may comprise determining, for each group, an associated number of quantization levels. The number of levels may be determined, for example, according to reducing an error defined by an error function specific to a particular dimension of the transform, or according to a Viterbi algorithm. By way of example only, the amount of memory needed to perform automatic speech recognition is reduced by assigning a variable number of data-bits to transform-dimension dependent quantization tables according to the Viterbi algorithm
Each quantization level is assigned to a quantization value in step 240. The assignment of the quantization level to the quantization value is according to methods presented in section III. If the transform parameters have been subdivided into groups, the assigning of a quantization level comprises assigning, separately for each of the groups, each of the quantization levels for that group.
Each transform parameter is assigned, in step 250, to one of the quantization values to which a quantization level has been assigned. The assignment of the transform parameters is performed according to methods presented in section III. If the transform parameters have been subdivided into groups, transform parameter within any given group are assigned to one of the quantization values to which one of the quantization levels associated with that given group to have been assigned. In one embodiment, all of the transform parameters are assigned to quantization values of a common set of quantization levels comprising, for example, the determined number of quantization levels. The quantization methodology may minimizes an error between the true fMPE computation and the computation produced with quantized parameters, that is, quantization values may be determined, for example, to minimize or reduce an error defined by an error function specific to a particular dimension of the transform. The error function may, for example, comprise a computation including all or some of the transform parameters assigned to the quantization values.
Step 260 provides the optimized transform comprising the assigned quantization levels and the assigned transform parameters. For example, the optimized transform may be provided to transform module 1034 of
The method 200 may be performed, for example, by a speech transforming module configured to perform step 210, a parameter grouping module configured to perform step 220, a number-of-level determining module 230 configured to perform step 230, a level assignment module configured to perform step 240, a parameter assignment module configured to perform step 250 and a training module configured to perform step 260. Although
VI. Illustrative Computing System
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention 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 “circuit,” “module” or “system.” Furthermore, aspects of the present invention 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.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Referring again to
Accordingly, techniques of the invention, for example, as depicted in
One or more embodiments can make use of software running on a general purpose computer or workstation. With reference to
A data processing system suitable for storing and/or executing program code can include at least one processor 302 coupled directly or indirectly to memory elements 304 through a system bus 310. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboard 308, display 306, pointing device, and the like) can be coupled to the system either directly (such as via bus 310) or through intervening I/O controllers (omitted for clarity).
Network adapters such as network interface 314 may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
As used herein, including the claims, a “server” includes a physical data processing system (for example, system 312 as shown in
It will be appreciated and should be understood that the exemplary embodiments of the invention described above can be implemented in a number of different fashions. Given the teachings of the invention provided herein, one of ordinary skill in the related art will be able to contemplate other implementations of the invention. Indeed, although illustrative embodiments of the present invention have been described herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments, and that various other changes and modifications may be made by one skilled in the art without departing from the scope or spirit of the invention.
Number | Name | Date | Kind |
---|---|---|---|
5940795 | Matsumoto | Aug 1999 | A |
6009390 | Gupta et al. | Dec 1999 | A |
6256607 | Digalakis et al. | Jul 2001 | B1 |
6892193 | Bolle et al. | May 2005 | B2 |
20030139926 | Jia et al. | Jul 2003 | A1 |
Entry |
---|
D. Povey et al., “FMPE: Discriminatively Trained Features for Speech Recognition,” IEEE ICASSP, Mar. 2005, pp. 961-964, vol. 1. |
Daniel Povey, “Improvements to fMPE for Discriminative Training of Features,” Interspeech, Sep. 2005, pp. 2977-2980, Lisbon, Portugal. |
E. Marcheret et al., “Compacting Discriminative Feature Space Transforms for Embedded Devices,” Interspeech, Sep. 2009, 4 pages. |
R.A. Gopinath, “Maximum Likelihood Modeling with Gaussian Distributions for Classification,” IEEE ICASSP, May 1998, pp. 661-664. |
Search Report for PCT/US2010/039631 dated Sep. 1, 2010. |
Number | Date | Country | |
---|---|---|---|
20110144991 A1 | Jun 2011 | US |