Share via


Hızlı Başlangıç: Konuşma hizmeti ve LUIS ile amaçları tanıma

Önemli

LUIS, 1 Ekim 2025'te kullanımdan kaldırılacaktır. 1 Nisan 2023 itibarıyla yeni LUIS kaynakları oluşturamazsınız. Devam eden ürün desteği ve çok dilli özelliklerden yararlanmak için LUIS uygulamalarınızıkonuşma dili anlayışına geçirmenizi öneririz.

Konuşma SDK'sı sürüm 1.25 veya üzeri ile C# ve C++ için Conversational Language Understanding (CLU) kullanılabilir. Konuşma SDK'sı ve CLU ile amaçları tanıma hızlı başlangıcına bakın.

GitHub'da Başvuru belgeleri | Paketi (NuGet) | Ek Örnekler

Bu hızlı başlangıçta, mikrofondan yakalanan ses verilerinden amaçları tanımak için Konuşma SDK'sını ve Language Understanding (LUIS) hizmetini kullanacaksınız. Özellikle, konuşmayı yakalamak için Konuşma SDK'sını ve ev otomasyonuna yönelik amaçları belirlemek için LUIS'ten önceden oluşturulmuş bir etki alanını (örneğin, bir ışığı açıp kapatarak) kullanacaksınız.

Önkoşullar

  • Azure aboneliği - Ücretsiz olarak oluşturun
  • Azure portalında bir Dil kaynağı oluşturun. Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (F0) kullanabilirsiniz. Bu kez konuşma kaynağına ihtiyacınız olmayacak.
  • Dil kaynak anahtarını ve bölgesini alın. Dil kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin. Azure AI hizmetleri kaynakları hakkında daha fazla bilgi için bkz . Kaynağınızın anahtarlarını alma.

Amaç tanıma için LUIS uygulaması oluşturma

Amaç tanıma hızlı başlangıcını tamamlamak için LUIS önizleme portalını kullanarak bir LUIS hesabı ve proje oluşturmanız gerekir. Bu hızlı başlangıçta amaç tanımanın kullanılabildiği bir bölgede LUIS aboneliği gerekir. Konuşma hizmeti aboneliği gerekli değildir.

yapmanız gereken ilk şey LUIS önizleme portalını kullanarak bir LUIS hesabı ve uygulaması oluşturmaktır. Oluşturduğunuz LUIS uygulaması, amaçlar, varlıklar ve örnek konuşmalar sağlayan ev otomasyonu için önceden oluşturulmuş bir etki alanı kullanır. İşiniz bittiğinde, bulutta Konuşma SDK'sını kullanarak çağırabileceğiniz bir LUIS uç noktanız çalışır.

LUIS uygulamanızı oluşturmak için şu yönergeleri izleyin:

İşiniz bittiğinde dört şeye ihtiyacınız olacak:

  • Konuşma hazırlama açıkken yeniden yayımlama
  • LUIS Birincil anahtarınız
  • LUIS Konumunuz
  • LUIS Uygulama Kimliğiniz

Bu bilgileri LUIS önizleme portalında burada bulabilirsiniz:

  1. LUIS önizleme portalından uygulamanızı ve ardından Yayımla düğmesini seçin.

  2. Üretim yuvasını seçin, kullanıyorsanız en-US ayarları değiştir'i seçin ve Konuşma hazırlama seçeneğini Açık konumuna getirin. Ardından Yayımla düğmesini seçin.

    Önemli

    Konuşma tanıma doğruluğunu geliştireceği için konuşma hazırlama kesinlikle önerilir.

    Publish LUIS to endpoint

  3. LUIS önizleme portalından Yönet'i ve ardından Azure Kaynakları'nı seçin. Bu sayfada, LUIS tahmin kaynağınız için LUIS anahtarınızı ve konumunuzu (bazen bölge olarak da adlandırılır) bulacaksınız.

    LUIS key and location

  4. Anahtarınızı ve konumunuzu aldıktan sonra uygulama kimliğine ihtiyacınız olacaktır. Ayarlar'ı seçin. uygulama kimliğiniz bu sayfada bulunabilir.

    LUIS app ID

Projenizi Visual Studio'da açma

Ardından projenizi Visual Studio'da açın.

  1. Visual Studio 2019'ı başlatın.
  2. Projenizi yükleyin ve açın Program.cs.

Bazı ortak kodlarla başlayın

Şimdi projemiz için iskelet olarak çalışan bazı kodlar ekleyelim. adlı RecognizeIntentAsync()bir zaman uyumsuz yöntem oluşturduğunuzu unutmayın.

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();
        }
    }
}

Konuşma yapılandırması oluşturma

Bir IntentRecognizer nesneyi başlatabilmeniz için önce LUIS tahmin kaynağınızın anahtarını ve konumunu kullanan bir yapılandırma oluşturmanız gerekir.

Önemli

Başlangıç anahtarınız ve yazma anahtarlarınız çalışmaz. Tahmin anahtarınızı ve daha önce oluşturduğunuz konumu kullanmanız gerekir. Daha fazla bilgi için bkz . Amaç tanıma için LUIS uygulaması oluşturma.

Bu kodu yöntemine RecognizeIntentAsync() ekleyin. Şu değerleri güncelleştirdiğinizden emin olun:

  • değerini LUIS tahmin anahtarınız ile değiştirin "YourLanguageUnderstandingSubscriptionKey" .
  • değerini LUIS konumunuzla değiştirin "YourLanguageUnderstandingServiceRegion" . Bölgeden Bölge tanımlayıcısıkullanın.

