Compartir a través de


Uso de la evaluación de pronunciación

En este artículo, obtendrá información sobre cómo evaluar la pronunciación con la conversión de voz a texto a través del SDK de Voz. La evaluación de la pronunciación evalúa la pronunciación de la voz y ofrece a los oradores información sobre la precisión y la fluidez del audio hablado.

Nota:

La evaluación de la pronunciación usa una versión específica del modelo de conversión de voz en texto, diferente del modelo estándar, para garantizar una evaluación de la pronunciación coherente y precisa.

Evaluación de la pronunciación en modo de streaming

La evaluación de la pronunciación admite el modo de streaming ininterrumpido. El tiempo de grabación puede ser ilimitado a través del SDK de voz. Siempre que no detenga la grabación, el proceso de evaluación no finalizará y podrá pausar y reanudar la evaluación cómodamente.

Para obtener información sobre la disponibilidad de la evaluación de pronunciación, consulte idiomas admitidos y regiones disponibles.

Como línea de base, el uso de la valoración de pronunciación cuesta lo mismo que la conversión de voz en texto para los precios del nivel de compromiso o de pago por uso. Si compra un nivel de compromiso para la conversión de voz en texto, el gasto para la valoración de la pronunciación tiende a alcanzar el del compromiso. Para obtener más información, consulte el apartado Precios.

Para obtener información sobre cómo usar la evaluación de pronunciación en modo de streaming en su propia aplicación, consulte el código de ejemplo.

Para obtener información sobre cómo usar la evaluación de pronunciación en modo de streaming en su propia aplicación, consulte el código de ejemplo.

Para obtener información sobre cómo usar la evaluación de pronunciación en modo de streaming en su propia aplicación, consulte el código de ejemplo.

Para obtener información sobre cómo usar la evaluación de pronunciación en modo de streaming en su propia aplicación, consulte el código de ejemplo.

Para obtener información sobre cómo usar la evaluación de pronunciación en modo de streaming en su propia aplicación, consulte el código de ejemplo.

Para obtener información sobre cómo usar la evaluación de pronunciación en modo de streaming en su propia aplicación, consulte el código de ejemplo.

Para obtener información sobre cómo usar la evaluación de pronunciación en modo de streaming en su propia aplicación, consulte el código de ejemplo.

Reconocimiento continuo

Si el archivo de audio supera los 30 segundos, use el modo continuo para su procesamiento. Puede encontrar el código de ejemplo para el modo continuo en GitHub en la función PronunciationAssessmentContinuousWithFile.

Si el archivo de audio supera los 30 segundos, use el modo continuo para su procesamiento.

Si el archivo de audio supera los 30 segundos, use el modo continuo para su procesamiento. Puede encontrar el código de ejemplo para el modo continuo en GitHub en la función pronunciationAssessmentContinuousWithFile.

Si el archivo de audio supera los 30 segundos, use el modo continuo para su procesamiento. Puede encontrar el código de ejemplo para el modo continuo en GitHub en la función pronunciation_assessment_continuous_from_file.

Si el archivo de audio supera los 30 segundos, use el modo continuo para su procesamiento. Puede encontrar el código de ejemplo para el modo continuo en GitHub.

Si el archivo de audio supera los 30 segundos, use el modo continuo para su procesamiento. Puede encontrar el código de ejemplo para el modo continuo en GitHub en la función pronunciationAssessFromFile.

Si el archivo de audio supera los 30 segundos, use el modo continuo para su procesamiento. Puede encontrar el código de ejemplo para el modo continuo en GitHub en la función continuousPronunciationAssessment.

Parámetros de configuración de SSL

Nota:

La evaluación de pronunciación no está disponible con el SDK de Speech para Go. Puede leer los conceptos de esta guía. Seleccione otro lenguaje de programación para la solución.

En SpeechRecognizer, puede especificar el idioma para aprender o practicar la mejora de la pronunciación. La configuración regional predeterminada es en-US. Para obtener información sobre cómo especificar el idioma de aprendizaje para la evaluación de la pronunciación en una aplicación propia, puede usar el código de ejemplo siguiente.

var recognizer = new SpeechRecognizer(speechConfig, "en-US", audioConfig);
auto recognizer = SpeechRecognizer::FromConfig(speechConfig, "en-US", audioConfig);
SpeechRecognizer recognizer = new SpeechRecognizer(speechConfig, "en-US", audioConfig);
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, language="en-US", audio_config=audio_config)
speechConfig.speechRecognitionLanguage = "en-US";
SPXSpeechRecognizer* recognizer = [[SPXSpeechRecognizer alloc] initWithSpeechConfiguration:speechConfig language:@"en-US" audioConfiguration:audioConfig];
let recognizer = try! SPXSpeechRecognizer(speechConfiguration: speechConfig, language: "en-US", audioConfiguration: audioConfig)

Sugerencia

Si no está seguro de qué configuración regional se va a establecer para un idioma que tiene varias configuraciones regionales, pruebe cada configuración regional por separado. Por ejemplo, para español, pruebe es-ES y es-MX. Determine las puntuaciones de configuración regional más altas para su escenario.

