Verwenden Sie die Aussprachebewertung

In diesem Artikel erfahren Sie, wie Sie die Sprachausgabe eines Benutzers mit Sprache in Text im Speech SDK auswerten. Die Aussprachebewertung gibt Sprechern Feedback zur Genauigkeit und Flüssigkeit gesprochener Sprache.

Hinweis

Die Aussprachebewertung verwendet eine bestimmte Version des Sprach-zu-Text-Modells, die sich von der Standardsprache zum Textmodell unterscheidet, um eine konsistente und genaue Aussprachebewertung sicherzustellen.

Verfügbarkeit und Preise

Informationen zur Verfügbarkeit der Aussprachebewertung finden Sie unter unterstützten Sprachen und verfügbaren Regionen.

Die Nutzung der Aussprachebewertung kostet genauso viel wie die Preise die Spracherkennung auf den Stufen Standard oder Mindestabnahme. Wenn Sie eine Verpflichtungsstufe für Sprache zu Text kaufen, werden die Ausgaben für Aussprachebewertung auf die Erfüllung der Verpflichtung angerechnet. Weitere Informationen finden Sie unter "Preise".

Streaming vs. kontinuierlicher Modus

Die Aussprachebewertung unterstützt den unterbrechungsfreien Streamingmodus. Die Aufzeichnungszeit kann über das Speech SDK unbegrenzt sein. Solange Sie die Aufzeichnung nicht beenden, wird der Auswertungsprozess nicht beendet, und Sie können die Auswertung bequem anhalten und fortsetzen.

Informationen zur Verwendung der Aussprachebewertung im Streamingmodus in Ihrer eigenen Anwendung finden Sie unter sample-Code.

Informationen zur Verwendung der Aussprachebewertung im Streamingmodus in Ihrer eigenen Anwendung finden Sie unter sample-Code.

Informationen zur Verwendung der Aussprachebewertung im Streamingmodus in Ihrer eigenen Anwendung finden Sie unter sample-Code.

Informationen zum Verwenden der Aussprachebewertung im Streamingmodus in Ihrer eigenen Anwendung finden Sie unter sample-Code oder testen Sie die Azure Speech im Foundry Tools Toolkit.

Informationen zur Verwendung der Aussprachebewertung im Streamingmodus in Ihrer eigenen Anwendung finden Sie unter sample-Code.

Informationen zur Verwendung der Aussprachebewertung im Streamingmodus in Ihrer eigenen Anwendung finden Sie unter sample-Code.

Informationen zur Verwendung der Aussprachebewertung im Streamingmodus in Ihrer eigenen Anwendung finden Sie unter sample-Code.

Wenn Ihre Audiodatei 30 Sekunden überschreitet, verwenden Sie den fortlaufenden Modus für die Verarbeitung. Im fortlaufenden Modus wird die EnableMiscue Option nicht unterstützt. Zum Abrufen Omission und Insertion Tags müssen Sie die erkannten Ergebnisse mit dem Referenztext vergleichen. Sie finden eine Beispielimplementierung für den fortlaufenden Modus auf GitHub unter der Funktion PronunciationAssessmentContinuousWithFile.

Wenn Ihre Audiodatei 30 Sekunden überschreitet, verwenden Sie den fortlaufenden Modus für die Verarbeitung. Im fortlaufenden Modus wird die EnableMiscue Option nicht unterstützt. Zum Abrufen Omission und Insertion Tags müssen Sie die erkannten Ergebnisse mit dem Referenztext vergleichen.

Wenn Ihre Audiodatei 30 Sekunden überschreitet, verwenden Sie den fortlaufenden Modus für die Verarbeitung. Im fortlaufenden Modus wird die EnableMiscue Option nicht unterstützt. Zum Abrufen Omission und Insertion Tags müssen Sie die erkannten Ergebnisse mit dem Referenztext vergleichen. Sie finden eine Beispielimplementierung für den fortlaufenden Modus auf GitHub unter der Funktion pronunciationAssessmentContinuousWithFile.

