Udostępnij za pośrednictwem


Korzystanie z oceny wymowy

Z tego artykułu dowiesz się, jak ocenić wymowę za pomocą mowy na tekst za pomocą zestawu SPEECH SDK. Funkcja oceny wymowy ocenia wymowę i przekazuje mówiącym osobom opinie na temat dokładności i płynności mowy.

Uwaga

Ocena wymowy używa określonej wersji modelu zamiany mowy na tekst, innej niż standardowy model mowy na tekst, w celu zapewnienia spójnej i dokładnej oceny wymowy.

Używanie oceny wymowy w trybie przesyłania strumieniowego

Ocena wymowy obsługuje nieprzerwany tryb przesyłania strumieniowego. Czas nagrywania może być nieograniczony za pośrednictwem zestawu SPEECH SDK. Tak długo, jak nie zatrzymasz rejestrowania, proces oceny nie zostanie zakończony i można wstrzymywać i wznawiać ocenę wygodnie.

Aby uzyskać informacje na temat dostępności oceny wymowy, zobacz obsługiwane języki i dostępne regiony.

W ramach planu bazowego użycie oceny wymowy kosztuje to samo, co zamiana mowy na tekst w przypadku cen warstwy płatności zgodnie z rzeczywistym użyciem lub warstwy zobowiązania. Jeśli zakupisz warstwę zobowiązania dla zamiany mowy na tekst, wydatki na ocenę wymowy idą w kierunku spełnienia zobowiązania. Aby uzyskać więcej informacji, zobacz Cennik.

Aby dowiedzieć się, jak używać oceny wymowy w trybie przesyłania strumieniowego we własnej aplikacji, zobacz przykładowy kod.

Aby dowiedzieć się, jak używać oceny wymowy w trybie przesyłania strumieniowego we własnej aplikacji, zobacz przykładowy kod.

Aby dowiedzieć się, jak używać oceny wymowy w trybie przesyłania strumieniowego we własnej aplikacji, zobacz przykładowy kod.

Aby dowiedzieć się, jak używać oceny wymowy w trybie przesyłania strumieniowego we własnej aplikacji, zobacz przykładowy kod.

Aby dowiedzieć się, jak używać oceny wymowy w trybie przesyłania strumieniowego we własnej aplikacji, zobacz przykładowy kod.

Aby dowiedzieć się, jak używać oceny wymowy w trybie przesyłania strumieniowego we własnej aplikacji, zobacz przykładowy kod.

Aby dowiedzieć się, jak używać oceny wymowy w trybie przesyłania strumieniowego we własnej aplikacji, zobacz przykładowy kod.

Ciągłe rozpoznawanie

Jeśli plik audio przekracza 30 sekund, użyj trybu ciągłego do przetwarzania. Przykładowy kod trybu ciągłego można znaleźć w usłudze GitHub w obszarze funkcji PronunciationAssessmentContinuousWithFile.

Jeśli plik audio przekracza 30 sekund, użyj trybu ciągłego do przetwarzania.

Jeśli plik audio przekracza 30 sekund, użyj trybu ciągłego do przetwarzania. Przykładowy kod trybu ciągłego można znaleźć w usłudze GitHub w obszarze funkcji pronunciationAssessmentContinuousWithFile.

Jeśli plik audio przekracza 30 sekund, użyj trybu ciągłego do przetwarzania. Przykładowy kod trybu ciągłego można znaleźć w usłudze GitHub w obszarze funkcji pronunciation_assessment_continuous_from_file.

Jeśli plik audio przekracza 30 sekund, użyj trybu ciągłego do przetwarzania. Przykładowy kod trybu ciągłego można znaleźć w witrynie GitHub.

Jeśli plik audio przekracza 30 sekund, użyj trybu ciągłego do przetwarzania. Przykładowy kod trybu ciągłego można znaleźć w usłudze GitHub w obszarze funkcji pronunciationAssessFromFile.

Jeśli plik audio przekracza 30 sekund, użyj trybu ciągłego do przetwarzania. Przykładowy kod trybu ciągłego można znaleźć w usłudze GitHub w obszarze funkcji continuousPronunciationAssessment.