Tiene que crear un objeto PronunciationAssessmentConfig. Opcionalmente, puede establecer EnableProsodyAssessment y EnableContentAssessmentWithTopic habilitar la prosodia y la evaluación de contenido. Para obtener más información, consulte métodos de configuración.

var pronunciationAssessmentConfig = new PronunciationAssessmentConfig( 
    referenceText: "", 
    gradingSystem: GradingSystem.HundredMark,  
    granularity: Granularity.Phoneme,  
    enableMiscue: false); 
pronunciationAssessmentConfig.EnableProsodyAssessment(); 
pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting"); 
auto pronunciationConfig = PronunciationAssessmentConfig::Create("", PronunciationAssessmentGradingSystem::HundredMark, PronunciationAssessmentGranularity::Phoneme, false); 
pronunciationConfig->EnableProsodyAssessment(); 
pronunciationConfig->EnableContentAssessmentWithTopic("greeting"); 
PronunciationAssessmentConfig pronunciationConfig = new PronunciationAssessmentConfig("", 
    PronunciationAssessmentGradingSystem.HundredMark, PronunciationAssessmentGranularity.Phoneme, false); 
pronunciationConfig.enableProsodyAssessment(); 
pronunciationConfig.enableContentAssessmentWithTopic("greeting");
pronunciation_config = speechsdk.PronunciationAssessmentConfig( 
    reference_text="", 
    grading_system=speechsdk.PronunciationAssessmentGradingSystem.HundredMark, 
    granularity=speechsdk.PronunciationAssessmentGranularity.Phoneme, 
    enable_miscue=False) 
pronunciation_config.enable_prosody_assessment() 
pronunciation_config.enable_content_assessment_with_topic("greeting")
var pronunciationAssessmentConfig = new sdk.PronunciationAssessmentConfig( 
    referenceText: "", 
    gradingSystem: sdk.PronunciationAssessmentGradingSystem.HundredMark,  
    granularity: sdk.PronunciationAssessmentGranularity.Phoneme,  
    enableMiscue: false); 
pronunciationAssessmentConfig.enableProsodyAssessment(); 
pronunciationAssessmentConfig.enableContentAssessmentWithTopic("greeting");  
SPXPronunciationAssessmentConfiguration *pronunicationConfig = 
[[SPXPronunciationAssessmentConfiguration alloc] init:@"" gradingSystem:SPXPronunciationAssessmentGradingSystem_HundredMark granularity:SPXPronunciationAssessmentGranularity_Phoneme enableMiscue:false]; 
[pronunicationConfig enableProsodyAssessment]; 
[pronunicationConfig enableContentAssessmentWithTopic:@"greeting"]; 
let pronAssessmentConfig = try! SPXPronunciationAssessmentConfiguration("", 
    gradingSystem: .hundredMark, 
    granularity: .phoneme, 
    enableMiscue: false) 
pronAssessmentConfig.enableProsodyAssessment() 
pronAssessmentConfig.enableContentAssessment(withTopic: "greeting")

En esta tabla se enumeran algunos de los parámetros de configuración claves para la evaluación de la pronunciación.

Parámetro Descripción
ReferenceText Texto con el que se evalúa la pronunciación.

El ReferenceText es opcional. Establezca el texto de referencia si desea ejecutar una valoración con scripts para el escenario de aprendizaje de lenguaje de lectura. No establezca el texto de referencia si desea ejecutar una evaluaciónsin incluir.

Para conocer las diferencias de precios entre la valoración con scripts y sin scripts, consulte la nota de precios.
GradingSystem Sistema de puntos para la calibración de la puntuación. FivePoint proporciona una puntuación de punto flotante de 0 a 5. HundredMark proporciona una puntuación de punto flotante de 0 a 100. Predeterminado: FivePoint.
Granularity Esta opción determina el nivel más bajo de granularidad de la evaluación. Se devuelven puntuaciones de niveles superiores o iguales al valor mínimo. Los valores aceptados son Phoneme, que muestra la puntuación en el nivel de todo el texto, la palabra y el fonema; Word, que muestra la puntuación en el nivel de todo el texto y la palabra o, FullText, que muestra la puntuación solo en el nivel de todo el texto. El texto de referencia completo proporcionado puede ser una palabra, frase o párrafo. Depende del texto de referencia de entrada. Predeterminado: Phoneme.
EnableMiscue Habilita el cálculo de errores cuando las palabras pronunciadas se comparan con el texto de referencia. La habilitación de errores es opcional. Si este valor es True, el valor del resultado ErrorType se puede establecer en Omission o en Insertion en función de la comparación. Los valores son False y True. Predeterminado: False. Para habilitar el cálculo de errores, establezca EnableMiscue en True. Puede hacer referencia al fragmento de código situado encima de la tabla.
ScenarioId GUID de un sistema de punto personalizado.

Métodos de configuración

En esta tabla se enumeran algunos de los métodos opcionales que puede establecer para el objeto PronunciationAssessmentConfig.

Nota:

Las valoraciones de contenido y prosodia solo están disponibles en la configuración regional en-US.

Para explorar el contenido y las evaluaciones de prosodia, actualice a la versión 1.35.0 o posteriores del SDK.

No hay ningún límite de longitud para el parámetro topic.