Wenn Ihre Audiodatei 30 Sekunden überschreitet, verwenden Sie den fortlaufenden Modus für die Verarbeitung. Im fortlaufenden Modus wird die EnableMiscue Option nicht unterstützt. Zum Abrufen Omission und Insertion Tags müssen Sie die erkannten Ergebnisse mit dem Referenztext vergleichen. Sie finden eine Beispielimplementierung für den fortlaufenden Modus auf GitHub unter der Funktion pronunciation_assessment_continuous_from_file, oder probieren Sie das Azure Speech Toolkit aus.

Wenn Ihre Audiodatei 30 Sekunden überschreitet, verwenden Sie den fortlaufenden Modus für die Verarbeitung. Im fortlaufenden Modus wird die EnableMiscue Option nicht unterstützt. Zum Abrufen Omission und Insertion Tags müssen Sie die erkannten Ergebnisse mit dem Referenztext vergleichen. Sie finden eine Beispielimplementierung für den fortlaufenden Modus auf GitHub.

Wenn Ihre Audiodatei 30 Sekunden überschreitet, verwenden Sie den fortlaufenden Modus für die Verarbeitung. Im fortlaufenden Modus wird die EnableMiscue Option nicht unterstützt. Zum Abrufen Omission und Insertion Tags müssen Sie die erkannten Ergebnisse mit dem Referenztext vergleichen. Sie finden eine Beispielimplementierung für den fortlaufenden Modus auf GitHub unter der Funktion pronunciationAssessFromFile.

Wenn Ihre Audiodatei 30 Sekunden überschreitet, verwenden Sie den fortlaufenden Modus für die Verarbeitung. Im fortlaufenden Modus wird die EnableMiscue Option nicht unterstützt. Zum Abrufen Omission und Insertion Tags müssen Sie die erkannten Ergebnisse mit dem Referenztext vergleichen. Sie finden eine Beispielimplementierung für den fortlaufenden Modus auf GitHub unter der Funktion continuousPronunciationAssessment.

Wenn Ihre Audiodatei 30 Sekunden überschreitet, verwenden Sie den fortlaufenden Modus für die Verarbeitung. Beachten Sie, dass die Aussprachebewertung im Speech SDK für Go nicht unterstützt wird. Um dieses Feature zu aktivieren, wählen Sie eine andere Programmiersprache für Ihre Lösung aus.

Festlegen von Konfigurationsparametern

Hinweis

Die Aussprachebewertung ist nicht mit dem Speech SDK für Go verfügbar. Informationen zu den Konzepten finden Sie in diesem Leitfaden. Wählen Sie eine andere Programmiersprache für Ihre Lösung aus.

Im SpeechRecognizer können Sie die Sprache angeben, die Sie lernen oder in der Sie die Aussprache verbessern möchten. Das Standard-Locale ist en-US. Um zu erfahren, wie Sie die Lernsprache für die Aussprachebewertung in Ihrer eigenen Anwendung angeben, können Sie den folgenden Beispielcode verwenden.

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)

Tipp

Wenn Sie nicht sicher sind, welches Gebietsschema für eine Sprache mit mehreren Gebietsschemas festgelegt werden soll, probieren Sie jedes Gebietsschema separat aus. Beispiel: Probieren Sie es mit es-ES und es-MX für das Spanische. Bestimmen Sie, welche Gebietsschema für Ihr Szenario höher bewertet wird.

Sie müssen ein PronunciationAssessmentConfig Objekt erstellen. Sie können EnableProsodyAssessment festlegen, um die Prosody-Bewertung zu aktivieren. Weitere Informationen finden Sie unter Konfigurationsmethoden.

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

In dieser Tabelle sind einige der wichtigsten Konfigurationsparameter für die Aussprachebewertung aufgeführt.

Parameter Beschreibung
ReferenceText Der Text, für den die Aussprache ausgewertet wird.

Der ReferenceText Parameter ist optional. Legen Sie den Referenztext fest, wenn Sie eine Skriptbewertung für das Lesesprachenlernszenario ausführen möchten. Legen Sie den Referenztext nicht fest, wenn Sie eine unkontrollierte Bewertung ausführen möchten.

