Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
OffsetundDurationWerte verwenden, um Silben mit den zugehörigen Phonemen auszurichten. Der Startoffset (11700000) der zweiten Silbeloʊwird beispielsweise am dritten Phonemlausgerichtet. Der Offset stellt die Uhrzeit dar, zu der die erkannte Sprache im Audiodatenstrom beginnt. Der Wert wird in 100-Nanosekundeneinheiten gemessen. Weitere Informationen zuOffsetundDurationfinden Sie unter Antworteigenschaften. - Es gibt fünf
NBestPhonemes, die der Anzahl der angeforderten gesprochenen Phoneme entsprechen. - Innerhalb der
Phonemeswar 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:
- Volltext
- Wörter
- Silbengruppen
- Phonemes im SAPI- oder IPA-Format
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]"
}
]
}
Verwandte Inhalte
- Erfahren Sie mehr über Qualitätsbenchmarks.
- Probieren Sie die Aussprachebewertung im Studio aus.
- Sehen Sie sich eine einfach zu implementierende Aussprache-Bewertung Demo an.
- Sehen Sie sich die Videodemo der Aussprachebewertung an.