Ustawianie parametrów konfiguracji

Uwaga

Ocena wymowy nie jest dostępna w zestawie SPEECH SDK dla języka Go. Zapoznaj się z pojęciami w tym przewodniku. Wybierz inny język programowania dla swojego rozwiązania.

W pliku SpeechRecognizermożna określić język, aby nauczyć się lub ćwiczyć poprawianie wymowy. Domyślne ustawienia regionalne to en-US. Aby dowiedzieć się, jak określić język uczenia na potrzeby oceny wymowy we własnej aplikacji, możesz użyć następującego przykładowego kodu.

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)

Napiwek

Jeśli nie masz pewności, które ustawienia regionalne mają być ustawione dla języka z wieloma ustawieniami regionalnymi, wypróbuj poszczególne ustawienia regionalne oddzielnie. Na przykład w przypadku języka hiszpańskiego spróbuj użyć polecenia es-ES i es-MX. Określ, które ustawienia regionalne są wyższe dla danego scenariusza.

Należy utworzyć PronunciationAssessmentConfig obiekt. Możesz ustawić EnableProsodyAssessment i EnableContentAssessmentWithTopic włączyć prosody i ocenę zawartości. Aby uzyskać więcej informacji, zobacz metody konfiguracji.

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

W tej tabeli wymieniono niektóre kluczowe parametry konfiguracji oceny wymowy.

Parametr Opis
ReferenceText Tekst, względem którego jest obliczana wymowa.

Parametr ReferenceText jest opcjonalny. Ustaw tekst referencyjny, jeśli chcesz uruchomić ocenę skryptową dla scenariusza uczenia się języka do czytania. Nie ustawiaj tekstu odwołania, jeśli chcesz uruchomić nieskryptowaną ocenę.

Aby uzyskać informacje o różnicach cen między oceną skryptów i nieskryptowaną, zobacz Cennik.
GradingSystem System punktów do kalibracji wyników. FivePoint daje wynik zmiennoprzecinkowy 0-5. HundredMark daje wynik zmiennoprzecinkowy 0-100. Wartość domyślna: FivePoint.
Granularity Określa najniższy poziom szczegółowości oceny. Zwraca wyniki dla poziomów większych lub równych minimalnej wartości. Zaakceptowane wartości to Phoneme, które pokazują wynik na poziomie pełnotekstu, wyrazów, sylable i phoneme, Word, który pokazuje wynik na poziomie pełnego tekstu i wyrazu lub FullText, który pokazuje wynik tylko na poziomie pełnotekstowym. Podany pełny tekst referencyjny może być wyrazem, zdaniem lub akapitem. Zależy to od tekstu referencyjnego danych wejściowych. Wartość domyślna: Phoneme.
EnableMiscue Włącza błędne obliczenie, gdy wyrazy wymawiane są porównywane z tekstem odwołania. Włączenie błędu jest opcjonalne. Jeśli ta wartość to True, ErrorType wartość wyniku można ustawić na Omission lub Insertion na podstawie porównania. Wartości to False i True. Wartość domyślna: False. Aby włączyć błędne obliczenie, ustaw wartość EnableMiscue True. Możesz odwołać się do fragmentu kodu powyżej tabeli.
ScenarioId Identyfikator GUID dostosowanego systemu punktów.

Metody konfiguracji

W tej tabeli wymieniono niektóre metody opcjonalne, które można ustawić dla PronunciationAssessmentConfig obiektu.

Uwaga

Oceny zawartości i prosody są dostępne tylko w ustawieniach regionalnych en-US .

Aby zapoznać się z zawartością i ocenami prosody, uaktualnij zestaw SDK do wersji 1.35.0 lub nowszej.

Parametr tematu nie ma limitu długości.

Metoda opis
EnableProsodyAssessment Umożliwia ocenę prosody na potrzeby oceny wymowy. Ta funkcja ocenia aspekty, takie jak stres, intonacja, szybkość mówienia i rytm. Ta funkcja zapewnia wgląd w naturalność i wyrazistość mowy.