Preisunterschiede zwischen skriptgesteuerten und nicht skriptgesteuerten Bewertungen finden Sie unter Pricing.
GradingSystem Das Punktsystem für die Score-Kalibrierung. FivePoint gibt einen Score als Gleitkommazahl von 0 bis 5 aus. HundredMark liefert einen Gleitkommawert von 0 bis 100. Standard: FivePoint.
Granularity Bestimmt die niedrigste Ebene der Auswertungs granularität. Gibt Werte für Ebenen zurück, die größer oder gleich dem Minimalwert sind. Akzeptierte Werte sind Phoneme, die die Bewertung auf der Volltext-, Wort-, Silben- und Phonem-Ebene anzeigt, Word, die die Bewertung auf der Volltext- und Wortebene anzeigt, oder FullText, die die Bewertung nur auf der Volltextebene anzeigt. Der bereitgestellte vollständige Bezugstext kann ein Wort, ein Satz oder einen Absatz sein. Dies hängt von Ihrem Eingabeverweistext ab. Standard: Phoneme.
EnableMiscue Aktiviert die Fehlberechnung, wenn die ausgesprochenen Wörter mit dem Bezugstext verglichen werden. Die Aktivierung von Fehlermeldungen ist optional. Wenn dieser Wert lautet True, kann der ErrorType Ergebniswert auf Omission oder Insertion basierend auf dem Vergleich festgelegt werden. Werte sind False und True. Standard: False. Um die Berechnung von Fehleinsätzen zu aktivieren, legen Sie EnableMiscue auf True fest. Sie können auf den Codeausschnitt oberhalb der Tabelle verweisen.
ScenarioId Eine GUID für ein angepasstes Punktsystem.

Konfigurationsmethoden

In dieser Tabelle sind einige der optionalen Methoden aufgeführt, die Sie für das PronunciationAssessmentConfig Objekt festlegen können.

Hinweis

Die Prosodie-Bewertung ist nur im en-US-Locale verfügbar.

Um die Prosodie-Bewertung zu erkunden, aktualisieren Sie auf die SDK-Version 1.35.0 oder höher.

Methode Beschreibung
EnableProsodyAssessment Ermöglicht die Prosodybewertung für Ihre Ausspracheauswertung. Diese Funktion bewertet Aspekte wie Stress, Intonation, Sprachgeschwindigkeit und Rhythmus. Dieses Feature bietet Einblicke in die Natürlichkeit und Ausdrucksfähigkeit Ihrer Rede.

Die Aktivierung der Prosodiebewertung ist optional. Wenn diese Methode aufgerufen wird, wird der ProsodyScore Ergebniswert zurückgegeben.

Abrufen der Ergebnisse der Aussprachebewertung

Wenn die Spracherkennung erkannt wird, können Sie die Ergebnisse der Aussprachebewertung als SDK-Objekte oder eine JSON-Zeichenfolge anfordern.

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

Ergebnisse für Worte, Silben und Phoneme sind nicht über SDK-Objekte mit dem Speech SDK für C++ verfügbar. Wort-, Silben- und Phonemergebnisse sind nur in der JSON-Zeichenfolge verfügbar.

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

Informationen zum Angeben der Lernsprache für die Aussprachebewertung in Ihrer eigenen Anwendung finden Sie unter sample-Code.

Für die Entwicklung von Android-Anwendungen stehen das Wort, die Silben und die Phoneme-Ergebnisse mithilfe von SDK-Objekten mit dem Speech SDK für Java zur Verfügung. Die Ergebnisse sind auch in der JSON-Zeichenfolge verfügbar. Für die Java Runtime (JRE)-Anwendungsentwicklung sind die Wort-, Silben- und Phonem-Ergebnisse nur in der JSON-Zeichenfolge verfügbar.

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

Informationen zum Angeben der Lernsprache für die Aussprachebewertung in Ihrer eigenen Anwendung finden Sie unter sample-Code.

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)

Informationen zum Angeben der Lernsprache für die Aussprachebewertung in Ihrer eigenen Anwendung finden Sie unter sample-Code.

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

Informationen zum Angeben der Lernsprache für die Aussprachebewertung in Ihrer eigenen Anwendung finden Sie unter sample-Code.

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)

