Usare la valutazione della pronuncia

Questo articolo illustra come valutare la pronuncia con il riconoscimento vocale tramite Speech SDK. La valutazione della pronuncia valuta la pronuncia vocale e fornisce ai parlanti un feedback sull'accuratezza e sulla scorrevolezza dell'audio parlato.

Usare la valutazione della pronuncia in modalità streaming

La valutazione della pronuncia supporta la modalità di streaming ininterrotta. Il tempo di registrazione può essere illimitato tramite SDK Voce. Finché non si arresta la registrazione, il processo di valutazione non termina e si può sospendere e riprendere la valutazione secondo le esigenze.

Per informazioni sulla disponibilità della valutazione della pronuncia, consultare lingue supportate e aree disponibili.

In termini di baseline, l'utilizzo della valutazione della pronuncia ha lo stesso costo del riconoscimento vocale, con prezzi del pagamento in base al consumo o del livello di impegno. Se si acquista un livello di impegno per il riconoscimento vocale, la spesa per la valutazione della pronuncia va verso il raggiungimento dell'impegno. Per altre informazioni, vedere Prezzi.

Per informazioni su come usare la valutazione della pronuncia in modalità di streaming nella propria applicazione, vedere codice di esempio.

Per informazioni su come usare la valutazione della pronuncia in modalità di streaming nella propria applicazione, vedere codice di esempio.

Per informazioni su come usare la valutazione della pronuncia in modalità di streaming nella propria applicazione, vedere codice di esempio.

Per informazioni su come usare la valutazione della pronuncia in modalità di streaming nella propria applicazione, vedere codice di esempio.

Per informazioni su come usare la valutazione della pronuncia in modalità di streaming nella propria applicazione, vedere codice di esempio.

Per informazioni su come usare la valutazione della pronuncia in modalità di streaming nella propria applicazione, vedere codice di esempio.

Per informazioni su come usare la valutazione della pronuncia in modalità di streaming nella propria applicazione, vedere codice di esempio.

Impostare i parametri di configurazione

Nota

La valutazione della pronuncia non è disponibile con SDK Voce per Go. È possibile leggere i concetti in questa guida. Selezionare un altro linguaggio di programmazione per la soluzione.

SpeechRecognizerIn è possibile specificare la lingua per imparare o praticare il miglioramento della pronuncia. Le impostazioni locali predefinite sono en-US. Per informazioni su come specificare il linguaggio di apprendimento per la valutazione della pronuncia nella propria applicazione, vedere codice di esempio.

Suggerimento

Se non si è certi delle impostazioni locali da impostare per una lingua con più impostazioni locali, provare separatamente ogni impostazione locale. Ad esempio, per spagnolo, provare es-ES e es-MX. Determinare le impostazioni locali più alte per lo scenario.

È necessario creare un PronunciationAssessmentConfig oggetto . È possibile impostare EnableProsodyAssessment e EnableContentAssessmentWithTopic per abilitare la valutazione del contenuto e della prosodia. Per altre informazioni, vedere Metodi di configurazione.

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")

Questa tabella elenca alcuni dei parametri di configurazione chiave per la valutazione della pronuncia.

Parametro Descrizione
ReferenceText Testo rispetto al quale viene valutata la pronuncia.

ReferenceText è facoltativo. Impostare il testo di riferimento se si vuole eseguire una valutazione con script per lo scenario di apprendimento del linguaggio di lettura. Non impostare il testo di riferimento se si vuole eseguire una valutazione senzascript.

