Compartir a través de


Especificar el idioma del reconocedor de voz

Obtenga información sobre cómo seleccionar un idioma instalado que se usará para el reconocimiento de voz.

APIs importantes: IdiomasSoportadosPorTema, IdiomasSoportadosPorGramática, Idioma

Aquí enumeramos los idiomas instalados en un sistema, identificamos cuál es el idioma predeterminado y seleccionamos otro idioma para el reconocimiento.

Requisitos previos:

Este tema se basa en reconocimiento de voz.

Debe tener un conocimiento básico de reconocimiento de voz y de las restricciones de 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 de experiencia del usuario:

Para obtener sugerencias útiles sobre cómo diseñar una aplicación habilitada para voz útil y atractiva, consulte Directrices de diseño de voz .

Identificación del idioma predeterminado

Un reconocedor de voz usa el idioma de voz del sistema como su idioma de reconocimiento predeterminado. El usuario establece este idioma en la pantalla Configuración del dispositivo > System > Speech > Speech Language.

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

var language = SpeechRecognizer.SystemSpeechLanguage; 

Confirmación de un idioma instalado

Los idiomas instalados pueden variar entre dispositivos. Debe comprobar la existencia de un idioma si depende de él para una restricción determinada.

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

 

Determine los idiomas admitidos en un dispositivo comprobando una de las dos propiedades estáticas de la clase SpeechRecognizer :

  • SupportedTopicLanguages— la colección de objetos de idioma que se usan con gramáticas predefinidas de dictado y búsqueda web .

  • SupportedGrammarLanguages: la colección de objetos Language usados 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, pase un objeto Language en el constructor SpeechRecognizer .

Aquí, especificamos "en-US" como idioma de reconocimiento.

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

Observaciones

Se puede configurar una restricción de tema agregando un SpeechRecognitionTopicConstraint a la colección de restricciones de del SpeechRecognizer y, a continuación, llamando a CompileConstraintsAsync. Se devuelve un SpeechRecognitionResultStatus de TopicLanguageNotSupported si el reconocedor no se inicializa con un idioma de tema compatible.

Para configurar una restricción de lista, se añade un SpeechRecognitionListConstraint a la colección de Constraints del SpeechRecognizer y, a continuación, se llama a CompileConstraintsAsync. No se puede especificar directamente el idioma de una lista personalizada. 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, puede especificar en el marcado SRGS el idioma de gramática. CompileConstraintsAsync produce un error con un SpeechRecognitionResultStatus de TopicLanguageNotSupported si el reconocedor no se inicializa en el mismo idioma que el etiquetado SRGS.

Muestras