Ergebnisparameter

Je nachdem, ob Sie geskriptete oder ungeskriptete Bewertungen verwenden, können Sie unterschiedliche Ergebnisse bei der Aussprachebewertung erhalten. Die Skriptbewertung dient zum Lesen des Sprachlernszenarios. Die Bewertung ohne Skript ist für das Sprechsprachlernenszenario.

Hinweis

Preisunterschiede zwischen skriptgesteuerten und nicht skriptgesteuerten Bewertungen finden Sie unter Pricing.

Ergebnisse der geskripteten Bewertung

In dieser Tabelle sind einige der wichtigsten Ergebnisse der Aussprachebewertung für die Skriptbewertung oder das Leseszenario aufgeführt.

Parameter Beschreibung Granularität
AccuracyScore Aussprachegenauigkeit der Sprache. Genauigkeit gibt an, wie genau die Phoneme mit der Aussprache eines Muttersprachlers übereinstimmen. Silben-, Wort- und Volltextgenauigkeitsbewertungen werden anhand der Phoneme-Level-Genauigkeitsbewertung aggregiert und mit Bewertungszielen optimiert. Phoneme-Ebene,
Silbenebene (nur auf en-US)
Wortebene
Volltextebene
FluencyScore Flüssigkeit der Rede. Der Redefluss bedeutet, wie exakt der ausgegebene Text mit den Pausen zwischen Wörtern eines Muttersprachlers übereinstimmt. Volltextebene
CompletenessScore Vollständigkeit der Sprache, berechnet durch das Verhältnis von ausgesprochenen Wörtern zum Referenztext. Volltextebene
ProsodyScore Prosodie der gegebenen Rede. Die Prosodie gibt an, wie natürlich die gegebene Sprache ist, einschließlich Betonung, Intonation, Sprechgeschwindigkeit und Rhythmus. Volltextebene
PronScore Gesamtbewertung der Aussprachequalität der angegebenen Sprache. PronScore wird anhand von AccuracyScore, FluencyScore, CompletenessScoreund ProsodyScore mit Gewicht berechnet, vorausgesetzt, dass ProsodyScore und CompletenessScore verfügbar sind. Wenn eine der beiden nicht verfügbar ist, wird PronScore diese Bewertung nicht berücksichtigen. Volltextebene
ErrorType Dieser Wert gibt den Fehlertyp im Vergleich zum Bezugstext an. Zu den Optionen gehört, ob ein Wort nicht angegeben, eingefügt oder nicht ordnungsgemäß mit einer Unterbrechung eingefügt wird. Er gibt auch eine fehlende Unterbrechung bei Interpunktion an. Er zeigt auch an, ob ein Wort schlecht ausgesprochen wird oder monoton ansteigend, abfallend oder flach gesprochen wird. Mögliche Werte sind None für keinen Fehler bei diesem Wort, Omission, Insertion, Mispronunciation, UnexpectedBreak, MissingBreak und Monotone. Der Fehlertyp kann sein Mispronunciation , wenn die Aussprache AccuracyScore für ein Wort unter 60 liegt. Wortebene

Ergebnisse der ungeskripteten Bewertung

In dieser Tabelle sind einige der wichtigsten Ergebnisse der Aussprachebewertung für die spontane Bewertung oder das Sprachszenario aufgeführt.

Hinweis

Die Prosodie-Bewertung ist nur im en-US-Locale verfügbar. Bei einer unscriptierten Bewertung unterscheidet sich das verwendete STT-Modell (Speech-to-Text) von Azure STT. Wenn Sie eine Bewertung basierend auf hochgenauem erkanntem Text benötigen, empfehlen wir, zuerst Azure STT aufzurufen, um den Referenztext abzurufen und dann eine skriptbasierte Bewertung durchzuführen.