Per le differenze di prezzo tra la valutazione scriptata e nonscript, vedere Prezzi.
GradingSystem Sistema di punti per la calibrazione del punteggio. FivePoint assegna un punteggio a virgola mobile da 0 a 5. HundredMark fornisce un punteggio a virgola mobile da 0 a 100. Impostazione predefinita: FivePoint.
Granularity Determina il livello di granularità di valutazione più basso. Restituisce punteggi per i livelli maggiori o uguali al valore minimo. I valori accettati sono Phoneme, che mostra il punteggio sul livello full-text, word, syllable e phoneme, Word, che mostra il punteggio sul testo completo e il livello di parola oppure FullText, che mostra il punteggio solo a livello di testo completo. Il testo di riferimento completo fornito può essere una parola, una frase o un paragrafo. Dipende dal testo del riferimento di input. Impostazione predefinita: Phoneme.
EnableMiscue Abilita il calcolo dell’errore quando le parole pronunciate vengono confrontate con il testo di riferimento. L'abilitazione di miscue è facoltativa. Se questo valore è True, il valore del risultato ErrorType può essere impostato su Omission o Insertion in base al confronto. I valori sono False e True. Impostazione predefinita: False. Per abilitare il calcolo dell’errore, impostare EnableMiscue su True. È possibile fare riferimento al frammento di codice sotto la tabella.
ScenarioId GUID per un sistema di punti personalizzato.

Metodi di configurazione

Questa tabella elenca alcuni dei metodi facoltativi che è possibile impostare per l'oggetto PronunciationAssessmentConfig .

Nota

Le valutazioni di prosodia e contenuto sono disponibili solo nelle impostazioni locali en-US.

Per esplorare i contenuti e le valutazioni prosodia, eseguire l'aggiornamento all'SDK versione 1.35.0 o successiva.

metodo Descrizione
EnableProsodyAssessment Abilita la valutazione prosodia per la valutazione della pronuncia. Questa funzionalità valuta aspetti come stress, intonazione, velocità di conversazione e ritmo. Questa funzionalità fornisce informazioni dettagliate sulla naturalezza e l'espressività del discorso.

L'abilitazione della valutazione prosodia è facoltativa. Se questo metodo viene chiamato, viene restituito il valore del ProsodyScore risultato.
EnableContentAssessmentWithTopic Abilita la valutazione del contenuto. Una valutazione del contenuto fa parte della valutazione nonscripted per lo scenario di apprendimento linguistico. Fornendo una descrizione, è possibile migliorare la comprensione della valutazione dell'argomento specifico di cui si parla. Ad esempio, in C# chiamare pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting");. È possibile sostituire "greeting" con il testo desiderato per descrivere un argomento. La descrizione non ha limiti di lunghezza e attualmente supporta solo le en-US impostazioni locali.

Ottieni i risultati della valutazione della pronuncia

Quando viene riconosciuto il parlato, è possibile richiedere i risultati della valutazione della pronuncia come oggetti SDK o una stringa JSON.

using (var speechRecognizer = new SpeechRecognizer(
    speechConfig,
    audioConfig))
{
    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);
}

I risultati di Word, sillabe e phoneme non sono disponibili usando oggetti SDK con Speech SDK per C++. I risultati relativi a word, syllable e phoneme (parola, sillaba, fonema) sono disponibili solo nella stringa JSON.

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

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);

Per informazioni su come specificare il linguaggio di apprendimento per la valutazione della pronuncia nella propria applicazione, vedere codice di esempio.

Per lo sviluppo di applicazioni Android, i risultati delle parole, sillabe e phoneme sono disponibili usando oggetti SDK con Speech SDK per Java. I risultati sono disponibili anche nella stringa JSON. Per lo sviluppo di applicazioni Java Runtime (JRE), i risultati relativi a word, syllable e phoneme (parola, sillaba, fonema) sono disponibili solo nella stringa JSON.

SpeechRecognizer speechRecognizer = new SpeechRecognizer(
    speechConfig,
    audioConfig);

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);

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);
},
{});

Per informazioni su come specificare il linguaggio di apprendimento per la valutazione della pronuncia nella propria applicazione, vedere codice di esempio.

speech_recognizer = speechsdk.SpeechRecognizer(
        speech_config=speech_config, \
        audio_config=audio_config)

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)

Per informazioni su come specificare il linguaggio di apprendimento per la valutazione della pronuncia nella propria applicazione, vedere codice di esempio.

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

[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];

Per informazioni su come specificare il linguaggio di apprendimento per la valutazione della pronuncia nella propria applicazione, vedere codice di esempio.

let speechRecognizer = try! SPXSpeechRecognizer(speechConfiguration: speechConfig, audioConfiguration: audioConfig)

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)

