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.
API importantes: SupportedTopicLanguages, SupportedGrammarLanguages, Language
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 el reconocimiento de voz.
Debe tener un conocimiento básico de las restricciones de reconocimiento de voz y reconocimiento.
Si es nuevo en el desarrollo de aplicaciones de Windows, consulte estos temas para familiarizarse con las tecnologías que se analizan aquí.
- Crear la primera aplicación
- Más información sobre eventos mediante Descripción general de eventos y eventos enrutados
Pautas de experiencia de 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 idioma de voz > del sistema > de voz > del dispositivo.
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 Language usados con gramáticas predefinidas de dictado y búsqueda web.
SupportedGrammarLanguages: 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);
Comentarios
Se puede configurar una restricción de tema agregando speechRecognitionTopicConstraint a la colección Constraints de SpeechRecognizer y, a continuación, llamando a CompileConstraintsAsync. Se devuelve speechRecognitionResultStatus de TopicLanguageNotSupported si el reconocedor no se inicializa con un lenguaje de tema compatible.
Para configurar una restricción de lista, agregue speechRecognitionListConstraint a la colección Constraints de SpeechRecognizer y, a continuación, llame 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 el idioma de la gramática en el marcado SRGS. CompileConstraintsAsync produce un error con speechRecognitionResultStatus de TopicLanguageNotSupported si el reconocedor no se inicializa en el mismo idioma que el marcado SRGS.
Artículos relacionados
Muestras