التشغيل السريع: التعرف على الأهداف باستخدام خدمة الكلام و LUIS

هام

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

يتوفر فهم لغة المحادثة (CLU) ل C# وC++ مع Speech SDK الإصدار 1.25 أو أحدث. راجع التشغيل السريع للتعرف على الأهداف باستخدام Speech SDK وCLU.

حزمة الوثائق المرجعية | (NuGet) | عينات إضافية على GitHub

في هذا التشغيل السريع، تشاهد خدمة Speech SDK وخدمة فهم اللغة (LUIS) للتعرف على الأهداف من البيانات الصوتية المُلتقطة من أحد الميكروفونات. تحديداً، تستخدم Speech SDK لالتقاط الكلام، ومجالاً تم إنشاؤه مسبقاً من LUIS لتحديد الأهداف لأتمتة الصفحة الرئيسية، مثل تشغيل وإيقاف تشغيل الضوء.

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

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • إنشاء مورد Language في مدخل Microsoft Azure. يمكنك استخدام مستوى التسعير الحر (F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج. لن تحتاج إلى مورد كلام هذه المرة.
  • احصل على مفتاح مورد اللغة والمنطقة. بعد توزيع مورد اللغة، حدد Go to resource لعرض المفاتيح وإدارتها. لمزيد من المعلومات حول موارد خدمات Azure الذكاء الاصطناعي، راجع الحصول على مفاتيح المورد الخاص بك.

إنشاء تطبيق LUIS للتعرف على الأهداف

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

أول ما ينبغي لك القيام به هو إنشاء حساب وتطبيق LUIS باستخدام منفذ معاينة LUIS. يستخدم تطبيق LUIS الذي أنشأته مجالاً تم إنشاؤه مسبقًا لأتمتة الصفحة الرئيسية، والتي تقدم الهدف والكيانات ونماذج على العبارات. عند إكمالك للعملية، تحصل على نقطة نهاية خاصة بـ LUIS تعمل في السحابة التي يمكنك الاتصال بها باستخدام Speech SDK.

اتبع هذه الإرشادات لإنشاء تطبيق LUIS الخاص بك:

عند الانتهاء، تحتاج إلى أربعة أشياء:

  • إعادة النشر مع تبديل تهيئة الكلام المثبت على
  • مفتاح LUIS الأساسي الخاص بك
  • موقع LUIS الخاص بك
  • معرّف تطبيق LUIS

يمكنك هنا إيجاد تلك المعلومات في منفذ معاينة LUIS:

  1. من منفذ معاينة LUIS، حدد التطبيق ثم حدد الزر نشر.

  2. حدد فتحة "Production" إذا كنت تستخدمها en-US وحدد "change settings"، وبدّل خيار "Speech priming" إلى وضع "On". ثم حدد الزر "Publish".

    هام

    يوصى بشدة بتهيئة الكلام لأنه يحسن مدى دقة التعرف على الكلام.

    Publish LUIS to endpoint

  3. من منفذ معاينة LUIS، حدد إدارة،ثم حدد موارد Azure. في هذه الصفحة، تجد مفتاح LUIS وموقعه (يشار إليه أحياناً باسم المنطقة)لمورد التنبؤ LUIS الخاص بك.

    LUIS key and location

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

    LUIS app ID

افتح مشروعك في Visual Studio

بعد ذلك، افتح مشروعك في Visual Studio.

  1. أطلق Visual Studio 2019.
  2. حمل مشروعك وافتَح Program.cs.

ابدأ ببعض التعليمات البرمجية المتداولة

دعنا نضيف بعض التعليمات البرمجية التي تعمل كبنية لمشروعنا. لاحظ أنك أنشأت طريقة غير متزامنة باسمRecognizeIntentAsync().

using System;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Intent;

namespace helloworld
{
    class Program
    {
        public static async Task RecognizeIntentAsync()
        {
        }

        static async Task Main()
        {
            await RecognizeIntentAsync();
            Console.WriteLine("Please press <Return> to continue.");
            Console.ReadLine();
        }
    }
}

إنشاء تكوين الكلام.

قبل أن تتمكن من تهيئة IntentRecognizer أي عنصر، تحتاج إلى إنشاء تهيئة باستخدام المفتاح والموقع لمورد تنبؤ LUIS.

هام

لن يعمل مفتاح البدء ومفاتيح التأليف. عليك استخدام مفتاح التنبؤ والموقع الذي قمت بإنشائه سابقا. للمزيد من المعلومات، راجع إنشاء تطبيق LUIS للتعرف على الأهداف.

أدخل هذه التعليمات البرمجية في أسلوب RecognizeIntentAsync(). تأكد من تحديث هذه القيم:

  • استبدِل"YourLanguageUnderstandingSubscriptionKey" بمفتاح توقعات LUIS لديك.
  • استبدِل "YourLanguageUnderstandingServiceRegion" بموقع LUIS لديك. استخدِم معرف المنطقة من المنطقة.

تلميح

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

هام

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

var config = SpeechConfig.FromSubscription(
    "YourLanguageUnderstandingSubscriptionKey",
    "YourLanguageUnderstandingServiceRegion");

يستخدم هذا النموذج أسلوبFromSubscription()لإنشاء SpeechConfig. للحصول على قائمة كاملة بالطرق المتاحة، راجعفئة SpeechConfig.

سيتم ضبط برنامج Speech SDK افتراضياً للتعرف باستخدام en-us كلغة، راجعطريقة التعرف على الحديث للحصول على معلومات حول اختيار لغة المصدر.

تهيئة المتعرف على الأهداف

والآن، دعونا ننشئIntentRecognizer. يتم إنشاء هذا العنصر داخل عبارة استخدام لضمان إنشاء موارد غير مدارة بشكل صحيح. أدخل هذه التعليمات البرمجية في أسلوب RecognizeIntentAsync()مباشرةً أسفل تكوين الكلام.

// Creates an intent recognizer using microphone as audio input.
using (var recognizer = new IntentRecognizer(config))
{
}

إضافة نموذج وأهداف فهم اللغة

تحتاج إلى ربطLanguageUnderstandingModel مع المتعرف على الهدف وإضافة الأهداف التي تريد التعرف عليها. سنستخدم الأهداف من المجال الذي تم بناؤه مسبقاً لأتمتة الصفحة الرئيسية. أدرج هذه التعليمات البرمجية في عبارة الاستخدام من القسم السابق. تأكَّد من استبدال"YourLanguageUnderstandingAppId" بمعرف تطبيق LUIS.

تلميح

إذا كنت بحاجة للعثور على هذه القيمة، فانظر إنشاء تطبيق LUIS للتعرف على الهدف.

// Creates a Language Understanding model using the app id, and adds specific intents from your model
var model = LanguageUnderstandingModel.FromAppId("YourLanguageUnderstandingAppId");
recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");

يستخدم هذا المثال دالةAddIntent() لإضافة الأهداف بشكل فردي. إذا كنت ترغب في إضافة جميع العلامات من النموذج، فاستخدمAddAllIntents(model) ومرر النموذج.

التعرف على الهدف

من الكائنIntentRecognizer، ستطلب طريقةRecognizeOnceAsync(). يُتيح هذا الأسلوب تعريف خدمة الكلام أنك ترسل عبارة واحدة للتعرف عليها، وأنه بمجرد التعرف على العبارة، سيتم إيقاف التعرف على الكلام.

أضف، داخل عبارة الاستخدام، هذه التعليمات البرمجية أسفل النموذج.

// Starts recognizing.
Console.WriteLine("Say something...");

// Starts intent recognition, and returns after a single utterance is recognized. The end of a
// single utterance is determined by listening for silence at the end or until a maximum of 15
// seconds of audio is processed.  The task returns the recognition text as result. 
// Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
// shot recognition like command or query. 
// For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
var result = await recognizer.RecognizeOnceAsync();

عرض نتائج التعرف (أو الأخطاء)

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

داخل عبارة استخدام، أدناه RecognizeOnceAsync()، اضف هذه التعليمات البرمجية:

// Checks result.
switch (result.Reason)
{
    case ResultReason.RecognizedIntent:
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
        Console.WriteLine($"    Intent Id: {result.IntentId}.");
        var json = result.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult);
        Console.WriteLine($"    Language Understanding JSON: {json}.");
        break;
    case ResultReason.RecognizedSpeech:
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
        Console.WriteLine($"    Intent not recognized.");
        break;
    case ResultReason.NoMatch:
        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled:
        var cancellation = CancellationDetails.FromResult(result);
        Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");

        if (cancellation.Reason == CancellationReason.Error)
        {
            Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
            Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}");
            Console.WriteLine($"CANCELED: Did you update the subscription info?");
        }
        break;
}

تحقق من الكود الخاص بك.

في هذه النقطة، يجب أن تظهر التعليمات البرمجية كذلك:

إشعار

لقد أضفنا بعض التعليقات إلى هذا الإصدار.

//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.
//

// <skeleton_1>
using System;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Intent;