Parametri dei risultati

A seconda che si usi una valutazione scripted o unscripted , è possibile ottenere risultati di valutazione della pronuncia diversi. La valutazione con script è per lo scenario di apprendimento del linguaggio di lettura. La valutazione non definita è per lo scenario di apprendimento linguistico parlante.

Nota

Per le differenze di prezzo tra la valutazione scriptata e nonscript, vedere Prezzi.

Risultati della valutazione con script

Questa tabella elenca alcuni dei risultati chiave della valutazione della pronuncia per la valutazione con script o per lo scenario di lettura.

Parametro Descrizione Granularità
AccuracyScore Accuratezza della pronuncia del parlato. L'accuratezza indica quanto i fonemi corrispondano alla pronuncia di un parlante nativo. I punteggi di accuratezza a livello di sillabe, parola e full-text vengono aggregati dal punteggio di accuratezza a livello di fonema e perfezionati con gli obiettivi di valutazione. livello Telefono me,
Livello syllable (solo en-US),
Livello parola,
Livello full-text
FluencyScore Scorrevolezza del parlato specificato. La scorrevolezza indica quanto il parlato corrisponda all'uso di un parlante nativo di interruzioni silenziose tra le parole. Livello full-text
CompletenessScore Completezza del discorso, calcolata in base al rapporto tra parole pronunciate e testo di riferimento di input. Livello full-text
ProsodyScore Prosodia del discorso dato. Prosodia indica quanto sia naturale il discorso specificato, tra cui stress, intonazione, velocità di pronuncia e ritmo. Livello full-text
PronScore Punteggio complessivo della qualità della pronuncia del discorso specificato. PronScore viene aggregato da AccuracyScore, FluencyScore e CompletenessScore con un peso. Livello full-text
ErrorType Questo valore indica il tipo di errore rispetto al testo di riferimento. Le opzioni includono se una parola viene omessa, inserita o inserita in modo non corretto con un'interruzione. Indica anche un'interruzione mancante in corrispondenza della punteggiatura. Indica inoltre se una parola è pronunciata male o a aumento monotonico, caduta o piatto sull'espressione. I valori possibili non sono None validi per questa parola, Omission, Insertion, MispronunciationUnexpectedBreak, MissingBreak, e Monotone. Il tipo di errore può essere Mispronunciation quando la pronuncia AccuracyScore di una parola è inferiore a 60. Livello parola

Risultati di valutazione non prescritti

Questa tabella elenca alcuni dei risultati chiave della valutazione della pronuncia per la valutazione non descritta o per lo scenario di pronuncia.

VocabularyScoreI parametri , GrammarScoree TopicScore vengono rollup alla valutazione del contenuto combinata.

Nota

Le valutazioni di prosodia e contenuto sono disponibili solo nelle impostazioni locali en-US.

Parametro di risposta Descrizione Granularità
AccuracyScore Accuratezza della pronuncia del parlato. L'accuratezza indica quanto i fonemi corrispondano alla pronuncia di un parlante nativo. I punteggi di accuratezza a livello di sillabe, parola e full-text vengono aggregati dal punteggio di accuratezza a livello di fonema e perfezionati con gli obiettivi di valutazione. livello Telefono me,
Livello syllable (solo en-US),
Livello parola,
Livello full-text
FluencyScore Scorrevolezza del parlato specificato. La scorrevolezza indica quanto il parlato corrisponda all'uso di un parlante nativo di interruzioni silenziose tra le parole. Livello full-text
ProsodyScore Prosodia del discorso dato. Prosodia indica quanto sia naturale il discorso specificato, tra cui stress, intonazione, velocità di pronuncia e ritmo. Livello full-text
VocabularyScore Competenza nell'utilizzo lessicale. Valuta l'uso effettivo delle parole e la loro adeguatezza all'interno del contesto specificato per esprimere le idee in modo accurato e il livello di complessità lessicale. Livello full-text
GrammarScore Correttezza nell'uso della grammatica e della varietà di modelli di frase. Accuratezza lessicale, accuratezza grammaticale e diversità delle strutture di frasi elevano congiuntamente errori grammaticali. Livello full-text
TopicScore Livello di comprensione e coinvolgimento con l'argomento, che fornisce informazioni dettagliate sulla capacità del relatore di esprimere i propri pensieri e idee in modo efficace e la capacità di interagire con l'argomento. Livello full-text
PronScore Punteggio complessivo della qualità della pronuncia del discorso specificato. Questo valore viene aggregato da AccuracyScore, FluencyScoree CompletenessScore con peso. Livello full-text
ErrorType Una parola viene pronunciata male, inserita in modo non corretto con un'interruzione o manca un'interruzione alla punteggiatura. Indica anche se una pronuncia è in aumento monotonico, caduta o piatta sull'espressione. I valori possibili non sono None validi per nessun errore in questa parola, Mispronunciation, UnexpectedBreakMissingBreak, e Monotone. Livello parola