Włączenie oceny prosodyji jest opcjonalne. Jeśli ta metoda jest wywoływana ProsodyScore , zwracana jest wartość wyniku.
EnableContentAssessmentWithTopic Włącza ocenę zawartości. Ocena zawartości jest częścią nieskryptowanej oceny scenariusza uczenia się języka mówionego. Podając opis, możesz ulepszyć zrozumienie konkretnego tematu, o którym mówisz. Na przykład w wywołaniu pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting");języka C# . Możesz zastąpić ciąg "greeting" żądanym tekstem, aby opisać temat. Opis nie ma limitu długości i obecnie obsługuje en-US tylko ustawienia regionalne.

Uzyskiwanie wyników oceny wymowy

Po rozpoznaniu mowy możesz zażądać wyników oceny wymowy jako obiektów zestawu SDK lub ciągu 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);
}

Wyniki programu Word, sylable i phoneme nie są dostępne przy użyciu obiektów zestawu SDK z zestawem Speech SDK dla języka C++. Wyniki wyrazów, sylaable i phoneme są dostępne tylko w ciągu 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);

Aby dowiedzieć się, jak określić język uczenia na potrzeby oceny wymowy we własnej aplikacji, zobacz przykładowy kod.

W przypadku tworzenia aplikacji dla systemu Android wyniki wyrazów, sylable i phoneme są dostępne przy użyciu obiektów zestawu SDK z zestawem Speech SDK dla języka Java. Wyniki są również dostępne w ciągu JSON. W przypadku tworzenia aplikacji środowiska Java Runtime (JRE) wyraz, sylable i wyniki phoneme są dostępne tylko w ciągu 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);
},
{});

Aby dowiedzieć się, jak określić język uczenia na potrzeby oceny wymowy we własnej aplikacji, zobacz przykładowy kod.

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)

Aby dowiedzieć się, jak określić język uczenia na potrzeby oceny wymowy we własnej aplikacji, zobacz przykładowy kod.

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

Aby dowiedzieć się, jak określić język uczenia na potrzeby oceny wymowy we własnej aplikacji, zobacz przykładowy kod.

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 wyniku

W zależności od tego, czy używasz oceny skryptowej , czy nieskrypcyjnej , możesz uzyskać różne wyniki oceny wymowy. Ocena skryptowa jest przeznaczony dla scenariusza uczenia się języka do czytania. Ocena nieskryptowana dotyczy scenariusza uczenia się języka mówionego.

Uwaga

Aby uzyskać informacje o różnicach cen między oceną skryptów i nieskryptowaną, zobacz Cennik.

Wyniki oceny skryptowej

W tej tabeli wymieniono niektóre kluczowe wyniki oceny wymowy dla scenariusza oceny skryptowej lub scenariusza czytania.

Parametr Opis Poziom szczegółowości
AccuracyScore Dokładność wymowy mowy. Dokładność wskazuje, jak blisko fonezy pasują do wymowy osoby mówiącej natywnej. Wyniki dokładności wyrazów, wyrazów i pełnego tekstu są agregowane na podstawie wyniku dokładności na poziomie phoneme i uściślić z celami oceny. Poziom Phoneme,
Poziom sylalny (tylko stany USA),
Poziom programu Word,
Poziom pełnotekstowy
FluencyScore Płynność danej mowy. Płynność wskazuje, jak ściśle mowa pasuje do użycia przez osoby mówiące w trybie dyskretnym przerw między wyrazami. Poziom pełnotekstowy
CompletenessScore Kompletność mowy obliczana przez stosunek wymawianych wyrazów do wejściowego tekstu referencyjnego. Poziom pełnotekstowy
ProsodyScore Prosody danej mowy. Prosody wskazuje, jak naturalna jest dana mowa, w tym stres, intonacja, szybkość mówienia i rytm. Poziom pełnotekstowy
PronScore Ogólny wynik jakości wymowy danej mowy. PronScore parametr jest obliczany na podstawie AccuracyScorewartości , FluencyScore, CompletenessScorei ProsodyScore z wagą, pod warunkiem, że ProsodyScore i CompletenessScore są dostępne. Jeśli którykolwiek z nich nie jest dostępny, PronScore nie weźmie pod uwagę tego wyniku. Poziom pełnotekstowy
ErrorType Ta wartość wskazuje typ błędu w porównaniu z tekstem odwołania. Opcje obejmują, czy wyraz zostanie pominięty, wstawiony lub nieprawidłowo wstawiony z podziałem. Wskazuje również brak przerwy w interpunkcji. Wskazuje również, czy słowo jest źle wymawiane, czy monotonicznie rosnące, spadające lub płaskie na wypowiedzi. Możliwe wartości nie są None błędami dla tego słowa, Omission, , MispronunciationInsertion, UnexpectedBreak, MissingBreak, i Monotone. Typ błędu może być Mispronunciation wtedy, gdy wymowa AccuracyScore słowa jest niższa niż 60. Poziom programu Word