İpucu

Bu değerleri bulma konusunda yardıma ihtiyacınız varsa bkz . Amaç tanıma için LUIS uygulaması oluşturma.

Önemli

İşiniz bittiğinde anahtarı kodunuzdan kaldırmayı unutmayın ve asla herkese açık olarak göndermeyin. Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.

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

Bu örnek, FromSubscription() derlemek SpeechConfigiçin yöntemini kullanır. Kullanılabilir yöntemlerin tam listesi için bkz . SpeechConfig Sınıfı.

Konuşma SDK'sı varsayılan olarak dil için en-us kullanarak tanımaya ayarlı, kaynak dili seçme hakkında bilgi için bkz . Konuşmayı tanıma.

IntentRecognizer başlatma

Şimdi bir IntentRecognizeroluşturalım. Bu nesne, yönetilmeyen kaynakların düzgün bir şekilde yayınlanmasını sağlamak için bir using deyimi içinde oluşturulur. Bu kodu RecognizeIntentAsync() konuşma yapılandırmanızın hemen altındaki yöntemine ekleyin.

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

LanguageUnderstandingModel ve amaçlar ekleme

Bir öğesini amaç tanıyıcısıyla ilişkilendirmeniz LanguageUnderstandingModel ve tanınmasını istediğiniz amaçları eklemeniz gerekir. Ev otomasyonu için önceden oluşturulmuş etki alanından amaçları kullanacağız. Bu kodu önceki bölümdeki using deyimine ekleyin. değerini LUIS uygulama kimliğiniz ile değiştirdiğinizden "YourLanguageUnderstandingAppId" emin olun.

İpucu

Bu değeri bulma konusunda yardıma ihtiyacınız varsa bkz . Amaç tanıma için LUIS uygulaması oluşturma.

// 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");

Bu örnek, AddIntent() tek tek amaçlar eklemek için işlevini kullanır. Bir modeldeki tüm amaçları eklemek istiyorsanız, kullanın AddAllIntents(model) ve modeli geçirin.

Amacı tanıma

nesnesinden IntentRecognizer yöntemini çağıracaksınız RecognizeOnceAsync() . Bu yöntem Konuşma tanıma hizmetinin tanıma için tek bir tümcecik gönderdiğinizi ve tümcecik tanımlandığında konuşmayı tanımayı durdurduğunu bilmesini sağlar.

using deyiminin içine bu kodu modelinizin altına ekleyin.

// 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();

Tanıma sonuçlarını (veya hatalarını) görüntüleme

Tanıma sonucu Konuşma hizmeti tarafından döndürülürse, bununla bir şey yapmak istersiniz. Bunu basit tutacağız ve sonuçları konsola yazdıracağız.

using deyiminin içinde, altına RecognizeOnceAsync()şu kodu ekleyin:

// 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;
}

Kodunuzu denetleyin

Bu noktada kodunuz şu şekilde görünmelidir:

Not

Bu sürüme bazı açıklamalar ekledik.

//
// 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>

Uygulamanızı derleme ve çalıştırma

Artık uygulamanızı oluşturmaya ve Konuşma tanıma hizmetini kullanarak konuşma tanımamızı test etmeye hazırsınız.

  1. Kodu derleme - Visual Studio'nun menü çubuğunda Derleme Çözümü'ne> tıklayın.
  2. Uygulamanızı başlatın - Menü çubuğunda Hata AyıklamaYı>Başlat Hata Ayıklama'yı seçin veya F5 tuşuna basın.
  3. Tanımayı başlatma - İngilizce bir tümcecik konuşmanızı ister. Konuşmanız Konuşma hizmetine gönderilir, metin olarak yazılır ve konsolda işlenir.

GitHub'da Başvuru belgeleri | Paketi (NuGet) | Ek Örnekler

Bu hızlı başlangıçta, mikrofondan yakalanan ses verilerinden amaçları tanımak için Konuşma SDK'sını ve Language Understanding (LUIS) hizmetini kullanacaksınız. Özellikle, konuşmayı yakalamak için Konuşma SDK'sını ve ev otomasyonuna yönelik amaçları belirlemek için LUIS'ten önceden oluşturulmuş bir etki alanını (örneğin, bir ışığı açıp kapatarak) kullanacaksınız.

Önkoşullar

  • Azure aboneliği - Ücretsiz olarak oluşturun
  • Azure portalında bir Dil kaynağı oluşturun. Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (F0) kullanabilirsiniz. Bu kez konuşma kaynağına ihtiyacınız olmayacak.
  • Dil kaynak anahtarını ve bölgesini alın. Dil kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin. Azure AI hizmetleri kaynakları hakkında daha fazla bilgi için bkz . Kaynağınızın anahtarlarını alma.

Amaç tanıma için LUIS uygulaması oluşturma

Amaç tanıma hızlı başlangıcını tamamlamak için LUIS önizleme portalını kullanarak bir LUIS hesabı ve proje oluşturmanız gerekir. Bu hızlı başlangıçta amaç tanımanın kullanılabildiği bir bölgede LUIS aboneliği gerekir. Konuşma hizmeti aboneliği gerekli değildir.