namespace helloworld
{
    class Program
    {
        public static async Task RecognizeIntentAsync()
        {
            // </skeleton_1>
            // Creates an instance of a speech config with specified subscription key
            // and service region. Note that in contrast to other services supported by
            // the Cognitive Services Speech SDK, the Language Understanding service
            // requires a specific subscription key from https://www.luis.ai/.
            // The Language Understanding service calls the required key 'endpoint key'.
            // Once you've obtained it, replace with below with your own Language Understanding subscription key
            // and service region (e.g., "westus").
            // The default language is "en-us".
            // <create_speech_configuration>
            var config = SpeechConfig.FromSubscription(
                "YourLanguageUnderstandingSubscriptionKey",
                "YourLanguageUnderstandingServiceRegion");
            // </create_speech_configuration>

            // <create_intent_recognizer_1>
            // Creates an intent recognizer using microphone as audio input.
            using (var recognizer = new IntentRecognizer(config))
            {
                // </create_intent_recognizer_1>

                // <add_intents>
                // Creates a Language Understanding model using the app id, and adds specific intents from your model
                var model = LanguageUnderstandingModel.FromAppId("YourLanguageUnderstandingAppId");
                recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
                recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
                recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");
                // </add_intents>

                // To add all of the possible intents from a LUIS model to the recognizer, uncomment the line below:
                // recognizer.AddAllIntents(model);

                // <recognize_intent>
                // Starts recognizing.
                Console.WriteLine("Say something...");

                // Starts intent recognition, and returns after a single utterance is recognized. The end of a
                // single utterance is determined by listening for silence at the end or until a maximum of 15
                // seconds of audio is processed.  The task returns the recognition text as result. 
                // Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
                // shot recognition like command or query. 
                // For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
                var result = await recognizer.RecognizeOnceAsync();
                // </recognize_intent>

                // <print_results>
                // Checks result.
                switch (result.Reason)
                {
                    case ResultReason.RecognizedIntent:
                        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
                        Console.WriteLine($"    Intent Id: {result.IntentId}.");
                        var json = result.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult);
                        Console.WriteLine($"    Language Understanding JSON: {json}.");
                        break;
                    case ResultReason.RecognizedSpeech:
                        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
                        Console.WriteLine($"    Intent not recognized.");
                        break;
                    case ResultReason.NoMatch:
                        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
                        break;
                    case ResultReason.Canceled:
                        var cancellation = CancellationDetails.FromResult(result);
                        Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");

                        if (cancellation.Reason == CancellationReason.Error)
                        {
                            Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
                            Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}");
                            Console.WriteLine($"CANCELED: Did you update the subscription info?");
                        }
                        break;
                }
                // </print_results>
            // <create_intent_recognizer_2>
            }
            // </create_intent_recognizer_2>
        // <skeleton_2>
        }

        static async Task Main()
        {
            await RecognizeIntentAsync();
            Console.WriteLine("Please press <Return> to continue.");
            Console.ReadLine();
        }
    }
}
// </skeleton_2>

إنشاء تطبيقك وتشغيله

الآن أنت مستعد لإنشاء التطبيق واختبار التعرف على الكلام باستخدام خدمة التعرف على الكلام.

  1. ترجمة التعليمات البرمجية - من شريط قوائم Visual Studio، اختر إنشاء>إنشاء حل.
  2. ابدأ تشغيل تطبيقك - من شريط القوائم، اخترتصحيح الأخطاء>بدء التصحيح أو اضغط F5.
  3. بدء التعرف - سوف يطالبك بالتحدث بعبارة باللغة الإنجليزية. يُرسل الكلام إلى خدمة التعرف على الكلام ونسخه كنص وتقديمه في وحدة التحكم.

حزمة الوثائق المرجعية | (NuGet) | عينات إضافية على GitHub