Nieskrypowane wyniki oceny

W tej tabeli wymieniono niektóre kluczowe wyniki oceny wymowy dla nieskryptowanej oceny lub scenariusza mówienia.

VocabularyScoreparametry , GrammarScorei TopicScore są rzutowane do połączonej oceny zawartości.

Uwaga

Oceny zawartości i prosody są dostępne tylko w ustawieniach regionalnych en-US .

Parametr odpowiedzi opis Poziom szczegółowości
AccuracyScore Dokładność wymowy mowy. Dokładność wskazuje, jak blisko fonezy pasują do wymowy osoby mówiącej natywnej. Wyniki dokładności sylalnej, wyrazowej i pełnej dokładności tekstu są agregowane na podstawie wyniku dokładności na poziomie phoneme i uściślić z celami oceny. Poziom Phoneme,
Poziom sylalny (tylko stany USA),
Poziom programu Word,
Poziom pełnotekstowy
FluencyScore Płynność danej mowy. Płynność wskazuje, jak ściśle mowa pasuje do użycia przez osoby mówiące w trybie dyskretnym przerw między wyrazami. Poziom pełnotekstowy
ProsodyScore Prosody danej mowy. Prosody wskazuje, jak naturalna jest dana mowa, w tym stres, intonacja, szybkość mówienia i rytm. Poziom pełnotekstowy
VocabularyScore Biegłość w użyciu leksykalnym. Ocenia skuteczne użycie słów i ich odpowiedniość w danym kontekście w celu dokładnego wyrażania pomysłów oraz poziomu złożoności leksykalnej. Poziom pełnotekstowy
GrammarScore Poprawność w korzystaniu z gramatyki i różnych wzorców zdań. Dokładność leksykalna, dokładność gramatyczna i różnorodność struktur zdań wspólnie podnosi poziom błędów gramatycznych. Poziom pełnotekstowy
TopicScore Poziom zrozumienia i zaangażowania w temat, który zapewnia wgląd w zdolność osoby mówiącej do skutecznego wyrażania swoich myśli i pomysłów oraz zdolność do angażowania się w ten temat. Poziom pełnotekstowy
PronScore Ogólny wynik jakości wymowy danej mowy. PronScore parametr jest obliczany na podstawie AccuracyScorewartości , FluencyScorei ProsodyScore z wagą, pod warunkiem, że ProsodyScore jest dostępny. Jeśli ProsodyScore nie jest dostępny, PronScore nie weźmie pod uwagę tego wyniku. Poziom pełnotekstowy
ErrorType Słowo jest źle wymawiane, nieprawidłowo wstawione z przerwą lub brakuje przerwy w interpunkcji. Wskazuje również, czy wymowa jest monotonicznie rośnie, spada lub płasko na wypowiedzi. Możliwe wartości nie są None błędami dla tego słowa, Mispronunciation, UnexpectedBreakMissingBreaki Monotone. Poziom programu Word

W poniższej tabeli opisano bardziej szczegółowe wyniki oceny prosody:

Pole opis
ProsodyScore Prosody wynik całej wypowiedzi.
Feedback Opinie na temat poziomu słów, w tym Break i Intonation.
Break
ErrorTypes Typy błędów związane z podziałami, w tym UnexpectedBreak i MissingBreak. Bieżąca wersja nie udostępnia typu błędu przerwania. Należy ustawić progi w polach UnexpectedBreak – Confidence i MissingBreak – confidence zdecydować, czy istnieje nieoczekiwana przerwa, czy brak przerwania przed słowem.
UnexpectedBreak Wskazuje nieoczekiwany podział przed wyrazem.
MissingBreak Wskazuje brakujący podział przed wyrazem.
Thresholds Sugerowane progi dla obu współczynników ufności to 0,75. Oznacza to, że jeśli wartość UnexpectedBreak – Confidence jest większa niż 0,75, ma nieoczekiwaną przerwę. Jeśli wartość wartości MissingBreak – confidence jest większa niż 0,75, ma brak przerwy. Chociaż wartość 0,75 jest zalecana, lepiej dostosować progi na podstawie własnego scenariusza. Jeśli chcesz mieć czułość wykrywania zmiennych dla tych dwóch podziałów, możesz przypisać różne progi do UnexpectedBreak - Confidence pól i MissingBreak - Confidence .
Intonation Wskazuje intonację w mowie.
ErrorTypes Typy błędów związane z intonacją, obecnie obsługują tylko Monotone. Jeśli element Monotone istnieje w polu ErrorTypes, wypowiedź zostanie wykryta jako monotoniczna. Monotone jest wykrywany w całej wypowiedzi, ale tag jest przypisywany do wszystkich słów. Wszystkie słowa w tej samej wypowiedzi współużytkują te same informacje dotyczące wykrywania monotonów.
Monotone Wskazuje mowę monotoniczną.
Thresholds (Monotone Confidence) Pola Monotone - SyllablePitchDeltaConfidence są zarezerwowane do wykrywania monotonów dostosowanych przez użytkownika. Jeśli nie jesteś zadowolony z podanej decyzji monotone, dostosuj progi dla tych pól, aby dostosować wykrywanie zgodnie z preferencjami.

Przykład wyników JSON

Wyniki oceny wymowy skryptu dla słowa mówionego "hello" są wyświetlane jako ciąg JSON w poniższym przykładzie.

  • Alfabet phoneme to IPA.
  • Sylaby są zwracane obok fonezy dla tego samego słowa.
  • Możesz użyć Offset wartości i Duration , aby wyrównać sylaby z odpowiadającymi im fonemami. Na przykład przesunięcie początkowe (1170000000) drugiej sylaby loʊ jest zgodne z trzecim fonem, l. Przesunięcie reprezentuje czas, w którym rozpoznana mowa rozpoczyna się w strumieniu audio. Wartość jest mierzona w jednostkach 100-nanosekundowych. Aby dowiedzieć się więcej o systemach Offset i Duration, zobacz właściwości odpowiedzi.
  • Istnieje pięć NBestPhonemes , które odpowiadają liczbie telefonów mówionych żądanych.
  • W programie najbardziej prawdopodobne były fonemy ə mówione zamiast oczekiwanego phoneme ɛ.Phonemes Oczekiwany phoneme ɛ otrzymał tylko wynik ufności 47. Inne potencjalne dopasowania otrzymały wyniki ufności 52, 17 i 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
                        }
                    ]
                }
            ]
        }
    ]
}

Oceny wymowy można uzyskać dla:

Obsługiwane funkcje na ustawienia regionalne

Poniższa tabela zawiera podsumowanie funkcji obsługiwanych przez ustawienia regionalne. Aby uzyskać więcej informacji, zobacz następujące sekcje. Jeśli wymagane ustawienia regionalne nie są wymienione w poniższej tabeli dla obsługiwanej funkcji, wypełnij ten formularz do wprowadzania, aby uzyskać dalszą pomoc.

Alfabet phoneme IPA SAPI
Nazwa telefonu en-US en-US, zh-CN
Grupa sylalna en-US en-US
Telefon mówiony en-US en-US

Grupy sylalne

Ocena wymowy może zapewnić wyniki oceny na poziomie sylalnej. Słowo jest zwykle wymawiane sylaby przez sylaby, a nie phoneme przez phoneme. Grupowanie w sylabach jest bardziej czytelne i dostosowane do nawyków mówienia.

Ocena wymowy obsługuje grupy sylable tylko w en-US usłudze IPA i SAPI.