La tabella seguente descrive i risultati della valutazione prosodia in modo più dettagliato:

Campo Descrizione
ProsodyScore Punteggio prosodia dell'intera espressione.
Feedback Feedback a livello di parola, inclusi Break e Intonation.
Break
ErrorTypes Tipi di errore correlati a interruzioni, inclusi UnexpectedBreak e MissingBreak. La versione corrente non fornisce il tipo di errore di interruzione. È necessario impostare le soglie nei campi UnexpectedBreak – Confidence e MissingBreak – confidence decidere se è presente un'interruzione imprevista o un'interruzione mancante prima della parola.
UnexpectedBreak Indica un'interruzione imprevista prima della parola.
MissingBreak Indica un'interruzione mancante prima della parola.
Thresholds Le soglie suggerite per entrambi i punteggi di attendibilità sono 0,75. Ciò significa che, se il valore di UnexpectedBreak – Confidence è maggiore di 0,75, ha un'interruzione imprevista. Se il valore di MissingBreak – confidence è maggiore di 0,75, presenta un'interruzione mancante. Anche se 0,75 è un valore consigliato, è preferibile modificare le soglie in base al proprio scenario. Se si vuole avere la sensibilità di rilevamento delle variabili in queste due interruzioni, è possibile assegnare soglie diverse ai UnexpectedBreak - Confidence campi e MissingBreak - Confidence .
Intonation Indica l'intonazione nel parlato.
ErrorTypes Tipi di errore correlati all'innation, attualmente supportano solo Monotone. Monotone Se esiste nel campo ErrorTypes, l'espressione viene rilevata come monotonica. Il monotono viene rilevato nell'intera espressione, ma il tag viene assegnato a tutte le parole. Tutte le parole nella stessa espressione condividono le stesse informazioni di rilevamento monotono.
Monotone Indica il parlato monotonico.
Thresholds (Monotone Confidence) I campi Monotone - SyllablePitchDeltaConfidence sono riservati per il rilevamento monotono personalizzato dall'utente. Se non si è soddisfatti della decisione di monotono fornita, modificare le soglie in questi campi per personalizzare il rilevamento in base alle preferenze.

Esempio di risultato JSON

I risultati della valutazione della pronuncia con script per la parola pronunciata "hello" vengono visualizzati come stringa JSON nell'esempio seguente.

  • L'alfabeto fonetico è IPA.
  • Le sillabe vengono restituite insieme ai fonemi relativamente alla stessa parola.
  • È possibile usare i valori Offset e Duration per allineare le sillabe ai rispettivi fonemi corrispondenti. Ad esempio, l'offset iniziale (117000000) del secondo sillabe loʊ è allineato al terzo fonema, l. L'offset rappresenta l'ora in cui inizia il riconoscimento vocale nel flusso audio. Il valore viene misurato in unità di 100 nanosecondi. Per altre informazioni su Offset e Duration, vedere proprietà della risposta.
  • Ci sono cinque NBestPhonemes che corrispondono al numero di fonemi pronunciati richiesti.
  • All'interno di Phonemes, i fonemi pronunciati con maggiore probabilità erano ə invece del fonema ɛ previsto. Il fonema ɛ previsto ha ricevuto solo un punteggio di attendibilità pari a 47. Altre potenziali corrispondenze hanno ricevuto punteggi di attendibilità pari a 52, 17 e 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
                        }
                    ]
                }
            ]
        }
    ]
}