Antwortparameter Beschreibung Granularität
AccuracyScore Aussprachegenauigkeit der Sprache. Genauigkeit gibt an, wie genau die Phoneme mit der Aussprache eines Muttersprachlers übereinstimmen. Die Scores für die Silben-, Wort- und Volltextgenauigkeit werden aus dem Score der Genauigkeit auf Phonemebene aggregiert und mit Bewertungszielen verfeinert. Phoneme-Ebene,
Silbenebene (nur auf en-US)
Wortebene
Volltextebene
FluencyScore Flüssigkeit der Rede. Der Redefluss bedeutet, wie exakt der ausgegebene Text mit den Pausen zwischen Wörtern eines Muttersprachlers übereinstimmt. Volltextebene
ProsodyScore Prosodie der gegebenen Rede. Die Prosodie gibt an, wie natürlich die gegebene Sprache ist, einschließlich Betonung, Intonation, Sprechgeschwindigkeit und Rhythmus. Volltextebene
PronScore Gesamtbewertung der Aussprachequalität der angegebenen Sprache. PronScore wird anhand von AccuracyScore, FluencyScore und ProsodyScore unter Berücksichtigung des Gewichts berechnet, vorausgesetzt, ProsodyScore ist verfügbar. Ist ProsodyScore nicht verfügbar, wird PronScore diese Bewertung nicht berücksichtigen. Volltextebene
ErrorType Ein Wort ist schlecht ausgesprochen, nicht ordnungsgemäß mit einer Unterbrechung eingefügt, oder es fehlt bei Interpunktion eine Unterbrechung. Es gibt auch an, ob eine Aussprache gleichmäßig ansteigt, fällt oder in der Äußerung gleichbleibend ist. Mögliche Werte sind None für keinen Fehler bei diesem Wort, Mispronunciation, UnexpectedBreak, MissingBreak und Monotone. Wortebene

In der folgenden Tabelle werden die Ergebnisse der Prosodie-Bewertung ausführlicher beschrieben.

Feld Beschreibung
ProsodyScore Prosodie-Bewertung der gesamten Äußerung.
Feedback Feedback auf Wortebene, einschließlich Break und Intonation.
Break
ErrorTypes Fehlertypen im Zusammenhang mit Umbrüchen, einschließlich UnexpectedBreak und MissingBreak. Die aktuelle Version stellt den Fehlertyp "Unterbrechung" nicht bereit. Sie müssen Schwellenwerte für die Felder UnexpectedBreak – Confidence und MissingBreak – confidence festlegen, um zu entscheiden, ob vor dem Wort eine unerwartete Unterbrechung vorhanden ist oder eine Unterbrechung fehlt.
UnexpectedBreak Gibt einen unerwarteten Zeilenumbruch vor dem Wort an.
MissingBreak Gibt einen fehlenden Zeilenumbruch vor dem Wort an.
Thresholds Vorgeschlagene Schwellenwerte für beide Konfidenzergebnisse sind 0,75. Das bedeutet, wenn der Wert UnexpectedBreak – Confidence größer als 0,75 ist, weist er eine unerwartete Unterbrechung auf. Wenn der Wert von MissingBreak – confidence größer als 0,75 ist, fehlt die Unterbrechung. Während 0,75 ein Wert ist, der empfohlen wird, empfiehlt es sich, die Schwellenwerte basierend auf Ihrem eigenen Szenario anzupassen. Wenn Sie bei diesen beiden Unterbrechungen eine variable Erkennungsempfindlichkeit haben möchten, können Sie den UnexpectedBreak - Confidence Feldern und MissingBreak - Confidence Feldern unterschiedliche Schwellenwerte zuweisen.
Intonation Gibt die Intonation in der Sprache an.
ErrorTypes Fehlertypen in Bezug auf die Intonation, die derzeit nur Monotonie unterstützen. Wenn das Monotone im Feld ErrorTypes vorhanden ist, wird die Äußerung als monoton erkannt. Monotonie wird für die gesamte Äußerung erkannt, aber das Tag wird allen Wörtern zugewiesen. Alle Wörter in derselben Äußerung teilen dieselben Monotonerkennungsinformationen.
Monotone Gibt monotonische Sprache an.
Thresholds (Monotone Confidence) Die Felder Monotone - SyllablePitchDeltaConfidence sind für die benutzerdefinierte Monotonerkennung reserviert. Wenn Sie mit der bereitgestellten Monotonentscheidung nicht zufrieden sind, passen Sie die Schwellenwerte für diese Felder an, um die Erkennung entsprechend Ihren Vorlieben anzupassen.

