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.

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.

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, zobacz przykładowy kod.

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ść EnableMiscueTrue. Możesz odwołać się do fragmentu kodu poniż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.

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))
{
    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);

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

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

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)

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

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

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 Telefon me,
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 jest agregowany z AccuracyScorewartości , FluencyScorei CompletenessScore z wagą. 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 Telefon me,
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. Ta wartość jest agregowana z AccuracyScorewartości , FluencyScorei CompletenessScore z wagą. 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:

  • Pełny tekst
  • Słowy
  • Grupy sylalne
  • Telefon mes in Format SAPI lub IPA

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.

alfabet Telefon me IPA SAPI
nazwa Telefon me 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 Telefon mes Sylaby
Technologicznych teknʒɪkl tek·n· lɑ·dʒɪkl
hello hɛloʊ hɛ·loʊ
Szczęścia lʌk lʌk
Fotosyntezy 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 Telefon me

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. Telefon me nazwy 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 Telefon SAPI Telefony IPA
hello h eh l ow h ɛ l oʊ
Szczęścia l ah k l ʌ k
Fotosyntezy 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