Använda uttalsbedömning
I den här artikeln får du lära dig hur du utvärderar uttal med tal till text via Speech SDK. Uttalsutvärderingen bedömer uttalet och ger talarna feedback om noggrannhet och naturlighet i det talade språket.
Kommentar
Uttalsbedömningen använder en specifik version av tal-till-text-modellen, som skiljer sig från standardmodellen för tal till text, för att säkerställa en konsekvent och korrekt uttalsbedömning.
Använda uttalsbedömning i strömningsläge
Uttalsbedömning stöder oavbrutet strömningsläge. Inspelningstiden kan vara obegränsad via Speech SDK. Så länge du inte slutar spela in slutförs inte utvärderingsprocessen och du kan pausa och återuppta utvärderingen på ett bekvämt sätt.
Information om tillgänglighet för uttalsutvärdering finns i språk som stöds och tillgängliga regioner.
Som baslinje kostar användningen av uttalsbedömning samma sak som tal till text för prissättning på betala per användning eller åtagandenivå. Om du köper en åtagandenivå för tal till text går utgiften för uttalsbedömningen till att uppfylla åtagandet. Mer information finns i Prissättning.
Information om hur du använder Uttalsbedömning i strömningsläge i ditt eget program finns i exempelkod.
Information om hur du använder Uttalsbedömning i strömningsläge i ditt eget program finns i exempelkod.
Information om hur du använder Uttalsbedömning i strömningsläge i ditt eget program finns i exempelkod.
Information om hur du använder Uttalsbedömning i strömningsläge i ditt eget program finns i exempelkod.
Information om hur du använder Uttalsbedömning i strömningsläge i ditt eget program finns i exempelkod.
Information om hur du använder Uttalsbedömning i strömningsläge i ditt eget program finns i exempelkod.
Information om hur du använder Uttalsbedömning i strömningsläge i ditt eget program finns i exempelkod.
Kontinuerlig igenkänning
Om ljudfilen överskrider 30 sekunder använder du kontinuerligt läge för bearbetning. Exempelkoden för kontinuerligt läge finns på GitHub under funktionen PronunciationAssessmentContinuousWithFile
.
Om ljudfilen överskrider 30 sekunder använder du kontinuerligt läge för bearbetning.
Om ljudfilen överskrider 30 sekunder använder du kontinuerligt läge för bearbetning. Exempelkoden för kontinuerligt läge finns på GitHub under funktionen pronunciationAssessmentContinuousWithFile
.
Om ljudfilen överskrider 30 sekunder använder du kontinuerligt läge för bearbetning. Exempelkoden för kontinuerligt läge finns på GitHub under funktionen pronunciation_assessment_continuous_from_file
.
Om ljudfilen överskrider 30 sekunder använder du kontinuerligt läge för bearbetning. Exempelkoden för kontinuerligt läge finns på GitHub.
Om ljudfilen överskrider 30 sekunder använder du kontinuerligt läge för bearbetning. Exempelkoden för kontinuerligt läge finns på GitHub under funktionen pronunciationAssessFromFile
.
Om ljudfilen överskrider 30 sekunder använder du kontinuerligt läge för bearbetning. Exempelkoden för kontinuerligt läge finns på GitHub under funktionen continuousPronunciationAssessment
.
Ange konfigurationsparametrar
Kommentar
Uttalsutvärdering är inte tillgängligt med Speech SDK för Go. Du kan läsa om begreppen i den här guiden. Välj ett annat programmeringsspråk för din lösning.
SpeechRecognizer
I kan du ange språket för att lära dig eller öva på att förbättra uttalet. Standardspråket är en-US
. Om du vill lära dig hur du anger inlärningsspråket för uttalsbedömning i ditt eget program kan du använda följande exempelkod.
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)
Dricks
Om du inte är säker på vilka nationella inställningar som ska anges för ett språk som har flera nationella inställningar kan du prova varje språkvariant separat. För spanska kan du till exempel prova es-ES
och es-MX
. Ta reda på vilka nationella värden som är högre för ditt scenario.
Du måste skapa ett PronunciationAssessmentConfig
objekt. Du kan ange EnableProsodyAssessment
och EnableContentAssessmentWithTopic
aktivera prosody- och innehållsutvärdering. Mer information finns i konfigurationsmetoder.
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")
I den här tabellen visas några av de viktigaste konfigurationsparametrarna för uttalsutvärdering.
Parameter | Description |
---|---|
ReferenceText |
Texten som uttalet utvärderas mot. Parametern ReferenceText är valfri. Ange referenstexten om du vill köra en skriptad utvärdering för lässpråkinlärningsscenariot. Ange inte referenstexten om du vill köra en oskriven utvärdering.Prisskillnader mellan skriptad och oskriven utvärdering finns i Prissättning. |
GradingSystem |
Poängsystemet för poängkalibrering. FivePoint ger en flyttalspoäng på 0–5. HundredMark ger en flyttalspoäng på 0–100. Standard: FivePoint . |
Granularity |
Avgör den lägsta nivån av utvärderingskornighet. Returnerar poäng för nivåer som är större än eller lika med det minimala värdet. Godkända värden är Phoneme , som visar poängen på den fullständiga text-, ord-, stavelse- och fonemnivån, , Word som visar poängen på den fullständiga text- och ordnivån, eller FullText , som endast visar poängen på den fullständiga textnivån. Den angivna fullständiga referenstexten kan vara ett ord, en mening eller ett stycke. Det beror på din indatareferenstext. Standard: Phoneme . |
EnableMiscue |
Aktiverar felberäkning när de uttalade orden jämförs med referenstexten. Det är valfritt att aktivera feldokument. Om det här värdet är True ErrorType kan resultatvärdet anges till Omission eller Insertion baserat på jämförelsen. Värden är False och True . Standard: False . Om du vill aktivera felberäkning anger du EnableMiscue till True . Du kan referera till kodfragmentet ovanför tabellen. |
ScenarioId |
Ett GUID för ett anpassat punktsystem. |
Konfigurationsmetoder
I den här tabellen visas några av de valfria metoder som du kan ange för PronunciationAssessmentConfig
objektet.
Kommentar
Innehålls- och prosodyutvärderingar är endast tillgängliga i språkvarianten en-US .
Om du vill utforska innehåll och prosody-utvärderingar uppgraderar du till SDK version 1.35.0 eller senare.
Det finns ingen längdgräns för ämnesparametern.
Metod | beskrivning |
---|---|
EnableProsodyAssessment |
Aktiverar prosodyutvärdering för uttalsutvärderingen. Den här funktionen utvärderar aspekter som stress, intonation, talhastighet och rytm. Den här funktionen ger insikter om det naturliga och uttrycksfulla i ditt tal. Det är valfritt att aktivera prosody-utvärdering. Om den här metoden anropas ProsodyScore returneras resultatvärdet. |
EnableContentAssessmentWithTopic |
Aktiverar innehållsutvärdering. En innehållsutvärdering är en del av den oskrivna utvärderingen för scenariot för språkinlärning. Genom att ange en beskrivning kan du förbättra utvärderingens förståelse för det specifika ämne som talas om. I C# anropar du pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting"); till exempel . Du kan ersätta "hälsning" med önskad text för att beskriva ett ämne. Beskrivningen har ingen längdgräns och stöder en-US för närvarande endast nationella inställningar. |
Hämta uttalsutvärderingsresultat
När tal identifieras kan du begära uttalsutvärderingsresultatet som SDK-objekt eller en JSON-sträng.
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);
}
Word-, stavelse- och fonetikresultat är inte tillgängliga med hjälp av SDK-objekt med Speech SDK för C++. Word-, stavelse- och fonetikresultat är endast tillgängliga i JSON-strängen.
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);
Information om hur du anger inlärningsspråket för uttalsbedömning i ditt eget program finns i exempelkod.
För Utveckling av Android-program är resultatet av ordet, stavelsen och fonetiken tillgängliga med hjälp av SDK-objekt med Speech SDK för Java. Resultaten är också tillgängliga i JSON-strängen. För utveckling av Java Runtime-program (JRE) är ordet, stavelsen och fonetikresultaten endast tillgängliga i JSON-strängen.
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);
},
{});
Information om hur du anger inlärningsspråket för uttalsbedömning i ditt eget program finns i exempelkod.
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)
Information om hur du anger inlärningsspråket för uttalsbedömning i ditt eget program finns i exempelkod.
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];
Information om hur du anger inlärningsspråket för uttalsbedömning i ditt eget program finns i exempelkod.
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)
Resultatparametrar
Beroende på om du använder skriptbaserad eller oskriven utvärdering kan du få olika uttalsutvärderingsresultat. Skriptad utvärdering är för lässpråkinlärningsscenariot. Oskriven utvärdering gäller för språkinlärningsscenariot.
Kommentar
Prisskillnader mellan skriptad och oskriven utvärdering finns i Prissättning.
Resultat av skriptutvärdering
Den här tabellen visar några av de viktigaste uttalsutvärderingsresultaten för den skriptade utvärderingen eller lässcenariot.
Parameter | Description | Precision |
---|---|---|
AccuracyScore |
Uttalsprecision av talet. Noggrannhet anger hur nära phonemes matchar uttal från en infödd talare. Precisionspoäng för stavelse, ord och fulltext aggregeras från noggrannhetspoängen på fonetiknivå och förfinas med utvärderingsmål. | Fonetiknivå, Stavelsenivå (endast en-US), Word-nivå, Fulltextnivå |
FluencyScore |
Flyt i det givna talet. Fluency anger hur nära talet matchar en infödd talares användning av tysta brytningar mellan ord. | Fulltextnivå |
CompletenessScore |
Talens fullständighet beräknas av förhållandet mellan uttalade ord och indatareferenstexten. | Fulltextnivå |
ProsodyScore |
Prosody av det givna talet. Prosody anger hur naturligt det givna talet är, inklusive stress, intonation, talhastighet och rytm. | Fulltextnivå |
PronScore |
Övergripande poäng av uttalskvaliteten för det givna talet. PronScore beräknas från AccuracyScore , FluencyScore , CompletenessScore och ProsodyScore med vikt, förutsatt att ProsodyScore och CompletenessScore är tillgängliga. Om någon av dem inte är tillgänglig tar PronScore du inte hänsyn till den poängen. |
Fulltextnivå |
ErrorType |
Det här värdet anger feltypen jämfört med referenstexten. Alternativen inkluderar om ett ord utelämnas, infogas eller infogas felaktigt med en paus. Det indikerar också en saknad brytpunkt vid skiljetecken. Det anger också om ett ord är dåligt uttalat, eller monotont stigande, fallande eller platt på yttrandet. Möjliga värden är None för inget fel på det här ordet, Omission , Insertion , Mispronunciation , UnexpectedBreak , MissingBreak och Monotone . Feltypen kan vara Mispronunciation när uttalet AccuracyScore för ett ord är under 60. |
Word-nivå |
Oskrivna utvärderingsresultat
I den här tabellen visas några av de viktigaste uttalsbedömningsresultaten för den oskrivna utvärderingen eller talscenariot.
VocabularyScore
, GrammarScore
, och TopicScore
parametrarna summeras till den kombinerade innehållsutvärderingen.
Kommentar
Innehålls- och prosodyutvärderingar är endast tillgängliga i språkvarianten en-US .
Svarsparameter | beskrivning | Precision |
---|---|---|
AccuracyScore |
Uttalsprecision av talet. Noggrannhet anger hur nära phonemes matchar uttal från en infödd talare. Precisionspoäng för stavelse, ord och fulltext aggregeras från noggrannhetspoäng på fonetiknivå och förfinas med utvärderingsmål. | Fonetiknivå, Stavelsenivå (endast en-US), Word-nivå, Fulltextnivå |
FluencyScore |
Flyt i det givna talet. Fluency anger hur nära talet matchar en infödd talares användning av tysta brytningar mellan ord. | Fulltextnivå |
ProsodyScore |
Prosody av det givna talet. Prosody anger hur naturligt det givna talet är, inklusive stress, intonation, talhastighet och rytm. | Fulltextnivå |
VocabularyScore |
Kunskaper i lexikal användning. Den utvärderar talarens effektiva användning av ord och deras lämplighet i den givna kontexten för att uttrycka idéer korrekt och nivån av lexikal komplexitet. | Fulltextnivå |
GrammarScore |
Korrekthet i att använda grammatik och olika meningsmönster. Lexikal noggrannhet, grammatisk noggrannhet och mångfald av meningsstrukturer höjer gemensamt grammatiska fel. | Fulltextnivå |
TopicScore |
Nivå av förståelse och engagemang i ämnet, som ger insikter om talarens förmåga att uttrycka sina tankar och idéer effektivt och förmågan att engagera sig i ämnet. | Fulltextnivå |
PronScore |
Övergripande poäng av uttalskvaliteten för det givna talet. PronScore beräknas från AccuracyScore , FluencyScore och ProsodyScore med vikt, förutsatt att det ProsodyScore är tillgängligt. Om ProsodyScore inte är tillgängligt, PronScore kommer inte att överväga den poängen. |
Fulltextnivå |
ErrorType |
Ett ord är dåligt uttalat, felaktigt infogat med en paus eller missar en paus vid skiljetecken. Det anger också om ett uttal är monotont stigande, fallande eller platt på yttrandet. Möjliga värden är None för inget fel på det här ordet, Mispronunciation , UnexpectedBreak , MissingBreak och Monotone . |
Word-nivå |
I följande tabell beskrivs resultatet av prosody-utvärderingen mer detaljerat:
Fält | beskrivning |
---|---|
ProsodyScore |
Prosody-poäng för hela yttrandet. |
Feedback |
Feedback på ordnivå, inklusive Break och Intonation . |
Break |
|
ErrorTypes |
Feltyper relaterade till pauser, inklusive UnexpectedBreak och MissingBreak . Den aktuella versionen anger inte typ av brytfel. Du måste ange tröskelvärden för fälten UnexpectedBreak – Confidence och MissingBreak – confidence avgöra om det finns en oväntad brytning eller en bristning före ordet. |
UnexpectedBreak |
Anger en oväntad paus före ordet. |
MissingBreak |
Anger en saknad paus före ordet. |
Thresholds |
Föreslagna tröskelvärden för båda konfidenspoängen är 0,75. Det innebär att om värdet UnexpectedBreak – Confidence för är större än 0,75 har det en oväntad paus. Om värdet MissingBreak – confidence för är större än 0,75 har det en saknad brytning. Även om 0,75 är ett värde som vi rekommenderar är det bättre att justera tröskelvärdena baserat på ditt eget scenario. Om du vill ha känslighet för variabelidentifiering på dessa två raster kan du tilldela olika tröskelvärden till fälten UnexpectedBreak - Confidence och MissingBreak - Confidence . |
Intonation |
Anger intonation i tal. |
ErrorTypes |
Feltyper relaterade till intonation, som för närvarande endast stöder monoton. Om det Monotone finns i fältet ErrorTypes identifieras yttrandet som monotont. Monoton identifieras i hela yttrandet, men taggen tilldelas till alla ord. Alla ord i samma yttrande delar samma information om monoton identifiering. |
Monotone |
Anger monotont tal. |
Thresholds (Monotone Confidence) |
Fälten Monotone - SyllablePitchDeltaConfidence är reserverade för användaranpassad monotonidentifiering. Om du inte är nöjd med det angivna monotona beslutet justerar du tröskelvärdena för dessa fält för att anpassa identifieringen enligt dina inställningar. |
JSON-resultatexempel
Utvärderingsresultatet för skriptat uttal för det talade ordet "hello" visas som en JSON-sträng i följande exempel.
- Fonetikalfabetet är IPA.
- Stavelserna returneras tillsammans med fonem för samma ord.
- Du kan använda
Offset
värdena ochDuration
för att justera stavelser med motsvarande fonem. Startförskjutningen (11700000) för den andra stavelsenloʊ
justeras till den tredje fonem,l
. Förskjutningen representerar den tidpunkt då det identifierade talet börjar i ljudströmmen. Värdet mäts i 100 nanosekunder. Mer information omOffset
och finns i svarsegenskaperDuration
. - Det finns fem
NBestPhonemes
som motsvarar det antal talade fonem som begärs. - Inom
Phonemes
varə
de mest sannolika talade telefonerna i stället för det förväntade telefonljudetɛ
. Den förväntade telefontelefonenɛ
fick bara en konfidenspoäng på 47. Andra potentiella matcher fick förtroendepoäng på 52, 17 och 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
}
]
}
]
}
]
}
Du kan få utvärderingspoäng för uttal för:
- Fulltext
- Ord
- Stavelsegrupper
- Phonemes i SAPI- eller IPA-format
Funktioner som stöds per språk
I följande tabell sammanfattas vilka funktioner som stöder nationella inställningar. Mer information finns i följande avsnitt. Om de nationella inställningar som du behöver inte visas i följande tabell för den funktion som stöds fyller du i det här intagsformuläret för ytterligare hjälp.
Fonetikal | IPA | SAPI |
---|---|---|
Phoneme-namn | en-US |
en-US , zh-CN |
Stavelsegrupp | en-US |
en-US |
Talat fonme | en-US |
en-US |
Stavelsegrupper
Uttalsutvärdering kan ge utvärderingsresultat på stavelsenivå. Ett ord uttalas vanligtvis stavelse av stavelse snarare än phoneme av phoneme. Gruppering i stavelser är mer läsbart och i linje med talvanor.
Uttalsutvärdering stöder endast stavelsegrupper i en-US
med IPA och med SAPI.
I följande tabell jämförs exempeltelefoner med motsvarande stavelser.
Exempelord | Fonem | Stavelser |
---|---|---|
teknologisk | teknələdʒɪkl | tek·nə·lɑ·dʒɪkl |
hallå | hɛloʊ | hɛ·loʊ |
tur | lʌk | lʌk |
fotosyntes | foʊtəsɪnθəsɪs | foʊ·tə·sɪn·θə·sɪs |
Om du vill begära resultat på stavelsenivå tillsammans med fonem anger du konfigurationsparametern för kornighet till Phoneme
.
Alfabetformat för fonetik
Uttalsutvärdering stöder phoneme-namn i en-US
med IPA och i en-US
och zh-CN
med SAPI.
För nationella inställningar som stöder phoneme-namn tillhandahålls phoneme-namnet tillsammans med poängen. Phoneme-namn hjälper till att identifiera vilka fonem som har uttalats korrekt eller felaktigt. För andra nationella inställningar kan du bara få fonetikpoängen.
I följande tabell jämförs SAPI-exempeltelefoner med motsvarande IPA-fonem.
Exempelord | SAPI-fonem | IPA-fonem |
---|---|---|
hallå | h eh l ow | h ɛ l oʊ |
tur | l ah k | l ʌ k |
fotosyntes | f ow t ax s ih n th ax s ih s | f oʊ t ə s ɪ n θ ə s ɪ s |
Om du vill begära IPA-fonem ställer du in fonem-alfabetet på IPA
. Om du inte anger alfabetet är fonem i SAPI-format som standard.
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"
Utvärdera talade fonem
Med talade fonem kan du få förtroendepoäng som anger hur sannolikt de talade telefonerna matchade de förväntade telefonerna.
Uttalsbedömning stöder talade phonemes i en-US
med IPA och med SAPI.
Om du till exempel vill få det fullständiga talade ljudet för ordet Hello
kan du sammanfoga det första talade telefonljudet för varje förväntat fonem med den högsta konfidenspoängen. I följande utvärderingsresultat är h ɛ l oʊ
förväntade IPA-fonem när du talar ordet hello
. De faktiska talade telefonerna är h ə l oʊ
dock . Du har fem möjliga kandidater för varje förväntat fonem i det här exemplet. Utvärderingsresultatet visar att det mest sannolika talade telefonljudet var ə
i stället för det förväntade telefonljudet ɛ
. Den förväntade telefontelefonen ɛ
fick bara en konfidenspoäng på 47. Andra potentiella matcher fick förtroendepoäng på 52, 17 och 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
}
]
}
]
}
]
}
Om du vill ange om och hur många potentiella talade fonem som ska få konfidenspoäng för anger du parametern NBestPhonemeCount
till ett heltalsvärde, 5
till exempel .
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
Beräkning av uttalspoäng
Uttalspoäng beräknas genom viktningsnoggrannhet, prosodi, flyt och fullständighetspoäng baserat på specifika formler för läs- och talscenarier.
När du sorterar poängen med noggrannhet, prosody, flyt och fullständighet från låg till hög (om varje poäng är tillgänglig) och representerar den lägsta poängen till den högsta poängen som s0 till s3 beräknas uttalspoängen enligt följande:
För att läsa scenario:
- Med prosodypoäng: PronScore = 0,4 * s0 + 0,2 * s1 + 0,2 * s2 + 0,2 * s3
- Utan prosodypoäng: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
För talscenariot (fullständighetspoängen är inte tillämplig):
- Med prosodypoäng: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
- Utan prosodypoäng: PronScore = 0,6 * s0 + 0,4 * s1
Den här formeln ger en viktad beräkning baserat på vikten av varje poäng, vilket säkerställer en omfattande utvärdering av uttalet.
Relaterat innehåll
- Lär dig mer om kvalitetsmått.
- Prova uttalsbedömning i studion.
- Kolla in en demo för utvärdering av uttal som är lätt att distribuera.
- Titta på videodemonstrationen av uttalsbedömningen.