JSON-Ergebnisbeispiel

Die Ergebnisse der skriptbasierten Aussprachebewertung für das gesprochene Wort "hello" werden im folgenden Beispiel als JSON-Zeichenfolge angezeigt.

  • Das Phoneme-Alphabet ist IPA.
  • Die Silben werden zusammen mit Phonemen für dasselbe Wort zurückgegeben.
  • Sie können die Offset und Duration Werte verwenden, um Silben mit den zugehörigen Phonemen auszurichten. Der Startoffset (11700000) der zweiten Silbe loʊ wird beispielsweise am dritten Phonem l ausgerichtet. Der Offset stellt die Uhrzeit dar, zu der die erkannte Sprache im Audiodatenstrom beginnt. Der Wert wird in 100-Nanosekundeneinheiten gemessen. Weitere Informationen zu Offset und Duration finden Sie unter Antworteigenschaften.
  • Es gibt fünf NBestPhonemes , die der Anzahl der angeforderten gesprochenen Phoneme entsprechen.
  • Innerhalb der Phonemes war nicht das erwartete Phonem ɛ das wahrscheinlichste gesprochene Phonem, sondern ə. Das erwartete Phoneme ɛ erhielt nur einen Konfidenzwert von 47. Andere potenzielle Übereinstimmungen erhielten Konfidenzbewertungen von 52, 17 und 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
                        }
                    ]
                }
            ]
        }
    ]
}

Sie können Bewertungsergebnisse für die Aussprache erhalten:

Unterstützte Funktionen je nach Gebietsschema

In der folgenden Tabelle wird zusammengefasst, welche Funktionen die Gebietsschemas unterstützen. Weitere Informationen finden Sie in den folgenden Abschnitten.

Phonemalphabet IPA SAPI
Phonem-Name en-US en-US, zh-CN
Silbengruppe en-US en-US
Gesprochenes Phonem en-US en-US

Silbengruppen

Die Bewertung der Aussprache kann Ergebnisse auf Silbenebene liefern. Ein Wort wird in der Regel Silbe für Silbe und nicht Phonem für Phonem ausgesprochen. Das Gruppieren in Silben ist lesbarer und an Sprechgewohnheiten ausgerichtet.

Die Aussprachebewertung unterstützt nur Silbengruppen bei en-US mit IPA und SAPI.

In der folgenden Tabelle werden Beispiel phonemes mit den entsprechenden Silben verglichen.

Beispielwort Phoneme Silben
technological teknələdʒɪkl tek·nə·lɑ·dʒɪkl
Hallo Hallo hɛ·loʊ
Glück lʌk lʌk
Photosynthese Photosynthese Photosynthese

Um Silbenebenenergebnisse zusammen mit Phonemen anzufordern, legen Sie den Granularitätskonfigurationsparameter auf Phoneme.

Phonemalphabet-Format

Die Aussprachebewertung unterstützt den Phoneme-Namen in en-US mit IPA und in en-US und zh-CN mit SAPI.

Für Gebietsschemas, die den Phonemnamen unterstützen, wird der Phonemname zusammen mit dem Score angegeben. Phoneme-Namen helfen bei der Identifizierung, welche Phoneme genau oder ungenau ausgesprochen wurden. Bei anderen Regionen können Sie nur die Phonem-Bewertung abrufen.

In der folgenden Tabelle werden Beispiel-SAPI-Phonemes mit den entsprechenden IPA-Phonemes verglichen.

Beispielwort SAPI-Phonemen IPA-Phoneme
Hallo h eh l ow h ɛ l oʊ
Glück l ah k l ʌ k
Photosynthese f ow t ax s ih n th ax s ih s f oʊ t ə s ɪ n θ ə s ɪ s

Um IPA phonemes anzufordern, legen Sie das Phoneme-Alphabet auf IPA. Wenn Sie das Alphabet nicht angeben, befinden sich die Phoneme standardmäßig im SAPI-Format.

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"