È possibile ottenere i punteggi di valutazione della pronuncia per:

  • Full-text
  • Word
  • Gruppi sillabe
  • Fonemi in formato SAPI o IPA

Funzionalità supportate per impostazioni locali

Nella tabella seguente sono riepilogate le funzionalità supportate dalle impostazioni locali. Per altre informazioni, vedere le sezioni seguenti.

alfabeto Telefono me IPA SAPI
nome Telefono me en-US en-US, zh-CN
Gruppo di sillabe en-US en-US
Fonema pronunciato en-US en-US

Gruppi sillabe

La valutazione della pronuncia può fornire risultati di valutazione a livello di sillabe (syllable). Una parola viene in genere pronunciata da sillabe da sillabe anziché fonemi da fonema. Il raggruppamento in sillabe è più leggibile e allineato alle abitudini di parlare.

La valutazione della pronuncia supporta i gruppi sillabe solo in en-US con IPA e con SAPI.

Nella tabella seguente vengono confrontati i fonemi di esempio con le sillabe corrispondenti.

Parola di esempio Fonemi Sillabe
Tecnologico teknələdʒɪkl tek·nə·lɑ·dʒɪkl
hello hɛloʊ hɛ·loʊ
Fortuna lʌk lʌk
Fotosintesi foʊtəsɪnθəsɪs foʊ·tə·sɪn·θə·sɪs

Per richiedere risultati a livello di sillabe insieme ai fonemi, impostare il parametro di configurazione della granularità su Phoneme.

Formato alfabeto fonetico

La valutazione della pronuncia supporta il nome phoneme in en-US con IPA e in en-US e zh-CN con SAPI.

Per le impostazioni locali che supportano il nome phoneme, il nome phoneme viene fornito insieme al punteggio. Telefono me i nomi consentono di identificare i fonemi pronunciati in modo accurato o impreciso. Per altre versioni locali, è possibile ottenere solo il punteggio relativo al fonema.

La tabella seguente confronta i fonemi SAPI di esempio con i fonemi IPA corrispondenti.

Parola di esempio Fonemi SAPI Fonemi IPA
hello h eh l ow h ɛ l oʊ
Fortuna l ah k l ʌ k
Fotosintesi f ow t ax s ih n th ax s ih s f oʊ t ɪ n θ ɪ s ɪ s

Per richiedere fonemi IPA, impostare l'alfabeto fonetico su IPA. Se non si specifica l'alfabeto, i fonemi sono in formato SAPI per impostazione predefinita.

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"

Valutare i fonemi vocali

Con i fonemi pronunciati, è possibile ottenere punteggi di attendibilità che indicano la probabilità che i fonemi pronunciati corrispondano ai fonemi previsti.

La valutazione della pronuncia supporta i fonemi pronunciati in en-US con IPA e con SAPI.

Ad esempio, per ottenere il suono parlato completo per la parola Hello, è possibile concatenare il primo fonema parlato per ogni fonema previsto con il punteggio di attendibilità più alto. Nel risultato della valutazione seguente, quando si parla la parola hello, i fonemi IPA previsti sono h ɛ l oʊ. Tuttavia, i fonemi parlati effettivi sono h ə l oʊ. In questo esempio sono disponibili cinque possibili candidati per ogni fonema previsto. Il risultato della valutazione indica che il fonema pronunciato più probabile era ə invece del fonema ɛ previsto. Il fonema ɛ previsto ha ricevuto solo un punteggio di attendibilità pari a 47. Altre potenziali corrispondenze hanno ricevuto punteggi di attendibilità pari a 52, 17 e 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
                        }
                    ]
                }
            ]
        }
    ]
}

Per indicare se e di quanti fonemi pronunciati potenziali ottenere i punteggi di attendibilità, impostare il parametro NBestPhonemeCount su un valore intero, ad esempio 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