IP Library Granted Patent US 9,753,890
Granted Patent B2
US 9,753,890 · App. 13/490,124 · Granted Sep 5, 2017

Acoustic processing unit interface for determining senone scores using a greater clock frequency than that corresponding to received audio

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,753,890
App. No.
13/490,124
Granted
Sep 5, 2017
Kind
B2
Abstract

Embodiments of the present invention include an apparatus, method, and system for acoustic modeling. In an embodiment, a speech recognition system is provided. The system includes a processing unit configured to divide a received audio signal into consecutive frames having respective frame vectors, an acoustic processing unit (APU), a data bus that couples the processing unit and the APU. The APU includes a local, non-volatile memory that stores a plurality of senones, a memory buffer coupled to the memory, the acoustic processing unit being configured to load at least one Gaussian probability distribution vector stored in the memory into the memory buffer, and a scoring unit configured to simultaneously compare a plurality of dimensions of a Gaussian probability distribution vector loaded into the memory buffer with respective dimensions of a frame vector received from the processing unit and to output a corresponding score to the processing unit. The APU is further configured to divide a clock frequency associated with the received audio signal to a frequency greater than the clock frequency associated with the received audio signal in order to help the score calculation operate faster than the clock frequency of the received audio signal.

Claims (92)

1. A speech recognition system, comprising:

a processing unit configured to divide a received audio signal into consecutive frames;

an acoustic processing unit (APU), comprising:

a local, non-volatile memory that stores a plurality of senones;

a memory buffer coupled to the memory, wherein the acoustic processing unit is configured to load at least one Gaussian probability distribution vector stored in the memory into the memory buffer; and

a scoring unit configured to simultaneously compare a plurality of dimensions of a Gaussian probability distribution vector loaded into the memory buffer with respective dimensions of a frame vector received from the processing unit and to output a distance score;

a senone scoring control unit to divide a clock frequency associated with the received audio signal and provide the divided clock frequency to the scoring unit, wherein the scoring unit operates at the divided clock frequency and the divided clock frequency is greater than the clock frequency associated with the received audio signal,

wherein the acoustic processing unit is configured to perform a comparison using a first frame to generate the distance score while the processing unit performs a search to find a senone score match using another distance score that corresponds to a second frame, the second frame immediately preceding the first frame; and

a data bus that couples the processing unit and the APU.

2. The speech recognition system of claim 1 , wherein the processing unit is configured to concurrently run a search thread and a distance computation thread.

3. The speech recognition system of claim 2 , wherein the processing unit comprises:

an application programming interface (API) module configured to receive a command from the distance computation thread and generate one or more corresponding commands to be received by the APU.

4. The speech recognition system of claim 3 , wherein the API module comprises:

a Generic DCA configured to receive a command from the distance computation thread and output one or more functions in a library that implements the received command.

5. The speech recognition system of claim 4 , the Generic DCA specifies at least:

(i) a Create function that stores an acoustic model, a number of dimensions in a feature vector, and a number of senones in the acoustic model as state information;

(ii) a Set Feature function that stores a feature vector corresponding to a received frameID;

(iii) a Compute Scores function that specifies at least one senone to be scored for a frame;

(iv) a Fill Scores function that stores senone scores in a buffer;

(v) a Set Feature Matrix function that stores a feature vector transform matrix and adapts the comparison to a specific speaker.

6. The speech recognition system of claim 5 , wherein the API module further comprises an APU library configured to receive parameters from the Generic DCA and output parameters compatible with the APU.

7. The speech recognition system of claim 6 , the APU library specifies at least:

(i) a Set Acoustic Model function that sets an acoustic model to be used for senone scoring;

(ii) a Load Feature Vector function that loads a feature vector in to the APU;

(iii) a Score Senone Chunk function that loads a senone list in to the APU;

(iv) a Score Range function that specifies that all senones in a range are to be scored;

(v) a Read Senone Scores function that reads senone scores and stores the senone scores in a destination buffer;

(vi) a Check Score Ready Status function that determines if senone scores are ready to be read from the APU;

(vii) a Read Score Length function that reads a first status register of the APU to determine a number of score entries that are available;

(viii) a Read Status function that reads a second status register of the APU to determine a status of a read operation;

(ix) a Read Configuration function that reads a configuration register of the APU; and

(x) a Write Configuration function that writes to the configuration register.

8. The speech recognition system of claim 6 , wherein the API module further comprises:

a hardware abstraction layer (HAL) configured to interface between the APU library and the APU.

9. An acoustic processing method, comprising:

dividing a received audio signal into a plurality of frames using a processing unit;

comparing a feature vector associated with a first frame of the plurality of frames to a Gaussian probability distribution vector using an acoustic processing unit (APU) to generate a distance score;

dividing a clock frequency associated with the received audio signal, using a senone scoring control unit, wherein the divided clock frequency is greater than the clock frequency associated with the received audio signal, wherein the APU uses the divided clock frequency to generate the distance score; and

concurrently with the comparing, performing a search to find a senone score match using another distance score that corresponds to a feature vector associated with a second frame of the plurality of frames received from an acoustic processing unit (APU) using the processing unit, wherein the second frame immediately precedes the first frame and wherein the processing unit and the APU are coupled over a data bus.

10. The acoustic processing method of claim 9 , wherein the distance computation thread controls the comparing via an application programming interface (API).

11. The acoustic processing method of claim 10 , wherein the API comprises:

a Generic DCA;

an APU library; and

a hardware abstraction layer (HAL).

12. The acoustic processing method of claim 11 , the Generic DCA specifies at least:

