views:

293

answers:

2

I use to create an application that uses the windows speech recognition engine or the SAPI. its like a game for pronunciation that it give you score when you pronounce it correctly. but when i started experiments with SAPI, it has poor recognition unless if you load a grammar on it (XML) its give best recognition result.

but the problem now is closest pronunciation from the input text will be recognize. for example:

Database -> dedebase -> correct.

even if you mispronounce it. it gives you correct answers.

without using the xml grammar

when you say database it give you "in the base/the base/data base/etc..."

please post your answer,suggestion,clarification. votes for best answer.

is it possible or not?

by the way i use delphi compiler on the projects....

+1  A: 

For what you want, it is probably best not to use a grammar. But it requires that the users do the "minimal" basic training of the speech recognition engine. It's not very long and relatively pleasant. And it really makes a difference on the recognition accuracy (believe me, I have a strong French accent in my English).
It can even be included as a preliminary practice for the game itself.
You may find interesting to see this CodeRage 4 session on "Speech Enabling Delphi Applications (zip)"

François
Thank You! François. the links are useful in my project....
XBasic3000
+1  A: 

I'd do two things:

  1. Convert the original text to phonemes by using ISpEnginePronunciation::GetPronunciations.
  2. Use a dictation grammar and the pronunciation language model to force SAPI to give you back a set of phonemes - do this by calling ISpRecoGrammar::LoadDictation(L"Pronunciation", SPLO_STATIC).
  3. Compare the recognized phonemes to the target phonemes.

Note that ISpEnginePronunciation isn't available on SAPI 5.1, so this is limited to Vista and Windows 7.

Eric Brown
@Eric Brown, you have a point on that. i'll try to check.
XBasic3000