SIGNAL SEPARATION APPARATUS, SIGNAL SEPARATION METHOD AND PROGRAM
20210398549 · 2021-12-23
Inventors
- Hiroshi SAWADA (Musashino-shi, Tokyo, JP)
- Rintaro IKESHITA (Musashino-shi, Tokyo, JP)
- Nobutaka ITO (Musashino-shi, Tokyo, JP)
- Tomohiro NAKATANI (Musashino-shi, Tokyo, JP)
Cpc classification
G10L21/0308
PHYSICS
G06N99/00
PHYSICS
International classification
G10L21/0308
PHYSICS
G06F17/16
PHYSICS
Abstract
The signal separation device includes: cross product calculation means receiving an input of an observed signal that is a mixture of a plurality of target signals, and calculating a cross product of the observed signal; model calculation means updating a parameter of a model for estimating the cross product with a predetermined algorithm using an inverse matrix of a matrix that represents an estimate of the cross product; inverse matrix calculation means calculating the inverse matrix of a matrix by a SIMD command when the parameter is updated; and separation means calculating the target signals using a matrix representing an estimate of the cross product, the updated parameter, and the observed signal.
Claims
1. A signal separation device comprising: one or more memories; and one or more processors coupled to the one or more memories and configured to function as: a cross product calculation unit configured to receive an input of an observed signal that is a mixture of a plurality of target signals, and to calculate calculating a cross product of the observed signal; a model calculation unit configured to update a parameter of a model for estimating the cross product with a predetermined algorithm using an inverse matrix of a matrix that represents an estimate of the cross product; an inverse matrix calculation unit configured to calculate the inverse matrix of a matrix by an SIMD command when the parameter is updated; and a separation unit configured to calculate the target signals using a matrix representing an estimate of the cross product, the updated parameter, and the observed signal.
2. The signal separation device according to claim 1, wherein the cross product calculation unit calculates the cross product for each discrete time t=1, . . . , T at which the observed signal is observed, the model calculation unit updates a parameter of a model for estimating a cross product for each of the discrete time t with the algorithm using inverse matrices of matrices that each represent an estimate of a cross product for each of the discrete time t, and the inverse matrix calculation unit calculates a tensor formed by the inverse matrices of matrices by the SIMD command using a tensor formed by matrices each representing an estimate of a cross product for each of the discrete time t when the parameter is updated.
3. The signal separation device according to claim 2, wherein the inverse matrix calculation unit recursively calculates determinants of matrices each representing an estimate of a cross product for each of the discrete time t by the SIMD command, and calculates a tensor formed by the inverse matrices of matrices using calculated determinants.
4. The signal separation device according to claim 3, wherein the inverse matrix calculation unit recursively calculates determinants of matrices each representing an estimate of a cross product for each of the discrete time t, by using the SIMD command, in accordance with a relationship between a determinant of a block matrix and a scalar, a vector, and a determinant of a matrix that form the block matrix.
5. The signal separation device according to claim 2, wherein the inverse matrix calculation unit recursively calculates inverse matrices of matrices each representing an estimate of a cross product for each of the discrete time t, by using the SIMD command, in accordance with a relationship between a determinant of a block matrix and a scalar, a vector, and a determinant of a matrix that form the block matrix.
6. The signal separation device according to claim 1, wherein the parameter includes a spatial covariance matrix that represents relative transfer from signal sources of the target signals to sensors that observe the observed signal, and the inverse matrix calculation unit further calculates an inverse matrices of the spatial covariance matrix by the SIMD command when the parameter is updated.
7. The signal separation device according to claim 1, wherein the algorithm is an EM algorithm or an MU algorithm.
8. A signal separation method executed by a computer, comprising: receiving an input of an observed signal that is a mixture of a plurality of target signals, and calculating a cross product of the observed signal; updating a parameter of a model for estimating the cross product with a predetermined algorithm using an inverse matrix of a matrix that represents an estimate of the cross product; calculating the inverse matrix of a matrix by a SIMD command when the parameter is updated; and calculating the target signals using a matrix representing an estimate of the cross product, the updated parameter, and the observed signal.
9. A non-transitory computer readable medium having a program embodied therein for causing a computer to perform the method of claim 8.
Description
BRIEF DESCRIPTION OF DRAWINGS
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
DESCRIPTION OF EMBODIMENT
[0035] Hereinafter, one embodiment of the present invention will be described. In the embodiment of the present invention, a signal separation device 10 that is able to reduce the time required for inverse matrix calculation of matrices in blind signal separation will be described. Signals in the embodiment of the present invention are not limited to particular types. Applicable signal types include, for example, acoustic signals (or speech signals), wireless signals, and the like.
[0036] <Overview of Inverse Matrix Calculation Method>
[0037] The signal separation device 10 in the embodiment of the present invention utilizes SIMD (Single Instruction Multiple Data) commands to speed up the inverse matrix calculation, i.e., to reduce the time required for calculation of inverse matrices of matrices. In the embodiment of the present invention, two methods of inverse matrix calculation, “Inverse Matrix Calculation Method 1” and “Inverse Matrix Calculation Method 2” will be described. Here, in the embodiment of the present invention, rather than using built-in functions or the like of a standard calculator or those already provided in a programing language or environment to calculate inverse matrices of matrices, calculation steps are designed in accordance with the inverse matrix calculation methods.
[0038] (Inverse Matrix Calculation Method 1)
[0039] First, Inverse Matrix Calculation Method 1 will be explained. The inverse Q.sup.−1 of an M×M matrix Q can be calculated using a determinant detQ and an adjugate adj(Q) as shown in the equation (9) below. The adjugate is sometimes called the “adjoint”, whose definition may sometimes differ. Here it is expressed as the “adjugate”.
[0040] The determinant detQ in this instance can be calculated by the “Determinant Calculation Method 1” or the “Determinant Calculation Method 2” below.
[0041] Determinant Calculation Method 1
[0042] The determinant detQ can be recursively calculated by the following.
[0043] Here, [Q].sub.mk represents the elements (m, k) of the matrix Q.
Q(
is determined as the (M−1)×(M−1) matrix obtained by deleting the m-th row and k-th column of the matrix Q. The determinant of a 1×1 matrix (i.e., scalar) is the value itself of its unique element.
[0044] The adjugate adj(Q) is the transpose of the cofactor matrix C:
adj(Q)=C.sup.T [Formula 18]
where the cofactor matrix C of the matrix Q is an M×M matrix having the following elements (m, k).
[C].sub.mk=(−1).sup.m+kdet Q(
[0045] Determinant Calculation Method 2
[0046] Where q is a real number scalar,
q [Formula 20]
is a complex vector of dimension M−1, and
Q [Formula 21]
is an (M−1)×(M−1) Hermitian matrix, the determinant on the left side of the following equation (10) formed by these can be calculated by the right side of the equation (10) below by a theorem of block matrix determinants:
[0047] Here,
S=Q−q.sup.−1qq.sup.H [Formula 23]
[0048] (Inverse Matrix Calculation Method 2)
[0049] Next, Inverse Matrix Calculation Method 2 will be explained. The definitions of the symbols are similar to those of the “Determinant Calculation Method 2” of the “Inverse Matrix Calculation Method 1”. The determinant here can be calculated by the following equation (11) in accordance with the theorem of block matrix determinants:
[0050] In the embodiment of the present invention, to utilize SIMD commands for the calculation of inverse matrices of matrices, a data structure with a collection of multiple matrices are used. For example, for calculating the inverse matrix of the matrix {circumflex over ( )}X.sub.t, a tensor of size M×M×T, containing T array elements of M×M matrices {circumflex over ( )}X.sub.t (i.e., {circumflex over ( )}X.sub.1, . . . , X.sub.T, where t=1, . . . , T),
=[{circumflex over (X)}.sub.1, . . . ,{circumflex over (X)}.sub.T] [Formula 25]
is formed. When calculating the inverse matrix of the matrix {circumflex over ( )}X.sub.t by the equation (2), or equation (5) and equation (6) given above, this tensor is used for more efficient calculation of inverse matrices of matrices using SIMD commands.
[0051] The inverse matrix of the matrix A.sub.n is calculated similarly to the matrix {circumflex over ( )}X.sub.t. In this case, similarly to the above, a tensor of size M×M×N, containing N array elements of M×M matrices A.sub.n (i.e., A.sub.1, . . . , A.sub.N, where n=1, . . . , N), is formed as a data structure for utilizing SIMD commands. When calculating the inverse matrix of the matrix A.sub.n by the equation (3) given above, this tensor is used for more efficient calculation of inverse matrices of matrices using SIMD commands.
[0052] The signal separation device 10 according to the embodiment of the present invention can thus speed up the calculation of inverse matrices of matrices, as a result of which the time required for the calculation of inverse matrices of matrices can be reduced.
[0053] <Overall Configuration>
[0054] First, the overall configuration of the signal separation device 10 in the embodiment of the present invention will be described with reference to
[0055] As illustrated in
[0056] The signal separation program 100 may be configured by one program, or by a plurality of programs (or a program module). The separated signals y.sub.1t, . . . , y.sub.Nt may be output to any destination. For example, the separated signals y.sub.1t, . . . , y.sub.Nt may be output to another program, or another device, or to an auxiliary memory device 18 or the like to be described later.
[0057] <Hardware Configuration>
[0058] Next, a hardware configuration of the signal separation device 10 in the embodiment of the present invention will be described with reference to
[0059] As illustrated in
[0060] The input device 11 is a keyboard, mouse, touchscreen and the like, for example, and used by a user for inputting various operations. The display device 12 is a display and the like, for example, and shows processing results of the signal separation device 10. The signal separation device 10 may not have at least one of the input device 11 and the display device 12.
[0061] The external I/F 13 is an interface with external devices. The external device includes a recording medium 13a and the like. The signal separation device 10 can read or write data from or to the recording medium 13a via the external I/F 13. The recording medium 13a may also store the signal separation program 100 or the like.
[0062] The recording medium 13a includes, for example, a flexible disc, CD (Compact Disc), DVD (Digital Versatile Disk), SD memory card (Secure Digital Memory Card), USB (Universal Serial Bus) memory card, and so on.
[0063] RAM 14 is a volatile semiconductor memory for temporarily retaining programs and data. ROM 15 is a non-volatile semiconductor memory that can retain programs and data even when switched off. In the ROM 15, for example, settings information of the OS (operating System), settings information of communication networks, and the like, are stored.
[0064] The processor 16 is a CPU (Central Processing Unit) or GPU (Graphics Processing Unit) and the like, i.e., an operation device that reads programs and data from the ROM 15 or the auxiliary memory device 18 and the like to the RAM 14 and executes the processing. The processor 16 in the embodiment of the present invention is capable of executing parallel processing by SIMD commands. The signal separation device 10 may include both of a CPU and a GPU as the processor 16, or may include either one of a CPU and a GPU.
[0065] The communication I/F 17 is an interface for connecting the signal separation device 10 to a communication network. The signal separation program 100 may be obtained (downloaded) from a predetermined server device or the like via the communication I/F 17.
[0066] The auxiliary memory device 18 is an HDD (Hard Disk Drive) or an SSD (Solid State Drive) and the like, for example, which is a non-volatile memory device that stores therein programs and data. The programs and data stored in the auxiliary memory device 18 include an OS, various application programs, signal separation program 100, and so on.
[0067] The signal separation device 10 in the embodiment of the present invention can realize various processing steps by having the hardware configuration illustrated in
[0068] <Functional Configuration>
[0069] Next, a functional configuration of the signal separation device 10 in the embodiment of the present invention will be described.
[0070] (Functional Configuration when Using EM Algorithm)
[0071] Below, a functional configuration when using an EM algorithm for estimation of parameters A.sub.n (n=1, . . . , N) and v.sub.nt (n=1, . . . , N, t=1, . . . , T) in the full-rank spatial covariance model expressed by the equation (1) given above will be explained with reference to
[0072] As illustrated in
[0073] The cross product calculation unit 101 receives an input of an observed signal x.sub.t and calculates a cross product X.sub.t. The model formula calculation unit 102 calculates the full-rank spatial covariance model expressed by the equation (1) given above by the EM algorithm. Namely, the model formula calculation unit 102 calculates {circumflex over ( )}X.sub.t and {circumflex over ( )}Y.sub.nt by estimating the parameters A.sub.n and v.sub.nt of the full-rank spatial covariance model expressed by the equation (1) given above by the EM algorithm.
[0074] The separated signal calculation unit 103 calculates the separated signal y.sub.nt by the equation (8) given above using {circumflex over ( )}Y.sub.nt, the inverse matrix of {circumflex over ( )}X.sub.t, and the observed signal x.sub.t.
[0075] The E-step unit 104 executes an E-step of the EM algorithm. That is, the E-step unit 104 calculates the equation (2) given above.
[0076] The M-step unit 105 executes an M-step of the EM algorithm. Namely, the M-step unit 105 updates the parameters A.sub.n and v.sub.nt by the equation (3) and equation (4) given above.
[0077] Here, the E-step unit 104 and M-step unit 105 include an inverse matrix calculation unit 110. The inverse matrix calculation unit 110 calculates the inverse matrix of a matrix using an SIMD command. That is, the inverse matrix calculation unit 110 included in the E-step unit 104 calculates the inverse matrix of the matrix {circumflex over ( )}X.sub.t when the equation (2) given above is calculated. Similarly, the inverse matrix calculation unit 110 included in the M-step unit 105 calculates the inverse matrix of the matrix A.sub.n when the parameter v.sub.nt is updated by the equation (3) given above.
[0078] (Functional Configuration when Using MU Algorithm)
[0079] Below, a functional configuration when using an MU algorithm for estimation of parameters A.sub.n (n=1, . . . , N) and v.sub.nt (n=1, . . . , N, t=1, . . . , T) in the full-rank spatial covariance model expressed by the equation (1) given above will be explained with reference to
[0080] As illustrated in
[0081] The cross product calculation unit 101 receives an input of an observed signal x.sub.t and calculates a cross product X.sub.t. The model formula calculation unit 102 calculates the full-rank spatial covariance model expressed by the equation (1) given above by the MU algorithm. Namely, the model formula calculation unit 102 calculates {circumflex over ( )}X.sub.t and {circumflex over ( )}Y.sub.nt by estimating the parameters A.sub.n and v.sub.nt of the full-rank spatial covariance model expressed by the equation (1) given above by the EM algorithm.
[0082] The separated signal calculation unit 103 calculates a separated signal y.sub.nt by the equation (8) given above using {circumflex over ( )}Y.sub.nt, the inverse matrix of {circumflex over ( )}X.sub.t, and observed signal x.sub.t.
[0083] The V-update unit 106 executes a V-update of the MU algorithm. Namely, the V-update unit 106 updates the parameter v.sub.nt by the equation (5) given above.
[0084] The A-update unit 107 executes an A-update of the MU algorithm. Namely, the A-update unit 107 updates the parameter A.sub.n by calculating the equation (7) given above after calculating the equation (6) given above.
[0085] Here, the V-update unit 106 and A-update unit 107 include an inverse matrix calculation unit 110. The inverse matrix calculation unit 110 calculates the inverse matrix of a matrix using an SIMD command. Namely, the inverse matrix calculation unit 110 included in the V-update unit 106 calculates the inverse matrix of the matrix {circumflex over ( )}X.sub.t when the parameter v.sub.nt is updated by the equation (5) given above. Similarly, the inverse matrix calculation unit 110 included in the A-update unit 107 calculates the inverse matrix of the matrix {circumflex over ( )}X.sub.t when the equation (6) given above is calculated.
[0086] <Details of Processing>
[0087] Below, the processing that allows efficient calculation of inverse matrices of matrices using SIMD commands in the case in which blind signal separation is realized by an EM algorithm or an MU algorithm will be described. The example to be described in the embodiment of the present invention is the case in which the inverse matrix of the matrix {circumflex over ( )}X.sub.t is calculated. The same applies to when calculating the inverse matrix of the matrix A.sub.n, in which case t, T, and {circumflex over ( )}X.sub.t should be read as n, N, and A.sub.n, respectively, in the following description.
[0088] (Inverse Matrix Calculation Processing by Inverse Matrix Calculation Method 1)
[0089] The processing for calculating inverse matrices of matrices by Inverse Matrix Calculation Method 1 will be described with reference to
[0090] In
=[{circumflex over (X)}.sub.1, . . . ,{circumflex over (X)}.sub.T] [Formula 26]
has been input. The processing result of the inverse matrix calculation is expressed as follows.
=[{circumflex over (X)}.sub.1.sup.−1, . . . ,{circumflex over (X)}.sub.T.sup.−1] [Formula 27]
[0091] Namely, the inverse matrix calculation processing outputs an M×M×T tensor including T array elements of inverse matrices of matrices {circumflex over ( )}X.sub.t as the result of processing.
[0092] Note, hereinbelow, the sum, product, and quotient (+, .Math., /) of tensors shall mean element-wise calculation of sum, product, and quotient of tensors. Where tensor sizes do not match, broadcasting is performed as required. For example, when operating an M×M×T tensor and a 1×1×T tensor (to produce a sum, product, or quotient), the 1×1×T tensor is broadcast to the M×M×T tensor before the operation is carried out. The operation of these tensors is executed in parallel for each element by the SIMD command. This allows for efficient calculation of inverse matrices of matrices (in particular, efficient calculation of determinants for calculating inverse matrices of matrices).
[0093] The inverse matrix calculation unit 110 repeats execution of step S102 from m=1 to m=M (step S101). The inverse matrix calculation unit 110 also repeats execution of step S103 from k=1 to k=M (step S102).
[0094] At step S103 the inverse matrix calculation unit 110 calculates the following:
(m,k,:)←(−1).sup.k+m.Math.S
(
Here,
(
is a tensor having T array elements of (M−1)×(M−1) matrices obtained by deleting the m-th row and k-th column of the matrices {circumflex over ( )}X.sub.t.
(m,k,:) [Formula 30]
is a slice of the 1×1×T tensor, and an array of T elements (m, k) of the matrix inverse {circumflex over ( )}X.sub.t.sup.−1.
[0095] Here, SIMDDET(.Math.) is a function or method for calculating a determinant by an SIMD command and represents the invoking and execution of the determinant calculation processing using the SIMD command illustrated in
[0096] Step S103 described above is executed from m=1 to m=M and from k=1 to k=M by repeating the step S101 described above and by repeating the step S102 described above.
[0097] After the repetition of the step S101 described above has ended, the inverse matrix calculation unit 110 calculates:
←
/S
) [Formula 31]
(step S104). The inverse matrix calculation unit 110 then outputs:
[Formula 32]
(step S105). As a result, an M×M×T tensor including T array elements of matrix inverses {circumflex over ( )}X.sub.t.sup.−1 is output as the result of the inverse matrix calculation processing.
[0098] (Determinant Calculation Processing Using SIMD Command (Determinant Calculation Method 1))
[0099] The processing for calculating determinants by Determinant Calculation Method 1 using SIMD commands for the processing invoked by SIMDDET(.Math.) at the step S103 and step S104 described above will be described with reference to
(m,k,:) [Formula 33]
is a slice of the 1×1×T size tensor, and an array of T elements (m, k) of the matrix {circumflex over ( )}X.sub.t.
[0100] First, the inverse matrix calculation unit 110 determines whether or not M′=1 (step S201). If M′ is not 1, the inverse matrix calculation unit 110 initializes each element of 1×1×T tensor d to 0 (step S202). Next, the inverse matrix calculation unit 110 repeats execution of step S204 from m=1 to m=M′ (step S203).
[0101] At step S204, the inverse matrix calculation unit 110 calculates:
d←d+(−1).sup.m+1(m,1,:).Math.S
(
(step S204). Namely, the inverse matrix calculation unit 110 updates d by recursively executing SIMDDET(.Math.) while diminishing the size (rows and columns) of the matrix {circumflex over ( )}X.sub.t that forms the tensor input to SIMDDET(.Math.) one by one.
[0102] When the repetition of the step S203 described above has ended, the inverse matrix calculation unit 110 outputs d (i.e., the result of the determinant calculation) (step S205).
[0103] If M′=1 at the step S201 described above, the inverse matrix calculation unit 110 outputs:
(1,1,:) [Formula 35]
(step S206).
[0104] The determinant calculation processing that uses the SIMD command illustrated in
d=(1,1,:).Math.
(2,2,:)−
(1,2,:).Math.
(2,1,:) [Formula 36]
[0105] (Determinant Calculation Processing Using SIMD Command (Determinant Calculation Method 2))
[0106] Next, the processing for calculating determinants by Determinant Calculation Method 2 using SIMD commands for the processing invoked by SIMDDET(.Math.) at the step S103 and step S104 described above will be described with reference to
(
is a slice of an (M−1)×1×T size tensor, and
(1,
is a slice of a 1×(M−1)×T size tensor.
[0107] First, the inverse matrix calculation unit 110 determines whether or not M′=1 (step S301). If M′ is not 1, the inverse matrix calculation unit 110 calculates:
←
(
(1,
(1,1,:) [Formula 39]
(step S302).
[0108] Next, the inverse matrix calculation unit 110 calculates:
d←(1,1,:).Math.S
) [Formula 40]
(step S303). Namely, the inverse matrix calculation unit 110 calculates d by recursively executing SIMDDET(.Math.) with:
[Formula 41]
obtained at the step S302 described above as the argument (i.e., by recursively executing the determinant calculation processing using the SIMD command illustrated in
[0109] The inverse matrix calculation unit 110 then outputs d (step S304). On the other hand, if M′=1 at the step S301 described above, the inverse matrix calculation unit 110 outputs:
(1,1,:) [Formula 42]
(step S305).
[0110] The determinant calculation processing that uses the SIMD command illustrated in
[0111] In the processing for calculating inverse matrices of matrices by Inverse Matrix Calculation Method 1, whether to adopt the determinant calculation processing using the SIMD command illustrated in
[0112] (Inverse Matrix Calculation Processing by Inverse Matrix Calculation Method 2)
[0113] Next, the processing for calculating inverse matrices of matrices by Inverse matrix calculation Method 2 will be described with reference to
[0114] In
[0115] Hereinbelow, similarly to the “Inverse Matrix Calculation Processing by Inverse Matrix Calculation Method 1”, the sum, product, and quotient (+, .Math., /) of tensors shall mean element-wise calculation of sum, product, and quotient of tensors. Where tensor sizes do not match, broadcasting is performed as required. The operation of these tensors is executed in parallel for each element by the SIMD command. This allows for efficient calculation of inverse matrices of matrices (in particular, efficient calculation of products and inner products of matrices and vectors for calculating inverse matrices of matrices).
[0116] First, the inverse matrix calculation unit 110 determines whether or not M=1 (step S401). If M is not 1, the inverse matrix calculation unit 110 calculates:
←
(
(
(1,
(1,1,:) [Formula 43]
(step S402).
[0117] Next, the inverse matrix calculation unit 110 calculates:
(
) [Formula 44]
(step S403). Namely, the inverse matrix calculation unit 110 recursively executes SIMDMATRIXINVERSE(.Math.) with:
[Formula 45]
obtained at the step S402 described above as the argument (i.e., recursively executes the inverse matrix calculation processing illustrated in
[0118] Next, the inverse matrix calculation unit 110 calculates:
(
(
(
(1,1,:) [Formula 46]
(step S404).
[0119] Here, SIMDMATRIXVECTORMULT(.Math.,.Math.) is a function or method for calculating a product of a matrix and a vector by an SIMD command and represents the invoking and execution of the processing for calculating the product of the matrix and vector illustrated in
[0120] Next, the inverse matrix calculation unit 110 calculates:
(1,
(
(step S405).
[0121] Next, the inverse matrix calculation unit 110 calculates:
(1,1,:)←(1−S
(
(
(1,1,:) [Formula 48]
(step S406).
[0122] Here, SIMDINNERPRODUCT(.Math.,.Math.) is a function or method for calculating an inner product by an SIMD command and represents the invoking and execution of the processing for calculating the inner product illustrated in
[0123] On the other hand, if M=1 at the step S401 described above, the inverse matrix calculation unit 110 calculates:
←1/
(1,1,:) [Formula 49]
(step S407).
[0124] Following step S406 or step S407, the inverse matrix calculation unit 110 then outputs:
[Formula 50]
(step S408). As a result, an M×M×T tensor including T array elements of inverse matrix {circumflex over ( )}X.sub.t.sup.−1 is output as the result of the inverse matrix calculation processing.
[0125] (Processing for Calculating Product of Matrix and Vector Using SIMD Command)
[0126] Next, the processing invoked by SIMDMATRIXVECTORMULT(.Math.,.Math.) in the step S404 described above in which products of matrices and vectors are calculated using SIMD commands will be described with reference to
A: Size M×M×T tensor
X: Size M×1×T tensor [Formula 51]
S,
) [Formula 52]
is invoked will be described.
[0127] First, the inverse matrix calculation unit 110 initializes each element of the M×1×T tensor to 0:
←0's of size M×1×T [Formula 53]
(step S501).
[0128] Next, the inverse matrix calculation unit 110 repeats execution of step S503 from m=1 to m=M (step S502).
[0129] At step S503, the inverse matrix calculation unit 110 calculates:
←
+
(:,m,:).Math.
(m,1,:) [Formula 54]
where
(:,m,:) [Formula 55]
[0130] is an M×1×T tensor, and
(m,1,:) [Formula 56]
is a 1×1×T tensor. Therefore,
(:,m,:).Math.
(m,1,:) [Formula 57]
is an M×1×T tensor.
[0131] The inverse matrix calculation unit 110 then outputs:
[Formula 58]
(step S504).
[0132] (Processing for Calculating Inner Product Using SIMD Command)
[0133] Next, the processing invoked by SIMDINNERPRODUCT(.Math.,.Math.) in the step S406 described above in which inner products of matrices and vectors are calculated using SIMD commands will be described with reference to
X: Size M×1×T tensor
Y: Size M×1×T tensor [Formula 59]
S,
) [Formula 60]
is invoked will be described.
[0134] First, the inverse matrix calculation unit 110 initializes each element of 1×1×T tensor d to 0 (step S601).
[0135] Next, the inverse matrix calculation unit 110 repeats execution of step S603 from m=1 to m=M (step S602).
[0136] At step S603, the inverse matrix calculation unit 110 calculates:
d←d+(1,m,:).Math.
(m,1,:) [Formula 61]
[0137] The inverse matrix calculation unit 110 then outputs d (step S604).
Effects of the Embodiment of the Present Invention
[0138] Lastly, to demonstrate the effects of the embodiment of the present invention, an experiment was performed in which sounds mixed in space (speech signals) were separated. The source signals were four voices, and observed signals were mixed sounds of all the voices speaking for six seconds, which were acquired using two to five microphones as sensors.
[0139] Table 1 below shows the execution time (seconds) required for the repetition of the EM algorithm, where “CPU (prior art)” represents a case where inverse matrices of matrices were calculated by an existing method without using SIMD commands, “CPU (SIMD1)” represents a case where inverse matrices of matrices were calculated by Inverse Matrix Calculation Method 1 using SIMD commands of the CPU, “CPU (SIMD2)” represents a case where inverse matrices of matrices were calculated by Inverse Matrix Calculation Method 2 using SIMD commands of the CPU, “GPU (SIMD1)” represents a case where inverse matrices of matrices were calculated by Inverse Matrix Calculation Method 1 using not only the CPU but also a GPU, and “GPU (SIMD2)” represents a case where inverse matrices of matrices were calculated by Inverse Matrix Calculation Method 2 using not only the CPU but also the GPU. Both the CPU and the GPU used here are the same ones.
TABLE-US-00001 TABLE 1 CPU GPU CPU GPU CPU (Prior (SIMD1) (SIMD1) (SIMD2) (SIMD2) Art) 20 times 3.2 19.0 4.2 18.3 33.9 repetition 100 times 7.5 93.0 7.2 88.9 165.4 repetition
[0140] As indicated in Table 1, the CPU (prior art) took 33.9 seconds and 165.4 seconds for twenty times repetition and a hundred times repetition, respectively, whereas CPU (SIMD1) took 19.5 seconds and 93.0 seconds for twenty times repetition and a hundred times repetition, respectively, and CPU (SIMD2) took 18.3 seconds and 88.9 seconds for twenty times repetition and a hundred times repetition, respectively, i.e., the execution time was reduced. Also, the GPU (SIMD1) took 3.2 seconds and 7.5 seconds for twenty times repetition and a hundred times repetition, respectively, and GPU (SIMD2) took 4.2 seconds and 7.2 seconds for twenty times repetition and a hundred times repetition, respectively, i.e., the execution time was reduced even more.
[0141] The measured SDR (Signal-to-Distortion Ratio) that indicates the speech separation performance was 8.03 dB and 10.36 dB for twenty times repetition and a hundred times repetition, respectively, for all of the CPU (prior art), CPU (SIMD1), and GPU (SIMD1).
[0142] The following Table 2 shows the execution time when the number M of sensors was varied from 2 to 5.
TABLE-US-00002 TABLE 2 CPU GPU CPU GPU CPU (Prior (SIMD1) (SIMD1) (SIMD2) (SIMD2) Art) M = 2 5.2 34.4 4.2 33.8 99.7 M = 3 7.5 93.0 7.2 88.9 165.4 M = 4 12.6 209.9 11.2 179.2 262.9 M = 5 20.7 434.7 17.0 316.9 410.9
[0143] With Inverse Matrix Calculation Method 1, in particular in the case with the CPU (i.e., CPU (SIMD1)), the execution time was increased. When M=5, CPU (SIMD1) took more execution time than CPU (prior art). On the other hand, with Inverse Matrix Calculation Method 2, the execution time increased with the increase in M to a lesser extent. With the use of the GPU, the operation speed was largely increased in both cases with Inverse Matrix Calculation Method 1 and Method 2.
[0144] As demonstrated above, according to the embodiment of the present invention, the execution time can be largely reduced as compared to the existing technique, which leads to improvement of the actual separation performance.
[0145] The present invention is not limited to the specific disclosure of the embodiment described above and can be modified and changed in various ways without departing from the described scope of the claims.
[0146] This application claims the benefit of Japanese Patent Application No. 2018-212408 filed on Nov. 12, 2018 in Japan, which is incorporated by reference herein in its entirety.
REFERENCE SIGNS LIST
[0147] 10 Signal separation device [0148] 100 Signal separation program [0149] 101 Cross product calculation unit [0150] 102 Model formula calculation unit [0151] 103 Separated signal calculation unit [0152] 104 E-step unit [0153] 105 M-step unit [0154] 106 V-update unit [0155] 107 A-update unit [0156] 110 Inverse matrix calculation unit