This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432P401R: Speech Detection Accuracy issue: MSP432 Speech Recognition

Part Number: MSP432P401R

Hi,

I am using MSP432 Speech Recognition Example Program run on MSP432P401R with ADMP401 Mic for audio input [I am not using any LCD, Touch LCD or AUDIO Booster board]. Instead I am using Buttons to navigate the menu flow, and as a substitute for LCD I am using UART serial Terminal.

The below have been performed by me, including voice input.

1. I have enrolled 4 words.

2. I have updated each word 10 times [presuming this will improve accuracy]. 

3. I have now enabled Recogniser.

The recogniser will print out the word detected on UART terminal every time detection is successful.

Ex: If Word1 is detected. It'll print "Detection Successful: Word1" on UART.

My concern here is its not accurate at all.

Cases:

1. When the word is spoken it detects the right word. But sometimes it also detects the opposite word too if spoken.

Ex: If I have "undo" as one of the words, and if I say "do" (in which case it should not be detected), It detects that too sometimes.

Any solution to this?

2. When I move the board on a desk in a pattern it detects one of the words which matches that pattern of movement.

Why should it be detecting vibration which is noise and not actual voice data?

3. The Mic I am using does not work from a distance greater than 10cm. So I have to speak close through the mic for it to detect.

Does this has an effect on 1 and 2 ?

How can I improve the overall performance?

  • Dear Abhinandan,
    I have reached out to the author for comment.

    Regards,
    Chris
  • Hi Abhinandan,

    In our tests the recognizer using the Launchpad and booster packs, performance was typically about 92% accurate, with low false alarm rate (1% or less) in non-noisy conditions. Several factors may be contributing to reduced performance.

    The first thing to do is to ensure that the sampled audio signal of the MSP432 A/D is high quality with reasonable amplitudes. Many problems with speech recognizers are due to problems with obtaining audio input. The sampled signal should not be saturating when speaking close to the microphone, and in that condition the signal peaks should be say about 1-2 bits below full range A/D output. Ensure that the sampled audio signal is not distorted and that digital signal interference is kept from the audio input. (For example, I found that things like driving Launchpad LEDs with PWM signals generated by a timer can cause noise on the audio signal) Since the speech recognizer samples the audio at 8kHz, there should be a 4kHz low-pass anti-aliasing filter prior to the A/D. Make sure the microphone provides the characteristics that the application requires such as coverage pattern and sensitivity. I am suspecting that since the mic you are using only works closer than 10cm the input audio signal level may be quite low, resulting in a low SNR signal. This will impact all recognizer performance.

    When enrolling, the recognizer will be more successful with phrases that are rich in syllable context. The latest version of the recognizer contains an enrollment phrase quality measure that can indicate whether a phrase is likely to perform well. The word "undo" is fairly short and returns a quality measure of about 6 (quality of 8-10 will give better performance). At times it is possible that a combination of background sounds along with "do" may trigger recognizing "undo". However, I tried enrolling "undo" on my Launchpad/audio booster pack hardware and it is working fairly well in an office environment over a range of approximately 10 to 100cm from the microphone.

    On occasion I have also noticed that extraneous sounds like moving my Launchpad mounted on extenders over my desk in a random manner will trigger recognition of an enrolled phrase. It is not too common though. In almost all cases the resulting recognition has a very low confidence score and so that can be used to reject the recognition result. Experiment with using a confidence measure threshold to validate a recognition result.

    Regards,
  • Hi Lorin,

    Thanks for the details.
    Based on your suggestions I have used enrollment quality based recording wherein I have set 8+ as threshold.
    Also during recognition I observed that confidence scores were above 100. For example I got 500, 600 and sometimes even 1000.

    Is this normal or should the confidence scores be within 100?
    Is it necessary to check quality for update model as well?
    I figured there are some run-time parameters which can be tweaked . In your testings did you tweak these?

    As with Mic I am using, its features like sensitivity , SNR ,etc are similar (few cases same) to BOOST-XL board. The difference is with the filter, PowerAmp, etc on BOOST-XL. As of now I don't have access to BOOST-XL.
    Further, I will post an update after analysis with my existing setup.
  • Hi Abhinandan,

    When a phrase is recognized, the confidence score indicates how close the model matches the incoming audio. Larger is better. At this time we have not adjusted algorithms to normalize the scores. We are working on the algorithms to provide a normalized scores so they can be more meaningful. The confidence score is a statistical result, and so it has a distribution and can sometimes take on quite large or small values. typically outliers are in the range of +1000 (very good match) to -2000 (very poor match). Nominal confidence scores for a phrase are in the range of 200-500.

    The speech recognizer does not provide a way to check the quality during update of a model. The algorithm to update the model will normally reject the update if the speech used for update does not match the enrolled model well.

    During my testing of "undo" I used the demo code exactly as provided with no changes.

    When I look at the spec for the ADMP401 mic I see that it has a sensitivity of -47 dBV at 94dB SPL. Am I correct that the mic is outputting a signal in the range of about -47dBV (= 4 millivolts) or lower? If so, how do you quantize the signal to ensure that it is covering the full range of the A/D? If the microphone does output such a low voltage, there should be a careful design to ensure that the signal is properly amplified to boost the signal as cleanly as possible prior to quantization. I am concerned that a low voltage signal can be contaminated by interfering signals.

    We are considering in the next release of the speech recognizer software including a utility application to capture the output of the A/D, making it easier to evaluate the quality of the digitized input audio signal.

    Regards,
  • Hi Lorin,

    Thanks for the inputs. I have ordered the AUDIO-XL booster pack. Very soon I'll be able to test it.
    With existing setup the MIC is giving an output of 2V approx. (measured using multimeter). I tested the speech recogniser again and this time the result has improved. Once I get the AUDIO-XL ill be able to do a full fledged testing.

  • Hi Lorin,

    I have tested using AUDIO-XL booster pack. The result is very good. Able to get accuracy of 90% and more. Also false detections are almost none.
  • Hi Abhinandan,

    I am glad to hear that the booster pack is giving you the performance it should.

    This suggests that the original mic hardware setup you were using may have had some audio signal quality issues. Now you have a system that you can use to evaluate use of other microphone hardware.

    Regards,

     

**Attention** This is a public forum