Method Descripción
EnableProsodyAssessment Habilite la valoración de prosodia para la evaluación de pronunciación. Esta característica evalúa aspectos como el estrés, la entonación, la velocidad del habla y el ritmo. Esta característica proporciona información sobre la naturalidad y la expresividad de su voz.

La habilitación de la valoración de prosody es opcional. Si se llama a este método, se devuelve el valor de resultadoProsodyScore.
EnableContentAssessmentWithTopic Habilitar la valoración de contenido. Una valoración de contenido forma parte de la valoración sin asignar para el escenario de aprendizaje del lenguaje de habla. Al proporcionar una descripción del tema a través de este método, puede mejorar el reconocimiento de valoración del tema específico que se habla. Por ejemplo, en C# llame a pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting");. Puede reemplazar "greeting" por el texto deseado para describir un tema. La descripción no tiene límite de longitud y actualmente solo admite la en-US configuración regional.

Obtención de los resultados de la evaluación de pronunciación

Cuando se reconoce la voz, puede solicitar los resultados de la evaluación de pronunciación como objetos de SDK o una cadena JSON.

using (var speechRecognizer = new SpeechRecognizer(
    speechConfig,
    audioConfig))
{
    // (Optional) get the session ID
    speechRecognizer.SessionStarted += (s, e) => {
        Console.WriteLine($"SESSION ID: {e.SessionId}");
    };
    pronunciationAssessmentConfig.ApplyTo(speechRecognizer);
    var speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync();

    // The pronunciation assessment result as a Speech SDK object
    var pronunciationAssessmentResult =
        PronunciationAssessmentResult.FromResult(speechRecognitionResult);

    // The pronunciation assessment result as a JSON string
    var pronunciationAssessmentResultJson = speechRecognitionResult.Properties.GetProperty(PropertyId.SpeechServiceResponse_JsonResult);
}

Los resultados de las palabras, sílabas y fonemas no están disponibles a través de objetos de SDK con el SDK de Speech para C++. Los resultados de palabras, sílabas y fonemas solo están disponibles en la cadena JSON.

auto speechRecognizer = SpeechRecognizer::FromConfig(
    speechConfig,
    audioConfig);
// (Optional) get the session ID
speechRecognizer->SessionStarted.Connect([](const SessionEventArgs& e) {
    std::cout << "SESSION ID: " << e.SessionId << std::endl;
});
pronunciationAssessmentConfig->ApplyTo(speechRecognizer);
speechRecognitionResult = speechRecognizer->RecognizeOnceAsync().get();

// The pronunciation assessment result as a Speech SDK object
auto pronunciationAssessmentResult =
    PronunciationAssessmentResult::FromResult(speechRecognitionResult);

// The pronunciation assessment result as a JSON string
auto pronunciationAssessmentResultJson = speechRecognitionResult->Properties.GetProperty(PropertyId::SpeechServiceResponse_JsonResult);

Para obtener información sobre cómo especificar la lengua de aprendizaje para la evaluación de la pronunciación en su propia aplicación, consulte código de ejemplo.

En el desarrollo de aplicaciones de Android, los resultados de las palabras, las sílabas y los fonemas están disponibles a través de objetos de SDK con el SDK de Speech para Java. Los resultados también están disponibles en la cadena JSON. En el caso del desarrollo de aplicaciones en tiempo de ejecución de Java (JRE), los resultados de las palabras, las sílabas y los fonemas solo están disponibles en la cadena JSON.

SpeechRecognizer speechRecognizer = new SpeechRecognizer(
    speechConfig,
    audioConfig);
// (Optional) get the session ID
speechRecognizer.sessionStarted.addEventListener((s, e) -> {
    System.out.println("SESSION ID: " + e.getSessionId());
});
pronunciationAssessmentConfig.applyTo(speechRecognizer);
Future<SpeechRecognitionResult> future = speechRecognizer.recognizeOnceAsync();
SpeechRecognitionResult speechRecognitionResult = future.get(30, TimeUnit.SECONDS);

// The pronunciation assessment result as a Speech SDK object
PronunciationAssessmentResult pronunciationAssessmentResult =
    PronunciationAssessmentResult.fromResult(speechRecognitionResult);

// The pronunciation assessment result as a JSON string
String pronunciationAssessmentResultJson = speechRecognitionResult.getProperties().getProperty(PropertyId.SpeechServiceResponse_JsonResult);

recognizer.close();
speechConfig.close();
audioConfig.close();
pronunciationAssessmentConfig.close();
speechRecognitionResult.close();
var speechRecognizer = SpeechSDK.SpeechRecognizer.FromConfig(speechConfig, audioConfig);
// (Optional) get the session ID
speechRecognizer.sessionStarted = (s, e) => {
    console.log(`SESSION ID: ${e.sessionId}`);
};
pronunciationAssessmentConfig.applyTo(speechRecognizer);

speechRecognizer.recognizeOnceAsync((speechRecognitionResult: SpeechSDK.SpeechRecognitionResult) => {
    // The pronunciation assessment result as a Speech SDK object
    var pronunciationAssessmentResult = SpeechSDK.PronunciationAssessmentResult.fromResult(speechRecognitionResult);

    // The pronunciation assessment result as a JSON string
    var pronunciationAssessmentResultJson = speechRecognitionResult.properties.getProperty(SpeechSDK.PropertyId.SpeechServiceResponse_JsonResult);
},
{});