في هذا التشغيل السريع، تشاهد خدمة Speech SDK وخدمة فهم اللغة (LUIS) للتعرف على الأهداف من البيانات الصوتية المُلتقطة من أحد الميكروفونات. تحديداً، تستخدم Speech SDK لالتقاط الكلام، ومجالاً تم إنشاؤه مسبقاً من LUIS لتحديد الأهداف لأتمتة الصفحة الرئيسية، مثل تشغيل وإيقاف تشغيل الضوء.

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

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • إنشاء مورد Language في مدخل Microsoft Azure. يمكنك استخدام مستوى التسعير الحر (F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج. لن تحتاج إلى مورد كلام هذه المرة.
  • احصل على مفتاح مورد اللغة والمنطقة. بعد توزيع مورد اللغة، حدد Go to resource لعرض المفاتيح وإدارتها. لمزيد من المعلومات حول موارد خدمات Azure الذكاء الاصطناعي، راجع الحصول على مفاتيح المورد الخاص بك.

إنشاء تطبيق LUIS للتعرف على الأهداف

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

أول ما ينبغي لك القيام به هو إنشاء حساب وتطبيق LUIS باستخدام منفذ معاينة LUIS. يستخدم تطبيق LUIS الذي أنشأته مجالاً تم إنشاؤه مسبقًا لأتمتة الصفحة الرئيسية، والتي تقدم الهدف والكيانات ونماذج على العبارات. عند إكمالك للعملية، تحصل على نقطة نهاية خاصة بـ LUIS تعمل في السحابة التي يمكنك الاتصال بها باستخدام Speech SDK.

اتبع هذه الإرشادات لإنشاء تطبيق LUIS الخاص بك:

عند الانتهاء، تحتاج إلى أربعة أشياء:

  • إعادة النشر مع تبديل تهيئة الكلام المثبت على
  • مفتاح LUIS الأساسي الخاص بك
  • موقع LUIS الخاص بك
  • معرّف تطبيق LUIS

يمكنك هنا إيجاد تلك المعلومات في منفذ معاينة LUIS:

  1. من منفذ معاينة LUIS، حدد التطبيق ثم حدد الزر نشر.

  2. حدد فتحة "Production" إذا كنت تستخدمها en-US وحدد "change settings"، وبدّل خيار "Speech priming" إلى وضع "On". ثم حدد الزر "Publish".

    هام

    يوصى بشدة بتهيئة الكلام لأنه يحسن مدى دقة التعرف على الكلام.

    Publish LUIS to endpoint

  3. من منفذ معاينة LUIS، حدد إدارة،ثم حدد موارد Azure. في هذه الصفحة، تجد مفتاح LUIS وموقعه (يشار إليه أحياناً باسم المنطقة)لمورد التنبؤ LUIS الخاص بك.

    LUIS key and location

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

    LUIS app ID

افتح مشروعك في Visual Studio

بعد ذلك، افتح مشروعك في Visual Studio.

  1. أطلق Visual Studio 2019.
  2. حمل مشروعك وافتَح helloworld.cpp.

ابدأ ببعض التعليمات البرمجية المتداولة

دعنا نضيف بعض التعليمات البرمجية التي تعمل كبنية لمشروعنا. لاحظ أنك أنشأت طريقة غير متزامنة باسمrecognizeIntent().

#include "stdafx.h"
#include <iostream>
#include <speechapi_cxx.h>

using namespace std;
using namespace Microsoft::CognitiveServices::Speech;
using namespace Microsoft::CognitiveServices::Speech::Intent;

void recognizeIntent()
{
}

int wmain()
{
    try
    {
        recognizeIntent();
    }
    catch (exception e)
    {
        cout << e.what();
    }
    cout << "Please press a key to continue.\n";
    cin.get();
    return 0;
}

إنشاء تكوين الكلام.

قبل أن تتمكن من تهيئة IntentRecognizer أي عنصر، تحتاج إلى إنشاء تهيئة باستخدام المفتاح والموقع لمورد تنبؤ LUIS.

هام

لن يعمل مفتاح البدء ومفاتيح التأليف. عليك استخدام مفتاح التنبؤ والموقع الذي قمت بإنشائه سابقا. للمزيد من المعلومات، راجع إنشاء تطبيق LUIS للتعرف على الأهداف.

أدخل هذه التعليمات البرمجية في أسلوب recognizeIntent(). تأكد من تحديث هذه القيم:

  • استبدِل"YourLanguageUnderstandingSubscriptionKey" بمفتاح توقعات LUIS لديك.
  • استبدِل "YourLanguageUnderstandingServiceRegion" بموقع LUIS لديك. استخدِم معرف المنطقة من المنطقة.

تلميح

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

هام

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

auto config = SpeechConfig::FromSubscription(
    "YourLanguageUnderstandingSubscriptionKey",
    "YourLanguageUnderstandingServiceRegion");

يستخدم هذا النموذج أسلوبFromSubscription()لإنشاء SpeechConfig. للحصول على قائمة كاملة بالطرق المتاحة، راجعفئة SpeechConfig.

سيتم ضبط برنامج Speech SDK افتراضياً للتعرف باستخدام en-us كلغة، راجعطريقة التعرف على الحديث للحصول على معلومات حول اختيار لغة المصدر.

تهيئة المتعرف على الأهداف

والآن، دعونا ننشئIntentRecognizer. أدخل هذه التعليمات البرمجية في أسلوب recognizeIntent()مباشرةً أسفل تكوين الكلام.

// Creates an intent recognizer using microphone as audio input.
auto recognizer = IntentRecognizer::FromConfig(config);

إضافة LanguageUnderstandingModel والأهداف.

تحتاج إلى إقران LanguageUnderstandingModel مع التعرف على الهدف، وإضافة الأهداف التي تريد التعرف عليها. سنستخدم الأهداف من المجال الذي تم بناؤه مسبقاً لأتمتة الصفحة الرئيسية.

أدخِل هذا الكود فيIntentRecognizer. تأكَّد من استبدال"YourLanguageUnderstandingAppId" بمعرف تطبيق LUIS.

تلميح

إذا كنت بحاجة للعثور على هذه القيمة، فانظر إنشاء تطبيق LUIS للتعرف على الهدف.

// Creates a Language Understanding model using the app id, and adds specific intents from your model
auto model = LanguageUnderstandingModel::FromAppId("YourLanguageUnderstandingAppId");
recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");

يستخدم هذا المثال دالةAddIntent() لإضافة الأهداف بشكل فردي. إذا كنت ترغب في إضافة جميع العلامات من النموذج، فاستخدمAddAllIntents(model) ومرر النموذج.

التعرف على الهدف

من الكائنIntentRecognizer، ستطلب طريقةRecognizeOnceAsync(). يُتيح هذا الأسلوب تعريف خدمة الكلام أنك ترسل عبارة واحدة للتعرف عليها، وأنه بمجرد التعرف على العبارة، سيتم إيقاف التعرف على الكلام. من أجل التبسيط، سننتظر حتى يكتمل.

أدخِل هذا الرمز أسفل النموذج الخاص بك:

cout << "Say something...\n";

// Starts intent recognition, and returns after a single utterance is recognized. The end of a
// single utterance is determined by listening for silence at the end or until a maximum of 15
// seconds of audio is processed.  The task returns the recognition text as result. 
// Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
// shot recognition like command or query. 
// For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
auto result = recognizer->RecognizeOnceAsync().get();

عرض نتائج التعرف (أو الأخطاء)

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

أدخِل هذا الرمز أسفل auto result = recognizer->RecognizeOnceAsync().get();:

// Checks result.
if (result->Reason == ResultReason::RecognizedIntent)
{
    cout << "RECOGNIZED: Text=" << result->Text << std::endl;
    cout << "  Intent Id: " << result->IntentId << std::endl;
    cout << "  Intent Service JSON: " << result->Properties.GetProperty(PropertyId::LanguageUnderstandingServiceResponse_JsonResult) << std::endl;
}
else if (result->Reason == ResultReason::RecognizedSpeech)
{
    cout << "RECOGNIZED: Text=" << result->Text << " (intent could not be recognized)" << std::endl;
}
else if (result->Reason == ResultReason::NoMatch)
{
    cout << "NOMATCH: Speech could not be recognized." << std::endl;
}
else if (result->Reason == ResultReason::Canceled)
{
    auto cancellation = CancellationDetails::FromResult(result);
    cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;

    if (cancellation->Reason == CancellationReason::Error)
    {
        cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
        cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
        cout << "CANCELED: Did you update the subscription info?" << std::endl;
    }
}

تحقق من الكود الخاص بك.

في هذه النقطة، يجب أن تظهر التعليمات البرمجية كذلك:

إشعار

لقد أضفنا بعض التعليقات إلى هذا الإصدار.

//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.
//

// <skeleton_1>
#include "stdafx.h"
#include <iostream>
#include <speechapi_cxx.h>

using namespace std;
using namespace Microsoft::CognitiveServices::Speech;
using namespace Microsoft::CognitiveServices::Speech::Intent;

void recognizeIntent()
{
    // </skeleton_1>
    // Creates an instance of a speech config with specified subscription key
    // and service region. Note that in contrast to other services supported by
    // the Cognitive Services Speech SDK, the Language Understanding service
    // requires a specific subscription key from https://www.luis.ai/.
    // The Language Understanding service calls the required key 'endpoint key'.
    // Once you've obtained it, replace with below with your own Language Understanding subscription key
    // and service region (e.g., "westus").
    // The default recognition language is "en-us".
    // <create_speech_configuration>
    auto config = SpeechConfig::FromSubscription(
        "YourLanguageUnderstandingSubscriptionKey",
        "YourLanguageUnderstandingServiceRegion");
    // </create_speech_configuration>

    // <create_intent_recognizer>
    // Creates an intent recognizer using microphone as audio input.
    auto recognizer = IntentRecognizer::FromConfig(config);
    // </create_intent_recognizer>

    // <add_intents>
    // Creates a Language Understanding model using the app id, and adds specific intents from your model
    auto model = LanguageUnderstandingModel::FromAppId("YourLanguageUnderstandingAppId");
    recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
    recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
    recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");
    // </add_intents>

    // To add all of the possible intents from a LUIS model to the recognizer, uncomment the line below:
    // recognizer->AddAllIntents(model);

    // <recognize_intent>
    cout << "Say something...\n";

    // Starts intent recognition, and returns after a single utterance is recognized. The end of a
    // single utterance is determined by listening for silence at the end or until a maximum of 15
    // seconds of audio is processed.  The task returns the recognition text as result. 
    // Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
    // shot recognition like command or query. 
    // For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
    auto result = recognizer->RecognizeOnceAsync().get();
    // </recognize_intent>

    // <print_results>
    // Checks result.
    if (result->Reason == ResultReason::RecognizedIntent)
    {
        cout << "RECOGNIZED: Text=" << result->Text << std::endl;
        cout << "  Intent Id: " << result->IntentId << std::endl;
        cout << "  Intent Service JSON: " << result->Properties.GetProperty(PropertyId::LanguageUnderstandingServiceResponse_JsonResult) << std::endl;
    }
    else if (result->Reason == ResultReason::RecognizedSpeech)
    {
        cout << "RECOGNIZED: Text=" << result->Text << " (intent could not be recognized)" << std::endl;
    }
    else if (result->Reason == ResultReason::NoMatch)
    {
        cout << "NOMATCH: Speech could not be recognized." << std::endl;
    }
    else if (result->Reason == ResultReason::Canceled)
    {
        auto cancellation = CancellationDetails::FromResult(result);
        cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;

        if (cancellation->Reason == CancellationReason::Error)
        {
            cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
            cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
            cout << "CANCELED: Did you update the subscription info?" << std::endl;
        }
    }
    // </print_results>
    // <skeleton_2>
}

int wmain()
{
    try
    {
        recognizeIntent();
    }
    catch (exception e)
    {
        cout << e.what();
    }
    cout << "Please press a key to continue.\n";
    cin.get();
    return 0;
}
// </skeleton_2>

إنشاء تطبيقك وتشغيله

الآن أنت مستعد لإنشاء التطبيق واختبار التعرف على الكلام باستخدام خدمة التعرف على الكلام.

  1. ترجمة التعليمات البرمجية - من شريط قوائم Visual Studio، اختر إنشاء>إنشاء حل.
  2. ابدأ تشغيل تطبيقك - من شريط القوائم، اخترتصحيح الأخطاء>بدء التصحيح أو اضغط F5.
  3. بدء التعرف - سوف يطالبك بالتحدث بعبارة باللغة الإنجليزية. يُرسل الكلام إلى خدمة التعرف على الكلام ونسخه كنص وتقديمه في وحدة التحكم.

وثائق مرجعية | نماذج إضافية على GitHub

في هذا التشغيل السريع، تشاهد خدمة Speech SDK وخدمة فهم اللغة (LUIS) للتعرف على الأهداف من البيانات الصوتية المُلتقطة من أحد الميكروفونات. تحديداً، تستخدم Speech SDK لالتقاط الكلام، ومجالاً تم إنشاؤه مسبقاً من LUIS لتحديد الأهداف لأتمتة الصفحة الرئيسية، مثل تشغيل وإيقاف تشغيل الضوء.

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

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • إنشاء مورد Language في مدخل Microsoft Azure. يمكنك استخدام مستوى التسعير الحر (F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج. لن تحتاج إلى مورد كلام هذه المرة.
  • احصل على مفتاح مورد اللغة والمنطقة. بعد توزيع مورد اللغة، حدد Go to resource لعرض المفاتيح وإدارتها. لمزيد من المعلومات حول موارد خدمات Azure الذكاء الاصطناعي، راجع الحصول على مفاتيح المورد الخاص بك.

ستحتاج أيضًا إلىتثبيت برنامج Speech SDK لبيئة التطوير وأنشئ مشروع نموذج فارغ.

إنشاء تطبيق LUIS للتعرف على الأهداف

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

أول ما ينبغي لك القيام به هو إنشاء حساب وتطبيق LUIS باستخدام منفذ معاينة LUIS. يستخدم تطبيق LUIS الذي أنشأته مجالاً تم إنشاؤه مسبقًا لأتمتة الصفحة الرئيسية، والتي تقدم الهدف والكيانات ونماذج على العبارات. عند إكمالك للعملية، تحصل على نقطة نهاية خاصة بـ LUIS تعمل في السحابة التي يمكنك الاتصال بها باستخدام Speech SDK.

اتبع هذه الإرشادات لإنشاء تطبيق LUIS الخاص بك:

عند الانتهاء، تحتاج إلى أربعة أشياء:

  • إعادة النشر مع تبديل تهيئة الكلام المثبت على
  • مفتاح LUIS الأساسي الخاص بك
  • موقع LUIS الخاص بك
  • معرّف تطبيق LUIS

يمكنك هنا إيجاد تلك المعلومات في منفذ معاينة LUIS:

  1. من منفذ معاينة LUIS، حدد التطبيق ثم حدد الزر نشر.

  2. حدد فتحة "Production" إذا كنت تستخدمها en-US وحدد "change settings"، وبدّل خيار "Speech priming" إلى وضع "On". ثم حدد الزر "Publish".

    هام

    يوصى بشدة بتهيئة الكلام لأنه يحسن مدى دقة التعرف على الكلام.

    Publish LUIS to endpoint

  3. من منفذ معاينة LUIS، حدد إدارة،ثم حدد موارد Azure. في هذه الصفحة، تجد مفتاح LUIS وموقعه (يشار إليه أحياناً باسم المنطقة)لمورد التنبؤ LUIS الخاص بك.

    LUIS key and location

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

    LUIS app ID

فاتح مشروعك

  1. افتَح IDE المفضل لديك.
  2. حمل مشروعك وافتَح Main.java.

ابدأ ببعض التعليمات البرمجية المتداولة

دعنا نضيف بعض التعليمات البرمجية التي تعمل كبنية لمشروعنا.

package speechsdk.quickstart;

import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.intent.*;

/**
 * Quickstart: recognize speech using the Speech SDK for Java.
 */
public class Main {

    /**
     * @param args Arguments are ignored in this sample.
     */
    public static void main(String[] args) {
        } catch (Exception ex) {
            System.out.println("Unexpected exception: " + ex.getMessage());

            assert(false);
            System.exit(1);
        }
    }
}

إنشاء تكوين الكلام.

قبل أن تتمكن من تهيئة IntentRecognizer أي عنصر، تحتاج إلى إنشاء تهيئة باستخدام المفتاح والموقع لمورد تنبؤ LUIS.

أدخِل هذا الرمز في مقطع try / catch في main(). تأكد من تحديث هذه القيم:

  • استبدِل"YourLanguageUnderstandingSubscriptionKey" بمفتاح توقعات LUIS لديك.
  • استبدِل "YourLanguageUnderstandingServiceRegion" بموقع LUIS لديك. استخدِممعرف Region منالمنطقة.

تلميح

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

هام

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

// Replace below with with specified subscription key (called 'endpoint key' by the Language Understanding service)
String languageUnderstandingSubscriptionKey = "YourLanguageUnderstandingSubscriptionKey";
// Replace below with your own service region (e.g., "westus").
String languageUnderstandingServiceRegion = "YourLanguageUnderstandingServiceRegion";

// Creates an instance of intent recognizer with a given speech configuration.
// Recognizer is created with the default microphone audio input and default language "en-us".
try (SpeechConfig config = SpeechConfig.fromSubscription(languageUnderstandingSubscriptionKey, languageUnderstandingServiceRegion);

يستخدم هذا النموذج أسلوبFromSubscription()لإنشاء SpeechConfig. للحصول على قائمة كاملة بالطرق المتاحة، راجعفئة SpeechConfig.

سيتم ضبط برنامج Speech SDK افتراضياً للتعرف باستخدام en-us كلغة، راجعطريقة التعرف على الحديث للحصول على معلومات حول اختيار لغة المصدر.

تهيئة المتعرف على الأهداف

والآن، دعونا ننشئIntentRecognizer. إدراج هذا الكود مباشرةً أسفل تكوين الكلام.

IntentRecognizer recognizer = new IntentRecognizer(config)) {

إضافة LanguageUnderstandingModel والأهداف.

تحتاج إلى إقران LanguageUnderstandingModel مع التعرف على الهدف، وإضافة الأهداف التي تريد التعرف عليها. سنستخدم الأهداف من المجال الذي تم بناؤه مسبقاً لأتمتة الصفحة الرئيسية.

أدخِل هذا الكود فيIntentRecognizer. تأكَّد من استبدال"YourLanguageUnderstandingAppId" بمعرف تطبيق LUIS.

تلميح

إذا كنت بحاجة للعثور على هذه القيمة، فانظر إنشاء تطبيق LUIS للتعرف على الهدف.

// Creates a language understanding model using the app id, and adds specific intents from your model
LanguageUnderstandingModel model = LanguageUnderstandingModel.fromAppId("YourLanguageUnderstandingAppId");
recognizer.addIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
recognizer.addIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
recognizer.addIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");

يستخدم هذا المثال دالةaddIntent() لإضافة الأهداف بشكل فردي. إذا كنت ترغب في إضافة جميع العلامات من النموذج، فاستخدمaddAllIntents(model) ومرر النموذج.

التعرف على الهدف

من الكائنIntentRecognizer، ستطلب طريقةrecognizeOnceAsync(). يُتيح هذا الأسلوب تعريف خدمة الكلام أنك ترسل عبارة واحدة للتعرف عليها، وأنه بمجرد التعرف على العبارة، سيتم إيقاف التعرف على الكلام.

أدخِل هذا الرمز أسفل النموذج الخاص بك:

System.out.println("Say something...");

// Starts recognition. It returns when the first utterance has been recognized.
IntentRecognitionResult result = recognizer.recognizeOnceAsync().get();

عرض نتائج التعرف (أو الأخطاء)

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

أدخِل هذا الرمز أدنى مكالمتك لـ recognizeOnceAsync().

// Checks result.
if (result.getReason() == ResultReason.RecognizedIntent) {
    System.out.println("RECOGNIZED: Text=" + result.getText());
    System.out.println("    Intent Id: " + result.getIntentId());
    System.out.println("    Intent Service JSON: " + result.getProperties().getProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult));
}
else if (result.getReason() == ResultReason.RecognizedSpeech) {
    System.out.println("RECOGNIZED: Text=" + result.getText());
    System.out.println("    Intent not recognized.");
}
else if (result.getReason() == ResultReason.NoMatch) {
    System.out.println("NOMATCH: Speech could not be recognized.");
}
else if (result.getReason() == ResultReason.Canceled) {
    CancellationDetails cancellation = CancellationDetails.fromResult(result);
    System.out.println("CANCELED: Reason=" + cancellation.getReason());

    if (cancellation.getReason() == CancellationReason.Error) {
        System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode());
        System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails());
        System.out.println("CANCELED: Did you update the subscription info?");
    }
}

