Condividi tramite


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.

In SpeechRecognizer è possibile specificare la lingua che si vuole imparare o praticare per migliorare la pronuncia. L'impostazione locale predefinita è 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 della versione locale da impostare per una lingua che ha più versioni locali, provare ogni impostazione locale separatamente. Ad esempio, per lo spagnolo, provare es-ES e es-MX e determinare quale versione locale sia più adatta al proprio scenario.

È necessario creare un oggetto PronunciationAssessmentConfig. È possibile impostare EnableProsodyAssessment e EnableContentAssessmentWithTopic per abilitare la valutazione del contenuto e della prosodia. Per altre informazioni, vedere i 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 della lettura della lingua. Non impostare il testo di riferimento se si vuole eseguire una valutazione senza script.

Per le differenze di prezzo tra la valutazione con script e quella senza script, vedere i Prezzi.
GradingSystem Sistema di punti per la calibrazione del punteggio. FivePoint assegna un punteggio in virgola mobile da 0 a 5. HundredMark assegna un punteggio in virgola mobile da 0 a 100. Impostazione predefinita: FivePoint.
Granularity Determina il livello di granularità di valutazione più basso. Vengono restituiti punteggi per i livelli maggiori o uguali al valore minimo. I valori accettati sono Phoneme, che mostra il punteggio a livello di testo completo, parola, sillaba e fonema, Word, che mostra il punteggio a livello di testo completo e parola o FullText, che mostra solo il punteggio a livello di testo completo. Il testo di riferimento completo fornito può essere una parola, una frase o un paragrafo. Dipende dal testo di 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 dell'errore è 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 sopra 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 le valutazioni del contenuto e della prosodia, eseguire l'aggiornamento alla versione SDK 1.35.0 o successiva.

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

L'abilitazione della valutazione della prosodia è facoltativa. Se questo metodo viene utilizzato, restituisce il valore del risultato ProsodyScore.
EnableContentAssessmentWithTopic Abilita la valutazione del contenuto. Una valutazione del contenuto fa parte della valutazione senza script per lo scenario di apprendimento della lingua parlata. Fornendo una descrizione, è possibile migliorare la comprensione della valutazione dell'argomento specifico di cui si parla. In C#, ad esempio, scegliere 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 l'impostazione locale en-US.

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 relativi a parola, sillaba e fonema non sono disponibili se si usano oggetti SDK con SDK Voce 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 relativi a parola, sillaba e fonema sono disponibili se si usano oggetti SDK con SDK Voce 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 con script o senza script, è possibile ottenere risultati di valutazione della pronuncia diversi. La valutazione con script è per lo scenario di apprendimento della lettura della lingua. La valutazione senza script è per lo scenario di apprendimento della lingua parlata.

Nota

Per le differenze di prezzo tra la valutazione con script e quella senza script, vedere i Prezzi.

Risultati della valutazione con script

Questa tabella elenca alcuni dei risultati delle principali valutazioni della pronuncia per la valutazione con script, ossia 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 sillaba, parola e testo completo vengono aggregati dal punteggio di accuratezza a livello di fonema e perfezionati con gli obiettivi di valutazione. A livello di fonema,
a livello di sillaba (solo en-US),
a livello di parola,
a livello di testo completo
FluencyScore Scorrevolezza del parlato specificato. La scorrevolezza indica quanto il parlato corrisponda all'uso di un parlante nativo di interruzioni silenziose tra le parole. A livello di testo completo
CompletenessScore Completezza del discorso, calcolata in base al rapporto tra parole pronunciate e testo di riferimento di input. A livello di testo completo
ProsodyScore Prosodia del parlato specifico. La prosodia indica il grado di naturalezza del discorso, inclusi l'accento, l'intonazione, la velocità di espressione e il ritmo. A livello di testo completo
PronScore Punteggio complessivo della qualità della pronuncia del parlato specificato. PronScore viene calcolato in modo pesato da AccuracyScore, FluencyScore, CompletenessScoree ProsodyScore, a condizione che ProsodyScore e CompletenessScore siano disponibili. Se uno di questi punteggi non è disponibile, PronScore non lo terrà in considerazione. A livello di testo completo
ErrorType Questo valore indica il tipo di errore rispetto al testo di riferimento. Le opzioni includono l'omissione, l'inserimento o l'inserimento con un'interruzione errata di una parola. Indica anche un'interruzione mancante in corrispondenza della punteggiatura. Inoltre, indica se una parola viene pronunciata male o se è monotonamente crescente, calante o piatta nell'espressione. I valori possibili sono None, se non sono presenti errori per questa parola, Omission, Insertion, Mispronunciation, UnexpectedBreak, MissingBreak e Monotone. Il tipo di errore può essere Mispronunciation quando la pronuncia AccuracyScore di una parola è inferiore a 60. A livello di parola