Para obtener información sobre cómo especificar la lengua de aprendizaje para la evaluación de la pronunciación en su propia aplicación, consulte código de ejemplo.

speech_recognizer = speechsdk.SpeechRecognizer(
        speech_config=speech_config, \
        audio_config=audio_config)
# (Optional) get the session ID
speech_recognizer.session_started.connect(lambda evt: print(f"SESSION ID: {evt.session_id}"))
pronunciation_assessment_config.apply_to(speech_recognizer)
speech_recognition_result = speech_recognizer.recognize_once()
# The pronunciation assessment result as a Speech SDK object
pronunciation_assessment_result = speechsdk.PronunciationAssessmentResult(speech_recognition_result)

# The pronunciation assessment result as a JSON string
pronunciation_assessment_result_json = speech_recognition_result.properties.get(speechsdk.PropertyId.SpeechServiceResponse_JsonResult)

Para obtener información sobre cómo especificar la lengua de aprendizaje para la evaluación de la pronunciación en su propia aplicación, consulte código de ejemplo.

SPXSpeechRecognizer* speechRecognizer = \
        [[SPXSpeechRecognizer alloc] initWithSpeechConfiguration:speechConfig
                                              audioConfiguration:audioConfig];
// (Optional) get the session ID
[speechRecognizer addSessionStartedEventHandler: ^ (SPXRecognizer *sender, SPXSessionEventArgs *eventArgs) {
    NSLog(@"SESSION ID: %@", eventArgs.sessionId);
}];
[pronunciationAssessmentConfig applyToRecognizer:speechRecognizer];

SPXSpeechRecognitionResult *speechRecognitionResult = [speechRecognizer recognizeOnce];

// The pronunciation assessment result as a Speech SDK object
SPXPronunciationAssessmentResult* pronunciationAssessmentResult = [[SPXPronunciationAssessmentResult alloc] init:speechRecognitionResult];

// The pronunciation assessment result as a JSON string
NSString* pronunciationAssessmentResultJson = [speechRecognitionResult.properties getPropertyByName:SPXSpeechServiceResponseJsonResult];

Para obtener información sobre cómo especificar la lengua de aprendizaje para la evaluación de la pronunciación en su propia aplicación, consulte código de ejemplo.