تحقق من الكود الخاص بك.

في هذه النقطة، يجب أن تظهر التعليمات البرمجية كذلك:

إشعار

لقد أضفنا بعض التعليقات إلى هذا الإصدار.

//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.
//

// <skeleton_1>
package speechsdk.quickstart;

import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.intent.*;

/**
 * Quickstart: recognize speech using the Speech SDK for Java.
 */
public class Main {

    /**
     * @param args Arguments are ignored in this sample.
     */
    public static void main(String[] args) {
    // </skeleton_1>
        // <create_speech_configuration>
        // Replace below with with specified subscription key (called 'endpoint key' by the Language Understanding service)
        String languageUnderstandingSubscriptionKey = "YourLanguageUnderstandingSubscriptionKey";
        // Replace below with your own service region (e.g., "westus").
        String languageUnderstandingServiceRegion = "YourLanguageUnderstandingServiceRegion";

        // Creates an instance of intent recognizer with a given speech configuration.
        // Recognizer is created with the default microphone audio input and default language "en-us".
        try (SpeechConfig config = SpeechConfig.fromSubscription(languageUnderstandingSubscriptionKey, languageUnderstandingServiceRegion);
        // </create_speech_configuration>
            // <create_intent_recognizer>
            IntentRecognizer recognizer = new IntentRecognizer(config)) {
            // </create_intent_recognizer>

            // <add_intents>
            // Creates a language understanding model using the app id, and adds specific intents from your model
            LanguageUnderstandingModel model = LanguageUnderstandingModel.fromAppId("YourLanguageUnderstandingAppId");
            recognizer.addIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
            recognizer.addIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
            recognizer.addIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");
            // </add_intents>

            // To add all of the possible intents from a LUIS model to the recognizer, uncomment the line below:
            // recognizer.addAllIntents(model);

            // <recognize_intent>
            System.out.println("Say something...");

            // Starts recognition. It returns when the first utterance has been recognized.
            IntentRecognitionResult result = recognizer.recognizeOnceAsync().get();
            // </recognize_intent>

            // <print_result>
            // Checks result.
            if (result.getReason() == ResultReason.RecognizedIntent) {
                System.out.println("RECOGNIZED: Text=" + result.getText());
                System.out.println("    Intent Id: " + result.getIntentId());
                System.out.println("    Intent Service JSON: " + result.getProperties().getProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult));
            }
            else if (result.getReason() == ResultReason.RecognizedSpeech) {
                System.out.println("RECOGNIZED: Text=" + result.getText());
                System.out.println("    Intent not recognized.");
            }
            else if (result.getReason() == ResultReason.NoMatch) {
                System.out.println("NOMATCH: Speech could not be recognized.");
            }
            else if (result.getReason() == ResultReason.Canceled) {
                CancellationDetails cancellation = CancellationDetails.fromResult(result);
                System.out.println("CANCELED: Reason=" + cancellation.getReason());

                if (cancellation.getReason() == CancellationReason.Error) {
                    System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode());
                    System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails());
                    System.out.println("CANCELED: Did you update the subscription info?");
                }
            }
            // </print_result>
        // <skeleton_2>
        } catch (Exception ex) {
            System.out.println("Unexpected exception: " + ex.getMessage());

            assert(false);
            System.exit(1);
        }
    }
}
// </skeleton_2>