yapmanız gereken ilk şey LUIS önizleme portalını kullanarak bir LUIS hesabı ve uygulaması oluşturmaktır. Oluşturduğunuz LUIS uygulaması, amaçlar, varlıklar ve örnek konuşmalar sağlayan ev otomasyonu için önceden oluşturulmuş bir etki alanı kullanır. İşiniz bittiğinde, bulutta Konuşma SDK'sını kullanarak çağırabileceğiniz bir LUIS uç noktanız çalışır.

LUIS uygulamanızı oluşturmak için şu yönergeleri izleyin:

İşiniz bittiğinde dört şeye ihtiyacınız olacak:

  • Konuşma hazırlama açıkken yeniden yayımlama
  • LUIS Birincil anahtarınız
  • LUIS Konumunuz
  • LUIS Uygulama Kimliğiniz

Bu bilgileri LUIS önizleme portalında burada bulabilirsiniz:

  1. LUIS önizleme portalından uygulamanızı ve ardından Yayımla düğmesini seçin.

  2. Üretim yuvasını seçin, kullanıyorsanız en-US ayarları değiştir'i seçin ve Konuşma hazırlama seçeneğini Açık konumuna getirin. Ardından Yayımla düğmesini seçin.

    Önemli

    Konuşma tanıma doğruluğunu geliştireceği için konuşma hazırlama kesinlikle önerilir.

    Publish LUIS to endpoint

  3. LUIS önizleme portalından Yönet'i ve ardından Azure Kaynakları'nı seçin. Bu sayfada, LUIS tahmin kaynağınız için LUIS anahtarınızı ve konumunuzu (bazen bölge olarak da adlandırılır) bulacaksınız.

    LUIS key and location

  4. Anahtarınızı ve konumunuzu aldıktan sonra uygulama kimliğine ihtiyacınız olacaktır. Ayarlar'ı seçin. uygulama kimliğiniz bu sayfada bulunabilir.

    LUIS app ID

Projenizi Visual Studio'da açma

Ardından projenizi Visual Studio'da açın.

  1. Visual Studio 2019'ı başlatın.
  2. Projenizi yükleyin ve açın helloworld.cpp.

Bazı ortak kodlarla başlayın

Şimdi projemiz için iskelet olarak çalışan bazı kodlar ekleyelim. adlı recognizeIntent()bir zaman uyumsuz yöntem oluşturduğunuzu unutmayın.

#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;
}

Konuşma yapılandırması oluşturma

Bir IntentRecognizer nesneyi başlatabilmeniz için önce LUIS tahmin kaynağınızın anahtarını ve konumunu kullanan bir yapılandırma oluşturmanız gerekir.

Önemli

Başlangıç anahtarınız ve yazma anahtarlarınız çalışmaz. Tahmin anahtarınızı ve daha önce oluşturduğunuz konumu kullanmanız gerekir. Daha fazla bilgi için bkz . Amaç tanıma için LUIS uygulaması oluşturma.

Bu kodu yöntemine recognizeIntent() ekleyin. Şu değerleri güncelleştirdiğinizden emin olun:

  • değerini LUIS tahmin anahtarınız ile değiştirin "YourLanguageUnderstandingSubscriptionKey" .
  • değerini LUIS konumunuzla değiştirin "YourLanguageUnderstandingServiceRegion" . Bölgeden Bölge tanımlayıcısıkullanın.

İpucu

Bu değerleri bulma konusunda yardıma ihtiyacınız varsa bkz . Amaç tanıma için LUIS uygulaması oluşturma.

Önemli

İşiniz bittiğinde anahtarı kodunuzdan kaldırmayı unutmayın ve asla herkese açık olarak göndermeyin. Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.

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

Bu örnek, FromSubscription() derlemek SpeechConfigiçin yöntemini kullanır. Kullanılabilir yöntemlerin tam listesi için bkz . SpeechConfig Sınıfı.

Konuşma SDK'sı varsayılan olarak dil için en-us kullanarak tanımaya ayarlı, kaynak dili seçme hakkında bilgi için bkz . Konuşmayı tanıma.

IntentRecognizer başlatma

Şimdi bir IntentRecognizeroluşturalım. Bu kodu recognizeIntent() konuşma yapılandırmanızın hemen altındaki yöntemine ekleyin.

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

LanguageUnderstandingModel ve Intents ekleme

Bir öğesini amaç tanıyıcısıyla ilişkilendirmeniz LanguageUnderstandingModel ve tanınmasını istediğiniz amaçları eklemeniz gerekir. Ev otomasyonu için önceden oluşturulmuş etki alanından amaçları kullanacağız.

Bu kodu altına IntentRecognizerekleyin. değerini LUIS uygulama kimliğiniz ile değiştirdiğinizden "YourLanguageUnderstandingAppId" emin olun.

İpucu

Bu değeri bulma konusunda yardıma ihtiyacınız varsa bkz . Amaç tanıma için LUIS uygulaması oluşturma.

// 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");

Bu örnek, AddIntent() tek tek amaçlar eklemek için işlevini kullanır. Bir modeldeki tüm amaçları eklemek istiyorsanız, kullanın AddAllIntents(model) ve modeli geçirin.

Amacı tanıma

nesnesinden IntentRecognizer yöntemini çağıracaksınız RecognizeOnceAsync() . Bu yöntem Konuşma tanıma hizmetinin tanıma için tek bir tümcecik gönderdiğinizi ve tümcecik tanımlandığında konuşmayı tanımayı durdurduğunu bilmesini sağlar. Kolaylık olması için, geleceğin tamamlanmasını bekleyeceğiz.

Bu kodu modelinizin altına ekleyin:

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();

