Valutazione della pronuncia

La valutazione della pronuncia valuta la pronuncia vocale e fornisce ai parlanti un feedback sull'accuratezza e la fluenza dell'audio parlato. Con la valutazione della pronuncia, gli studenti di lingue possono esercitarsi, ottenere feedback istantanei e migliorare la pronuncia in modo che possano parlare e presentare con sicurezza. I docenti possono usare la funzionalità per valutare la pronuncia di più parlanti in tempo reale.

In questo articolo si apprenderà come configurare e recuperare l'oggetto PronunciationAssessmentConfig PronunciationAssessmentResult usando speech SDK.

Nota

La funzionalità di valutazione della pronuncia attualmente supporta la lingua, disponibile in tutte le aree di riconoscimento en-US vocale. Il supporto per en-GB le lingue e è in zh-CN anteprima, disponibile nelle aree e westus eastasia centralindia .

Valutazione della pronuncia con Speech SDK

Negli esempi seguenti si creerà un PronunciationAssessmentConfig oggetto , quindi lo si applierà a un oggetto SpeechRecognizer .

I frammenti di codice seguenti illustrano come usare l'identificazione della lingua nelle app:

var pronunciationAssessmentConfig = new PronunciationAssessmentConfig(
    "reference text", GradingSystem.HundredMark, Granularity.Phoneme);

using (var recognizer = new SpeechRecognizer(
    speechConfig,
    audioConfig))
{
    // apply the pronunciation assessment configuration to the speech recognizer
    pronunciationAssessmentConfig.ApplyTo(recognizer);
    var speechRecognitionResult = await recognizer.RecognizeOnceAsync();
    var pronunciationAssessmentResult =
        PronunciationAssessmentResult.FromResult(speechRecognitionResult);
    var pronunciationScore = pronunciationAssessmentResult.PronunciationScore;
}
auto pronunciationAssessmentConfig =
    PronunciationAssessmentConfig::Create("reference text",
        PronunciationAssessmentGradingSystem::HundredMark,
        PronunciationAssessmentGranularity::Phoneme);

auto recognizer = SpeechRecognizer::FromConfig(
    speechConfig,
    audioConfig);

// apply the pronunciation assessment configuration to the speech recognizer
pronunciationAssessmentConfig->ApplyTo(recognizer);
speechRecognitionResult = recognizer->RecognizeOnceAsync().get();
auto pronunciationAssessmentResult =
    PronunciationAssessmentResult::FromResult(speechRecognitionResult);
auto pronunciationScore = pronunciationAssessmentResult->PronunciationScore;
PronunciationAssessmentConfig pronunciationAssessmentConfig =
    new PronunciationAssessmentConfig("reference text", 
        PronunciationAssessmentGradingSystem.HundredMark,
        PronunciationAssessmentGranularity.Phoneme);

SpeechRecognizer recognizer = new SpeechRecognizer(
    speechConfig,
    audioConfig);

// apply the pronunciation assessment configuration to the speech recognizer
pronunciationAssessmentConfig.applyTo(recognizer);
Future<SpeechRecognitionResult> future = recognizer.recognizeOnceAsync();
SpeechRecognitionResult result = future.get(30, TimeUnit.SECONDS);
PronunciationAssessmentResult pronunciationAssessmentResult =
    PronunciationAssessmentResult.fromResult(result);
Double pronunciationScore = pronunciationAssessmentResult.getPronunciationScore();

recognizer.close();
speechConfig.close();
audioConfig.close();
pronunciationAssessmentConfig.close();
result.close();
pronunciation_assessment_config = \
        speechsdk.PronunciationAssessmentConfig(reference_text='reference text',
                grading_system=msspeech.PronunciationAssessmentGradingSystem.HundredMark,
                granularity=msspeech.PronunciationAssessmentGranularity.Phoneme)
speech_recognizer = speechsdk.SpeechRecognizer(
        speech_config=speech_config, \
        audio_config=audio_config)

# apply the pronunciation assessment configuration to the speech recognizer
pronunciation_assessment_config.apply_to(speech_recognizer)
result = speech_recognizer.recognize_once()
pronunciation_assessment_result = speechsdk.PronunciationAssessmentResult(result)
pronunciation_score = pronunciation_assessment_result.pronunciation_score
var pronunciationAssessmentConfig = new SpeechSDK.PronunciationAssessmentConfig("reference text",
    PronunciationAssessmentGradingSystem.HundredMark,
    PronunciationAssessmentGranularity.Word, true);
var speechRecognizer = SpeechSDK.SpeechRecognizer.FromConfig(speechConfig, audioConfig);
// apply the pronunciation assessment configuration to the speech recognizer
pronunciationAssessmentConfig.applyTo(speechRecognizer);

