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 resultado ProsodyScore . |
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
yDuration
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 sobreOffset
yDuration
, 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:
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.
Contenido relacionado
- Obtenga información sobre el punto de referencia de calidad.
- Pruebe Valoración de pronunciación en Studio.
- Consulte una demostración de evaluación de pronunciación fácil de implementar.
- Vea la demostración de vídeo de evaluación de pronunciación.