Tanıma sonuçlarını (veya hatalarını) görüntüleme

Tanıma sonucu Konuşma hizmeti tarafından döndürülürse, bununla bir şey yapmak istersiniz. Bunu basit tutacağız ve sonucu konsola yazdıracağız.

Bu kodu altına auto result = recognizer->RecognizeOnceAsync().get();ekleyin:

// 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;
    }
}

Kodunuzu denetleyin

Bu noktada kodunuz şu şekilde görünmelidir:

Not

Bu sürüme bazı açıklamalar ekledik.

//
// 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>

Uygulamanızı derleme ve çalıştırma

Artık uygulamanızı oluşturmaya ve Konuşma tanıma hizmetini kullanarak konuşma tanımamızı test etmeye hazırsınız.

  1. Kodu derleme - Visual Studio'nun menü çubuğunda Derleme Çözümü'ne> tıklayın.
  2. Uygulamanızı başlatın - Menü çubuğunda Hata AyıklamaYı>Başlat Hata Ayıklama'yı seçin veya F5 tuşuna basın.
  3. Tanımayı başlatma - İngilizce bir tümcecik konuşmanızı ister. Konuşmanız Konuşma hizmetine gönderilir, metin olarak yazılır ve konsolda işlenir.

Başvuru belgeleri | GitHub'da Ek Örnekler

Bu hızlı başlangıçta, mikrofondan yakalanan ses verilerinden amaçları tanımak için Konuşma SDK'sını ve Language Understanding (LUIS) hizmetini kullanacaksınız. Özellikle, konuşmayı yakalamak için Konuşma SDK'sını ve ev otomasyonuna yönelik amaçları belirlemek için LUIS'ten önceden oluşturulmuş bir etki alanını (örneğin, bir ışığı açıp kapatarak) kullanacaksınız.

Önkoşullar

  • Azure aboneliği - Ücretsiz olarak oluşturun
  • Azure portalında bir Dil kaynağı oluşturun. Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (F0) kullanabilirsiniz. Bu kez konuşma kaynağına ihtiyacınız olmayacak.
  • Dil kaynak anahtarını ve bölgesini alın. Dil kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin. Azure AI hizmetleri kaynakları hakkında daha fazla bilgi için bkz . Kaynağınızın anahtarlarını alma.

Ayrıca geliştirme ortamınız için Konuşma SDK'sını yüklemeniz ve boş bir örnek proje oluşturmanız gerekir.

Amaç tanıma için LUIS uygulaması oluşturma

Amaç tanıma hızlı başlangıcını tamamlamak için LUIS önizleme portalını kullanarak bir LUIS hesabı ve proje oluşturmanız gerekir. Bu hızlı başlangıçta amaç tanımanın kullanılabildiği bir bölgede LUIS aboneliği gerekir. Konuşma hizmeti aboneliği gerekli değildir.

yapmanız gereken ilk şey LUIS önizleme portalını kullanarak bir LUIS hesabı ve uygulaması oluşturmaktır. Oluşturduğunuz LUIS uygulaması, amaçlar, varlıklar ve örnek konuşmalar sağlayan ev otomasyonu için önceden oluşturulmuş bir etki alanı kullanır. İşiniz bittiğinde, bulutta Konuşma SDK'sını kullanarak çağırabileceğiniz bir LUIS uç noktanız çalışır.

LUIS uygulamanızı oluşturmak için şu yönergeleri izleyin:

İşiniz bittiğinde dört şeye ihtiyacınız olacak:

  • Konuşma hazırlama açıkken yeniden yayımlama
  • LUIS Birincil anahtarınız
  • LUIS Konumunuz
  • LUIS Uygulama Kimliğiniz

Bu bilgileri LUIS önizleme portalında burada bulabilirsiniz:

  1. LUIS önizleme portalından uygulamanızı ve ardından Yayımla düğmesini seçin.

  2. Üretim yuvasını seçin, kullanıyorsanız en-US ayarları değiştir'i seçin ve Konuşma hazırlama seçeneğini Açık konumuna getirin. Ardından Yayımla düğmesini seçin.

    Önemli

    Konuşma tanıma doğruluğunu geliştireceği için konuşma hazırlama kesinlikle önerilir.

    Publish LUIS to endpoint

  3. LUIS önizleme portalından Yönet'i ve ardından Azure Kaynakları'nı seçin. Bu sayfada, LUIS tahmin kaynağınız için LUIS anahtarınızı ve konumunuzu (bazen bölge olarak da adlandırılır) bulacaksınız.

    LUIS key and location

  4. Anahtarınızı ve konumunuzu aldıktan sonra uygulama kimliğine ihtiyacınız olacaktır. Ayarlar'ı seçin. uygulama kimliğiniz bu sayfada bulunabilir.

    LUIS app ID

Projenizi açma

  1. Tercih ettiğiniz IDE'i açın.
  2. Projenizi yükleyin ve açın Main.java.

Bazı ortak kodlarla başlayın

Şimdi projemiz için iskelet olarak çalışan bazı kodlar ekleyelim.

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);
        }
    }
}

Konuşma yapılandırması oluşturma

Bir IntentRecognizer nesneyi başlatabilmeniz için önce LUIS tahmin kaynağınızın anahtarını ve konumunu kullanan bir yapılandırma oluşturmanız gerekir.

