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.

Nota

La valutazione della pronuncia usa una versione specifica del modello di riconoscimento vocale, differente dal modello di riconoscimento vocale standard al modello di testo, per garantire una valutazione coerente e accurata della pronuncia.

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.

Di base, l'utilizzo della valutazione della pronuncia costa quanto la trascrizione vocale per il piano tariffario Standard o per il livello di impegno dei prezzi. 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.

Riconoscimento continuo

Se il file audio supera i 30 secondi, usare la modalità continua per l'elaborazione. Il codice di esempio per la modalità continua è disponibile in GitHub nella funzione PronunciationAssessmentContinuousWithFile.

Se il file audio supera i 30 secondi, usare la modalità continua per l'elaborazione.

Se il file audio supera i 30 secondi, usare la modalità continua per l'elaborazione. Il codice di esempio per la modalità continua è disponibile in GitHub nella funzione pronunciationAssessmentContinuousWithFile.

Se il file audio supera i 30 secondi, usare la modalità continua per l'elaborazione. Il codice di esempio per la modalità continua è disponibile in GitHub nella funzione pronunciation_assessment_continuous_from_file.

Se il file audio supera i 30 secondi, usare la modalità continua per l'elaborazione. Il codice di esempio per la modalità continua è disponibile in GitHub.

Se il file audio supera i 30 secondi, usare la modalità continua per l'elaborazione. Il codice di esempio per la modalità continua è disponibile in GitHub nella funzione pronunciationAssessFromFile.

Se il file audio supera i 30 secondi, usare la modalità continua per l'elaborazione. Il codice di esempio per la modalità continua è disponibile in GitHub nella funzione continuousPronunciationAssessment.

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, è possibile usare il codice di esempio seguente.

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

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 per abilitare la valutazione 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();
auto pronunciationConfig = PronunciationAssessmentConfig::Create("", PronunciationAssessmentGradingSystem::HundredMark, PronunciationAssessmentGranularity::Phoneme, false);
pronunciationConfig->EnableProsodyAssessment();
PronunciationAssessmentConfig pronunciationConfig = new PronunciationAssessmentConfig("",
    PronunciationAssessmentGradingSystem.HundredMark, PronunciationAssessmentGranularity.Phoneme, false);
pronunciationConfig.enableProsodyAssessment();
pronunciation_config = speechsdk.PronunciationAssessmentConfig(
    reference_text="",
    grading_system=speechsdk.PronunciationAssessmentGradingSystem.HundredMark,
    granularity=speechsdk.PronunciationAssessmentGranularity.Phoneme,
    enable_miscue=False)
pronunciation_config.enable_prosody_assessment()
var pronunciationAssessmentConfig = new sdk.PronunciationAssessmentConfig(
    referenceText: "",
    gradingSystem: sdk.PronunciationAssessmentGradingSystem.HundredMark,
    granularity: sdk.PronunciationAssessmentGranularity.Phoneme,
    enableMiscue: false);
pronunciationAssessmentConfig.enableProsodyAssessment();
SPXPronunciationAssessmentConfiguration *pronunicationConfig =
[[SPXPronunciationAssessmentConfiguration alloc] init:@"" gradingSystem:SPXPronunciationAssessmentGradingSystem_HundredMark granularity:SPXPronunciationAssessmentGranularity_Phoneme enableMiscue:false];
[pronunicationConfig enableProsodyAssessment];
let pronAssessmentConfig = try! SPXPronunciationAssessmentConfiguration("",
    gradingSystem: .hundredMark,
    granularity: .phoneme,
    enableMiscue: false)
pronAssessmentConfig.enableProsodyAssessment()

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

La valutazione della prosodia è disponibile solo nel locale en-US.

Per esplorare la valutazione della prosodia, eseguire l'aggiornamento all'SDK versione 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.

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))
{
    // (Optional) get the session ID
    speechRecognizer.SessionStarted += (s, e) => {
        Console.WriteLine($"SESSION ID: {e.SessionId}");
    };
    pronunciationAssessmentConfig.ApplyTo(speechRecognizer);
    var speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync();

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

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

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);
// (Optional) get the session ID
speechRecognizer->SessionStarted.Connect([](const SessionEventArgs& e) {
    std::cout << "SESSION ID: " << e.SessionId << std::endl;
});
pronunciationAssessmentConfig->ApplyTo(speechRecognizer);
speechRecognitionResult = speechRecognizer->RecognizeOnceAsync().get();

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

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

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

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

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

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

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

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

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)
# (Optional) get the session ID
speech_recognizer.session_started.connect(lambda evt: print(f"SESSION ID: {evt.session_id}"))
pronunciation_assessment_config.apply_to(speech_recognizer)
speech_recognition_result = speech_recognizer.recognize_once()
# The pronunciation assessment result as a Speech SDK object
pronunciation_assessment_result = speechsdk.PronunciationAssessmentResult(speech_recognition_result)

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

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];
// (Optional) get the session ID
[speechRecognizer addSessionStartedEventHandler: ^ (SPXRecognizer *sender, SPXSessionEventArgs *eventArgs) {
    NSLog(@"SESSION ID: %@", eventArgs.sessionId);
}];
[pronunciationAssessmentConfig applyToRecognizer:speechRecognizer];

