Použití hodnocení výslovnosti
V tomto článku se dozvíte, jak vyhodnotit výslovnost pomocí řeči na text prostřednictvím sady Speech SDK. Posouzení výslovnosti vyhodnocuje výslovnost a dává mluvčím zpětnou vazbu ohledně přesnosti a plynulosti mluveného slova.
Poznámka:
Posouzení výslovnosti používá konkrétní verzi modelu převodu řeči na text, která se liší od standardního převodu řeči na textový model, aby se zajistilo konzistentní a přesné hodnocení výslovnosti.
Použití hodnocení výslovnosti v režimu streamování
Posouzení výslovnosti podporuje režim nepřerušeného streamování. Doba nahrávání může být neomezená prostřednictvím sady Speech SDK. Pokud nahrávání nezastavíte, proces vyhodnocení se nedokončí a hodnocení můžete pohodlně pozastavit a obnovit.
Informace o dostupnosti hodnocení výslovnosti najdete v podporovaných jazycích a dostupných oblastech.
Jako směrný plán stojí využití hodnocení výslovnosti stejné jako převod řeči na text pro průběžné platby nebo ceny úrovně závazku. Pokud si koupíte úroveň závazku pro převod řeči na text, útrata za vyhodnocení výslovnosti se dostane ke splnění závazku. Další informace najdete na stránce s cenami.
Postup použití hodnocení výslovnosti v režimu streamování ve vlastní aplikaci najdete v ukázkovém kódu.
Postup použití hodnocení výslovnosti v režimu streamování ve vlastní aplikaci najdete v ukázkovém kódu.
Postup použití hodnocení výslovnosti v režimu streamování ve vlastní aplikaci najdete v ukázkovém kódu.
Postup použití hodnocení výslovnosti v režimu streamování ve vlastní aplikaci najdete v ukázkovém kódu.
Postup použití hodnocení výslovnosti v režimu streamování ve vlastní aplikaci najdete v ukázkovém kódu.
Postup použití hodnocení výslovnosti v režimu streamování ve vlastní aplikaci najdete v ukázkovém kódu.
Postup použití hodnocení výslovnosti v režimu streamování ve vlastní aplikaci najdete v ukázkovém kódu.
Průběžné rozpoznávání
Pokud zvukový soubor překročí 30 sekund, použijte pro zpracování nepřetržitý režim. Vzorový kód pro průběžný režim najdete na GitHubu pod funkcí PronunciationAssessmentContinuousWithFile
.
Pokud zvukový soubor překročí 30 sekund, použijte pro zpracování nepřetržitý režim.
Pokud zvukový soubor překročí 30 sekund, použijte pro zpracování nepřetržitý režim. Vzorový kód pro průběžný režim najdete na GitHubu pod funkcí pronunciationAssessmentContinuousWithFile
.
Pokud zvukový soubor překročí 30 sekund, použijte pro zpracování nepřetržitý režim. Vzorový kód pro průběžný režim najdete na GitHubu pod funkcí pronunciation_assessment_continuous_from_file
.
Pokud zvukový soubor překročí 30 sekund, použijte pro zpracování nepřetržitý režim. Vzorový kód pro průběžný režim najdete na GitHubu.
Pokud zvukový soubor překročí 30 sekund, použijte pro zpracování nepřetržitý režim. Vzorový kód pro průběžný režim najdete na GitHubu pod funkcí pronunciationAssessFromFile
.
Pokud zvukový soubor překročí 30 sekund, použijte pro zpracování nepřetržitý režim. Vzorový kód pro průběžný režim najdete na GitHubu pod funkcí continuousPronunciationAssessment
.
Nastavení parametrů konfigurace
Poznámka:
Hodnocení výslovnosti není u sady Speech SDK pro Go k dispozici. O konceptech si můžete přečíst v této příručce. Vyberte pro své řešení jiný programovací jazyk.
V poli SpeechRecognizer
můžete určit jazyk, který se má naučit, nebo si procvičit zlepšení výslovnosti. Výchozí národní prostředí je en-US
. Pokud chcete zjistit, jak určit jazyk výuky pro hodnocení výslovnosti ve vlastní aplikaci, můžete použít následující ukázkový kód.
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)
Tip
Pokud si nejste jistí, které národní prostředí se má nastavit pro jazyk, který má více národních prostředí, zkuste každé národní prostředí samostatně. Například pro španělštinu zkuste es-ES
a es-MX
. Určete, které národní prostředí je pro váš scénář vyšší.
Musíte vytvořit PronunciationAssessmentConfig
objekt. Můžete nastavit EnableProsodyAssessment
a EnableContentAssessmentWithTopic
povolit prosody a hodnocení obsahu. Další informace naleznete v tématu metody konfigurace.
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")
Tato tabulka uvádí některé klíčové parametry konfigurace pro vyhodnocení výslovnosti.
Parametr | Popis |
---|---|
ReferenceText |
Text, proti kterému je výslovnost vyhodnocena. Parametr ReferenceText je volitelný. Pokud chcete spustit skriptované posouzení pro scénář výuky jazyků pro čtení, nastavte referenční text. Pokud chcete spustit neoznačené hodnocení, nenastavujte referenční text.Informace o cenových rozdílech mezi skriptovaným a neoznamovaným posouzením najdete v tématu Ceny. |
GradingSystem |
Bodový systém pro kalibraci skóre. FivePoint 0-5 skóre s plovoucí desetinou čárkou. HundredMark 0–100 skóre s plovoucí desetinou čárkou. Výchozí hodnota: FivePoint . |
Granularity |
Určuje nejnižší úroveň členitosti vyhodnocení. Vrátí skóre pro úrovně větší nebo rovno minimální hodnotě. Přijaté hodnoty jsou Phoneme , které zobrazují skóre na úrovni celého textu, slova, slabiky a foonemu, Word které zobrazují skóre na úrovni celého textu a slova, nebo FullText , který zobrazuje skóre pouze na úrovni celého textu. Zadaným úplným referenčním textem může být slovo, věta nebo odstavec. Závisí na vstupním referenčním textu. Výchozí hodnota: Phoneme . |
EnableMiscue |
Povolí nesprávný výpočet, když se výrazná slova porovnávají s referenčním textem. Povolení chybného nastavení je volitelné. Pokud je True tato hodnota, ErrorType může být výsledná hodnota nastavena Omission na nebo Insertion na základě porovnání. Hodnoty jsou False a True . Výchozí hodnota: False . Chcete-li povolit výpočet chybného nastavení, nastavte EnableMiscue hodnotu True . Můžete odkazovat na fragment kódu nad tabulkou. |
ScenarioId |
Identifikátor GUID pro přizpůsobený bodový systém. |
Metody konfigurace
Tato tabulka uvádí některé z volitelných metod, které můžete pro PronunciationAssessmentConfig
objekt nastavit.
Poznámka:
Hodnocení obsahu a prosody jsou k dispozici pouze v národním prostředí en-US .
Pokud chcete prozkoumat obsah a hodnocení prosody, upgradujte na sadu SDK verze 1.35.0 nebo novější.
Parametr tématu nemá žádné omezení délky.
metoda | Popis |
---|---|
EnableProsodyAssessment |
Umožňuje vyhodnocení výslovnosti vyhodnocením prosody. Tato funkce posuzuje aspekty, jako je stres, intonace, rychlost mluvení a rytmus. Tato funkce poskytuje přehled o přirozené a výraznosti vaší řeči. Povolení hodnocení prosody je volitelné. Pokud je volána tato metoda, je vrácena ProsodyScore výsledná hodnota. |
EnableContentAssessmentWithTopic |
Povolí posouzení obsahu. Posouzení obsahu je součástí neoznačeného hodnocení pro scénář výuky jazyků pro mluvený jazyk. Zadáním popisu můžete vylepšit pochopení konkrétního tématu, o kterém se mluví. Například při volání pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting"); jazyka C# . "Pozdrav" můžete nahradit požadovaným textem, který popisuje téma. Popis nemá žádný limit délky a aktuálně podporuje en-US pouze národní prostředí. |
Získání výsledků hodnocení výslovnosti
Při rozpoznávání řeči můžete požádat o výsledky vyhodnocení výslovnosti jako objekty sady SDK nebo řetězec JSON.
using (var speechRecognizer = new SpeechRecognizer(
speechConfig,
audioConfig))
{
// (Optional) get the session ID
speechRecognizer.SessionStarted += (s, e) => {
Console.WriteLine($"SESSION ID: {e.SessionId}");
};
pronunciationAssessmentConfig.ApplyTo(speechRecognizer);
var speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync();
// The pronunciation assessment result as a Speech SDK object
var pronunciationAssessmentResult =
PronunciationAssessmentResult.FromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
var pronunciationAssessmentResultJson = speechRecognitionResult.Properties.GetProperty(PropertyId.SpeechServiceResponse_JsonResult);
}
Výsledky wordu, slabiky a fotemu nejsou dostupné pomocí objektů sady SDK se sadou Speech SDK pro jazyk C++. Výsledky wordu, slabiky a fotemu jsou dostupné jenom v řetězci JSON.
auto speechRecognizer = SpeechRecognizer::FromConfig(
speechConfig,
audioConfig);
// (Optional) get the session ID
speechRecognizer->SessionStarted.Connect([](const SessionEventArgs& e) {
std::cout << "SESSION ID: " << e.SessionId << std::endl;
});
pronunciationAssessmentConfig->ApplyTo(speechRecognizer);
speechRecognitionResult = speechRecognizer->RecognizeOnceAsync().get();
// The pronunciation assessment result as a Speech SDK object
auto pronunciationAssessmentResult =
PronunciationAssessmentResult::FromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
auto pronunciationAssessmentResultJson = speechRecognitionResult->Properties.GetProperty(PropertyId::SpeechServiceResponse_JsonResult);
Informace o tom, jak určit jazyk výuky pro hodnocení výslovnosti ve vlastní aplikaci, najdete v ukázkovém kódu.
Pro vývoj aplikací pro Android jsou výsledky slov, slabiky a fonetu k dispozici pomocí objektů sady SDK se sadou Speech SDK pro Javu. Výsledky jsou k dispozici také v řetězci JSON. Pro vývoj aplikací java runtime (JRE) jsou výsledky slov, slabiky a foonech k dispozici pouze v řetězci JSON.
SpeechRecognizer speechRecognizer = new SpeechRecognizer(
speechConfig,
audioConfig);
// (Optional) get the session ID
speechRecognizer.sessionStarted.addEventListener((s, e) -> {
System.out.println("SESSION ID: " + e.getSessionId());
});
pronunciationAssessmentConfig.applyTo(speechRecognizer);
Future<SpeechRecognitionResult> future = speechRecognizer.recognizeOnceAsync();
SpeechRecognitionResult speechRecognitionResult = future.get(30, TimeUnit.SECONDS);
// The pronunciation assessment result as a Speech SDK object
PronunciationAssessmentResult pronunciationAssessmentResult =
PronunciationAssessmentResult.fromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
String pronunciationAssessmentResultJson = speechRecognitionResult.getProperties().getProperty(PropertyId.SpeechServiceResponse_JsonResult);
recognizer.close();
speechConfig.close();
audioConfig.close();
pronunciationAssessmentConfig.close();
speechRecognitionResult.close();
var speechRecognizer = SpeechSDK.SpeechRecognizer.FromConfig(speechConfig, audioConfig);
// (Optional) get the session ID
speechRecognizer.sessionStarted = (s, e) => {
console.log(`SESSION ID: ${e.sessionId}`);
};
pronunciationAssessmentConfig.applyTo(speechRecognizer);
speechRecognizer.recognizeOnceAsync((speechRecognitionResult: SpeechSDK.SpeechRecognitionResult) => {
// The pronunciation assessment result as a Speech SDK object
var pronunciationAssessmentResult = SpeechSDK.PronunciationAssessmentResult.fromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
var pronunciationAssessmentResultJson = speechRecognitionResult.properties.getProperty(SpeechSDK.PropertyId.SpeechServiceResponse_JsonResult);
},
{});
Informace o tom, jak určit jazyk výuky pro hodnocení výslovnosti ve vlastní aplikaci, najdete v ukázkovém kódu.
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)
Informace o tom, jak určit jazyk výuky pro hodnocení výslovnosti ve vlastní aplikaci, najdete v ukázkovém kódu.
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];
Informace o tom, jak určit jazyk výuky pro hodnocení výslovnosti ve vlastní aplikaci, najdete v ukázkovém kódu.
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)
Parametry výsledku
V závislosti na tom, jestli používáte skriptované nebo neoznačené hodnocení, můžete získat různé výsledky hodnocení výslovnosti. Skriptované hodnocení je určené pro scénář výuky jazyků pro čtení. Unscripted assessment is for the speaking language learning scenario.
Poznámka:
Informace o cenových rozdílech mezi skriptovaným a neoznamovaným posouzením najdete v tématu Ceny.
Výsledky posouzení skriptovaných skriptů
Tato tabulka uvádí některé klíčové výsledky vyhodnocení výslovnosti pro skriptované posouzení nebo scénář čtení.
Parametr | Popis | Členitost |
---|---|---|
AccuracyScore |
Přesnost výslovnosti řeči Přesnost udává, jak přesně fonély odpovídají výslovnosti rodilého mluvčího. Skóre přesnosti slabiky, slova a úplného textu se agregují z skóre přesnosti na úrovni foonemu a zpřesní se s cíli posouzení. | Úroveň foonemu, Úroveň slabiky (pouze v USA), Word level, Úroveň fulltextu |
FluencyScore |
Plynulost dané řeči. Plynulost označuje, jak přesně řeč odpovídá použití tichých konců mezi slovy rodilého mluvčího. | Úroveň fulltextu |
CompletenessScore |
Úplnost řeči vypočítaná poměrem vyslovovaných slov k vstupnímu referenčnímu textu | Úroveň fulltextu |
ProsodyScore |
Prosody dané řeči. Prosody označuje, jak přirozený je daná řeč, včetně stresu, intonace, rychlosti mluvení a rytmus. | Úroveň fulltextu |
PronScore |
Celkové skóre výslovnosti kvality dané řeči. PronScore se vypočítá z AccuracyScore hodnoty , , CompletenessScore FluencyScore a ProsodyScore s váhou za předpokladu, že ProsodyScore a CompletenessScore jsou k dispozici. Pokud některý z nich není dostupný, PronScore nebude toto skóre považovat za vhodné. |
Úroveň fulltextu |
ErrorType |
Tato hodnota označuje typ chyby v porovnání s referenčním textem. Mezi možnosti patří, zda je slovo vynecháno, vloženo nebo nesprávně vloženo s koncem. Označuje také chybějící přerušení interpunkce. Označuje také, zda je slovo špatně vyslovováno, nebo monotonicky rostoucí, padající nebo ploché na promluvě. Možné hodnoty nejsou None pro toto slovoOmission Insertion , , Mispronunciation , UnexpectedBreak , MissingBreak a Monotone . Typ chyby může být Mispronunciation v případě, že výslovnost AccuracyScore slova je nižší než 60. |
Úroveň wordu |
Neoznačené výsledky hodnocení
Tato tabulka uvádí některé klíčové výsledky vyhodnocení výslovnosti pro neoznačené hodnocení nebo mluvený scénář.
VocabularyScore
, GrammarScore
a TopicScore
parametry se zahrnou do kombinovaného hodnocení obsahu.
Poznámka:
Hodnocení obsahu a prosody jsou k dispozici pouze v národním prostředí en-US .
Parametr odpovědi | Popis | Členitost |
---|---|---|
AccuracyScore |
Přesnost výslovnosti řeči Přesnost udává, jak přesně fonély odpovídají výslovnosti rodilého mluvčího. Slabiky, slova a skóre přesnosti celého textu se agregují z skóre přesnosti na úrovni fomeu a zpřesní se s cíli posouzení. | Úroveň foonemu, Úroveň slabiky (pouze v USA), Word level, Úroveň fulltextu |
FluencyScore |
Plynulost dané řeči. Plynulost označuje, jak přesně řeč odpovídá použití tichých konců mezi slovy rodilého mluvčího. | Úroveň fulltextu |
ProsodyScore |
Prosody dané řeči. Prosody označuje, jak přirozený je daná řeč, včetně stresu, intonace, rychlosti mluvení a rytmus. | Úroveň fulltextu |
VocabularyScore |
Znalost lexikálního použití. Vyhodnocuje efektivní použití slov a jejich vhodnost v daném kontextu za účelem přesného vyjádření myšlenek a úrovně lexikální složitosti. | Úroveň fulltextu |
GrammarScore |
Správnost při používání gramatiky a různých vzorů vět Lexikální přesnost, gramatická přesnost a rozmanitost struktur vět společně zvyšují gramatické chyby. | Úroveň fulltextu |
TopicScore |
Úroveň porozumění a zapojení s tématem, která poskytuje přehledy o schopnosti mluvčího vyjádřit své myšlenky a nápady efektivně a schopnost zapojit se do tématu. | Úroveň fulltextu |
PronScore |
Celkové skóre výslovnosti kvality dané řeči. PronScore se vypočítá z AccuracyScore hodnoty , FluencyScore a ProsodyScore s váhu za předpokladu, že ProsodyScore je k dispozici. Pokud ProsodyScore není dostupné, PronScore nebude toto skóre brát v úvahu. |
Úroveň fulltextu |
ErrorType |
Slovo je špatně vyslovováno, nesprávně vloženo s koncem nebo chybí konec v interpunkci. Označuje také, zda je výslovnost monotonicky rostoucí, padající nebo plochá na promluvě. Možné hodnoty nejsou None pro toto slovo Mispronunciation , , , UnexpectedBreak , MissingBreak a Monotone . |
Úroveň wordu |
V následující tabulce najdete podrobnější popis výsledků hodnocení prosody:
Pole | Popis |
---|---|
ProsodyScore |
Prosody skóre celé promluvy. |
Feedback |
Zpětná vazba na úrovni slova, včetně Break a Intonation . |
Break |
|
ErrorTypes |
Typy chyb souvisejících s přerušeními, včetně UnexpectedBreak a MissingBreak . Aktuální verze neposkytuje typ chyby přerušení. Je potřeba nastavit prahové hodnoty polí UnexpectedBreak – Confidence a MissingBreak – confidence rozhodnout se, jestli před slovem není neočekávaný konec nebo chybí konec. |
UnexpectedBreak |
Označuje neočekávaný konec před slovem. |
MissingBreak |
Označuje chybějící konec před slovem. |
Thresholds |
Navrhované prahové hodnoty pro obě skóre spolehlivosti jsou 0,75. To znamená, že pokud je hodnota UnexpectedBreak – Confidence větší než 0,75, dojde k neočekávanému přerušení. Pokud je hodnota MissingBreak – confidence větší než 0,75, dojde k chybě. I když 0,75 je hodnota, kterou doporučujeme, je lepší upravit prahové hodnoty na základě vlastního scénáře. Pokud chcete mít u těchto dvou konců citlivost detekce proměnných, můžete těmto UnexpectedBreak - Confidence MissingBreak - Confidence polím přiřadit různé prahové hodnoty. |
Intonation |
Označuje intonaci v řeči. |
ErrorTypes |
Typy chyb související s intonací, aktuálně podporují pouze Monotone. Pokud v Monotone poli ErrorTypes existuje, zjistí se, že promluva je monotónní. Monotón se zjistí na celé promluvě, ale značka se přiřadí všem slovům. Všechna slova ve stejné promluvě sdílejí stejné monotónní informace o detekci. |
Monotone |
Označuje monotónní řeč. |
Thresholds (Monotone Confidence) |
Pole Monotone - SyllablePitchDeltaConfidence jsou vyhrazena pro uživatelsky přizpůsobenou monotónovou detekci. Pokud nejste spokojeni s zadaným monotónovým rozhodnutím, upravte prahové hodnoty těchto polí tak, aby se detekce přizpůsobila vašim preferencím. |
Příklad výsledku JSON
Výsledky vyhodnocení výslovnosti skriptované pro mluvené slovo "hello" se zobrazí jako řetězec JSON v následujícím příkladu.
- Fonetické abecedy jsou IPA.
- Slabiky se vrátí spolu s fony pro stejné slovo.
Offset
Pomocí hodnot můžeteDuration
zarovnat slabiky s odpovídajícími fonymy. Například počáteční posun (117000000) druhé slabikyloʊ
odpovídá třetímu foonemu,l
. Posun představuje čas, kdy rozpoznaná řeč začíná ve zvukovém streamu. Hodnota se měří v 100 nanosekundových jednotkách. Další informace oOffset
vlastnostech odpovědi aDuration
další informace.- Existuje pět
NBestPhonemes
, které odpovídají počtu požadovaných mluvených fonech . - V
Phonemes
rámci , nejpravděpodobněji mluvené fomy byloə
místo očekávaného fomy .ɛ
Očekávaný fonetɛ
obdržel pouze skóre spolehlivosti 47. Další potenciální shody obdržely skóre spolehlivosti 52, 17 a 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
}
]
}
]
}
]
}
Hodnocení výslovnosti můžete získat pro:
- Celý text
- Slova
- Slabiky
- Fotely ve formátu SAPI nebo IPA
Podporované funkce na národní prostředí
Následující tabulka shrnuje, které funkce národní prostředí podporují. Další informace najdete v následujících částech. Pokud pro podporovanou funkci nejsou vyžadovat národní prostředí uvedená v následující tabulce, vyplňte tento formulář pro příjem a požádejte ho o další pomoc.
Abeceda s foonemem | IPA | SAPI |
---|---|---|
Název telefonního motivu | en-US |
en-US , zh-CN |
Slabiky skupiny | en-US |
en-US |
Mluvený fones | en-US |
en-US |
Slabiky
Hodnocení výslovnosti může poskytovat výsledky posouzení na úrovni slabiky. Slovo se obvykle vyslovuje slabikou, nikoli slabikou podle foonemu. Seskupení slabiky je čitelnější a v souladu s mluvenými návyky.
Posouzení výslovnosti podporuje slabiky pouze v en-US
rámci IPA a SAPI.
Následující tabulka porovnává ukázkové fony s odpovídajícími slabiky.
Ukázkové slovo | Fonémy | Slabiky |
---|---|---|
technologický | teknʒɪkl | tek·nɑ·dʒɪkl |
dobrý den | hɛloʊ | hɛ·loʊ |
štěstí | lʌk | lʌk |
fotosyntéza | foʊtθsɪnθθsɪs | foʊ·tθ·sɪn·θθ·sɪs |
Pokud chcete požádat o výsledky na úrovni slabiky spolu s fonety, nastavte parametr konfigurace podrobností na Phoneme
hodnotu .
Formát abecedy pro fofony
Posouzení výslovnosti podporuje název foonemu s en-US
IPA a SAPIen-US
.zh-CN
Pro národní prostředí, která podporují název foonemu, je název foonemu k dispozici společně se skóre. Názvy foonemu pomáhají určit, které fony byly vyslovovány přesně nebo nepřesně. U jiných národních prostředí můžete získat pouze skóre foonemu.
Následující tabulka porovnává ukázkové fonely SAPI s odpovídajícími fofonmey IPA.
Ukázkové slovo | SAPI Phonemes | Fonály IPA |
---|---|---|
dobrý den | h eh l ow | h ɛ l oʊ |
štěstí | l ah k | l ʌ k |
fotosyntéza | fow t ax s ih n th ax s ih s | f oʊ t θ s ɪ n θ θ s ɪ s |
Pokud chcete požádat o fofonmy IPA, nastavte abecedu foonemu na IPA
hodnotu . Pokud nezadáte abecedu, foonely jsou ve výchozím nastavení ve formátu SAPI.
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"
Posouzení mluvených fonetů
Pomocí mluvených fonech můžete získat skóre spolehlivosti, které značí, jak pravděpodobné, že mluvené fomy odpovídaly očekávaným fonemům.
Posouzení výslovnosti podporuje mluvené fonemy v en-US
rámci IPA a SAPI.
Pokud chcete například získat úplný mluvený zvuk slova Hello
, můžete zřetězení prvního mluveného fomusu pro každý očekávaný hlásek s nejvyšším skóre spolehlivosti. V následujícím výsledku posouzení, když mluvíte slovo hello
, očekávané IPA foonemy jsou h ɛ l oʊ
. Ale skutečné mluvené fonemy jsou h ə l oʊ
. V tomto příkladu máte pětmožnýchch Výsledek posouzení ukazuje, že nejpravděpodobnější mluvený fom byl ə
místo očekávaného fomysu ɛ
. Očekávaný fonet ɛ
obdržel pouze skóre spolehlivosti 47. Další potenciální shody obdržely skóre spolehlivosti 52, 17 a 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
}
]
}
]
}
]
}
Pokud chcete určit, zda a kolik potenciálních mluvených fonech získá skóre spolehlivosti, nastavte NBestPhonemeCount
parametr na celočíselnou hodnotu, například 5
.
pronunciationAssessmentConfig.NBestPhonemeCount = 5;
auto pronunciationAssessmentConfig = PronunciationAssessmentConfig::CreateFromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
PronunciationAssessmentConfig pronunciationAssessmentConfig = PronunciationAssessmentConfig.fromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
pronunciation_assessment_config = speechsdk.PronunciationAssessmentConfig(json_string="{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}")
var pronunciationAssessmentConfig = SpeechSDK.PronunciationAssessmentConfig.fromJSON("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
pronunciationAssessmentConfig.nbestPhonemeCount = 5;
pronunciationAssessmentConfig?.nbestPhonemeCount = 5
Výpočet skóre výslovnosti
Skóre výslovnosti se počítá pomocí přesnosti, prosody, plynulosti a skóre úplnosti na základě konkrétních vzorců pro čtení a mluvení scénářů.
Při řazení skóre přesnosti, prosody, fluence a úplnosti od nízkého po vysoké (pokud je každé skóre k dispozici) a představující nejnižší skóre k nejvyššímu skóre jako s0 až s3 se vypočítá skóre výslovnosti následujícím způsobem:
Scénář čtení:
- S prosody skóre: PronScore = 0,4 * s0 + 0,2 * s1 + 0,2 * s2 + 0,2 * s3
- Bez skóre prosody: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
Pro scénář mluvení (skóre úplnosti se nedá použít):
- S prosody skóre: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
- Bez skóre prosody: PronScore = 0,6 * s0 + 0,4 * s1
Tento vzorec poskytuje vážený výpočet na základě důležitosti každého skóre a zajišťuje komplexní vyhodnocení výslovnosti.
Související obsah
- Přečtěte si o srovnávacím testu kvality.
- Vyzkoušejte hodnocení výslovnosti v sadě Studio.
- Podívejte se na snadno nasadit ukázku posouzení výslovnosti.
- Podívejte se na video s ukázkou hodnocení výslovnosti.