Bu kodu içindeki try / catch bloğuna main()ekleyin. Şu değerleri güncelleştirdiğinizden emin olun:

  • değerini LUIS tahmin anahtarınız ile değiştirin "YourLanguageUnderstandingSubscriptionKey" .
  • değerini LUIS konumunuzla değiştirin "YourLanguageUnderstandingServiceRegion" . Bölgeden Bölge tanımlayıcısı kullanma

İpucu

Bu değerleri bulma konusunda yardıma ihtiyacınız varsa bkz . Amaç tanıma için LUIS uygulaması oluşturma.

Önemli

İşiniz bittiğinde anahtarı kodunuzdan kaldırmayı unutmayın ve asla herkese açık olarak göndermeyin. Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.

// 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);

Bu örnek, FromSubscription() derlemek SpeechConfigiçin yöntemini kullanır. Kullanılabilir yöntemlerin tam listesi için bkz . SpeechConfig Sınıfı.

Konuşma SDK'sı varsayılan olarak dil için en-us kullanarak tanımaya ayarlı, kaynak dili seçme hakkında bilgi için bkz . Konuşmayı tanıma.

IntentRecognizer başlatma

Şimdi bir IntentRecognizeroluşturalım. Bu kodu Konuşma yapılandırmanızın hemen altına ekleyin.

IntentRecognizer recognizer = new IntentRecognizer(config)) {

LanguageUnderstandingModel ve Intents ekleme

Bir öğesini amaç tanıyıcısıyla ilişkilendirmeniz LanguageUnderstandingModel ve tanınmasını istediğiniz amaçları eklemeniz gerekir. Ev otomasyonu için önceden oluşturulmuş etki alanından amaçları kullanacağız.

Bu kodu altına IntentRecognizerekleyin. değerini LUIS uygulama kimliğiniz ile değiştirdiğinizden "YourLanguageUnderstandingAppId" emin olun.

İpucu

Bu değeri bulma konusunda yardıma ihtiyacınız varsa bkz . Amaç tanıma için LUIS uygulaması oluşturma.

// 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");

Bu örnek, addIntent() tek tek amaçlar eklemek için işlevini kullanır. Bir modeldeki tüm amaçları eklemek istiyorsanız, kullanın addAllIntents(model) ve modeli geçirin.

Amacı tanıma

nesnesinden IntentRecognizer yöntemini çağıracaksınız recognizeOnceAsync() . Bu yöntem Konuşma tanıma hizmetinin tanıma için tek bir tümcecik gönderdiğinizi ve tümcecik tanımlandığında konuşmayı tanımayı durdurduğunu bilmesini sağlar.

Bu kodu modelinizin altına ekleyin:

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

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

Tanıma sonuçlarını (veya hatalarını) görüntüleme

Tanıma sonucu Konuşma hizmeti tarafından döndürülürse, bununla bir şey yapmak istersiniz. Bunu basit tutacağız ve sonucu konsola yazdıracağız.

Çağrısınızın recognizeOnceAsync()altına bu kodu ekleyin.

// 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?");
    }
}

Kodunuzu denetleyin

Bu noktada kodunuz şu şekilde görünmelidir:

Not

Bu sürüme bazı açıklamalar ekledik.

//
// 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>

Uygulamanızı derleme ve çalıştırma

F11 tuşuna basın veya Hata Ayıklamayı Çalıştır'ı>seçin. Mikrofonunuzdan yapılan sonraki 15 saniyelik konuşma girişi tanınır ve konsol penceresinde günlüğe kaydedilir.

Başvuru belgeleri | Paketi (npm) | GitHub | Kitaplığı kaynak kodunda ek örnekler

Bu hızlı başlangıçta, mikrofondan yakalanan ses verilerinden amaçları tanımak için Konuşma SDK'sını ve Language Understanding (LUIS) hizmetini kullanacaksınız. Özellikle, konuşmayı yakalamak için Konuşma SDK'sını ve ev otomasyonuna yönelik amaçları belirlemek için LUIS'ten önceden oluşturulmuş bir etki alanını (örneğin, bir ışığı açıp kapatarak) kullanacaksınız.

Önkoşullar

  • Azure aboneliği - Ücretsiz olarak oluşturun
  • Azure portalında bir Dil kaynağı oluşturun. Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (F0) kullanabilirsiniz. Bu kez konuşma kaynağına ihtiyacınız olmayacak.
  • Dil kaynak anahtarını ve bölgesini alın. Dil kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin. Azure AI hizmetleri kaynakları hakkında daha fazla bilgi için bkz . Kaynağınızın anahtarlarını alma.

Ayrıca geliştirme ortamınız için Konuşma SDK'sını yüklemeniz ve boş bir örnek proje oluşturmanız gerekir.

Amaç tanıma için LUIS uygulaması oluşturma

Amaç tanıma hızlı başlangıcını tamamlamak için LUIS önizleme portalını kullanarak bir LUIS hesabı ve proje oluşturmanız gerekir. Bu hızlı başlangıçta amaç tanımanın kullanılabildiği bir bölgede LUIS aboneliği gerekir. Konuşma hizmeti aboneliği gerekli değildir.

yapmanız gereken ilk şey LUIS önizleme portalını kullanarak bir LUIS hesabı ve uygulaması oluşturmaktır. Oluşturduğunuz LUIS uygulaması, amaçlar, varlıklar ve örnek konuşmalar sağlayan ev otomasyonu için önceden oluşturulmuş bir etki alanı kullanır. İşiniz bittiğinde, bulutta Konuşma SDK'sını kullanarak çağırabileceğiniz bir LUIS uç noktanız çalışır.