W poniższej tabeli porównaliśmy przykładowe fonezy z odpowiednimi sylabami.

Przykładowy wyraz Fonemów Sylaby
technologiczny teknʒɪkl tek·n· lɑ·dʒɪkl
hello hɛloʊ hɛ·loʊ
szczęście lʌk lʌk
fotosynteza foʊt teżsɪnθ teżsɪs foʊ·t· sɪn·θ · sɪs

Aby zażądać wyników na poziomie sylalnej wraz z phonemes, ustaw parametr konfiguracji szczegółowości na Phonemewartość .

Format alfabetu Phoneme

Ocena wymowy obsługuje nazwę phoneme w programie en-US z użyciem protokołu IPA oraz w en-US systemach SAPI i .zh-CN

W przypadku ustawień regionalnych, które obsługują nazwę phoneme, nazwa phoneme jest dostarczana wraz z wynikiem. Nazwy fonemu pomagają zidentyfikować, które fonezy zostały dokładnie lub niedokładnie wymawiane. W przypadku innych ustawień regionalnych można uzyskać tylko wynik phoneme.

W poniższej tabeli porównaliśmy przykładowe fonemy SAPI z odpowiednimi phonemami IPA.

Przykładowy wyraz SAPI Phonemes Telefony IPA
hello h eh l ow h ɛ l oʊ
szczęście l ah k l ʌ k
fotosynteza f ow t ax s ih n th ax s ih s f oʊ t ɪ s ɪ n θ ɪ s

Aby zażądać telefonów IPA, ustaw alfabet phoneme na IPA. Jeśli nie określisz alfabetu, dzwony są domyślnie w formacie 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"

Ocenianie rozmów telefonicznych

Dzięki mówionym fonemom można uzyskać wyniki ufności, które wskazują, jak prawdopodobne jest, że telefony mówione pasują do oczekiwanych fonetów.

Ocena wymowy obsługuje telefony mówione w usłudze en-US IPA i SAPI.

Na przykład, aby uzyskać pełny dźwięk mówiony dla słowa Hello, można połączyć pierwszy telefon mówiony dla każdego oczekiwanego fonemu z najwyższym współczynnikiem ufności. W poniższym wyniku oceny, gdy mówisz słowo hello, oczekiwane fonezy IPA to h ɛ l oʊ. Jednak rzeczywiste fonezy mówione są h ə l oʊ. W tym przykładzie masz pięciu możliwych kandydatów do każdego oczekiwanego telefonu. Wynik oceny pokazuje, że najbardziej prawdopodobnym rozmówcą był ə zamiast oczekiwanego phoneme ɛ. Oczekiwany phoneme ɛ otrzymał tylko wynik ufności 47. Inne potencjalne dopasowania otrzymały wyniki ufności 52, 17 i 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
                        }
                    ]
                }
            ]
        }
    ]
}

Aby wskazać, czy i ile potencjalnych phonemów mówionych, aby uzyskać wyniki ufności dla, ustaw NBestPhonemeCount parametr na wartość całkowitą, taką jak 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

Obliczanie wyniku wymowy

Wyniki wymowy są obliczane przez dokładność wagi, prosody, płynność i wyniki kompletności na podstawie określonych formuł dla scenariuszy czytania i mówienia.

Podczas sortowania wyników dokładności, prosody, biegłości i kompletności z niskiej do wysokiej (jeśli każdy wynik jest dostępny) i reprezentując najniższy wynik do najwyższego wyniku od s0 do s3, wynik wymowy jest obliczany w następujący sposób:

W przypadku scenariusza odczytu:

  • Z wynikiem prosody: PronScore = 0,4 * s0 + 0,2 * s1 + 0,2 * s2 + 0,2 * s3
  • Bez wyniku prosody: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2

W przypadku scenariusza mówiącego (wynik kompletności nie ma zastosowania):

  • Z wynikiem prosody: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
  • Bez wyniku prosody: PronScore = 0,6 * s0 + 0,4 * s1

Ta formuła zapewnia obliczanie ważone na podstawie znaczenia każdego wyniku, zapewniając kompleksową ocenę wymowy.