تقييم النطق

يقوم تقييم النطق بتقييم نطق الكلام ويعطي المتحدثين ملاحظات حول دقة وطلاقة الصوت المنطوق. مع تقييم النطق، يمكن لمتعلمي اللغة الممارسة، والحصول على ردود فعل فورية، وتحسين النطق بحيث يمكنهم التحدث والتواجد بثقة. يمكن للمعلمين استخدام القدرة على تقييم نطق عدة متحدثين في الوقت الفعلي. يتم الإعلان عن تقييم النطق متوفر بشكل عام باللغة الإنجليزية الأمريكية، بينما تتوفر لغات أخرى في المعاينة

في هذه المقالة، ستتعلم كيفية إعداد PronunciationAssessmentConfig واسترداد PronunciationAssessmentResult باستخدام Speech SDK.

تقييم النطق باستخدام Speech SDK

توضح القصاصة البرمجية التالية كيفية إنشاء PronunciationAssessmentConfig، ثم تطبيقه على SpeechRecognizer.

var pronunciationAssessmentConfig = new PronunciationAssessmentConfig(
    "reference text", GradingSystem.HundredMark, Granularity.Phoneme);

using (var recognizer = new SpeechRecognizer(
    speechConfig,
    audioConfig))
{
    // apply the pronunciation assessment configuration to the speech recognizer
    pronunciationAssessmentConfig.ApplyTo(recognizer);
    var speechRecognitionResult = await recognizer.RecognizeOnceAsync();
    var pronunciationAssessmentResult =
        PronunciationAssessmentResult.FromResult(speechRecognitionResult);
    var pronunciationScore = pronunciationAssessmentResult.PronunciationScore;
}
auto pronunciationAssessmentConfig =
    PronunciationAssessmentConfig::Create("reference text",
        PronunciationAssessmentGradingSystem::HundredMark,
        PronunciationAssessmentGranularity::Phoneme);

auto recognizer = SpeechRecognizer::FromConfig(
    speechConfig,
    audioConfig);

// apply the pronunciation assessment configuration to the speech recognizer
pronunciationAssessmentConfig->ApplyTo(recognizer);
speechRecognitionResult = recognizer->RecognizeOnceAsync().get();
auto pronunciationAssessmentResult =
    PronunciationAssessmentResult::FromResult(speechRecognitionResult);
auto pronunciationScore = pronunciationAssessmentResult->PronunciationScore;
PronunciationAssessmentConfig pronunciationAssessmentConfig =
    new PronunciationAssessmentConfig("reference text", 
        PronunciationAssessmentGradingSystem.HundredMark,
        PronunciationAssessmentGranularity.Phoneme);

SpeechRecognizer recognizer = new SpeechRecognizer(
    speechConfig,
    audioConfig);

// apply the pronunciation assessment configuration to the speech recognizer
pronunciationAssessmentConfig.applyTo(recognizer);
Future<SpeechRecognitionResult> future = recognizer.recognizeOnceAsync();
SpeechRecognitionResult result = future.get(30, TimeUnit.SECONDS);
PronunciationAssessmentResult pronunciationAssessmentResult =
    PronunciationAssessmentResult.fromResult(result);
Double pronunciationScore = pronunciationAssessmentResult.getPronunciationScore();

recognizer.close();
speechConfig.close();
audioConfig.close();
pronunciationAssessmentConfig.close();
result.close();
pronunciation_assessment_config = \
        speechsdk.PronunciationAssessmentConfig(reference_text='reference text',
                grading_system=speechsdk.PronunciationAssessmentGradingSystem.HundredMark,
                granularity=speechsdk.PronunciationAssessmentGranularity.Phoneme)
speech_recognizer = speechsdk.SpeechRecognizer(
        speech_config=speech_config, \
        audio_config=audio_config)

# apply the pronunciation assessment configuration to the speech recognizer
pronunciation_assessment_config.apply_to(speech_recognizer)
result = speech_recognizer.recognize_once()
pronunciation_assessment_result = speechsdk.PronunciationAssessmentResult(result)
pronunciation_score = pronunciation_assessment_result.pronunciation_score
var pronunciationAssessmentConfig = new SpeechSDK.PronunciationAssessmentConfig("reference text",
    PronunciationAssessmentGradingSystem.HundredMark,
    PronunciationAssessmentGranularity.Word, true);
var speechRecognizer = SpeechSDK.SpeechRecognizer.FromConfig(speechConfig, audioConfig);
// apply the pronunciation assessment configuration to the speech recognizer
pronunciationAssessmentConfig.applyTo(speechRecognizer);

speechRecognizer.recognizeOnceAsync((result: SpeechSDK.SpeechRecognitionResult) => {
        var pronunciationAssessmentResult = SpeechSDK.PronunciationAssessmentResult.fromResult(result);
        var pronunciationScore = pronunciationAssessmentResult.pronunciationScore;
        var wordLevelResult = pronunciationAssessmentResult.detailResult.Words;
},
{});
SPXPronunciationAssessmentConfiguration* pronunciationAssessmentConfig =
    [[SPXPronunciationAssessmentConfiguration alloc]init:@"reference text"
                                           gradingSystem:SPXPronunciationAssessmentGradingSystem_HundredMark
                                             granularity:SPXPronunciationAssessmentGranularity_Phoneme];

SPXSpeechRecognizer* speechRecognizer = \
        [[SPXSpeechRecognizer alloc] initWithSpeechConfiguration:speechConfig
                                              audioConfiguration:audioConfig];