LUIS uygulamanızı oluşturmak için şu yönergeleri izleyin:

İşiniz bittiğinde dört şeye ihtiyacınız olacak:

  • Konuşma hazırlama açıkken yeniden yayımlama
  • LUIS Birincil anahtarınız
  • LUIS Konumunuz
  • LUIS Uygulama Kimliğiniz

Bu bilgileri LUIS önizleme portalında burada bulabilirsiniz:

  1. LUIS önizleme portalından uygulamanızı ve ardından Yayımla düğmesini seçin.

  2. Üretim yuvasını seçin, kullanıyorsanız en-US ayarları değiştir'i seçin ve Konuşma hazırlama seçeneğini Açık konumuna getirin. Ardından Yayımla düğmesini seçin.

    Önemli

    Konuşma tanıma doğruluğunu geliştireceği için konuşma hazırlama kesinlikle önerilir.

    Publish LUIS to endpoint

  3. LUIS önizleme portalından Yönet'i ve ardından Azure Kaynakları'nı seçin. Bu sayfada, LUIS tahmin kaynağınız için LUIS anahtarınızı ve konumunuzu (bazen bölge olarak da adlandırılır) bulacaksınız.

    LUIS key and location

  4. Anahtarınızı ve konumunuzu aldıktan sonra uygulama kimliğine ihtiyacınız olacaktır. Ayarlar'ı seçin. uygulama kimliğiniz bu sayfada bulunabilir.

    LUIS app ID

Bazı ortak kodlarla başlayın

Şimdi projemiz için iskelet olarak çalışan bazı kodlar ekleyelim.

    <!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>

UI Öğeleri Ekleme

Şimdi giriş kutuları için bazı temel kullanıcı arabirimi ekleyecek, Konuşma SDK'sının JavaScript'ine başvuracak ve varsa bir yetkilendirme belirteci alacağız.

Önemli

İşiniz bittiğinde anahtarı kodunuzdan kaldırmayı unutmayın ve asla herkese açık olarak göndermeyin. Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.

<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>

Konuşma yapılandırması oluşturma

Bir SpeechRecognizer nesneyi başlatabilmeniz için önce abonelik anahtarınızı ve abonelik bölgenizi kullanan bir yapılandırma oluşturmanız gerekir. Bu kodu yöntemine startRecognizeOnceAsyncButton.addEventListener() ekleyin.

Not

Konuşma SDK'sı varsayılan olarak dil için en-us kullanarak tanımaya ayarlı, kaynak dili seçme hakkında bilgi için bkz . Konuşmayı tanıma.

        // 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";

Ses yapılandırması oluşturma

Şimdi giriş cihazınıza işaret eden bir AudioConfig nesne oluşturmanız gerekir. Bu kodu startIntentRecognizeAsyncButton.addEventListener() konuşma yapılandırmanızın hemen altındaki yöntemine ekleyin.

        var audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();

IntentRecognizer başlatma

Şimdi daha önce oluşturulan ve AudioConfig nesnelerini kullanarak SpeechConfig nesnesini oluşturalımIntentRecognizer. Bu kodu yöntemine startIntentRecognizeAsyncButton.addEventListener() ekleyin.

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

LanguageUnderstandingModel ve Intents ekleme

Bir öğesini amaç tanıyıcısıyla ilişkilendirmeniz LanguageUnderstandingModel ve tanınmasını istediğiniz amaçları eklemeniz gerekir. Ev otomasyonu için önceden oluşturulmuş etki alanından amaçları kullanacağız.

Bu kodu altına IntentRecognizerekleyin. değerini LUIS uygulama kimliğiniz ile değiştirdiğinizden "YourLanguageUnderstandingAppId" emin olun.

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

          recognizer.addAllIntents(lm);
        }

Not

Konuşma SDK'sı yalnızca LUIS v2.0 uç noktalarını destekler. V2.0 URL desenini kullanmak için örnek sorgu alanında bulunan v3.0 uç nokta URL'sini el ile değiştirmeniz gerekir. LUIS v2.0 uç noktaları her zaman şu iki desenden birini izler:

  • 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=

Amacı tanıma

nesnesinden IntentRecognizer yöntemini çağıracaksınız recognizeOnceAsync() . Bu yöntem Konuşma tanıma hizmetinin tanıma için tek bir tümcecik gönderdiğinizi ve tümcecik tanımlandığında konuşmayı tanımayı durdurduğunu bilmesini sağlar.

Bu kodu model eklemenin altına ekleyin:

        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;
          });

Kodunuzu denetleyin

<!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>

Belirteç kaynağı oluşturma (isteğe bağlı)

Web sayfasını bir web sunucusunda barındırmak istiyorsanız, tanıtım uygulamanız için isteğe bağlı olarak bir belirteç kaynağı sağlayabilirsiniz. Bu şekilde, abonelik anahtarınız hiçbir zaman sunucunuzdan çıkmaz ve kullanıcılar bir yetkilendirme kodu girmeden konuşma özelliklerini kullanabilir.

token.php adlı yeni bir dosya oluşturun. Bu örnekte, web sunucunuzun curl özelliği etkinleştirilmiş php betik dilini desteklediğini varsayıyoruz. Aşağıdaki kodu girin:

<?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);
?>

Not

Yetkilendirme belirteçlerinin sınırlı bir kullanım ömrü vardır. Bu basit örnekte yetkinlendirme belirteçlerinin otomatik olarak yenilenmesi gösterilmez. Kullanıcı olarak, sayfayı el ile yeniden yükleyebilir veya yenilemek için F5’e basabilirsiniz.