(i) a Create function that stores an acoustic model, a number of dimensions in a feature vector, and a number of senones in the acoustic model as state information;

(ii) a Set Feature function that stores a feature vector corresponding to a received frameID;

(iii) a Compute Scores function that specifies at least one senone to be scored for a frame;

(iv) a Fill Scores function that stores senone scores in a buffer; and

(v) a Set Feature Matrix function that stores a feature vector transform matrix and adapts the comparison to a specific speaker.

13. The acoustic processing method of claim 11 , the APU library specifies at least:

(i) a Set Acoustic Model function that sets an acoustic model to be used for senone scoring;

(ii) a Load Feature Vector function that loads a feature vector in to the APU;

(iii) a Score Senone Chunk function that loads a senone list in to the APU;

(iv) a Score Range function that specifies that all senones in a range are to be scored;

(v) a Read Senone Scores function that reads senone scores and stores the senone scores in a destination buffer;

(vi) a Check Score Ready Status function that determines if senone scores are ready to be read from the APU;

(vii) a Read Score Length function that reads a first status register of the APU to determine a number of score entries that are available;

(viii) a Read Status function that reads a second status register of the APU to determine a status of a read operation;

(ix) a Read Configuration function that reads a configuration register of the APU; and

(x) a Write Configuration function that writes to the configuration register.

14. The acoustic processing method of claim 9 , further comprising:

creating a search thread and a distance computation thread on the processing unit.

15. A non-transitory computer readable medium having stored therein one or more sequences of one or more instructions for execution by one or more processors to perform an acoustic processing method, the method comprising:

dividing a received audio signal into a plurality of frames using a processing unit;

outputting a feature vector associated with a first frame of the plurality of frames to an acoustic processing unit, wherein the acoustic processing unit is configured to compare the first frame to a Gaussian probability distribution vector to generate a distance score;

dividing a clock frequency associated with the received audio signal, using a senone scoring control unit, wherein the divided clock frequency is greater than the clock frequency associated with the received audio signal, wherein the APU uses the divided clock frequency to generate the distance score; and

concurrently with the comparison on the APU, performing a search to find a senone score match using another distance score that corresponds to a feature vector associated with a second frame of the plurality of frames received from an acoustic processing unit (APU) using the processing unit, wherein the second frame immediately precedes the first frame and wherein the processing unit and the APU are coupled over a data bus.

16. The non-transitory computer readable medium of claim 15 , the method further comprising:

creating a search thread and a distance computation thread on the processing unit.

17. The non-transitory computer readable medium of claim 16 , wherein the distance computation thread controls the comparing via an application programming interface (API).

18. The non-transitory computer readable medium of claim 17 , wherein the API comprises:

a DCA library;

an APU library; and

a hardware abstraction layer (HAL).

19. The non-transitory computer readable medium of claim 18 , wherein the DCA library specifies at least:

(i) a Create function that stores an acoustic model, a number of dimensions in a feature vector, and a number of senones in the acoustic model as state information;

(ii) a Set Feature function that stores a feature vector corresponding to a received frameID;

(iii) a Compute Scores function that specifies at least one senone to be scored for a frame;

(iv) a Fill Scores function that stores senone scores in a buffer; and

(v) a Set Feature Matrix function that stores a feature vector transform matrix and adapts the comparison to a specific speaker.

20. The non-transitory computer readable medium of claim 18 , wherein the APU library specifies at least:

(i) a Set Acoustic Model function that sets an acoustic model to be used for senone scoring;

(ii) a Load Feature Vector function that loads a feature vector in to the APU;

(iii) a Score Senone Chunk function that loads a senone list in to the APU;

(iv) a Score Range function that specifies that all senones in a range are to be scored;

(v) a Read Senone Scores function that reads senone scores and stores the senone scores in a destination buffer;

(vi) a Check Score Ready Status function that determines if senone scores are ready to be read from the APU;

(vii) a Read Score Length function that reads a first status register of the APU to determine a number of score entries that are available;

(viii) a Read Status function that reads a second status register of the APU to determine a status of a read operation;

(ix) a Read Configuration function that reads a configuration register of the APU; and

(x) a Write Configuration function that writes to the configuration register.

Assignments (7)
MERGER Recorded Nov 14, 2025
From: CYPRESS SEMICONDUCTOR CORPORATION
To: INFINEON TECHNOLOGIES AMERICAS CORP.
Reel/Frame 073571/0456 →
RELEASE OF SECURITY INTEREST Recorded Mar 16, 2022
From: MUFG UNION BANK, N.A.
To: CYPRESS SEMICONDUCTOR CORPORATION; SPANSION LLC
Reel/Frame 059410/0438 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 8647899 PREVIOUSLY RECORDED ON REEL 035240 FRAME 0429. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTERST. Recorded Nov 3, 2020
From: CYPRESS SEMICONDUCTOR CORPORATION; SPANSION LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 058002/0470 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN INTELLECTUAL PROPERTY Recorded Oct 28, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: MUFG UNION BANK, N.A.
Reel/Frame 050896/0366 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2015
From: SPANSION LLC
To: CYPRESS SEMICONDUCTOR CORPORATION
Reel/Frame 035860/0001 →
SECURITY INTEREST Recorded Mar 21, 2015
From: CYPRESS SEMICONDUCTOR CORPORATION; SPANSION LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 035240/0429 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2012
From: NATARAJAN, VENKATARAMAN; ROSNER, STEPHAN
To: SPANSION LLC
Reel/Frame 028790/0850 →