Bewerten gesprochener Phoneme

Mit gesprochenen Phonemen können Sie Konfidenzbewertungen erhalten, die angeben, wie wahrscheinlich die gesprochenen Phoneme mit den erwarteten Phonemen übereinstimmen.

Die Aussprachebewertung unterstützt gesprochene Phoneme in en-US mit IPA und SAPI.

Um beispielsweise den vollständigen gesprochenen Sound für das Wort Hello zu erhalten, können Sie das erste gesprochene Phonem mit jedem erwarteten Phonem mit dem höchsten Konfidenzscore verketten. Wenn Sie das Wort hello sprechen, lauten die erwarteten IPA-Phoneme im folgenden Bewertungsergebnis h ɛ l oʊ. Die tatsächlich gesprochenen Phoneme sind jedoch h ə l oʊ. Sie haben fünf mögliche Kandidaten für jedes erwartete Phoneme in diesem Beispiel. Das Bewertungsergebnis zeigt, dass das höchstwahrscheinlich gesprochene Phonem ə war, anstelle des erwarteten Phonems ɛ. Das erwartete Phoneme ɛ erhielt nur einen Konfidenzwert von 47. Andere potenzielle Übereinstimmungen erhielten Konfidenzbewertungen von 52, 17 und 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
                        }
                    ]
                }
            ]
        }
    ]
}

Legen Sie den Parameter NBestPhonemeCount auf eine ganze Zahl fest (z. B. 5), um anzugeben, ob und für wie viele potenzielle gesprochene Phoneme Konfidenzbewertungen abgerufen werden sollen.

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

Berechnung der Aussprachebewertung

Aussprachebewertungen werden anhand von Genauigkeit, Prosodie, Flüssigkeit und Vollständigkeit berechnet, basierend auf bestimmten Formeln für Lese- und Sprechszenarien.

Bei der Sortierung der Punktzahlen für Genauigkeit, Prosodie, Flüssigkeit und Vollständigkeit von niedrig bis hoch (sofern jede Bewertung verfügbar ist) und wobei die niedrigste Punktzahl als s0 und die höchste Punktzahl als s3 dargestellt wird, wird die Aussprachebewertung wie folgt berechnet:

Für das Leseszenario:

  • Mit Prosodiewertung: PronScore = 0,4 · s0 + 0,2 · s1 + 0.2 · s2 + 0,2 · s3
  • Ohne Prosodie-Wert: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2

Für das sprechende Szenario (die Vollständigkeitsbewertung gilt nicht):

  • Mit Prosodie-Score: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
  • Ohne Prosodiebewertung: PronScore = 0,6 * s0 + 0,4 * s1

Diese Formel stellt eine gewichtete Berechnung basierend auf der Wichtigkeit der einzelnen Bewertungen bereit und stellt eine umfassende Bewertung der Aussprache sicher.

Inhaltsbewertung

Wichtig

Die Inhaltsbewertung (Vorschauversion) ist in den Speech SDK-Versionen ab 1.46.0 eingestellt. Alternativ können Sie Azure OpenAI in Microsoft Foundry Models verwenden, um Inhaltsbewertungsergebnisse wie in diesem Abschnitt beschrieben zu erhalten.

Bei einigen erkannten Spracherkennungen möchten Sie möglicherweise auch Ergebnisse der Inhaltsbewertung für Vokabular, Grammatik und Themenrelevanz abrufen. Sie können ein Chatmodell wie Azure OpenAI gpt-4o verwenden, um die Ergebnisse der Inhaltsbewertung zu erhalten. Weitere Informationen zur Verwendung von Chatmodellen finden Sie in den Azure OpenAI-Modellen und in der Referenzdokumentation für Chat-Abschlüsse der Azure AI Model Inference API.

Die Benutzer- und Systemnachrichten werden verwendet, um den Kontext für das Chatmodell festzulegen. Im folgenden Beispiel enthält die Benutzernachricht den zu bewertenden Essay, und die Systemnachricht enthält Anweisungen zur Bewertung des Essays.

{
  "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]"
    }
  ]
}