Örneği yerel olarak derleyin ve çalıştırın

Uygulamayı başlatmak için, index.html dosyasına çift tıklayın veya index.html dosyasını sık kullandığınız web tarayıcısıyla açın. LUIS anahtarınızı, LUIS bölgenizi ve LUIS Uygulama Kimliğinizi girmenize olanak sağlayan basit bir GUI sunar. Bu alanlar girildikten sonra, mikrofonu kullanarak bir tanıma tetikleme için uygun düğmeye tıklayabilirsiniz.

Not

Bu yöntem Safari tarayıcıda çalışmaz. Safari'de örnek web sayfasının bir web sunucusunda barındırılması gerekir; Safari, yerel bir dosyadan yüklenen web sitelerinin mikrofonu kullanmasına izin vermez.

Web sunucusu aracılığıyla örnek derleme ve çalıştırma

Uygulamanızı başlatmak için, sık kullandığınız web tarayıcınızı açın ve klasörü barındırdığınız genel URL'ye işaret edin, LUIS bölgenizi ve LUIS Uygulama Kimliğinizi girin ve mikrofonu kullanarak bir tanıma tetikleyin. Yapılandırılırsa, belirteç kaynağınızdan bir belirteç alır ve konuşulan komutları tanımaya başlar.

GitHub'da Başvuru belgeleri | Paketi (PyPi) | Ek Örnekler

Bu hızlı başlangıçta, mikrofondan yakalanan ses verilerinden amaçları tanımak için Konuşma SDK'sını ve Language Understanding (LUIS) hizmetini kullanacaksınız. Özellikle, konuşmayı yakalamak için Konuşma SDK'sını ve ev otomasyonuna yönelik amaçları belirlemek için LUIS'ten önceden oluşturulmuş bir etki alanını (örneğin, bir ışığı açıp kapatarak) kullanacaksınız.

Önkoşullar

  • Azure aboneliği - Ücretsiz olarak oluşturun
  • Azure portalında bir Dil kaynağı oluşturun. Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (F0) kullanabilirsiniz. Bu kez konuşma kaynağına ihtiyacınız olmayacak.
  • Dil kaynak anahtarını ve bölgesini alın. Dil kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin. Azure AI hizmetleri kaynakları hakkında daha fazla bilgi için bkz . Kaynağınızın anahtarlarını alma.

Ayrıca geliştirme ortamınız için Konuşma SDK'sını yüklemeniz ve boş bir örnek proje oluşturmanız gerekir.

Amaç tanıma için LUIS uygulaması oluşturma

Amaç tanıma hızlı başlangıcını tamamlamak için LUIS önizleme portalını kullanarak bir LUIS hesabı ve proje oluşturmanız gerekir. Bu hızlı başlangıçta amaç tanımanın kullanılabildiği bir bölgede LUIS aboneliği gerekir. Konuşma hizmeti aboneliği gerekli değildir.

yapmanız gereken ilk şey LUIS önizleme portalını kullanarak bir LUIS hesabı ve uygulaması oluşturmaktır. Oluşturduğunuz LUIS uygulaması, amaçlar, varlıklar ve örnek konuşmalar sağlayan ev otomasyonu için önceden oluşturulmuş bir etki alanı kullanır. İşiniz bittiğinde, bulutta Konuşma SDK'sını kullanarak çağırabileceğiniz bir LUIS uç noktanız çalışır.

LUIS uygulamanızı oluşturmak için şu yönergeleri izleyin:

İşiniz bittiğinde dört şeye ihtiyacınız olacak:

  • Konuşma hazırlama açıkken yeniden yayımlama
  • LUIS Birincil anahtarınız
  • LUIS Konumunuz
  • LUIS Uygulama Kimliğiniz

Bu bilgileri LUIS önizleme portalında burada bulabilirsiniz:

  1. LUIS önizleme portalından uygulamanızı ve ardından Yayımla düğmesini seçin.

  2. Üretim yuvasını seçin, kullanıyorsanız en-US ayarları değiştir'i seçin ve Konuşma hazırlama seçeneğini Açık konumuna getirin. Ardından Yayımla düğmesini seçin.

    Önemli

    Konuşma tanıma doğruluğunu geliştireceği için konuşma hazırlama kesinlikle önerilir.

    Publish LUIS to endpoint

  3. LUIS önizleme portalından Yönet'i ve ardından Azure Kaynakları'nı seçin. Bu sayfada, LUIS tahmin kaynağınız için LUIS anahtarınızı ve konumunuzu (bazen bölge olarak da adlandırılır) bulacaksınız.

    LUIS key and location

  4. Anahtarınızı ve konumunuzu aldıktan sonra uygulama kimliğine ihtiyacınız olacaktır. Ayarlar'ı seçin. uygulama kimliğiniz bu sayfada bulunabilir.

    LUIS app ID

Projenizi açma

  1. Tercih ettiğiniz IDE'i açın.
  2. Yeni bir proje oluşturun ve adlı quickstart.pybir dosya oluşturun ve açın.

Bazı ortak kodlarla başlayın

Şimdi projemiz için iskelet olarak çalışan bazı kodlar ekleyelim.

import azure.cognitiveservices.speech as speechsdk

print("Say something...")

Konuşma yapılandırması oluşturma