// apply the pronunciation assessment configuration to the speech recognizer
[pronunciationAssessmentConfig applyToRecognizer:speechRecognizer];

SPXSpeechRecognitionResult *result = [speechRecognizer recognizeOnce];
SPXPronunciationAssessmentResult* pronunciationAssessmentResult = [[SPXPronunciationAssessmentResult alloc] init:result];
double pronunciationScore = pronunciationAssessmentResult.pronunciationScore;

معلمات التكوين

يسرد هذا الجدول معلمات التكوين لتقييم النطق.

المعلمة الوصف مطلوب؟
ReferenceText النص الذي سيتم تقييم النطق مقابله. مطلوب
GradingSystem نظام النقاط لمعايرة النقاط. FivePoint يعطي النظام درجة نقطة عائمة من 0 إلى 5، ويعطي HundredMark درجة نقطة عائمة من 0 إلى 100. افتراضي: FivePoint. ‏‏اختياري
Granularity دقة التقييم. القيم المقبولة هي Phoneme، والتي تعرض النتيجة على مستوى النص الكامل والكلمة والهاتف، Syllableوالتي تعرض النتيجة على النص الكامل والكلمة ومستوى المقطع، Wordوالتي تعرض النتيجة على مستوى النص الكامل والكلمة، FullTextوالتي تعرض النتيجة على مستوى النص الكامل فقط. افتراضي: Phoneme. ‏‏اختياري
EnableMiscue تمكين الحساب الخاطئ عند مقارنة الكلمات النطقية بالنص المرجعي. إذا كانت هذه القيمة هي True، ErrorType يمكن تعيين قيمة النتيجة إلى أو Insertion استنادا إلى Omission المقارنة. القيم المقبولة هي False و True. افتراضي: False. ‏‏اختياري
ScenarioId GUID يشير إلى نظام نقطة مخصص. ‏‏اختياري

معلمات النتيجة

يسرد هذا الجدول معلمات نتائج تقييم النطق.

المعلمة الوصف
AccuracyScore دقة نطق الكلام. تشير الدقة إلى مدى تطابق السماعات مع نطق المتحدث الأصلي. يتم تجميع درجات دقة النص المقطعي والكلمة والنص الكامل من درجة الدقة على مستوى الهاتف.
FluencyScore الطلاقة في الكلام المحدد. تشير الطلاقة إلى مدى تطابق الكلام مع استخدام المتحدث الأصلي للفواصل الصامتة بين الكلمات.
CompletenessScore اكتمال الكلام، يتم حسابه حسب نسبة الكلمات النطقية إلى نص مرجع الإدخال.
PronScore النتيجة الإجمالية التي تشير إلى جودة النطق للكلام المحدد. PronScore يتم تجميعها من AccuracyScore، FluencyScoreو، و CompletenessScore مع الوزن.
ErrorType تشير هذه القيمة إلى ما إذا كانت الكلمة محذفة أو مدرجة أو خاطئة، مقارنة ب ReferenceText. القيم المحتملة هي Noneو InsertionOmissionو و.Mispronunciation

نماذج الاستجابات

ينتج عن تقييم النطق النموذجي JSON:

{
  "RecognitionStatus": "Success",
  "Offset": "400000",
  "Duration": "11000000",
    "NBest": [
    {
        "Confidence": "0.87",
        "Lexical": "good morning",
        "ITN" : "good morning",
        "MaskedITN" : "good morning",
        "Display" : "Good morning.",
        "PronunciationAssessment" : {
            "PronScore" : 84.4,
            "AccuracyScore" : 100.0,
            "FluencyScore" : 74.0,
            "CompletenessScore" : 100.0,
        },
        "Words": [
        {
            "Word" : "good",
            "Offset" : 500000,
            "Duration" : 2700000,
            "PronunciationAssessment": {
                "AccuracyScore" : 100.0,
                "ErrorType" : "None"
            },
            "Syllables" : [
            {
                "Syllable" : "ɡʊd",
                "Offset" : 500000,
                "Duration" : 2700000,
                "PronunciationAssessment" : {
                    "AccuracyScore": 100.0
                }
            }],
            "Phonemes": [
            {
                "Phoneme" : "ɡ",
                "Offset" : 500000,
                "Duration": 1200000,
                "PronunciationAssessment": {
                    "AccuracyScore": 100.0
                }
            },
            {
                "Phoneme" : "ʊ",
                "Offset" : 1800000,
                "Duration": 500000,
                "PronunciationAssessment": {
                    "AccuracyScore": 100.0
                }
            },
            {
                "Phoneme" : "d",
                "Offset" : 2400000,
                "Duration": 800000,
                "PronunciationAssessment": {
                    "AccuracyScore": 100.0
                }
            }]
        },
        {
            "Word" : "morning",
            "Offset" : 3300000,
            "Duration" : 5500000,
            "PronunciationAssessment": {
                "AccuracyScore" : 100.0,
                "ErrorType" : "None"
            },
            "Syllables": [
            {
                "Syllable" : "mɔr",
                "Offset" : 3300000,
                "Duration": 2300000,
                "PronunciationAssessment": {
                    "AccuracyScore": 100.0
                }
            },
            {
                "Syllable" : "nɪŋ",
                "Offset" : 5700000,
                "Duration": 3100000,
                "PronunciationAssessment": {
                    "AccuracyScore": 100.0
                }
            }],
            "Phonemes": [
                ... // omitted phonemes
            ]
        }]
    }]
}

الخطوات التالية