What is the impact of the debug message: SAPI does not implement phonetic alphabet selection?

Last reviewed: 5/3/2013

FAQ Article ID: F051301

The information in this article applies to:

  • SpeechKit 7


The managed .NET SAPI library System.Speech.Recognition.DictationGrammar class throws debug message when the class object is instantiated and loaded by the recognizer.

More Information

Microsoft Support provides the following explanation of the impact of this message.

It will occur when the managed Speech library attempts to load the interface ISpPhoneticAlphabetSelection, and it ends up being null.

The following is the information on that interface:

  • Enables the client to control the character phoneset in which pronunciations are encoded by the GetPronunciations method.
  • Applications utilize this interface to use pronunciations in the Universal Phone Set rather than the SAPI phone set. This is necessary for languages that have SAPI phone sets. For other languages, this interface should have no effect.
  • By default, all pronunciations sent to and received from SAPI interfaces are in the SAPI phone set. COM components that support UPS should implement this interface to allow applications to detect such support and select the desired alphabet.
  • Use the IsAlphabetUPS method to discover the alphabet being used. Use the SetAlphabetToUPS method to change the alphabet.

Based on this it seems to be saying some languages will have both SAPI and UPS phone sets, and if they do this interface will not return null to allow it to change it. Since it returns null the lexicon for the language must not support SAPI phone sets, and therefore it is expected.

Based on the documentation for ISpPhoneticAlphabetConverter, legacy applications using SAPI phone sets can use this interface to convert existing pronunciations to the UPS phone set. These languages use a SAPI phone set:

  • English (en-US)
  • Chinese (zh-CN)
  • German (de-DE)
  • Spanish (es-SP)
  • French (fr-FR)
  • Japanese (ja-JP)

In addition, SAPI supports the UPS for those and all other languages. Thus, alphabet conversion only applies to the above languages.

Since UPS is now standard, newer language lexicons are only implementing that phone set, and therefore this message would always be displayed.

The message is informational only and is not an indication of a problem or misconfiguration.