التشغيل السريع: كتابة الحديث والتحليلات بعد المكالمة

وثائق | خدمة اللغةLanguage Studio | وثائق | خدمة الكلامSpeech Studio

في هذا التشغيل السريع ل C#، يمكنك إجراء تحليل التوجه وتلخيص المحادثة لنسخ مركز الاتصال . سيقوم النموذج تلقائيا بتحديد المعلومات الحساسة وتصنيفها وتنقيبها. ينفذ التشغيل السريع سيناريو عبر الخدمة يستخدم ميزات خدمات Azure Cognitive SpeechوAzure Cognitive Language .

تلميح

جرب Language Studio أو Speech Studio للحصول على عرض توضيحي حول كيفية استخدام خدمات اللغة والكلام لتحليل محادثات مركز الاتصال.

لنشر حل كتابة مركز الاتصال إلى Azure باستخدام نهج بدون تعليمات برمجية، جرب عميل الاستيعاب.

يتم استخدام خدمات Azure الذكاء الاصطناعي التالية لميزات الكلام في التشغيل السريع:

  • النسخ الدفعي: إرسال دفعة من الملفات الصوتية لكتابة الحديث.
  • فصل المتحدث: افصل عدة مكبرات صوت من خلال يوميات ملفات wav أحادية 16khz 16 بت PCM.

تقدم خدمة Language الميزات التالية المستخدمة:

المتطلبات الأساسية

هام

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

--languageKey يجب أن تتوافق القيم و --languageEndpoint في هذا التشغيل السريع مع مورد موجود في إحدى المناطق التي تدعمها واجهة برمجة تطبيقات تلخيص المحادثة: eastusو northeuropeو.uksouth

تشغيل تحليل كتابة الحديث بعد المكالمة باستخدام C#‎

اتبع هذه الخطوات لإنشاء وتشغيل مثال التعليمات البرمجية للتشغيل السريع لتحليل النسخ بعد الاستدعاء.

  1. انسخ نسخ /csharp/dotnetcore/call-center/ sample files من GitHub. إذا كان لديك Git مثبتا، فافتح موجه الأوامر وقم بتشغيل git clone الأمر لتنزيل مستودع عينات Speech SDK.

    git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
    
  2. افتح موجه الأوامر وقم بالتغيير إلى دليل المشروع.

    cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
    
  3. إنشاء المشروع باستخدام .NET CLI.

    dotnet build
    
  4. قم بتشغيل التطبيق باستخدام وسيطات سطر الأوامر المفضلة لديك. راجع الاستخدام والوسيطات للخيارات المتوفرة.

    فيما يلي مثال ينسخ من مثال ملف صوتي في GitHub:

    dotnet run --languageKey YourResourceKey --languageEndpoint YourResourceEndpoint --speechKey YourResourceKey --speechRegion YourResourceRegion --input "https://github.com/Azure-Samples/cognitive-services-speech-sdk/raw/master/scenarios/call-center/sampledata/Call1_separated_16k_health_insurance.wav" --stereo  --output summary.json
    

    إذا كان لديك بالفعل نسخة منطوقة للإدخل، فإليك مثال يتطلب فقط مورد Language:

    dotnet run --languageKey YourResourceKey --languageEndpoint YourResourceEndpoint --jsonInput "YourTranscriptionFile.json" --stereo  --output summary.json
    

    استبدل YourResourceKey بمفتاح مورد خدمات Azure الذكاء الاصطناعي، واستبدل YourResourceRegionبمنطقة موارد خدمات Azure الذكاء الاصطناعي (مثل eastus)، واستبدل YourResourceEndpoint بنقطة نهاية خدمات Azure الذكاء الاصطناعي. تأكد من أن المسارات المحددة بواسطة --input و--output صالحة. وإلا يجب تغيير المسارات.

    هام

    تذكر إزالة المفتاح من التعليمات البرمجية عند الانتهاء، وعدم نشره على الملأ مطلقًا. للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. راجع مقالة أمان خدمات Azure الذكاء الاصطناعي للحصول على مزيد من المعلومات.