Risultati della valutazione senza script

Questa tabella elenca alcuni dei risultati delle principali valutazioni della pronuncia per la valutazione senza script, ossia per lo scenario del parlato.

I parametri VocabularyScore, GrammarScore e TopicScore confluiscono nella valutazione combinata del contenuto.

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. A livello di fonema,
a livello di sillaba (solo en-US),
a livello di parola,
a livello di testo completo
FluencyScore Scorrevolezza del parlato specificato. La scorrevolezza indica quanto il parlato corrisponda all'uso di un parlante nativo di interruzioni silenziose tra le parole. A livello di testo completo
ProsodyScore Prosodia del parlato specifico. La prosodia indica il grado di naturalezza del discorso, inclusi l'accento, l'intonazione, la velocità di espressione e il ritmo. A livello di testo completo
VocabularyScore Competenza nell'uso del lessico. 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. A livello di testo completo
GrammarScore Correttezza nell'uso della grammatica e varietà delle strutture della frase. L'accuratezza lessicale, l'accuratezza grammaticale e la varietà delle strutture della frase aumentano congiuntamente il livello grammaticale. A livello di testo completo
TopicScore Livello di comprensione e coinvolgimento con l'argomento, che fornisce informazioni dettagliate sulla capacità del parlante di esprimere i propri pensieri e idee in modo efficace e la capacità di confrontarsi con l'argomento. A livello di testo completo
PronScore Punteggio complessivo della qualità della pronuncia del parlato specificato. PronScore viene calcolato in modo pesato da AccuracyScore, FluencyScore e ProsodyScore, a condizione che ProsodyScore sia disponibile. Se il punteggio ProsodyScore non è disponibile, PronScore non lo terrà in considerazione. A livello di testo completo
ErrorType Una parola viene pronunciata male, inserita erroneamente con un'interruzione o con una mancata interruzione in corrispondenza della punteggiatura. Indica inoltre se la pronuncia è monotonamente crescente, calante o piatta nell'espressione. I valori possibili sono None, se non sono presenti errori per questa parola, Mispronunciation, UnexpectedBreak, MissingBreak e Monotone. A livello di parola

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

Campo Descrizione
ProsodyScore Punteggio della prosodia dell'intera espressione.
Feedback Feedback a livello di parola, inclusi Break e Intonation.
Break
ErrorTypes Tipi di errore correlati alle 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 per stabilire 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, presenta 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 una sensibilità al rilevamento delle variabili per queste due interruzioni, è possibile assegnare soglie diverse ai campi UnexpectedBreak - Confidence e MissingBreak - Confidence.
Intonation Indica l'intonazione nel parlato.
ErrorTypes Tipi di errore correlati all'intonazione, attualmente supportano solo Monotono. Se è presente Monotone nel campo ErrorTypes, l'espressione viene rilevata come monotonale. Monotono viene rilevato a livello dell'intera espressione, ma il tag viene assegnato a tutte le parole. Tutte le parole nella stessa espressione condividono le stesse informazioni di rilevamento monotonale.
Monotone Indica il parlato monotonale.
Thresholds (Monotone Confidence) I campi Monotone - SyllablePitchDeltaConfidence sono riservati al rilevamento monotonale personalizzato dall'utente. Se non si è soddisfatti delle scelte fornite in relazione a Monotono, 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 (11700000) della seconda sillaba loʊ è allineato al terzo fonema l. L'offset rappresenta il tempo 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 corrispondenti 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 le varianti locali

Nella tabella seguente sono riepilogate le funzionalità supportate dalle varianti locali. Per altri dettagli, vedere le sezioni seguenti. Se le varianti locali necessarie non sono elencate nella tabella seguente per la funzionalità supportata, compilare questo modulo di richiesta per ricevere assistenza.

Alfabeto fonetico Alfabeto fonetico internazionale SAPI
Nome fonema 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). Generalmente una parola viene pronunciata sillaba per sillaba anziché fonema per fonema. Il raggruppamento in sillabe è più leggibile e allineato alle abitudini del parlato.

La valutazione della pronuncia supporta i gruppi di 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 del fonema in en-US con IPA e in en-US e zh-CN con SAPI.

Per le varianti locali che supportano il nome del fonema, quest'ultimo viene fornito insieme al punteggio. I nomi dei fonemi aiutano a capire quali fonemi sono stati pronunciati in modo accurato e quali in modo 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 pronunciati

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 pronunciato completo per la parola Hello, è possibile concatenare il primo fonema pronunciato con il punteggio di attendibilità più alto per ogni fonema previsto. Nel risultato della valutazione seguente, quando si pronuncia la parola hello, i fonemi IPA previsti sono h ɛ l oʊ. Tuttavia, i fonemi pronunciati 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