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.
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.
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
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.
Non esiste alcun limite di lunghezza per il parametro dell'argomento.
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))
{
// (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 , CompletenessScore e 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
eDuration
per allineare le sillabe ai rispettivi fonemi corrispondenti. Ad esempio, l'offset iniziale (11700000) della seconda sillabaloʊ
è allineato al terzo fonemal
. 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 suOffset
eDuration
, 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:
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
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.
Contenuto correlato
- Informazioni sul benchmark relativo alla qualità.
- Provare la valutazione della pronuncia in Studio.
- Vedere una demo di valutazione della pronuncia di facile implementazione.
- Guardare la dimostrazione video della valutazione della pronuncia.