إنشاء تطبيقك وتشغيله

اضغَط على F11، أو حدِّد تشغيل>تتبع الأخطاء. سيتم التعرف على الثواني الـ 15 التالية من مدخلات الكلام من الميكروفون الخاص بك وتسجيل الدخول على نافذة وحدة التحكم.

حزمة | الوثائق المرجعية (npm) | عينات إضافية على GitHub | التعليمة البرمجية لمصدر المكتبة

في هذا التشغيل السريع، تشاهد خدمة Speech SDK وخدمة فهم اللغة (LUIS) للتعرف على الأهداف من البيانات الصوتية المُلتقطة من أحد الميكروفونات. تحديداً، تستخدم Speech SDK لالتقاط الكلام، ومجالاً تم إنشاؤه مسبقاً من LUIS لتحديد الأهداف لأتمتة الصفحة الرئيسية، مثل تشغيل وإيقاف تشغيل الضوء.

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

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • إنشاء مورد Language في مدخل Microsoft Azure. يمكنك استخدام مستوى التسعير الحر (F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج. لن تحتاج إلى مورد كلام هذه المرة.
  • احصل على مفتاح مورد اللغة والمنطقة. بعد توزيع مورد اللغة، حدد Go to resource لعرض المفاتيح وإدارتها. لمزيد من المعلومات حول موارد خدمات Azure الذكاء الاصطناعي، راجع الحصول على مفاتيح المورد الخاص بك.

ستحتاج أيضًا إلىتثبيت برنامج Speech SDK لبيئة التطوير وأنشئ مشروع نموذج فارغ.

إنشاء تطبيق LUIS للتعرف على الأهداف

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

أول ما ينبغي لك القيام به هو إنشاء حساب وتطبيق LUIS باستخدام منفذ معاينة LUIS. يستخدم تطبيق LUIS الذي أنشأته مجالاً تم إنشاؤه مسبقًا لأتمتة الصفحة الرئيسية، والتي تقدم الهدف والكيانات ونماذج على العبارات. عند إكمالك للعملية، تحصل على نقطة نهاية خاصة بـ LUIS تعمل في السحابة التي يمكنك الاتصال بها باستخدام Speech SDK.

اتبع هذه الإرشادات لإنشاء تطبيق LUIS الخاص بك:

عند الانتهاء، تحتاج إلى أربعة أشياء:

  • إعادة النشر مع تبديل تهيئة الكلام المثبت على
  • مفتاح LUIS الأساسي الخاص بك
  • موقع LUIS الخاص بك
  • معرّف تطبيق LUIS

يمكنك هنا إيجاد تلك المعلومات في منفذ معاينة LUIS:

  1. من منفذ معاينة LUIS، حدد التطبيق ثم حدد الزر نشر.

  2. حدد فتحة "Production" إذا كنت تستخدمها en-US وحدد "change settings"، وبدّل خيار "Speech priming" إلى وضع "On". ثم حدد الزر "Publish".

    هام

    يوصى بشدة بتهيئة الكلام لأنه يحسن مدى دقة التعرف على الكلام.

    Publish LUIS to endpoint

  3. من منفذ معاينة LUIS، حدد إدارة،ثم حدد موارد Azure. في هذه الصفحة، تجد مفتاح LUIS وموقعه (يشار إليه أحياناً باسم المنطقة)لمورد التنبؤ LUIS الخاص بك.

    LUIS key and location

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

    LUIS app ID

ابدأ ببعض التعليمات البرمجية المتداولة

دعنا نضيف بعض التعليمات البرمجية التي تعمل كبنية لمشروعنا.

    <!DOCTYPE html>
    <html>
    <head>
    <title>Microsoft Azure AI Speech SDK JavaScript Quickstart</title>
    <meta charset="utf-8" />
    </head>
    <body style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif; font-size:13px;">
    </body>
    </html>

إضافة عناصر واجهة المستخدم

سنضيف الآن بعض واجهة المستخدم الأساسية لمربعات الإدخال، والرجوع إلى Speech SDK's JavaScript، والحصول على الرمز المميز للتخويل إذا كان متوفرًا.

هام

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

<body style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif; font-size:13px;">
  <div id="content" style="display:none">
    <table width="100%">
      <tr>
        <td></td>
        <td><h1 style="font-weight:500;">Microsoft Azure AI Speech SDK JavaScript Quickstart</h1></td>
      </tr>
      <tr>
        <td align="right"><a href="https://learn.microsoft.com/azure/ai-services/speech-service/overview" target="_blank">Subscription</a>:</td>
        <td><input id="subscriptionKey" type="text" size="40" value="subscription"></td>
      </tr>
      <tr>
        <td align="right">Region</td>
        <td><input id="serviceRegion" type="text" size="40" value="YourServiceRegion"></td>
      </tr>
      <tr>
        <td align="right">Application ID:</td>
        <td><input id="appId" type="text" size="60" value="YOUR_LANGUAGE_UNDERSTANDING_APP_ID"></td>
      </tr>
      <tr>
        <td></td>
        <td><button id="startIntentRecognizeAsyncButton">Start Intent Recognition</button></td>
      </tr>
      <tr>
        <td align="right" valign="top">Input Text</td>
        <td><textarea id="phraseDiv" style="display: inline-block;width:500px;height:200px"></textarea></td>
      </tr>
      <tr>
        <td align="right" valign="top">Result</td>
        <td><textarea id="statusDiv" style="display: inline-block;width:500px;height:100px"></textarea></td>
      </tr>
    </table>
  </div>

  <script src="microsoft.cognitiveservices.speech.sdk.bundle.js"></script>

  <script>
  // Note: Replace the URL with a valid endpoint to retrieve
  //       authorization tokens for your subscription.
  var authorizationEndpoint = "token.php";

  function RequestAuthorizationToken() {
    if (authorizationEndpoint) {
      var a = new XMLHttpRequest();
      a.open("GET", authorizationEndpoint);
      a.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      a.send("");
      a.onload = function() {
				var token = JSON.parse(atob(this.responseText.split(".")[1]));
				serviceRegion.value = token.region;
				authorizationToken = this.responseText;
				subscriptionKey.disabled = true;
				subscriptionKey.value = "using authorization token (hit F5 to refresh)";
				console.log("Got an authorization token: " + token);
      }
    }
  }
  </script>

  <script>
    // status fields and start button in UI
    var phraseDiv;
    var statusDiv;
    var startIntentRecognizeAsyncButton;

    // subscription key, region, and appId for LUIS services.
    var subscriptionKey, serviceRegion, appId;
    var authorizationToken;
    var SpeechSDK;
    var recognizer;

    document.addEventListener("DOMContentLoaded", function () {
      startIntentRecognizeAsyncButton = document.getElementById("startIntentRecognizeAsyncButton");
      subscriptionKey = document.getElementById("subscriptionKey");
      serviceRegion = document.getElementById("serviceRegion");
      appId = document.getElementById("appId");
      phraseDiv = document.getElementById("phraseDiv");
      statusDiv = document.getElementById("statusDiv");

      startIntentRecognizeAsyncButton.addEventListener("click", function () {
        startIntentRecognizeAsyncButton.disabled = true;
        phraseDiv.innerHTML = "";
        statusDiv.innerHTML = "";
      });

      if (!!window.SpeechSDK) {
        SpeechSDK = window.SpeechSDK;
        startIntentRecognizeAsyncButton.disabled = false;

        document.getElementById('content').style.display = 'block';
        document.getElementById('warning').style.display = 'none';

        // in case we have a function for getting an authorization token, call it.
        if (typeof RequestAuthorizationToken === "function") {
          RequestAuthorizationToken();
        }
      }
    });
  </script>

إنشاء تكوين الكلام.

قبل أن تتمكن من تهيئة عنصر SpeechRecognizer، ستحتاج إلى إنشاء تكوين يستخدم مفتاح الاشتراك ومنطقة الاشتراك الخاصة بك. أدخل هذه التعليمات البرمجية في أسلوب startRecognizeOnceAsyncButton.addEventListener().

إشعار

سيتم ضبط برنامج Speech SDK افتراضياً للتعرف باستخدام en-us كلغة، راجعطريقة التعرف على الحديث للحصول على معلومات حول اختيار لغة المصدر.

        // if we got an authorization token, use the token. Otherwise use the provided subscription key
        var speechConfig;
        if (authorizationToken) {
          speechConfig = SpeechSDK.SpeechConfig.fromAuthorizationToken(authorizationToken, serviceRegion.value);
        } else {
          if (subscriptionKey.value === "" || subscriptionKey.value === "subscription") {
            alert("Please enter your Microsoft Azure AI Speech subscription key!");
            return;
          }
          startIntentRecognizeAsyncButton.disabled = false;
          speechConfig = SpeechSDK.SpeechConfig.fromSubscription(subscriptionKey.value, serviceRegion.value);
        }

        speechConfig.speechRecognitionLanguage = "en-US";

إنشاء تكوين صوت

الآن، تحتاج إلى إنشاء عنصر AudioConfig يشير إلى جهاز الإدخال الخاص بك. أدخل هذه التعليمات البرمجية في أسلوب startIntentRecognizeAsyncButton.addEventListener()مباشرةً أسفل تكوين الكلام.

        var audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();

تهيئة IntentRecognizer

دعنا ننشئ الآن عنصرIntentRecognizer باستخدام عنصري SpeechConfig و AudioConfig اللذين تم إنشاؤهما في وقت سابق. أدخل هذه التعليمات البرمجية في أسلوب startIntentRecognizeAsyncButton.addEventListener().

        recognizer = new SpeechSDK.IntentRecognizer(speechConfig, audioConfig);

إضافة LanguageUnderstandingModel والأهداف.

تحتاج إلى ربطLanguageUnderstandingModel التعرف على الهدف وإضافة الأهداف التي تريد التعرف عليها. سنستخدم الأهداف من المجال الذي تم بناؤه مسبقاً لأتمتة الصفحة الرئيسية.

أدخِل هذا الكود فيIntentRecognizer. تأكَّد من استبدال"YourLanguageUnderstandingAppId" بمعرف تطبيق LUIS.

        if (appId.value !== "" && appId.value !== "YOUR_LANGUAGE_UNDERSTANDING_APP_ID") {
          var lm = SpeechSDK.LanguageUnderstandingModel.fromAppId(appId.value);

          recognizer.addAllIntents(lm);
        }

إشعار

يدعم SPEECH SDK نقاط النهاية في تطبيق LUIS إصدار 2.0 فقط. عليك تعديل عنوان URL لنقطة النهاية v3.0 الموجودة في مثال خانة الاستعلام يدويا لاستخدام نمط URL v2.0. تتبع نقاط نهاية تطبيق LUIS إصدار 2.0 أحد هذين النمطين:

  • https://{AzureResourceName}.cognitiveservices.azure.com/luis/v2.0/apps/{app-id}?subscription-key={subkey}&verbose=true&q=
  • https://{Region}.api.cognitive.microsoft.com/luis/v2.0/apps/{app-id}?subscription-key={subkey}&verbose=true&q=

التعرف على الهدف

من الكائنIntentRecognizer، ستطلب طريقةrecognizeOnceAsync(). يُتيح هذا الأسلوب تعريف خدمة الكلام أنك ترسل عبارة واحدة للتعرف عليها، وأنه بمجرد التعرف على العبارة، سيتم إيقاف التعرف على الكلام.

إدراج هذه التعليمة البرمجية أسفل إضافة النموذج:

        recognizer.recognizeOnceAsync(
          function (result) {
            window.console.log(result);

            phraseDiv.innerHTML = result.text + "\r\n";

            statusDiv.innerHTML += "(continuation) Reason: " + SpeechSDK.ResultReason[result.reason];
            switch (result.reason) {
              case SpeechSDK.ResultReason.RecognizedSpeech:
                statusDiv.innerHTML += " Text: " + result.text;
                break;
              case SpeechSDK.ResultReason.RecognizedIntent:
                statusDiv.innerHTML += " Text: " + result.text + " IntentId: " + result.intentId;

                // The actual JSON returned from Language Understanding is a bit more complex to get to, but it is available for things like
                // the entity name and type if part of the intent.
                statusDiv.innerHTML += " Intent JSON: " + result.properties.getProperty(SpeechSDK.PropertyId.LanguageUnderstandingServiceResponse_JsonResult);
                phraseDiv.innerHTML += result.properties.getProperty(SpeechSDK.PropertyId.LanguageUnderstandingServiceResponse_JsonResult) + "\r\n";
                break;
              case SpeechSDK.ResultReason.NoMatch:
                var noMatchDetail = SpeechSDK.NoMatchDetails.fromResult(result);
                statusDiv.innerHTML += " NoMatchReason: " + SpeechSDK.NoMatchReason[noMatchDetail.reason];
                break;
              case SpeechSDK.ResultReason.Canceled:
                var cancelDetails = SpeechSDK.CancellationDetails.fromResult(result);
                statusDiv.innerHTML += " CancellationReason: " + SpeechSDK.CancellationReason[cancelDetails.reason];

              if (cancelDetails.reason === SpeechSDK.CancellationReason.Error) {
                statusDiv.innerHTML += ": " + cancelDetails.errorDetails;
              }
            break;
            }
            statusDiv.innerHTML += "\r\n";
            startIntentRecognizeAsyncButton.disabled = false;
          },
          function (err) {
            window.console.log(err);

            phraseDiv.innerHTML += "ERROR: " + err;
            startIntentRecognizeAsyncButton.disabled = false;
          });

تحقق من الكود الخاص بك.

<!DOCTYPE html>
<html>
<head>
  <title>Microsoft Cognitive Services Speech SDK JavaScript Quickstart</title>
  <meta charset="utf-8" />
</head>
<body style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif; font-size:13px;">
  <div id="warning">
    <h1 style="font-weight:500;">Speech Recognition Speech SDK not found (microsoft.cognitiveservices.speech.sdk.bundle.js missing).</h1>
  </div>
  
  <div id="content" style="display:none">
    <table width="100%">
      <tr>
        <td></td>
        <td><h1 style="font-weight:500;">Microsoft Cognitive Services Speech SDK JavaScript Quickstart</h1></td>
      </tr>
      <tr>
        <td align="right"><a href="https://docs.microsoft.com/azure/cognitive-services/speech-service/quickstarts/intent-recognition?pivots=programming-language-csharp#create-a-luis-app-for-intent-recognition" target="_blank">LUIS Primary Key</a>:</td>
        <td><input id="subscriptionKey" type="text" size="40" value="subscription"></td>
      </tr>
      <tr>
        <td align="right">LUIS Location</td>
        <td><input id="serviceRegion" type="text" size="40" value="YourServiceRegion"></td>
      </tr>
      <tr>
        <td align="right">LUIS App ID:</td>
        <td><input id="appId" type="text" size="60" value="YOUR_LANGUAGE_UNDERSTANDING_APP_ID"></td>
      </tr>
      <tr>
        <td></td>
        <td><button id="startIntentRecognizeAsyncButton">Start Intent Recognition</button></td>
      </tr>
      <tr>
        <td align="right" valign="top">Input Text</td>
        <td><textarea id="phraseDiv" style="display: inline-block;width:500px;height:200px"></textarea></td>
      </tr>
      <tr>
        <td align="right" valign="top">Result</td>
        <td><textarea id="statusDiv" style="display: inline-block;width:500px;height:100px"></textarea></td>
      </tr>
    </table>
  </div>

  <!-- Speech SDK reference sdk. -->
  <script src="https://aka.ms/csspeech/jsbrowserpackageraw"></script>

  <!-- Speech SDK USAGE -->
  <script>
    // status fields and start button in UI
    var phraseDiv;
    var statusDiv;
    var startIntentRecognizeAsyncButton;

    // subscription key and region for speech services.
    var subscriptionKey, serviceRegion, appId;
    var SpeechSDK;
    var recognizer;

    document.addEventListener("DOMContentLoaded", function () {

      startIntentRecognizeAsyncButton = document.getElementById("startIntentRecognizeAsyncButton");
      subscriptionKey = document.getElementById("subscriptionKey");
      serviceRegion = document.getElementById("serviceRegion");
      appId = document.getElementById("appId");
      phraseDiv = document.getElementById("phraseDiv");
      statusDiv = document.getElementById("statusDiv");

      startIntentRecognizeAsyncButton.addEventListener("click", function () {
        startIntentRecognizeAsyncButton.disabled = true;
        phraseDiv.innerHTML = "";
        statusDiv.innerHTML = "";

        let audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();
        if (subscriptionKey.value === "" || subscriptionKey.value === "subscription") {
          alert("Please enter your Microsoft Cognitive Services Speech subscription key!");
          startIntentRecognizeAsyncButton.disabled = false;
          return;
        }
        var speechConfig = SpeechSDK.SpeechConfig.fromSubscription(subscriptionKey.value, serviceRegion.value);

        speechConfig.speechRecognitionLanguage = "en-US";
        recognizer = new SpeechSDK.IntentRecognizer(speechConfig, audioConfig);

        // Set up a Language Understanding Model from Language Understanding Intelligent Service (LUIS).
        // See https://www.luis.ai/home for more information on LUIS.
        if (appId.value !== "" && appId.value !== "YOUR_LANGUAGE_UNDERSTANDING_APP_ID") {
          var lm = SpeechSDK.LanguageUnderstandingModel.fromAppId(appId.value);

          recognizer.addAllIntents(lm);
        }

        recognizer.recognizeOnceAsync(
          function (result) {
            window.console.log(result);
            phraseDiv.innerHTML = result.text + "\r\n";

            statusDiv.innerHTML += "(continuation) Reason: " + SpeechSDK.ResultReason[result.reason];
            switch (result.reason) {

              case SpeechSDK.ResultReason.RecognizedSpeech:
                statusDiv.innerHTML += " Text: " + result.text;
                break;

              case SpeechSDK.ResultReason.RecognizedIntent:
                statusDiv.innerHTML += " Text: " + result.text + " IntentId: " + result.intentId;

                // The actual JSON returned from Language Understanding is a bit more complex to get to, but it is available for things like
                // the entity name and type if part of the intent.
                statusDiv.innerHTML += " Intent JSON: " + result.properties.getProperty(SpeechSDK.PropertyId.LanguageUnderstandingServiceResponse_JsonResult);
                phraseDiv.innerHTML += result.properties.getProperty(SpeechSDK.PropertyId.LanguageUnderstandingServiceResponse_JsonResult) + "\r\n";
                break;

              case SpeechSDK.ResultReason.NoMatch:
                var noMatchDetail = SpeechSDK.NoMatchDetails.fromResult(result);
                statusDiv.innerHTML += " NoMatchReason: " + SpeechSDK.NoMatchReason[noMatchDetail.reason];
                break;
                
              case SpeechSDK.ResultReason.Canceled:
                var cancelDetails = SpeechSDK.CancellationDetails.fromResult(result);
                statusDiv.innerHTML += " CancellationReason: " + SpeechSDK.CancellationReason[cancelDetails.reason];

                if (cancelDetails.reason === SpeechSDK.CancellationReason.Error) {
                  statusDiv.innerHTML += ": " + cancelDetails.errorDetails;
                }
                break;
            }
            statusDiv.innerHTML += "\r\n";
            startIntentRecognizeAsyncButton.disabled = false;
          },
          function (err) {
            window.console.log(err);

            phraseDiv.innerHTML += "ERROR: " + err;
            startIntentRecognizeAsyncButton.disabled = false;
        });
      });

      if (!!window.SpeechSDK) {
        SpeechSDK = window.SpeechSDK;
        startIntentRecognizeAsyncButton.disabled = false;

        document.getElementById('content').style.display = 'block';
        document.getElementById('warning').style.display = 'none';
      }
    });

  </script>
</body>
</html>

إنشاء مصدر الرمز المميز (اختياري)

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

إنشاء ملف جديد يسمى token.php. في هذا المثال، نفترض أن خادم الويب الخاص بك يدعم لغة البرمجة النصية PHP مع تمكين curl. أدخل الرمز التالي:

<?php
header('Access-Control-Allow-Origin: ' . $_SERVER['SERVER_NAME']);

// Replace with your own subscription key and service region (e.g., "westus").
$subscriptionKey = 'YourSubscriptionKey';
$region = 'YourServiceRegion';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://' . $region . '.api.cognitive.microsoft.com/sts/v1.0/issueToken');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{}');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Ocp-Apim-Subscription-Key: ' . $subscriptionKey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
echo curl_exec($ch);
?>

إشعار

لرموز التخويل المميزة مدة محدودة فقط. لا يظهر هذا المثال المبسط كيفية تحديث رموز التخويل المميزة تلقائيًّا. بصفتك مستخدمًا، يمكنك إعادة تحميل الصفحة يدويًّا أو انقر على F5 للتحديث.

قم بإنشاء العينة وتشغيلها داخليًّا

لإطلاق التطبيق، انقر نقرًا مزدوجًا على ملف index.html أو افتح index.html على متصفح الويب المفضل لديك. وسيعرض واجهة المستخدم الرسومية بسيطة تسمح لك بإدخال مفتاح LUIS الخاص بك، منطقة LUISومعرف تطبيق LUIS. بمجرد إدخال هذه الحقول، يمكنك النقر فوق الزر المناسب لتشغيل التعرف باستخدام الميكروفون.

إشعار

لا يعمل هذا الأسلوب على متصفح سفاري Safari. على سفاري Safari، يجب استضافة عينة صفحة الويب على خادم ويب؛ إذ لا يسمح سفاري Safari لمواقع الويب المحملة من ملف داخلي استخدام الميكروفون.

إنشاء العينة وتشغيلها عبر خادم ويب

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

حزمة الوثائق المرجعية | (PyPi) | عينات إضافية على GitHub

في هذا التشغيل السريع، تشاهد خدمة Speech SDK وخدمة فهم اللغة (LUIS) للتعرف على الأهداف من البيانات الصوتية المُلتقطة من أحد الميكروفونات. تحديداً، تستخدم Speech SDK لالتقاط الكلام، ومجالاً تم إنشاؤه مسبقاً من LUIS لتحديد الأهداف لأتمتة الصفحة الرئيسية، مثل تشغيل وإيقاف تشغيل الضوء.

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

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • إنشاء مورد Language في مدخل Microsoft Azure. يمكنك استخدام مستوى التسعير الحر (F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج. لن تحتاج إلى مورد كلام هذه المرة.
  • احصل على مفتاح مورد اللغة والمنطقة. بعد توزيع مورد اللغة، حدد Go to resource لعرض المفاتيح وإدارتها. لمزيد من المعلومات حول موارد خدمات Azure الذكاء الاصطناعي، راجع الحصول على مفاتيح المورد الخاص بك.

ستحتاج أيضًا إلىتثبيت برنامج Speech SDK لبيئة التطوير وأنشئ مشروع نموذج فارغ.

إنشاء تطبيق LUIS للتعرف على الأهداف

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

أول ما ينبغي لك القيام به هو إنشاء حساب وتطبيق LUIS باستخدام منفذ معاينة LUIS. يستخدم تطبيق LUIS الذي أنشأته مجالاً تم إنشاؤه مسبقًا لأتمتة الصفحة الرئيسية، والتي تقدم الهدف والكيانات ونماذج على العبارات. عند إكمالك للعملية، تحصل على نقطة نهاية خاصة بـ LUIS تعمل في السحابة التي يمكنك الاتصال بها باستخدام Speech SDK.

اتبع هذه الإرشادات لإنشاء تطبيق LUIS الخاص بك:

عند الانتهاء، تحتاج إلى أربعة أشياء:

  • إعادة النشر مع تبديل تهيئة الكلام المثبت على
  • مفتاح LUIS الأساسي الخاص بك
  • موقع LUIS الخاص بك
  • معرّف تطبيق LUIS

يمكنك هنا إيجاد تلك المعلومات في منفذ معاينة LUIS:

  1. من منفذ معاينة LUIS، حدد التطبيق ثم حدد الزر نشر.

  2. حدد فتحة "Production" إذا كنت تستخدمها en-US وحدد "change settings"، وبدّل خيار "Speech priming" إلى وضع "On". ثم حدد الزر "Publish".

    هام

    يوصى بشدة بتهيئة الكلام لأنه يحسن مدى دقة التعرف على الكلام.

    Publish LUIS to endpoint

  3. من منفذ معاينة LUIS، حدد إدارة،ثم حدد موارد Azure. في هذه الصفحة، تجد مفتاح LUIS وموقعه (يشار إليه أحياناً باسم المنطقة)لمورد التنبؤ LUIS الخاص بك.

    LUIS key and location

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

    LUIS app ID

فاتح مشروعك

  1. افتَح IDE المفضل لديك.
  2. إنشاء مشروع جديد وإنشاء ملف يسميquickstart.py، ثم فتحه.

ابدأ ببعض التعليمات البرمجية المتداولة

دعنا نضيف بعض التعليمات البرمجية التي تعمل كبنية لمشروعنا.

import azure.cognitiveservices.speech as speechsdk

print("Say something...")

إنشاء تكوين الكلام.

قبل أن تتمكن من تهيئة IntentRecognizer أي عنصر، تحتاج إلى إنشاء تهيئة باستخدام المفتاح والموقع لمورد تنبؤ LUIS.

أدخِل هذا الكود فيquickstart.py. تأكد من تحديث هذه القيم:

  • استبدِل"YourLanguageUnderstandingSubscriptionKey" بمفتاح توقعات LUIS لديك.
  • استبدِل "YourLanguageUnderstandingServiceRegion" بموقع LUIS لديك. استخدِممعرف Region منالمنطقة.

تلميح

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

هام

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

# Set up the config for the intent recognizer (remember that this uses the Language Understanding key, not the Speech Services key)!
intent_config = speechsdk.SpeechConfig(
    subscription="YourLanguageUnderstandingSubscriptionKey",
    region="YourLanguageUnderstandingServiceRegion")

ينشأ هذا النموذجSpeechConfig الكائن باستخدام مفتاح ومنطقة LUIS. للحصول على قائمة كاملة بالطرق المتاحة، راجعفئة SpeechConfig.

سيتم ضبط برنامج Speech SDK افتراضياً للتعرف باستخدام en-us كلغة، راجعطريقة التعرف على الحديث للحصول على معلومات حول اختيار لغة المصدر.

تهيئة المتعرف على الأهداف

والآن، دعونا ننشئIntentRecognizer. إدراج هذا الكود مباشرةً أسفل تكوين الكلام.

# Set up the intent recognizer
intent_recognizer = speechsdk.intent.IntentRecognizer(speech_config=intent_config)

إضافة LanguageUnderstandingModel والأهداف.

تحتاج إلى ربطLanguageUnderstandingModel التعرف على الهدف وإضافة الأهداف التي تريد التعرف عليها. سنستخدم الأهداف من المجال الذي تم بناؤه مسبقاً لأتمتة الصفحة الرئيسية.

أدخِل هذا الكود فيIntentRecognizer. تأكَّد من استبدال"YourLanguageUnderstandingAppId" بمعرف تطبيق LUIS.

تلميح

إذا كنت بحاجة للعثور على هذه القيمة، فانظر إنشاء تطبيق LUIS للتعرف على الهدف.

# set up the intents that are to be recognized. These can be a mix of simple phrases and
# intents specified through a LanguageUnderstanding Model.
model = speechsdk.intent.LanguageUnderstandingModel(app_id="YourLanguageUnderstandingAppId")
intents = [
    (model, "HomeAutomation.TurnOn"),
    (model, "HomeAutomation.TurnOff"),
    ("This is a test.", "test"),
    ("Switch to channel 34.", "34"),
    ("what's the weather like", "weather"),
]
intent_recognizer.add_intents(intents)

يستخدم هذا المثال add_intents() الوظيفة لإضافة قائمة بالأهداف المعرفة بشكل صريح. إذا كنت ترغب في إضافة جميع العلامات من النموذج، فاستخدمadd_all_intents(model) ومرر النموذج.

التعرف على الهدف

من الكائنIntentRecognizer، ستطلب طريقةrecognize_once(). يُتيح هذا الأسلوب تعريف خدمة الكلام أنك ترسل عبارة واحدة للتعرف عليها، وأنه بمجرد التعرف على العبارة، سيتم إيقاف التعرف على الكلام.

إدراج هذا الكود أسفل النموذج الخاص بك:

intent_result = intent_recognizer.recognize_once()

عرض نتائج التعرف (أو الأخطاء)

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

أسفل خانة الاتصال الخاصة بكrecognize_once()، أضف هذا الكود.

# Check the results
if intent_result.reason == speechsdk.ResultReason.RecognizedIntent:
    print("Recognized: \"{}\" with intent id `{}`".format(intent_result.text, intent_result.intent_id))
elif intent_result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Recognized: {}".format(intent_result.text))
elif intent_result.reason == speechsdk.ResultReason.NoMatch:
    print("No speech could be recognized: {}".format(intent_result.no_match_details))
elif intent_result.reason == speechsdk.ResultReason.Canceled:
    print("Intent recognition canceled: {}".format(intent_result.cancellation_details.reason))
    if intent_result.cancellation_details.reason == speechsdk.CancellationReason.Error:
        print("Error details: {}".format(intent_result.cancellation_details.error_details))

تحقق من الكود الخاص بك.

في هذه النقطة، ينبغي أن يظهر الكود الخاص بك:

إشعار

لقد أضفنا بعض التعليقات إلى هذا الإصدار.

# Copyright (c) Microsoft. All rights reserved.
# Licensed under the MIT license. See LICENSE.md file in the project root for full license information.

# <skeleton>
import azure.cognitiveservices.speech as speechsdk

print("Say something...")
# </skeleton>

"""performs one-shot intent recognition from input from the default microphone"""

# <create_speech_configuration>
# Set up the config for the intent recognizer (remember that this uses the Language Understanding key, not the Speech Services key)!
intent_config = speechsdk.SpeechConfig(
    subscription="YourLanguageUnderstandingSubscriptionKey",
    region="YourLanguageUnderstandingServiceRegion")
# </create_speech_configuration>

# <create_intent_recognizer>
# Set up the intent recognizer
intent_recognizer = speechsdk.intent.IntentRecognizer(speech_config=intent_config)
# </create_intent_recognizer>

# <add_intents>
# set up the intents that are to be recognized. These can be a mix of simple phrases and
# intents specified through a LanguageUnderstanding Model.
model = speechsdk.intent.LanguageUnderstandingModel(app_id="YourLanguageUnderstandingAppId")
intents = [
    (model, "HomeAutomation.TurnOn"),
    (model, "HomeAutomation.TurnOff"),
    ("This is a test.", "test"),
    ("Switch to channel 34.", "34"),
    ("what's the weather like", "weather"),
]
intent_recognizer.add_intents(intents)
# </add_intents>

# To add all of the possible intents from a LUIS model to the recognizer, uncomment the line below:
# intent_recognizer.add_all_intents(model)

# Starts intent recognition, and returns after a single utterance is recognized. The end of a
# single utterance is determined by listening for silence at the end or until a maximum of 15
# seconds of audio is processed. It returns the recognition text as result.
# Note: Since recognize_once() returns only a single utterance, it is suitable only for single
# shot recognition like command or query.
# For long-running multi-utterance recognition, use start_continuous_recognition() instead.
# <recognize_intent>
intent_result = intent_recognizer.recognize_once()
# </recognize_intent>

# <print_results>
# Check the results
if intent_result.reason == speechsdk.ResultReason.RecognizedIntent:
    print("Recognized: \"{}\" with intent id `{}`".format(intent_result.text, intent_result.intent_id))
elif intent_result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Recognized: {}".format(intent_result.text))
elif intent_result.reason == speechsdk.ResultReason.NoMatch:
    print("No speech could be recognized: {}".format(intent_result.no_match_details))
elif intent_result.reason == speechsdk.ResultReason.Canceled:
    print("Intent recognition canceled: {}".format(intent_result.cancellation_details.reason))
    if intent_result.cancellation_details.reason == speechsdk.CancellationReason.Error:
        print("Error details: {}".format(intent_result.cancellation_details.error_details))
# </print_results>

إنشاء تطبيقك وتشغيله

تشغيل النموذج من وحدة التحكم أو في IDE الخاص بك:

python quickstart.py

سيتم التعرف على الثواني الـ 15 التالية من مدخلات الكلام من الميكروفون الخاص بك وتسجيل الدخول على نافذة وحدة التحكم.

الوثائق المرجعية | حزمة (Go) | عينات إضافية على GitHub

لا يدعم Speech SDK for Go التعرف على الهدف. يُرجى تحديد لغة كمبيوتر أخرى أو مرجع Go والنماذج المرتبطة من بداية هذه المقالة.

الوثائق المرجعية | حزمة (التنزيل) | نماذج إضافية على GitHub

يدعم Speech SDK for Objective-C التعرف على الهدف، لكننا لم نقم بتضمين دليل هنا بعد. يرجى تحديد لغة برمجة أخرى للبدء والتعرف على المفاهيم، أو الاطلاع على مرجع Objective-C والعينات المرتبطة من بداية هذه المقالة.

الوثائق المرجعية | حزمة (التنزيل) | نماذج إضافية على GitHub

يدعم برنامج Speech SDK for Swift التعرف على الهدف، لكننا لم نقم بتضمين دليل هنا بعد. يرجى تحديد لغة برمجة أخرى للبدء والتعرف على المفاهيم، أو الاطلاع على مرجع Swift والعينات المرتبطة من بداية هذه المقالة.

يشير | Speech to text REST API إلى Speech to text REST API for short audio reference | Additional Samples on GitHub

يمكنك استخدام واجهة برمجة تطبيقات REST للتعرف على الهدف، لكننا لم نقم بتضمين دليل هنا بعد. يُرجى تحديد لغة برمجة أخرى للبدء والتعرف على المفاهيم.

تدعم واجهة سطر أوامر الكلام (CLI) التعرف على الهدف، لكننا لم نقم بتضمين دليل هنا بعد. يُرجى تحديد لغة كمبيوتر أخرى للبدء والتعرف على المفاهيم، أو راجع نظرة عامة على Speech CLI لمزيد من المعلومات حول CLI.

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