let speechRecognizer = try! SPXSpeechRecognizer(speechConfiguration: speechConfig, audioConfiguration: audioConfig)
// (Optional) get the session ID
speechRecognizer.addSessionStartedEventHandler { (sender, evt) in
	print("SESSION ID: \(evt.sessionId)")
try! pronConfig.apply(to: speechRecognizer)

let speechRecognitionResult = try? speechRecognizer.recognizeOnce()

// The pronunciation assessment result as a Speech SDK object
let pronunciationAssessmentResult = SPXPronunciationAssessmentResult(speechRecognitionResult!)

// The pronunciation assessment result as a JSON string
let pronunciationAssessmentResultJson = speechRecognitionResult!.properties?.getPropertyBy(SPXPropertyId.speechServiceResponseJsonResult)

Parámetros de resultados

Dependiendo de si usa una valoración con scripts o sin scripts, puede obtener resultados de valoración de pronunciación diferentes. La evaluación con scripts es para el escenario de aprendizaje de lenguaje de lectura. La evaluación sin asignar es para el escenario de aprendizaje del lenguaje de habla.

Nota:

Para conocer las diferencias de precios entre la valoración con scripts y sin scripts, consulte la nota de precios.

Resultados de la valoración con scripts

En esta tabla se enumeran algunos de los resultados de la evaluación de pronunciación clave para la evaluación con scripts o el escenario de lectura.

Parámetro Descripción Granularidad
AccuracyScore Precisión de pronunciación de la voz. La precisión indica el grado de coincidencia de los fonemas con la pronunciación de un hablante nativo. Las puntuaciones de precisión de las sílabas, palabras y del texto completo se agregan a partir de la puntuación de precisión de los fonemas y se refinan con los objetivos de valoración. Nivel de fonema,
Nivel de sílaba (solo en-US),
Nivel de palabra,
Nivel de texto completo
FluencyScore Fluidez del fragmento hablado en cuestión. La fluidez indica el grado de coincidencia de la voz con el uso que hace un hablante nativo de los silencios entre palabras. Nivel de texto completo
CompletenessScore Integridad de la voz, calculada por la proporción de palabras pronunciadas en relación con el texto de referencia de entrada. Nivel de texto completo
ProsodyScore Prosodia de la voz en cuestión. La prosodia indica cómo es natural la voz en cuestión, incluyendo el acento, la entonación, la velocidad del habla y el ritmo. Nivel de texto completo
PronScore Puntuación global que indica la calidad de la pronunciación del fragmento hablado en cuestión. PronScore se calcula a partir de AccuracyScore, FluencyScore, CompletenessScore y ProsodyScore con peso, siempre que ProsodyScore y CompletenessScore estén disponibles. Si alguno de ellos no está disponible, PronScore no tendrá en cuenta esa puntuación. Nivel de texto completo
ErrorType Este valor indica el tipo de error en comparación con el texto de referencia. Entre las opciones se incluyen si se omite, se inserta o se inserta incorrectamente una palabra con un salto. También indica una interrupción que falta en la puntuación. También indica si una palabra está mal pronunciada o es monótonamente ascendente, descendente o plana en la expresión. Los valores posibles son None que significa que no hay ningún error en esta palabra, Omission, Insertion, Mispronunciation, UnexpectedBreak, MissingBreak y Monotone. El tipo de error puede ser Mispronunciation cuando la pronunciación AccuracyScore de una palabra es inferior a 60. Nivel de palabra

Resultados de la valoración sin scripts

En esta tabla se enumeran algunos de los resultados clave de la evaluación de pronunciación para la evaluación sin asignar o el escenario de habla.

Los parámetros VocabularyScore, GrammarScore y TopicScore se acumulan en la evaluación de contenido combinado.

Nota:

Las valoraciones de contenido y prosodia solo están disponibles en la configuración regional en-US.

Parámetro de respuesta Descripción Granularidad
AccuracyScore Precisión de pronunciación de la voz. La precisión indica el grado de coincidencia de los fonemas con la pronunciación de un hablante nativo. Las puntuaciones de precisión de las sílabas, palabras y del texto completo se agregan a partir de la puntuación de precisión de los fonemas y se refinan con los objetivos de valoración. Nivel de fonema,
Nivel de sílaba (solo en-US),
Nivel de palabra,
Nivel de texto completo
FluencyScore Fluidez del fragmento hablado en cuestión. La fluidez indica el grado de coincidencia de la voz con el uso que hace un hablante nativo de los silencios entre palabras. Nivel de texto completo
ProsodyScore Prosodia de la voz en cuestión. La prosodia indica cómo es natural la voz en cuestión, incluyendo el acento, la entonación, la velocidad del habla y el ritmo. Nivel de texto completo
VocabularyScore Competencia en el uso léxico. Evalúa el uso eficaz que hace el hablante de las palabras y su adecuación al contexto dado para expresar ideas con precisión, así como el nivel de complejidad léxica. Nivel de texto completo
GrammarScore Corrección en el uso de la gramática y variedad de patrones oracionales. Los errores gramaticales se evalúan conjuntamente mediante la precisión léxica, precisión gramatical y diversidad de estructuras oracionales. Nivel de texto completo
TopicScore Nivel de comprensión e involucración con el tema, que proporciona información sobre la capacidad del hablante para expresar sus pensamientos e ideas con eficacia y la capacidad para involucrarse con el tema. Nivel de texto completo
PronScore Puntuación global que indica la calidad de la pronunciación del fragmento hablado en cuestión. PronScore se calcula a partir de AccuracyScore, FluencyScore y ProsodyScore con peso, siempre que ProsodyScore esté disponible. Si ProsodyScore no está disponible, PronScore no tendrá en cuenta esa puntuación. Nivel de texto completo
ErrorType Una palabra se pronuncia mal, se inserta incorrectamente con una interrupción o falta una interrupción en la puntuación. También indica si una pronunciación es monótonamente ascendente, descendente o plana en la expresión. Los valores posibles son None que significa que no hay ningún error en esta palabra, Mispronunciation, UnexpectedBreak, MissingBreak y Monotone. Nivel de palabra

En la tabla siguiente se describen los resultados de la valoración de prosodia con más detalle:

Campo Descripción
ProsodyScore Puntuación de prosodia de toda la expresión.
Feedback Comentarios sobre el nivel de palabra, incluidos Break y Intonation.
Break
ErrorTypes Tipos de error relacionados con las pausas, incluidos UnexpectedBreak y MissingBreak. En la versión actual, no se proporciona el tipo de error de pausa. Debe establecer umbrales en los campos UnexpectedBreak – Confidence y MissingBreak – confidence decidir si hay una interrupción inesperada o falta antes de la palabra.
UnexpectedBreak Indica una pausa inesperada antes de la palabra.
MissingBreak Indica que falta una pausa antes de la palabra.
Thresholds Los umbrales sugeridos en ambas puntuaciones de confianza son 0,75. Esto significa que, si el valor de es mayor que UnexpectedBreak – Confidence 0,75, tiene una interrupción inesperada. Si el valor de MissingBreak – confidence es mayor que 0,75, falta una interrupción. Aunque 0,75 es un valor que se recomienda, es mejor ajustar los umbrales en función de su propio escenario. Si desea tener sensibilidad de detección de variables en estas dos interrupciones, puede asignar umbrales diferentes a los UnexpectedBreak - Confidence y camposMissingBreak - Confidence.
Intonation Indica la entonación de la voz.
ErrorTypes Tipos de error relacionados con la entonación, que actualmente solo admiten Monotone. Si existe Monotone en el campo ErrorTypes, se detecta que la expresión es monótona. El monotono se detecta en toda la expresión, pero la etiqueta se asigna a todas las palabras. Todas las palabras de la misma expresión comparten la misma información de detección de monotonos.
Monotone Indica una voz monotónica.
Thresholds (Monotone Confidence) Los campos Monotone - SyllablePitchDeltaConfidence están reservados para la detección de monótona personalizada por el usuario. Si no está satisfecho con la decisión monótona proporcionada, ajuste los umbrales de estos campos para personalizar la detección según sus preferencias.

Ejemplo de resultado JSON

Los resultados de la valoración de pronunciación con scripts de la palabra hablada "hello" se muestran como una cadena JSON en el ejemplo siguiente.

  • El alfabeto fonético es IPA.
  • Las sílabas se devuelven junto con fonemas de la misma palabra.
  • Puede usar los valores Offset y Duration para alinear las sílabas con sus correspondientes fonemas. Por ejemplo, el desplazamiento inicial (11700000) de la segunda sílabaloʊ se alinea con el tercer fonema,l. El desplazamiento representa la hora en la que comienza la voz reconocida en la secuencia de audio. El valor se mide en unidades de 100 nanosegundos. Para más información sobre Offset y Duration, vea propiedades de respuesta.
  • Hay cinco NBestPhonemes correspondientes al número de fonemas hablados solicitados.
  • Dentro de Phonemes, los fonemas hablados más probables son ə en lugar del fonema esperado ɛ. El fonema esperado ɛ solo recibió una puntuación de confianza de 47. Otras posibles coincidencias recibieron puntuaciones de confianza de 52, 17 y 2.
{
    "Id": "bbb42ea51bdb46d19a1d685e635fe173",
    "RecognitionStatus": 0,
    "Offset": 7500000,
    "Duration": 13800000,
    "DisplayText": "Hello.",
    "NBest": [
        {
            "Confidence": 0.975003,
            "Lexical": "hello",
            "ITN": "hello",
            "MaskedITN": "hello",
            "Display": "Hello.",
            "PronunciationAssessment": {
                "AccuracyScore": 100,
                "FluencyScore": 100,
                "CompletenessScore": 100,
                "PronScore": 100
            },
            "Words": [
                {
                    "Word": "hello",
                    "Offset": 7500000,
                    "Duration": 13800000,
                    "PronunciationAssessment": {
                        "AccuracyScore": 99.0,
                        "ErrorType": "None"
                    },
                    "Syllables": [
                        {
                            "Syllable": "hɛ",
                            "PronunciationAssessment": {
                                "AccuracyScore": 91.0
                            },
                            "Offset": 7500000,
                            "Duration": 4100000
                        },
                        {
                            "Syllable": "loʊ",
                            "PronunciationAssessment": {
                                "AccuracyScore": 100.0
                            },
                            "Offset": 11700000,
                            "Duration": 9600000
                        }
                    ],
                    "Phonemes": [
                        {
                            "Phoneme": "h",
                            "PronunciationAssessment": {
                                "AccuracyScore": 98.0,
                                "NBestPhonemes": [
                                    {
                                        "Phoneme": "h",
                                        "Score": 100.0
                                    },
                                    {
                                        "Phoneme": "oʊ",
                                        "Score": 52.0
                                    },
                                    {
                                        "Phoneme": "ə",
                                        "Score": 35.0
                                    },
                                    {
                                        "Phoneme": "k",
                                        "Score": 23.0
                                    },
                                    {
                                        "Phoneme": "æ",
                                        "Score": 20.0
                                    }
                                ]
                            },
                            "Offset": 7500000,
                            "Duration": 3500000
                        },
                        {
                            "Phoneme": "ɛ",
                            "PronunciationAssessment": {
                                "AccuracyScore": 47.0,
                                "NBestPhonemes": [
                                    {
                                        "Phoneme": "ə",
                                        "Score": 100.0
                                    },
                                    {
                                        "Phoneme": "l",
                                        "Score": 52.0
                                    },
                                    {
                                        "Phoneme": "ɛ",
                                        "Score": 47.0
                                    },
                                    {
                                        "Phoneme": "h",
                                        "Score": 17.0
                                    },
                                    {
                                        "Phoneme": "æ",
                                        "Score": 2.0
                                    }
                                ]
                            },
                            "Offset": 11100000,
                            "Duration": 500000
                        },
                        {
                            "Phoneme": "l",
                            "PronunciationAssessment": {
                                "AccuracyScore": 100.0,
                                "NBestPhonemes": [
                                    {
                                        "Phoneme": "l",
                                        "Score": 100.0
                                    },
                                    {
                                        "Phoneme": "oʊ",
                                        "Score": 46.0
                                    },
                                    {
                                        "Phoneme": "ə",
                                        "Score": 5.0
                                    },
                                    {
                                        "Phoneme": "ɛ",
                                        "Score": 3.0
                                    },
                                    {
                                        "Phoneme": "u",
                                        "Score": 1.0
                                    }
                                ]
                            },
                            "Offset": 11700000,
                            "Duration": 1100000
                        },
                        {
                            "Phoneme": "oʊ",
                            "PronunciationAssessment": {
                                "AccuracyScore": 100.0,
                                "NBestPhonemes": [
                                    {
                                        "Phoneme": "oʊ",
                                        "Score": 100.0
                                    },
                                    {
                                        "Phoneme": "d",
                                        "Score": 29.0
                                    },
                                    {
                                        "Phoneme": "t",
                                        "Score": 24.0
                                    },
                                    {
                                        "Phoneme": "n",
                                        "Score": 22.0
                                    },
                                    {
                                        "Phoneme": "l",
                                        "Score": 18.0
                                    }
                                ]
                            },
                            "Offset": 12900000,
                            "Duration": 8400000
                        }
                    ]
                }
            ]
        }
    ]
}

Puede obtener las puntuaciones de evaluación de pronunciación para:

  • Texto completo
  • Words
  • Grupos de sílabas
  • Fonemas en los formatos SAPI o IPA

Características admitidas por configuración regional

En la tabla siguiente se resumen las características que admiten configuraciones regionales. Para obtener más información, consulte las secciones siguientes. Si las configuraciones regionales que necesita no aparecen en la tabla siguiente para la característica admitida, rellene este formulario de admisión para obtener más ayuda.

Alfabeto Phoneme IPA SAPI
Nombre de Phoneme en-US en-US, zh-CN
Grupo de sílabas en-US en-US
Fonema hablado en-US en-US

Grupos de sílabas

La evaluación de pronunciación puede proporcionar resultados de evaluación de nivel de sílaba. Una palabra suele pronunciarse sílaba a sílaba en lugar de fonema a fonema. La agrupación en sílabas es más legible y alineada con los hábitos de habla.

La valoración de la pronunciación admite grupos de sílabas solo en en-US con IPA y con SAPI.

En la tabla siguiente se comparan los fonemas de ejemplo con las sílabas correspondientes.

Palabra de ejemplo Fonemas Sílabas
technological teknələdʒɪkl tek·nə·lɑ·dʒɪkl
hello hɛloʊ hɛ·loʊ
luck lʌk lʌk
photosynthesis foʊtəsɪnθəsɪs foʊ·tə·sɪn·θə·sɪs

Para solicitar resultados de nivel de sílaba junto con fonemas, establezca el parámetro de configuración de granularidad en Phoneme.

Formato del alfabeto de fonemas

La valoración de la pronunciación admite grupos de sílabas en en-US con IPA y en en-US y zh-CN con SAPI.

En el caso de las configuraciones regionales que admiten el nombre de fonema, el nombre del fonema se proporciona junto con la puntuación. Los nombres de fonema ayudan a identificar qué fonemas se pronunciaban de forma precisa o inexacta. Para otras localidades, solo se puede obtener la puntuación de los fonemas.

En la tabla siguiente se comparan los fonemas de ejemplo con las sílabas correspondientes.

Palabra de ejemplo Fonemas SAPI Fonemas IPA
hello h eh l ow h ɛ l oʊ
luck l ah k l ʌ k
photosynthesis f ow t ax s ih n th ax s ih s f oʊ t ə s ɪ n θ ə s ɪ s

Para solicitar fonemas IPA, establezca el alfabeto fonético en IPA. Si no especifica el alfabeto, los fonemas están en formato SAPI de forma predeterminada.

pronunciationAssessmentConfig.PhonemeAlphabet = "IPA";
auto pronunciationAssessmentConfig = PronunciationAssessmentConfig::CreateFromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}");
PronunciationAssessmentConfig pronunciationAssessmentConfig = PronunciationAssessmentConfig.fromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}");
pronunciation_assessment_config = speechsdk.PronunciationAssessmentConfig(json_string="{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}")
var pronunciationAssessmentConfig = SpeechSDK.PronunciationAssessmentConfig.fromJSON("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}");
pronunciationAssessmentConfig.phonemeAlphabet = @"IPA";
pronunciationAssessmentConfig?.phonemeAlphabet = "IPA"

