Sdílet prostřednictvím


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 SpeechRecognizermůž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, Wordkteré 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 Truetato 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. PronScorese vypočítá z AccuracyScorehodnoty , , CompletenessScoreFluencyScorea 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 slovoOmissionInsertion, , Mispronunciation, UnexpectedBreak, MissingBreaka 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, GrammarScorea 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 AccuracyScorehodnoty , FluencyScorea 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, MissingBreaka 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 ErrorTypesexistuje, 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ůžete Duration zarovnat slabiky s odpovídajícími fonymy. Například počáteční posun (117000000) druhé slabiky loʊ 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 o Offset vlastnostech odpovědi a Durationdalší informace.
  • Existuje pět NBestPhonemes , které odpovídají počtu požadovaných mluvených fonech .
  • V Phonemesrá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:

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 Phonemehodnotu .

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 IPAhodnotu . 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.