التحقق من النتائج

يعرض إخراج وحدة التحكم المحادثة والملخص الكاملين. فيما يلي مثال على الملخص العام، مع تنقيحات للإيجاز:

Conversation summary:
    issue: Customer wants to sign up for insurance.
    resolution: Customer was advised that customer would be contacted by the insurance company.

إذا قمت بتحديد الوسيطة الاختيارية--output FILE، تتم كتابة إصدار JSON من النتائج إلى الملف. إخراج الملف هو مزيج من استجابات JSON من واجهات برمجة تطبيقات النسخ الدفعي (الكلام) والمشاعر (اللغة) وتلخيص المحادثة (اللغة).

transcription تحتوي الخاصية على كائن JSON مع نتائج تحليل التوجه المدمجة مع النسخ الدفعي. فيما يلي مثال، مع تنقيحات للإيجاز:

{
    "source": "https://github.com/Azure-Samples/cognitive-services-speech-sdk/raw/master/scenarios/call-center/sampledata/Call1_separated_16k_health_insurance.wav",
// Example results redacted for brevity
        "nBest": [
          {
            "confidence": 0.77464247,
            "lexical": "hello thank you for calling contoso who am i speaking with today",
            "itn": "hello thank you for calling contoso who am i speaking with today",
            "maskedITN": "hello thank you for calling contoso who am i speaking with today",
            "display": "Hello, thank you for calling Contoso. Who am I speaking with today?",
            "sentiment": {
              "positive": 0.78,
              "neutral": 0.21,
              "negative": 0.01
            }
          },
        ]
// Example results redacted for brevity
}   

conversationAnalyticsResults تحتوي الخاصية على كائن JSON مع نتائج PII للمحادثة وتحليل تلخيص المحادثة. فيما يلي مثال، مع تنقيحات للإيجاز:

{
  "conversationAnalyticsResults": {
    "conversationSummaryResults": {
      "conversations": [
        {
          "id": "conversation1",
          "summaries": [
            {
              "aspect": "issue",
              "text": "Customer wants to sign up for insurance"
            },
            {
              "aspect": "resolution",
              "text": "Customer was advised that customer would be contacted by the insurance company"
            }
          ],
          "warnings": []
        }
      ],
      "errors": [],
      "modelVersion": "2022-05-15-preview"
    },
    "conversationPiiResults": {
      "combinedRedactedContent": [
        {
          "channel": "0",
          "display": "Hello, thank you for calling Contoso. Who am I speaking with today? Hi, ****. Uh, are you calling because you need health insurance?", // Example results redacted for brevity
          "itn": "hello thank you for calling contoso who am i speaking with today hi **** uh are you calling because you need health insurance", // Example results redacted for brevity
          "lexical": "hello thank you for calling contoso who am i speaking with today hi **** uh are you calling because you need health insurance" // Example results redacted for brevity
        },
        {
          "channel": "1",
          "display": "Hi, my name is **********. I'm trying to enroll myself with Contoso. Yes. Yeah, I'm calling to sign up for insurance.", // Example results redacted for brevity
          "itn": "hi my name is ********** i'm trying to enroll myself with contoso yes yeah i'm calling to sign up for insurance", // Example results redacted for brevity
          "lexical": "hi my name is ********** i'm trying to enroll myself with contoso yes yeah i'm calling to sign up for insurance" // Example results redacted for brevity
        }
      ],
      "conversations": [
        {
          "id": "conversation1",
          "conversationItems": [
            {
              "id": "0",
              "redactedContent": {
                "itn": "hello thank you for calling contoso who am i speaking with today",
                "lexical": "hello thank you for calling contoso who am i speaking with today",
                "text": "Hello, thank you for calling Contoso. Who am I speaking with today?"
              },
              "entities": [],
              "channel": "0",
              "offset": "PT0.77S"
            },
            {
              "id": "1",
              "redactedContent": {
                "itn": "hi my name is ********** i'm trying to enroll myself with contoso",
                "lexical": "hi my name is ********** i'm trying to enroll myself with contoso",
                "text": "Hi, my name is **********. I'm trying to enroll myself with Contoso."
              },
              "entities": [
                {
                  "text": "Mary Rondo",
                  "category": "Name",
                  "offset": 15,
                  "length": 10,
                  "confidenceScore": 0.97
                }
              ],
              "channel": "1",
              "offset": "PT4.55S"
            },
            {
              "id": "2",
              "redactedContent": {
                "itn": "hi **** uh are you calling because you need health insurance",
                "lexical": "hi **** uh are you calling because you need health insurance",
                "text": "Hi, ****. Uh, are you calling because you need health insurance?"
              },
              "entities": [
                {
                  "text": "Mary",
                  "category": "Name",
                  "offset": 4,
                  "length": 4,
                  "confidenceScore": 0.93
                }
              ],
              "channel": "0",
              "offset": "PT9.55S"
            },
            {
              "id": "3",
              "redactedContent": {
                "itn": "yes yeah i'm calling to sign up for insurance",
                "lexical": "yes yeah i'm calling to sign up for insurance",
                "text": "Yes. Yeah, I'm calling to sign up for insurance."
              },
              "entities": [],
              "channel": "1",
              "offset": "PT13.09S"
            },
// Example results redacted for brevity
          ],
          "warnings": []
        }
      ]
    }
  }
}

