Especificar el idioma del reconocedor de voz

Obtén información sobre cómo seleccionar un idioma instalado para usarlo en el reconocimiento de voz.

API importantes: SupportedTopicLanguages, SupportedGrammarLanguages, Language

Aquí se enumeran los idiomas instalados en un sistema, se identifica cuál es el idioma predeterminado y se selecciona otro idioma de reconocimiento.

Requisitos previos:

Este tema se basa en el reconocimiento de voz.

Debes tener un conocimiento básico del reconocimiento de voz y de las restricciones del reconocimiento.

Si no está familiarizado con el desarrollo de aplicaciones de Windows, consulte estos temas para familiarizarse con las tecnologías que se describen aquí.

Directrices para la experiencia del usuario:

Para obtener sugerencias útiles sobre el diseño de una aplicación habilitada para voz que sea útil y atractiva, consulta Directrices para el diseño de voz.

Identificar el idioma predeterminado

Un reconocedor de voz usa el idioma de voz del sistema como idioma de reconocimiento predeterminado. El usuario establece este idioma en la pantalla del dispositivo Configuración > Sistema > Voz > Idioma de voz.

Identificamos el idioma predeterminado comprobando la propiedad estática SystemSpeechLanguage.

var language = SpeechRecognizer.SystemSpeechLanguage; 

Confirmar un idioma instalado

Los idiomas instalados pueden variar entre dispositivos. Debes comprobar la existencia de un idioma si dependes de él para una restricción concreta.

Nota Se requiere un reinicio después de instalar un nuevo paquete de idioma. Se genera una excepción con el código de error SPERR_NOT_FOUND (0x8004503a) si el idioma especificado no se admite o no ha terminado de instalarse.

 

Determina los idiomas admitidos en un dispositivo al comprobar una de las dos propiedades estáticas de la clase SpeechRecognizer:

  • SupportedTopicLanguages: es la colección de objetos Language que se usa con gramáticas predefinidas de dictado y búsqueda en Internet.

  • SupportedGrammarLanguages: La colección de objetos Idioma que se usa con una restricción de lista o un archivo de Especificación de gramática de reconocimiento de voz (SRGS).

Especificar un idioma

Para especificar un idioma, pasa un objeto Idioma en el constructor SpeechRecognizer.

Aquí se especifica "en-US" como el idioma de reconocimiento.

var language = new Windows.Globalization.Language("en-US"); 
var recognizer = new SpeechRecognizer(language); 

Comentarios

Una restricción de tema puede configurarse mediante la adición de SpeechRecognitionTopicConstraint a la colección Restricciones de SpeechRecognizer y, luego, llamando a CompileConstraintsAsync. Un SpeechRecognitionResultStatus de TopicLanguageNotSupported se devuelve si el reconocedor no se inicializa con un idioma de tema admitido.

Una restricción de lista se configura mediante la adición de SpeechRecognitionListConstraint a la colección Restricciones de SpeechRecognizer y, luego, llamando a CompileConstraintsAsync. No se puede especificar el idioma de una lista personalizada directamente. En su lugar, la lista se procesará mediante el idioma del reconocedor.

Una gramática SRGS es un formato XML estándar abierto representado por la clase SpeechRecognitionGrammarFileConstraint. A diferencia de las listas personalizadas, puedes especificar el idioma de la gramática en el marcado SRGS. Se produce un error en CompileConstraintsAsync con un objeto SpeechRecognitionResultStatus de TopicLanguageNotSupported si no se inicializa el reconocedor en el mismo idioma que el marcado SRGS.

Muestras