Bir IntentRecognizer nesneyi başlatabilmeniz için önce LUIS tahmin kaynağınızın anahtarını ve konumunu kullanan bir yapılandırma oluşturmanız gerekir.

Bu kodu içine quickstart.pyekleyin. Şu değerleri güncelleştirdiğinizden emin olun:

  • değerini LUIS tahmin anahtarınız ile değiştirin "YourLanguageUnderstandingSubscriptionKey" .
  • değerini LUIS konumunuzla değiştirin "YourLanguageUnderstandingServiceRegion" . Bölgeden Bölge tanımlayıcısı kullanma

İpucu

Bu değerleri bulma konusunda yardıma ihtiyacınız varsa bkz . Amaç tanıma için LUIS uygulaması oluşturma.

Önemli

İşiniz bittiğinde anahtarı kodunuzdan kaldırmayı unutmayın ve asla herkese açık olarak göndermeyin. Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.

# 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")

Bu örnek, LUIS anahtarını ve bölgesini kullanarak nesnesini oluşturur SpeechConfig . Kullanılabilir yöntemlerin tam listesi için bkz . SpeechConfig Sınıfı.

Konuşma SDK'sı varsayılan olarak dil için en-us kullanarak tanımaya ayarlı, kaynak dili seçme hakkında bilgi için bkz . Konuşmayı tanıma.

IntentRecognizer başlatma

Şimdi bir IntentRecognizeroluşturalım. Bu kodu Konuşma yapılandırmanızın hemen altına ekleyin.

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

LanguageUnderstandingModel ve Intents ekleme

Bir öğesini amaç tanıyıcısıyla ilişkilendirmeniz LanguageUnderstandingModel ve tanınmasını istediğiniz amaçları eklemeniz gerekir. Ev otomasyonu için önceden oluşturulmuş etki alanından amaçları kullanacağız.

Bu kodu altına IntentRecognizerekleyin. değerini LUIS uygulama kimliğiniz ile değiştirdiğinizden "YourLanguageUnderstandingAppId" emin olun.

İpucu

Bu değeri bulma konusunda yardıma ihtiyacınız varsa bkz . Amaç tanıma için LUIS uygulaması oluşturma.

# 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)

Bu örnek, açıkça tanımlanmış amaçların listesini eklemek için işlevini kullanır add_intents() . Bir modeldeki tüm amaçları eklemek istiyorsanız, kullanın add_all_intents(model) ve modeli geçirin.

Amacı tanıma

nesnesinden IntentRecognizer yöntemini çağıracaksınız recognize_once() . Bu yöntem Konuşma tanıma hizmetinin tanıma için tek bir tümcecik gönderdiğinizi ve tümcecik tanımlandığında konuşmayı tanımayı durdurduğunu bilmesini sağlar.

Bu kodu modelinizin altına ekleyin.

intent_result = intent_recognizer.recognize_once()

Tanıma sonuçlarını (veya hatalarını) görüntüleme

Tanıma sonucu Konuşma hizmeti tarafından döndürülürse, bununla bir şey yapmak istersiniz. Bunu basit tutacağız ve sonucu konsola yazdıracağız.

çağrısının recognize_once()altına bu kodu ekleyin.

# 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))

Kodunuzu denetleyin

Bu noktada kodunuz şöyle görünmelidir.

Not

Bu sürüme bazı açıklamalar ekledik.

# 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>

Uygulamanızı derleme ve çalıştırma

Örneği konsoldan veya IDE'nizde çalıştırın:

python quickstart.py

Mikrofonunuzdan yapılan sonraki 15 saniyelik konuşma girişi tanınır ve konsol penceresinde günlüğe kaydedilir.

GitHub'da Başvuru belgeleri | Paketi (Go) | Ek Örnekler

Go için Konuşma SDK'sı amaç tanımayı desteklemez. Lütfen bu makalenin başından itibaren başka bir programlama dili veya Go başvurusu ve bağlantılı örnekler seçin.

Başvuru belgeleri | Paketi (İndir) | GitHub'da Ek Örnekler

Objective-C için Konuşma SDK'sı amaç tanımayı destekler, ancak buraya henüz bir kılavuz eklemedik. Başlamak ve kavramlar hakkında bilgi edinmek için lütfen başka bir programlama dili seçin veya bu makalenin başındaki Objective-C başvurusuna ve bağlantılı örneklere bakın.

Başvuru belgeleri | Paketi (İndir) | GitHub'da Ek Örnekler

Swift için Konuşma SDK'sı amaç tanımayı destekler, ancak buraya henüz bir kılavuz eklemedik. Başlamak ve kavramlar hakkında bilgi edinmek için lütfen başka bir programlama dili seçin veya bu makalenin başından itibaren bağlantılı Swift başvurusuna ve örneklerine bakın.

Konuşmayı metne dönüştürme REST API başvurusu | Kısa ses başvurusu için metin REST API'sine konuşma | GitHub'da Ek Örnekler

Amaç tanıma için REST API'yi kullanabilirsiniz, ancak buraya henüz bir kılavuz eklemedik. Başlamak ve kavramlar hakkında bilgi edinmek için lütfen başka bir programlama dili seçin.

Konuşma komut satırı arabirimi (CLI) amaç tanımayı destekler, ancak buraya henüz bir kılavuz eklemedik. Başlamak ve kavramlar hakkında bilgi edinmek için lütfen başka bir programlama dili seçin veya CLI hakkında daha fazla bilgi için Konuşma CLI'sine genel bakış bölümüne bakın.

Sonraki adımlar