speechRecognizer.recognizeOnceAsync((result: SpeechSDK.SpeechRecognitionResult) => {
        var pronunciationAssessmentResult = SpeechSDK.PronunciationAssessmentResult.fromResult(result);
        var pronunciationScore = pronunciationAssessmentResult.pronunciationScore;
        var wordLevelResult = pronunciationAssessmentResult.detailResult.Words;
},
{});
SPXPronunciationAssessmentConfiguration* pronunciationAssessmentConfig =
    [[SPXPronunciationAssessmentConfiguration alloc]init:@"reference text"
                                           gradingSystem:SPXPronunciationAssessmentGradingSystem_HundredMark
                                             granularity:SPXPronunciationAssessmentGranularity_Phoneme];

SPXSpeechRecognizer* speechRecognizer = \
        [[SPXSpeechRecognizer alloc] initWithSpeechConfiguration:speechConfig
                                              audioConfiguration:audioConfig];

// apply the pronunciation assessment configuration to the speech recognizer
[pronunciationAssessmentConfig applyToRecognizer:speechRecognizer];

SPXSpeechRecognitionResult *result = [speechRecognizer recognizeOnce];
SPXPronunciationAssessmentResult* pronunciationAssessmentResult = [[SPXPronunciationAssessmentResult alloc] init:result];
double pronunciationScore = pronunciationAssessmentResult.pronunciationScore;

Parametri di configurazione della valutazione della pronuncia

Questa tabella elenca i parametri di configurazione per la valutazione della pronuncia.

Parametro Descrizione Necessaria?
ReferenceText Testo con cui verrà valutata la pronuncia. Obbligatoria
GradingSystem Sistema di punti per la calibrazione del punteggio. Il sistema assegna un punteggio a virgola mobile da 0 a 5 e un punteggio FivePoint HundredMark a virgola mobile da 0 a 100. Impostazione predefinita: FivePoint. Facoltativo
Granularità Granularità della valutazione. I valori accettati sono , che mostra il punteggio a livello di testo completo, parola e fonema, , che mostra il punteggio a livello di testo completo e parola, , che mostra il punteggio solo a livello di testo Phoneme Word FullText completo. Impostazione predefinita: Phoneme. Facoltativo
EnableMiscue Abilita il calcolo non eseguito. Con questa opzione abilitata, le parole pronunciate verranno confrontate con il testo di riferimento e verranno contrassegnate con omissione/inserimento in base al confronto. I valori accettati sono False e True. Impostazione predefinita: False. Facoltativo
ScenarioId GUID che indica un sistema di punti personalizzato. Facoltativo

Parametri dei risultati della valutazione della pronuncia

In questa tabella sono elencati i parametri dei risultati della valutazione della pronuncia.

Parametro Descrizione
AccuracyScore Accuratezza della pronuncia del parlato. L'accuratezza indica la precisione con cui i fonemi corrispondono alla pronuncia di un parlante nativo. Il punteggio di accuratezza a livello di parola e full-text viene aggregato dal punteggio di accuratezza del livello di fonema.
FluencyScore Fluency del parlato specificato. Fluency indica in che modo il parlato corrisponde all'uso di interruzioni silenziose tra le parole da parte di un parlante nativo.
CompletenessScore Completezza del parlato, determinata calcolando il rapporto tra parole pronunciate e input di testo di riferimento.
PronunciationScore Punteggio complessivo che indica la qualità della pronuncia del parlato specificato. Viene aggregato da AccuracyScore e FluencyScore con CompletenessScore peso.
ErrorType Questo valore indica se una parola viene omessa, inserita o pronunciata in modo non valido rispetto a ReferenceText . I valori possibili None sono , ovvero nessun errore in questa parola, e Omission Insertion Mispronunciation .

Risposte di esempio

Un risultato tipico della valutazione della pronuncia in JSON:

{
  "RecognitionStatus": "Success",
  "Offset": "400000",
  "Duration": "11000000",
  "NBest": [
      {
        "Confidence" : "0.87",
        "Lexical" : "good morning",
        "ITN" : "good morning",
        "MaskedITN" : "good morning",
        "Display" : "Good morning.",
        "PronunciationAssessment":
        {
            "PronScore" : 84.4,
            "AccuracyScore" : 100.0,
            "FluencyScore" : 74.0,
            "CompletenessScore" : 100.0,
        },
        "Words": [
            {
              "Word" : "Good",
              "Offset" : 500000,
              "Duration" : 2700000,
              "PronunciationAssessment":
              {
                "AccuracyScore" : 100.0,
                "ErrorType" : "None"
              }
            },
            {
              "Word" : "morning",
              "Offset" : 5300000,
              "Duration" : 900000,
              "PronunciationAssessment":
              {
                "AccuracyScore" : 100.0,
                "ErrorType" : "None"
              }
            }
        ]
      }
  ]
}

Passaggi successivi