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 SpeechRecognizer
moż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 AccuracyScore wartości , FluencyScore , CompletenessScore i 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 , , Mispronunciation Insertion , 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.
VocabularyScore
parametry , GrammarScore
i 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 AccuracyScore wartości , FluencyScore i 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 , UnexpectedBreak MissingBreak i 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 iDuration
, aby wyrównać sylaby z odpowiadającymi im fonemami. Na przykład przesunięcie początkowe (1170000000) drugiej sylabyloʊ
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 systemachOffset
iDuration
, 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łowa
- Grupy sylalne
- Phonemes w formacie 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. 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 Phoneme
wartość .
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.
Powiązana zawartość
- Dowiedz się więcej o testach porównawczych dotyczących jakości.
- Spróbuj ocenić wymowę w studio.
- Zapoznaj się z łatwym w wdrożeniu pokazem oceny wymowy.
- Obejrzyj pokaz wideo oceny wymowy.