Evaluación de los fonemas hablados

Con los fonemas hablados, puede obtener puntuaciones de confianza que indican la probabilidad de que los fonemas hablados coincidan con los fonemas esperados.

La valoración de la pronunciación admite fonemas hablados en en-US con IPA y con SAPI.

Por ejemplo, para obtener el sonido hablado completo para la palabra Hello, puede concatenar el primer fonema hablado para cada fonema esperado con la puntuación de confianza más alta. En el siguiente resultado de la valoración, cuando dice la palabrahello, los fonemas IPA esperados son h ɛ l oʊ. Sin embargo, los fonemas hablados reales son h ə l oʊ. Tiene cinco posibles candidatos para cada fonema esperado en este ejemplo. El resultado de la valoración muestra que el fonema hablado más probable es ə en lugar del fonema esperado ɛ. El fonema esperado ɛ solo recibió una puntuación de confianza de 47. Otras posibles coincidencias recibieron puntuaciones de confianza de 52, 17 y 2.

{
    "Id": "bbb42ea51bdb46d19a1d685e635fe173",
    "RecognitionStatus": 0,
    "Offset": 7500000,
    "Duration": 13800000,
    "DisplayText": "Hello.",
    "NBest": [
        {
            "Confidence": 0.975003,
            "Lexical": "hello",
            "ITN": "hello",
            "MaskedITN": "hello",
            "Display": "Hello.",
            "PronunciationAssessment": {
                "AccuracyScore": 100,
                "FluencyScore": 100,
                "CompletenessScore": 100,
                "PronScore": 100
            },
            "Words": [
                {
                    "Word": "hello",
                    "Offset": 7500000,
                    "Duration": 13800000,
                    "PronunciationAssessment": {
                        "AccuracyScore": 99.0,
                        "ErrorType": "None"
                    },
                    "Syllables": [
                        {
                            "Syllable": "hɛ",
                            "PronunciationAssessment": {
                                "AccuracyScore": 91.0
                            },
                            "Offset": 7500000,
                            "Duration": 4100000
                        },
                        {
                            "Syllable": "loʊ",
                            "PronunciationAssessment": {
                                "AccuracyScore": 100.0
                            },
                            "Offset": 11700000,
                            "Duration": 9600000
                        }
                    ],
                    "Phonemes": [
                        {
                            "Phoneme": "h",
                            "PronunciationAssessment": {
                                "AccuracyScore": 98.0,
                                "NBestPhonemes": [
                                    {
                                        "Phoneme": "h",
                                        "Score": 100.0
                                    },
                                    {
                                        "Phoneme": "oʊ",
                                        "Score": 52.0
                                    },
                                    {
                                        "Phoneme": "ə",
                                        "Score": 35.0
                                    },
                                    {
                                        "Phoneme": "k",
                                        "Score": 23.0
                                    },
                                    {
                                        "Phoneme": "æ",
                                        "Score": 20.0
                                    }
                                ]
                            },
                            "Offset": 7500000,
                            "Duration": 3500000
                        },
                        {
                            "Phoneme": "ɛ",
                            "PronunciationAssessment": {
                                "AccuracyScore": 47.0,
                                "NBestPhonemes": [
                                    {
                                        "Phoneme": "ə",
                                        "Score": 100.0
                                    },
                                    {
                                        "Phoneme": "l",
                                        "Score": 52.0
                                    },
                                    {
                                        "Phoneme": "ɛ",
                                        "Score": 47.0
                                    },
                                    {
                                        "Phoneme": "h",
                                        "Score": 17.0
                                    },
                                    {
                                        "Phoneme": "æ",
                                        "Score": 2.0
                                    }
                                ]
                            },
                            "Offset": 11100000,
                            "Duration": 500000
                        },
                        {
                            "Phoneme": "l",
                            "PronunciationAssessment": {
                                "AccuracyScore": 100.0,
                                "NBestPhonemes": [
                                    {
                                        "Phoneme": "l",
                                        "Score": 100.0
                                    },
                                    {
                                        "Phoneme": "oʊ",
                                        "Score": 46.0
                                    },
                                    {
                                        "Phoneme": "ə",
                                        "Score": 5.0
                                    },
                                    {
                                        "Phoneme": "ɛ",
                                        "Score": 3.0
                                    },
                                    {
                                        "Phoneme": "u",
                                        "Score": 1.0
                                    }
                                ]
                            },
                            "Offset": 11700000,
                            "Duration": 1100000
                        },
                        {
                            "Phoneme": "oʊ",
                            "PronunciationAssessment": {
                                "AccuracyScore": 100.0,
                                "NBestPhonemes": [
                                    {
                                        "Phoneme": "oʊ",
                                        "Score": 100.0
                                    },
                                    {
                                        "Phoneme": "d",
                                        "Score": 29.0
                                    },
                                    {
                                        "Phoneme": "t",
                                        "Score": 24.0
                                    },
                                    {
                                        "Phoneme": "n",
                                        "Score": 22.0
                                    },
                                    {
                                        "Phoneme": "l",
                                        "Score": 18.0
                                    }
                                ]
                            },
                            "Offset": 12900000,
                            "Duration": 8400000
                        }
                    ]
                }
            ]
        }
    ]
}