الاستخدام والوسيطات

الاستخدام: call-center -- [...]

هام

يمكنك استخدام إنشاء مورد متعدد الخدمات أو إنشاء وإنشاء . في كلتا الحالتين، --languageKey يجب أن تتوافق القيم و --languageEndpoint مع مورد موجود في إحدى المناطق التي تدعمها واجهة برمجة تطبيقات تلخيص المحادثة: eastusو northeuropeو.uksouth

تتضمن خيارات الاتصال ما يلي:

تتضمن خيارات الإدخال ما يلي:

  • --input URL: إدخال الصوت من عنوان URL. يجب تعيين الخيار --input أو --jsonInput .
  • --jsonInput FILE: إدخال نتيجة JSON للنسخ الدفعي الموجودة من FILE. باستخدام هذا الخيار، تحتاج فقط إلى مورد Language لمعالجة نسخة مكتوبة لديك بالفعل. باستخدام هذا الخيار، لا تحتاج إلى ملف صوتي أو مورد Speech. التجاوزات --input. يجب تعيين الخيار --input أو --jsonInput .
  • --stereo: يشير إلى أن الصوت عبر ""إدخال URL" يجب أن يكون بتنسيق استريو. إذا لم يتم تحديد الاستريو، فسيتم افتراض ملفات mono 16khz 16 bit PCM wav. يتم استخدام يوميات الملفات الأحادية لفصل عدة مكبرات صوت. لا يتم دعم يوميات ملفات الاستريو، حيث يجب أن تحتوي ملفات الاستريو المكونة من قناتين بالفعل على سماعة واحدة لكل قناة.
  • --certificate: ملف شهادة PEM. مطلوب ل C++‎.

تتضمن خيارات اللغة ما يلي:

  • --language LANGUAGE: اللغة التي يجب استخدامها لتحليل المشاعر وتحليل المحادثة. يجب أن تكون هذه القيمة رمز ISO 639-1 مكونا من حرفين. القيمة الافتراضية هي en.
  • --locale LOCALE: اللغة التي يجب استخدامها للنسخ الدفعي للصوت. القيمة الافتراضية هي en-US.

تتضمن خيارات الإخراج ما يلي:

  • --help: إظهار تعليمات الاستخدام والإيقاف
  • --output FILE: إخراج كتابة الحديث والمشاعر و PII للمحادثة وملخصات المحادثة بتنسيق JSON إلى ملف نصي. لمزيد من المعلومات، راجع أمثلة الإخراج.

تنظيف الموارد

يمكنك استخدام مدخل Microsoft Azure أو واجهة سطر الأوامر Azure (CLI) لإزالة مورد خدمات Azure الذكاء الاصطناعي الذي أنشأته.

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