An Azure service that integrates speech processing into apps and services.
Tom D hello,
you are right, the pronunciation assessment is too strict and causes a 'no match' when the word is wrong, which defeats the purpose of catching homophones.
unfortunately, the azure speech sdk does not have a built in feature to return a list of homophones or phonetic similarities. the n best list is generated from the acoustic model's confidence, not from a phonetic dictionary.
instead of relying on the speech service for this, you could build a small phonetic matching module in your own application code.
after you get the primary recognition result, like 'quiche', you can use a phonetic algorithm to compare it to your expected word 'kies'. algorithms like soundex or metaphone are designed to group words that sound similar. you can calculate the phonetic code for both 'quiche' and 'kies'. if the codes are similar, you can then present a hint to the user like "did you mean 'kies'?".
another approach is to run two recognition passes. first, do a normal recognition without pronunciation assessment to get the raw text, even if it's 'quiche'. then, take that audio and run it through the pronunciation assessment with the reference text set to the correct word, 'kies'. this might give you a score showing how close the pronunciation was to the target, even if the recognized word was wrong.
this kind of post processing is common in language learning applications where you need to handle learner errors gracefully.
the service won't give you homophones, but you can use a phonetic algorithm in your own code to compare the recognized word to the expected word and see if they sound similar.
regards,
Alex
and "yes" if you would follow me at Q&A - personaly thx.
P.S. If my answer help to you, please Accept my answer