SPXSpeechRecognitionResult *speechRecognitionResult = [speechRecognizer recognizeOnce];

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

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

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)
// (Optional) get the session ID
speechRecognizer.addSessionStartedEventHandler { (sender, evt) in
	print("SESSION ID: \(evt.sessionId)")
try! pronConfig.apply(to: speechRecognizer)

let speechRecognitionResult = try? speechRecognizer.recognizeOnce()

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

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

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.

Nota

La valutazione della prosodia è disponibile solo nel locale 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
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 tecnologico tek·no·lɔ·dʒi·kl
Ciao hɛloʊ hɛ·loʊ
Fortuna lʌk lʌk
Fotosintesi fotosintesi fotosintesi

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
Ciao h eh l ow h ɛ l oʊ
Fortuna l ah k l ʌ k
Fotosintesi [Since there's no meaning to be inferred in the phonetic representation, no improvements are made.] 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

Calcolo del punteggio di pronuncia

I punteggi di pronuncia vengono calcolati ponderando accuratezza, prosodia, fluidità e punteggi di completezza in base a formule specifiche per scenari di lettura e pronuncia.

Quando si ordinano i punteggi di accuratezza, prosodia, fluidità e completezza da basso a alto (se ogni punteggio è disponibile) e che rappresenta il punteggio più basso come s0 a s3, il punteggio di pronuncia viene calcolato come segue:

Per lo scenario di lettura:

  • Con punteggio prosodia: PronScore = 0,4 * s0 + 0,2 * s1 + 0,2 * s2 + 0,2 * s3
  • Senza punteggio prosodia: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2

Per lo scenario di pronuncia (il punteggio di completezza non è applicabile):

  • Con punteggio prosodia: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
  • Senza punteggio prosodia: PronScore = 0,6 * s0 + 0,4 * s1

Questa formula fornisce un calcolo ponderato in base all'importanza di ogni punteggio, garantendo una valutazione completa della pronuncia.

Valutazione del contenuto

Importante

La valutazione del contenuto (anteprima) tramite Speech SDK verrà ritirata a luglio 2025. È invece possibile usare Azure OpenAI in Azure AI Foundry Models per ottenere i risultati della valutazione del contenuto come descritto in questa sezione.

Per alcuni discorsi riconosciuti, è anche possibile ottenere risultati di valutazione del contenuto per vocabolario, grammatica e pertinenza dell'argomento. È possibile usare un modello di chat, ad esempio Azure OpenAI gpt-4o , per ottenere i risultati della valutazione del contenuto. Per altre informazioni sull'uso dei modelli di chat, vedere Modelli OpenAI di Azure e documentazione di riferimento sui completamenti delle chat dell'API di inferenza del modello di intelligenza artificiale di Azure.

I messaggi utente e di sistema vengono usati per impostare il contesto per il modello di chat. Nell'esempio seguente il messaggio utente contiene il saggio da valutare e il messaggio di sistema fornisce istruzioni su come valutare il saggio.

{
  "messages": [
    {
      "role": "system",
      "content": "You are an English teacher and please help to grade a student's essay from vocabulary and grammar and topic relevance on how well the essay aligns with the title, and output format as: {\"vocabulary\": *.*(0-100), \"grammar\": *.*(0-100), \"topic\": *.*(0-100)}."
    },
    {
      "role": "user",
      "content": "Example1: this essay: \"sampleSentence1\" has vocabulary and grammar scores of ** and **, respectively. Example2: this essay: \"sampleSentence2\" has vocabulary and grammar scores of ** and **, respectively. Example3: this essay: \"sampleSentence3\" has vocabulary and grammar scores of ** and **, respectively. The essay for you to score is \"sendText\", and the title is \"topic\". The transcript is from speech recognition so that please first add punctuations when needed, remove duplicates and unnecessary un uh from oral speech, then find all the misuse of words and grammar errors in this essay, find advanced words and grammar usages, and finally give scores based on this information. Please only respond as this format {\"vocabulary\": *.*(0-100), \"grammar\": *.*(0-100)}, \"topic\": *.*(0-100)}. [THE TRANSCRIPT FROM SPEECH RECOGNITION IS REDACTED FOR BREVITY]"
    }
  ]
}