Para indicar cuántos fonemas hablados potenciales debe haber para obtener puntuaciones de confianza, establezca el parámetro NBestPhonemeCount en un valor entero como 5.

pronunciationAssessmentConfig.NBestPhonemeCount = 5;
auto pronunciationAssessmentConfig = PronunciationAssessmentConfig::CreateFromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
PronunciationAssessmentConfig pronunciationAssessmentConfig = PronunciationAssessmentConfig.fromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
pronunciation_assessment_config = speechsdk.PronunciationAssessmentConfig(json_string="{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}")
var pronunciationAssessmentConfig = SpeechSDK.PronunciationAssessmentConfig.fromJSON("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
pronunciationAssessmentConfig.nbestPhonemeCount = 5;
pronunciationAssessmentConfig?.nbestPhonemeCount = 5

Cálculo de la puntuación de la pronunciación

Las puntuaciones de pronunciación se calculan al ponderar la precisión, la prosodia, la fluidez y las puntuaciones de integridad basadas en fórmulas específicas para escenarios de lectura y habla.

Cuando se ordenan las puntuaciones de precisión, prosodia, fluidez e integridad de baja a alta (si cada puntuación está disponible) y se representan de la puntuación más baja a la más alta como s0 a s3, la puntuación de la pronunciación se calcula de la siguiente manera:

Para el escenario de lectura:

  • Puntuación con prosodia: PronScore = 0,4 * s0 + 0,2 * s1 + 0,2 * s2 + 0,2 * s3
  • Puntuación sin prosodia: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2

Para el escenario de habla (la puntuación de integridad no es aplicable):

  • Puntuación con prosodia: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
  • Puntuación sin prosodia: PronScore = 0,6 * s0 + 0,4 * s1

Esta fórmula proporciona un cálculo ponderado basado en la importancia de cada puntuación, lo que garantiza una evaluación completa de la pronunciación.