Söyleniş değerlendirmeyi kullanma
Bu makalede, Konuşma SDK'sı aracılığıyla konuşmayı metne dönüştürme ile söylenişi değerlendirmeyi öğreneceksiniz. Söyleniş değerlendirmesi konuşmanın söylenişini değerlendirir ve konuşmacılara konuşma sesinin doğruluğu ve akıcılığı ile ilgili geri bildirim verir.
Not
Söyleniş değerlendirmesi, tutarlı ve doğru telaffuz değerlendirmesini sağlamak için, standart konuşmadan metin modeline kadar konuşmadan metne modelin belirli bir sürümünü kullanır.
Akış modunda söyleniş değerlendirmesini kullanma
Söyleniş değerlendirmesi kesintisiz akış modunu destekler. Konuşma SDK'sı aracılığıyla kayıt süresi sınırsız olabilir. Kaydı durdurmadığınız sürece değerlendirme işlemi tamamlanmaz ve değerlendirmeyi rahatça duraklatabilir ve sürdürebilirsiniz.
Söyleniş değerlendirmesinin kullanılabilirliği hakkında bilgi için bkz . Desteklenen diller ve kullanılabilir bölgeler.
Temel olarak, söyleniş değerlendirmesinin kullanımı kullandıkça öde veya taahhüt katmanı fiyatlandırması için konuşmayı metne dönüştürmeyle aynıdır. Konuşmayı metne dönüştürme için bir taahhüt katmanı satın alırsanız söyleniş değerlendirmesi için harcama, taahhüdü karşılamaya gider. Daha fazla bilgi için bkz. Fiyatlandırma.
Kendi uygulamanızda akış modunda Söyleniş Değerlendirmesi'ni kullanma hakkında bilgi için bkz . örnek kod.
Kendi uygulamanızda akış modunda Söyleniş Değerlendirmesi'ni kullanma hakkında bilgi için bkz . örnek kod.
Kendi uygulamanızda akış modunda Söyleniş Değerlendirmesi'ni kullanma hakkında bilgi için bkz . örnek kod.
Kendi uygulamanızda akış modunda Söyleniş Değerlendirmesi'ni kullanma hakkında bilgi için bkz . örnek kod.
Kendi uygulamanızda akış modunda Söyleniş Değerlendirmesi'ni kullanma hakkında bilgi için bkz . örnek kod.
Kendi uygulamanızda akış modunda Söyleniş Değerlendirmesi'ni kullanma hakkında bilgi için bkz . örnek kod.
Kendi uygulamanızda akış modunda Söyleniş Değerlendirmesi'ni kullanma hakkında bilgi için bkz . örnek kod.
Sürekli tanıma
Ses dosyanız 30 saniyeyi aşarsa, işleme için sürekli modu kullanın. Sürekli mod için örnek kod GitHub'da işlevinin PronunciationAssessmentContinuousWithFile
altında bulunabilir.
Ses dosyanız 30 saniyeyi aşarsa, işleme için sürekli modu kullanın.
Ses dosyanız 30 saniyeyi aşarsa, işleme için sürekli modu kullanın. Sürekli mod için örnek kod GitHub'da işlevinin pronunciationAssessmentContinuousWithFile
altında bulunabilir.
Ses dosyanız 30 saniyeyi aşarsa, işleme için sürekli modu kullanın. Sürekli mod için örnek kod GitHub'da işlevinin pronunciation_assessment_continuous_from_file
altında bulunabilir.
Ses dosyanız 30 saniyeyi aşarsa, işleme için sürekli modu kullanın. Sürekli mod için örnek kod GitHub'da bulunabilir.
Ses dosyanız 30 saniyeyi aşarsa, işleme için sürekli modu kullanın. Sürekli mod için örnek kod GitHub'da işlevinin pronunciationAssessFromFile
altında bulunabilir.
Ses dosyanız 30 saniyeyi aşarsa, işleme için sürekli modu kullanın. Sürekli mod için örnek kod GitHub'da işlevinin continuousPronunciationAssessment
altında bulunabilir.
Yapılandırma parametrelerini ayarlama
Not
Söyleniş değerlendirmesi Go için Konuşma SDK'sı ile kullanılamaz. Bu kılavuzdaki kavramlar hakkında bilgi edinebilirsiniz. Çözümünüz için başka bir programlama dili seçin.
SpeechRecognizer
içinde, öğrenebileceğiniz dili belirtebilir veya söylenişi geliştirme alıştırması yapabilirsiniz. Varsayılan yerel ayar şeklindedir en-US
. Kendi uygulamanızda söyleniş değerlendirmesi için öğrenme dilini belirtmeyi öğrenmek için aşağıdaki örnek kodu kullanabilirsiniz.
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)
İpucu
Birden çok yerel ayarı olan bir dil için hangi yerel ayarın ayarlanacağından emin değilseniz, her yerel ayarı ayrı ayrı deneyin. Örneğin, İspanyolca için ve es-MX
'yi deneyines-ES
. Senaryonuz için hangi yerel ayarın daha yüksek puanlara sahip olduğunu belirleyin.
Bir nesne oluşturmanız PronunciationAssessmentConfig
gerekir. prosody ve EnableContentAssessmentWithTopic
içerik değerlendirmesini etkinleştirmek için ve ayarlayabilirsinizEnableProsodyAssessment
. Daha fazla bilgi için bkz . yapılandırma yöntemleri.
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")
Bu tabloda, söyleniş değerlendirmesi için bazı temel yapılandırma parametreleri listelenmektedir.
Parametre | Açıklama |
---|---|
ReferenceText |
Söylenişin değerlendirıldığı metin.ReferenceText parametresi isteğe bağlıdır. Okuma dili öğrenme senaryosu için betikli değerlendirme çalıştırmak istiyorsanız başvuru metnini ayarlayın. Açıklanmamış bir değerlendirme çalıştırmak istiyorsanız başvuru metnini ayarlamayın.Betikli ve açıklanmamış değerlendirme arasındaki fiyatlandırma farkları için bkz . Fiyatlandırma. |
GradingSystem |
Puan kalibrasyonu için puan sistemi. FivePoint 0-5 kayan nokta puanı verir. HundredMark 0-100 kayan nokta puanı verir. Varsayılan: FivePoint . |
Granularity |
En düşük değerlendirme ayrıntı düzeyini belirler. En düşük değerden büyük veya buna eşit düzeyler için puanları döndürür. Kabul edilen değerler Phoneme , tam metin, sözcük, hece ve foneme düzeyinde puanı gösteren , tam metin ve sözcük düzeyinde Word puanı gösteren veya FullText puanı yalnızca tam metin düzeyinde gösteren değerleridir. Sağlanan tam başvuru metni bir sözcük, tümce veya paragraf olabilir. Giriş başvuru metninize bağlıdır. Varsayılan: Phoneme . |
EnableMiscue |
Telaffuz edilen sözcükler başvuru metniyle karşılaştırıldığında yanlış hesaplamayı etkinleştirir. Yanlış sorunun etkinleştirilmesi isteğe bağlıdır. Bu değer iseTrue ErrorType , sonuç değeri olarak veya Insertion karşılaştırmaya göre ayarlanabilirOmission . Değerler ve True şeklindedirFalse . Varsayılan: False . Yanlış hesaplamayı etkinleştirmek için değerini olarak True ayarlayınEnableMiscue . Tablonun üzerindeki kod parçacığına başvurabilirsiniz. |
ScenarioId |
Özelleştirilmiş bir nokta sistemi için GUID. |
Yapılandırma yöntemleri
Bu tabloda, nesne için PronunciationAssessmentConfig
ayarlayabileceğiniz isteğe bağlı yöntemlerden bazıları listelenir.
Not
İçerik ve prosody değerlendirmeleri yalnızca en-US yerel ayarında kullanılabilir.
İçeriği ve prosody değerlendirmelerini keşfetmek için SDK 1.35.0 veya sonraki bir sürüme yükseltin.
Konu parametresi için uzunluk sınırı yoktur.
Metot | Açıklama |
---|---|
EnableProsodyAssessment |
Telaffuz değerlendirmeniz için prosody değerlendirmesini etkinleştirir. Bu özellik stres, tonlama, konuşma hızı ve ritim gibi özellikleri değerlendirir. Bu özellik, konuşmanızın doğallığı ve ifade özellikleri hakkında içgörüler sağlar. Prosody değerlendirmesinin etkinleştirilmesi isteğe bağlıdır. Bu yöntem çağrılırsa sonuç ProsodyScore değeri döndürülür. |
EnableContentAssessmentWithTopic |
İçerik değerlendirmesini etkinleştirir. İçerik değerlendirmesi, konuşma dili öğrenme senaryosu için açıklanmamış değerlendirmenin bir parçasıdır. Açıklama sağlayarak değerlendirmenin konuşulan konuya ilişkin anlayışını geliştirebilirsiniz. Örneğin, C# içinde öğesini çağırın pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting"); . Bir konuyu açıklamak için "selamlama" yerine istediğiniz metni koyabilirsiniz. Açıklamanın uzunluk sınırı yoktur ve şu anda yalnızca yerel ayarı destekler en-US . |
Söyleniş değerlendirme sonuçlarını alma
Konuşma tanındığında, söyleniş değerlendirme sonuçlarını SDK nesneleri veya JSON dizesi olarak isteyebilirsiniz.
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);
}
C++ için Konuşma SDK'sı ile SDK nesneleri kullanılarak Word, hece ve fone sonuçları kullanılamaz. Word, hece ve fone sonuçları yalnızca JSON dizesinde kullanılabilir.
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);
Kendi uygulamanızda söyleniş değerlendirmesi için öğrenme dilini belirtmeyi öğrenmek için bkz . örnek kod.
Android uygulama geliştirme için sözcük, hece ve fone sonuçları, Java için Konuşma SDK'sı ile SDK nesneleri kullanılarak kullanılabilir. Sonuçlar JSON dizesinde de kullanılabilir. Java Runtime (JRE) uygulama geliştirmesi için sözcük, hece ve fone sonuçları yalnızca JSON dizesinde kullanılabilir.
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);
},
{});
Kendi uygulamanızda söyleniş değerlendirmesi için öğrenme dilini belirtmeyi öğrenmek için bkz . örnek 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)
Kendi uygulamanızda söyleniş değerlendirmesi için öğrenme dilini belirtmeyi öğrenmek için bkz . örnek 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];
Kendi uygulamanızda söyleniş değerlendirmesi için öğrenme dilini belirtmeyi öğrenmek için bkz . örnek 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)
Sonuç parametreleri
Betikli veya açıklanmamış değerlendirme kullanıp kullanmadığınıza bağlı olarak, farklı söyleniş değerlendirme sonuçları alabilirsiniz. Betikli değerlendirme, okuma dili öğrenme senaryosuna yöneliktir. Açıklanmamış değerlendirme, konuşma dili öğrenme senaryosuna yöneliktir.
Not
Betikli ve açıklanmamış değerlendirme arasındaki fiyatlandırma farkları için bkz . Fiyatlandırma.
Betikli değerlendirme sonuçları
Bu tabloda betikli değerlendirme veya okuma senaryosu için bazı önemli söyleniş değerlendirme sonuçları listelenmiştir.
Parametre | Açıklama | Ayrıntı düzeyi |
---|---|---|
AccuracyScore |
Konuşmanın söyleniş doğruluğu. Doğruluk, fonemlerin yerel konuşmacının söylenişiyle ne kadar yakın olduğunu gösterir. Hece, sözcük ve tam metin doğruluk puanları foneme düzeyindeki doğruluk puanından toplanır ve değerlendirme hedefleri ile iyileştirilir. | Telefon düzeyi, Hece düzeyi (yalnızca ABD), Sözcük düzeyi, Tam Metin düzeyi |
FluencyScore |
Verilen konuşmanın akıcılığı. Akıcılık, konuşmanın yerel konuşmacının sözcükler arasındaki sessiz kesmeleri kullanmasıyla ne kadar yakın eşleşdiğini gösterir. | Tam Metin düzeyi |
CompletenessScore |
Telaffuz edilen sözcüklerin giriş başvuru metnine oranıyla hesaplanan konuşmanın eksiksizliği. | Tam Metin düzeyi |
ProsodyScore |
Verilen konuşmanın prosody'i. Prosody, stres, intonasyon, konuşma hızı ve ritim dahil olmak üzere verilen konuşmanın ne kadar doğal olduğunu gösterir. | Tam Metin düzeyi |
PronScore |
Verilen konuşmanın söyleniş kalitesinin genel puanı. PronScore ve kullanılabilir olması koşuluyla , FluencyScore , CompletenessScore , ve CompletenessScore ProsodyScore ağırlıklarından AccuracyScore hesaplanır.ProsodyScore Bunlardan herhangi biri kullanılamıyorsa bu PronScore puanı dikkate almayacaktır. |
Tam Metin düzeyi |
ErrorType |
Bu değer, başvuru metniyle karşılaştırıldığında hata türünü gösterir. Seçenekler arasında bir sözcüğün atlanıp atlanmadığı, eklendiği veya kesmeyle yanlış eklenip eklenmediği yer alır. Ayrıca noktalama işaretlerinde eksik bir kesme olduğunu gösterir. Ayrıca bir sözcüğün kötü telaffuz edildiğini mi yoksa monoton olarak mı yükseldiğini, düştüğünü mü yoksa konuşmada düz mü olduğunu gösterir. Olası değerlerNone , bu sözcükte, Omission , Insertion , , Mispronunciation , UnexpectedBreak MissingBreak ve Monotone hatalarına yönelik değildir. Hata türü, bir sözcüğün söylenişi AccuracyScore 60'ın altında olduğunda olabilirMispronunciation . |
Sözcük düzeyi |
Açıklanmamış değerlendirme sonuçları
Bu tabloda, açıklanmamış değerlendirme veya konuşma senaryosu için bazı önemli söyleniş değerlendirme sonuçları listelenmiştir.
VocabularyScore
, GrammarScore
ve TopicScore
parametreleri birleştirilmiş içerik değerlendirmesine alınır.
Not
İçerik ve prosody değerlendirmeleri yalnızca en-US yerel ayarında kullanılabilir.
Yanıt parametresi | Açıklama | Ayrıntı düzeyi |
---|---|---|
AccuracyScore |
Konuşmanın söyleniş doğruluğu. Doğruluk, fonemlerin yerel konuşmacının söylenişiyle ne kadar yakın olduğunu gösterir. Hece, sözcük ve tam metin doğruluğu puanları, foneme düzeyinde doğruluk puanından toplanır ve değerlendirme hedefleri ile iyileştirilir. | Telefon düzeyi, Hece düzeyi (yalnızca ABD), Sözcük düzeyi, Tam Metin düzeyi |
FluencyScore |
Verilen konuşmanın akıcılığı. Akıcılık, konuşmanın yerel konuşmacının sözcükler arasındaki sessiz kesmeleri kullanmasıyla ne kadar yakın eşleşdiğini gösterir. | Tam Metin düzeyi |
ProsodyScore |
Verilen konuşmanın prosody'i. Prosody, stres, intonasyon, konuşma hızı ve ritim dahil olmak üzere verilen konuşmanın ne kadar doğal olduğunu gösterir. | Tam Metin düzeyi |
VocabularyScore |
Sözcük temelli kullanımda yetkinlik. Konuşmacının sözcükleri etkili bir şekilde kullanımını ve fikirleri doğru ifade etmek için verilen bağlam içindeki uygunluğunu ve sözcüksel karmaşıklık düzeyini değerlendirir. | Tam Metin düzeyi |
GrammarScore |
Dil bilgisi ve çeşitli cümle desenlerini kullanmada doğruluk. Sözcüksel doğruluk, dil bilgisi doğruluğu ve cümle yapılarının çeşitliliği dil bilgisi hatalarını birlikte yükseltir. | Tam Metin düzeyi |
TopicScore |
Konuşmacının düşüncelerini ve fikirlerini etkili bir şekilde ifade etme becerisine ve konuyla etkileşim kurma becerisine ilişkin içgörüler sağlayan konuya ilişkin anlayış ve etkileşim düzeyi. | Tam Metin düzeyi |
PronScore |
Verilen konuşmanın söyleniş kalitesinin genel puanı. PronScore kullanılabilir olması koşuluyla ProsodyScore , FluencyScore ve ProsodyScore ağırlıklarından hesaplanırAccuracyScore . Kullanılamıyorsa ProsodyScore bu PronScore puanı dikkate almayacaktır. |
Tam Metin düzeyi |
ErrorType |
Bir sözcük kötü telaffuz edilir, bir kesmeyle yanlış eklenir veya noktalama işaretlerinde bir kesme eksiktir. Ayrıca söylenişin tekdüze olarak mı yükseldiğini, düştüğünü mü yoksa konuşmada düz mü olduğunu gösterir. Olası değerler None , bu sözcük, Mispronunciation , UnexpectedBreak , MissingBreak ve Monotone üzerinde hiçbir hataya yönelik değildir. |
Sözcük düzeyi |
Aşağıdaki tabloda prosody değerlendirmesi sonuçları daha ayrıntılı olarak açıklanmaktadır:
Alan | Açıklama |
---|---|
ProsodyScore |
Konuşmanın tamamının Prosody puanı. |
Feedback |
ve Intonation dahil olmak üzere Break sözcük düzeyiyle ilgili geri bildirim. |
Break |
|
ErrorTypes |
ve MissingBreak dahil olmak üzere UnexpectedBreak kesmeler ile ilgili hata türleri. Geçerli sürüm kesme hata türünü sağlamaz. Alanlarda UnexpectedBreak – Confidence eşikler ayarlamanız ve MissingBreak – confidence sözcük öncesinde beklenmeyen bir kesme veya eksik kesme olup olmadığına karar vermeniz gerekir. |
UnexpectedBreak |
Sözcük öncesinde beklenmeyen bir kesme olduğunu gösterir. |
MissingBreak |
Sözcük öncesinde eksik bir sonu gösterir. |
Thresholds |
Her iki güvenilirlik puanı için de önerilen eşikler 0,75'tir. Başka bir deyişle değeri 0,75'ten büyükse UnexpectedBreak – Confidence beklenmeyen bir kesme olur. değeri MissingBreak – confidence 0,75'ten büyükse, eksik bir sonu vardır. 0,75, önerdiğimiz bir değer olsa da eşikleri kendi senaryonuza göre ayarlamak daha iyidir. Bu iki kesmede değişken algılama duyarlılığına sahip olmak istiyorsanız ve MissingBreak - Confidence alanlarına farklı eşikler UnexpectedBreak - Confidence atayabilirsiniz. |
Intonation |
Konuşmadaki seslendirmeyi gösterir. |
ErrorTypes |
Şu anda yalnızca Monoton'ı destekleyen tonlamayla ilgili hata türleri. Monotone alanında ErrorTypes varsa, konuşmanın monoton olduğu algılanır. Tüm konuşmada tek ton algılanır, ancak etiket tüm sözcüklere atanır. Aynı konuşmadaki tüm sözcükler aynı monoton algılama bilgilerini paylaşır. |
Monotone |
Monoton konuşmayı gösterir. |
Thresholds (Monotone Confidence) |
Alanlar Monotone - SyllablePitchDeltaConfidence , kullanıcı tarafından özelleştirilmiş monoton algılama için ayrılmıştır. Sağlanan monoton kararından memnun değilseniz, algılamayı tercihlerinize göre özelleştirmek için bu alanlardaki eşikleri ayarlayın. |
JSON sonuç örneği
" Hello" adlı sözcüğün betikli söyleniş değerlendirme sonuçları aşağıdaki örnekte JSON dizesi olarak gösterilmiştir.
- Fone alfabesi IPA'dır.
- Heceler, aynı sözcük için fonemlerle birlikte döndürülür.
- Heceleri karşılık gelen fonemleriyle hizalamak için ve
Duration
değerlerini kullanabilirsinizOffset
. Örneğin, ikinci heceninloʊ
başlangıç uzaklığı (11700000) üçüncü foneml
olan ile hizalanır. Uzaklık, tanınan konuşmanın ses akışında başladığı zamanı temsil eder. Değer 100 nanosaniye cinsinden ölçülür. ve hakkındaOffset
daha fazla bilgi edinmek için bkz. yanıt özellikleri.Duration
- İstenen konuşmaların sayısına karşılık gelen beş
NBestPhonemes
tane vardır. - içinde
Phonemes
, en olası konuşulan phonemes yerine beklenen phonemeɛ
olduə
. Beklenen telefon numarasıɛ
yalnızca 47 güvenilirlik puanı aldı. Diğer olası eşleşmeler 52, 17 ve 2 güvenilirlik puanları aldı.
{
"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
}
]
}
]
}
]
}
Şunun için söyleniş değerlendirme puanlarını alabilirsiniz:
Yerel ayar başına desteklenen özellikler
Aşağıdaki tabloda yerel ayarların desteklediği özellikler özetlenmiştir. Daha fazla belirtim için aşağıdaki bölümlere bakın. Gereken yerel ayarlar desteklenen özellik için aşağıdaki tabloda listelenmiyorsa, daha fazla yardım için bu alım formunu doldurun.
Fone alfabesi | IPA | SAPI |
---|---|---|
Telefon adı | en-US |
en-US , zh-CN |
Hece grubu | en-US |
en-US |
Konuşulan telefon | en-US |
en-US |
Hece grupları
Söyleniş değerlendirmesi hece düzeyinde değerlendirme sonuçları sağlayabilir. Bir sözcük genellikle fonele göre hece yerine hece ile telaffuz edilir. Hecelerde gruplandırma daha okunaklıdır ve konuşma alışkanlıklarıyla uyumlu hale gelir.
Söyleniş değerlendirmesi yalnızca en-US
IPA ve SAPI ile hece gruplarını destekler.
Aşağıdaki tabloda örnek fonemler ilgili hecelerle karşılaştırılır.
Örnek sözcük | Telefon bağlantıları | Hece |
---|---|---|
teknolojik | teknələdʒɪkl | tek·nə·lɑ·dʒɪkl |
merhaba | hɛloʊ | hɛ·loʊ |
şans | lʌk | lʌk |
fotosentez | foʊtəsɪnθəsɪs | foʊ·tə·sɪn·θə·sɪs |
Hece düzeyi sonuçları ve fonemleri istemek için ayrıntı düzeyi yapılandırma parametresini olarak Phoneme
ayarlayın.
Fone alfabe biçimi
Söyleniş değerlendirmesi, IPA ile en-US
zh-CN
ve SAPI ile phoneme adını en-US
destekler.
Phoneme adını destekleyen yerel ayarlar için, telefon adı puanla birlikte sağlanır. Phoneme adları, hangi fonemlerin doğru veya yanlış telaffuz edildiğini belirlemeye yardımcı olur. Diğer yerel ayarlar için yalnızca phoneme puanını alabilirsiniz.
Aşağıdaki tablo, örnek SAPI fonemlerini ilgili IPA fonemleriyle karşılaştırır.
Örnek sözcük | SAPI Fonemleri | IPA fonemleri |
---|---|---|
merhaba | h eh l ow | h ɛ l oʊ |
şans | l ah k | l ʌ k |
fotosentez | f ow t ax s ih n th ax s ih s | f oʊ t ə s ɪ n θ ə s ɪ s |
IPA fonemleri istemek için fone alfabesini olarak IPA
ayarlayın. Alfabeyi belirtmezseniz, fonemler varsayılan olarak SAPI biçimindedir.
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"
Konuşulan telefon seslerini değerlendirme
Konuşulan telefon sesleriyle, konuşulan telefon seslerinin beklenen telefon sesleriyle eşleşme olasılığını gösteren güvenilirlik puanlarını alabilirsiniz.
Söyleniş değerlendirmesi, IPA ve SAPI ile konuşmaları en-US
destekler.
Örneğin, sözcüğünün Hello
tam sesli sesini elde etmek için, beklenen her telefon sesi için ilk sesli telefonu en yüksek güvenilirlik puanıyla birleştirebilirsiniz. Aşağıdaki değerlendirme sonucunda, sözcüğünü hello
söylediğinizde beklenen IPA fonemleri olur h ɛ l oʊ
. Ancak, gerçek konuşulan fonemler şeklindedir h ə l oʊ
. Bu örnekte beklenen her telefon adı için beş olası adayınız vardır. Değerlendirme sonucu, en olası konuşma foneminin beklenen telefon ɛ
yerine olduğunu ə
gösterir. Beklenen telefon numarası ɛ
yalnızca 47 güvenilirlik puanı aldı. Diğer olası eşleşmeler 52, 17 ve 2 güvenilirlik puanları aldı.
{
"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
}
]
}
]
}
]
}
Güvenilirlik puanlarının alınıp alınmayacağını ve kaç olası konuşulan foneme olduğunu belirtmek için parametresini NBestPhonemeCount
gibi 5
bir tamsayı değerine ayarlayın.
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
Söyleniş puanı hesaplaması
Söyleniş puanları, okuma ve konuşma senaryolarına yönelik belirli formüllere göre ağırlık doğruluğu, prosody, akıcılık ve tamlık puanlarıyla hesaplanır.
Doğruluk, prosody, akıcılık ve tamlık puanlarını düşükten yükseğe (her puan varsa) sıralarken ve en düşük puanı s0 ile s3 arasında en yüksek puana gösterirken, söyleniş puanı aşağıdaki gibi hesaplanır:
Okuma senaryosu için:
- Prosody puanıyla: PronScore = 0,4 * s0 + 0,2 * s1 + 0,2 * s2 + 0,2 * s3
- Prosody puanı olmadan: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
Konuşma senaryosu için (tamlık puanı geçerli değildir):
- Prosody puanıyla: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
- Prosody puanı olmadan: PronScore = 0,6 * s0 + 0,4 * s1
Bu formül, her puanın önemine göre ağırlıklı bir hesaplama sağlayarak söylenişin kapsamlı bir değerlendirmesini sağlar.
İlgili içerik
- Kalite karşılaştırması hakkında bilgi edinin.
- Stüdyoda telaffuz değerlendirmesini deneyin.
- Dağıtımı kolay bir Söyleniş Değerlendirmesi tanıtımına göz atın.
- Söyleniş değerlendirmesinin video tanıtımını izleyin.