Quickstart: Intenties herkennen met de Speech-service en LUIS

Belangrijk

LUIS wordt op 1 oktober 2025 buiten gebruik gesteld. Vanaf 1 april 2023 kunt u geen nieuwe LUIS-resources maken. We raden u aan uw LUIS-toepassingen te migreren naar gesprekstaalbegrip om te profiteren van continue productondersteuning en meertalige mogelijkheden.

Conversational Language Understanding (CLU) is beschikbaar voor C# en C++ met de Speech SDK versie 1.25 of hoger. Zie de quickstart voor het herkennen van intenties met de Speech SDK en CLU.

Referentiedocumentatiepakket (NuGet) | Aanvullende voorbeelden op GitHub |

In deze quickstart gebruikt u de Speech SDK en de Language Understanding-service (LUIS) om intenties te herkennen van audiogegevens die zijn vastgelegd vanuit een microfoon. In het bijzonder gebruikt u de Speech SDK om spraak vast te leggen en een vooraf ingebouwd domein van LUIS om intenties voor huisautomatisering te identificeren, zoals het in- en uitschakelen van een lampje.

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • Maak een taalresource in Azure Portal. U kunt de gratis prijscategorie (F0) gebruiken om de service uit te proberen, en later upgraden naar een betaalde laag voor productie. U hebt deze keer geen Spraakresource nodig.
  • Haal de taalresourcesleutel en -regio op. Nadat uw taalresource is geïmplementeerd, selecteert u Ga naar de resource om sleutels weer te geven en te beheren. Zie De sleutels voor uw resource ophalen voor meer informatie over Azure AI-servicesresources.

Een LUIS-app maken voor intentieherkenning

Voor het voltooien van de quickstart voor het herkennen van intenties moet u een LUIS-account en een project maken met behulp van de LUIS-previewportal. Voor deze quickstart is een LUIS-abonnement vereist in een regio waar intentieherkenning beschikbaar is. Een spraakserviceabonnement is niet vereist.

Eerst moet u een LUIS-account en -app maken in de LUIS-previewportal. Voor de LUIS-app die u maakt, wordt een vooraf samengesteld domein gebruikt voor automatisering van de startpagina. Dit domein biedt intenties, entiteiten en voorbeelduitingen. Wanneer u klaar bent, hebt u een LUIS-eindpunt in de cloud dat u kunt aanroepen met behulp van de Speech-SDK.

Volg deze instructies om uw LUIS-app te maken:

Wanneer u klaar bent, hebt u vier dingen nodig:

  • Nieuwe publicatie met Spraakvoorbereiding ingeschakeld
  • Uw primaire LUIS-sleutel
  • Uw LUIS-locatie
  • De app-id van uw LUIS-app

Hier is de locatie van deze informatie in de LUIS-previewportal:

  1. Selecteer uw app in de LUIS-previewportal en selecteer vervolgens de knop Publiceren.

  2. Selecteer de productiesite als u en-US instellingen voor wijzigingen selecteert en schakel de optie Spraak automatisch in op de positie Aan. Selecteer vervolgens de knop Publiceren.

    Belangrijk

    Spraakvoorbereiding wordt ten zeerste aangeraden, aangezien de nauwkeurigheid van spraakherkenning hiermee wordt verbeterd.

    Publish LUIS to endpoint

  3. Selecteer Beheren in de LUIS-previewportal en selecteer vervolgens Azure-resources. Op deze pagina vindt u uw LUIS-sleutel en -locatie (ook wel regio genoemd) voor uw LUIS-voorspellingsresource.

    LUIS key and location

  4. Zodra u over uw sleutel en locatie beschikt, hebt u de app-id nodig. Selecteer Instellingen. uw app-id is beschikbaar op deze pagina.

    LUIS app ID

Open uw project in Visual Studio

Open vervolgens uw project in Visual Studio.

  1. Start Visual Studio 2019.
  2. Laad uw project en open Program.cs.

Beginnen met standaardcode

We gaan wat code toevoegen die als basis voor het project gaat dienen. Houd er rekening mee dat u een asynchrone methode met de naam RecognizeIntentAsync() hebt gemaakt.

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

Een Speech-configuratie maken

Voordat u een IntentRecognizer-object kunt initialiseren, moet u een configuratie maken die gebruikmaakt van de sleutel en de locatie voor uw LUIS-voorspellingsresource.

Belangrijk

Uw startsleutel- en ontwerpsleutels werken niet. U moet uw voorspellingssleutel en -locatie gebruiken die u eerder hebt gemaakt. Voor meer informatie, raadpleegt u Een LUIS-app maken voor intentieherkenning.

Voeg deze code toe in de methode RecognizeIntentAsync(). Zorg ervoor dat u deze waarden bijwerkt:

  • Vervang "YourLanguageUnderstandingSubscriptionKey" door de LUIS-voorspellingssleutel.
  • Vervang "YourLanguageUnderstandingServiceRegion" door de locatie van uw LUIS. Gebruik Regio-id uit regio.

Tip

Als u hulp nodig hebt bij het vinden van deze waarden, raadpleegt u Een LUIS-app maken voor intentieherkenning.

Belangrijk

Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en maak deze sleutel nooit openbaar. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het beveiligingsartikel over Azure AI-services voor meer informatie.

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

In dit voorbeeld wordt de methode FromSubscription() gebruikt om de SpeechConfig te maken. Zie SpeechConfig Class voor een volledige lijst met beschikbare methoden.

De Speech SDK wordt standaard herkend met behulp van en-us voor de taal. Zie Spraak herkennen voor informatie over het kiezen van de brontaal.

Een IntentRecognizer initialiseren

Laten we nu een IntentRecognizer maken. Dit object wordt in een using-instructie gemaakt om de juiste vrijgave van niet-beheerde resources te verzekeren. Voeg deze code toe in de methode RecognizeIntentAsync(), recht onder uw Speech-configuratie.

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

Een LanguageUnderstandingModel en intenties toevoegen

U moet een LanguageUnderstandingModel koppelen aan de intentieherkenning en de intenties toevoegen die u wilt laten herkennen. We gaan de intenties van het vooraf ontwikkelde domein voor woningautomatisering gebruiken. Voeg deze code toe in de using-instructie uit de vorige sectie. Zorg ervoor dat u "YourLanguageUnderstandingAppId" vervangt door de id van uw LUIS-app.

Tip

Als u hulp nodig hebt bij het vinden van deze waarde, raadpleegt u Een LUIS-app maken voor intentieherkenning.

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

In dit voorbeeld wordt de functie AddIntent() gebruikt om intenties afzonderlijk toe te voegen. Als u alle intenties uit een model wilt toevoegen, gebruikt u AddAllIntents(model) en geeft u het model door.

Een intentie herkennen

Vanuit het IntentRecognizer-object roept u de methode RecognizeOnceAsync() aan. Met deze methode laat u de Speech-service weten dat u één woordgroep verstuurt voor herkenning en dat er kan worden gestopt met het herkennen van spraak zodra de woordgroep is geïdentificeerd.

In de using-instructie voegt u deze code toe onder uw model.

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

Herkenningsresultaten (of fouten) weergeven

Wanneer het herkenningsresultaat wordt geretourneerd door de Speech-service, wilt u daar iets mee doen. We zullen het eenvoudig houden en het resultaten afdrukken naar de console.

In de using-instructie voegt u onder RecognizeOnceAsync() deze code toe:

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

Uw code controleren

Op dit punt moet uw code er als volgt uitzien:

Notitie

Er zijn enkele opmerkingen toegevoegd aan deze versie.

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

De app bouwen en uitvoeren

U bent nu klaar om uw app te bouwen en de spraakherkenning te testen met behulp van de Speech-service.

  1. De code compileren: kies in de menubalk van Visual Studio Build>Build Solution.
  2. Start uw app: kies in de menubalk Debug>Start Debugging of druk op F5.
  3. Herkenning starten: u wordt gevraagd om een woordgroep uit te spreken in het Engels. Uw spraak wordt verzonden naar de Speech-service, getranscribeerd als tekst en weergegeven in de console.

Referentiedocumentatiepakket (NuGet) | Aanvullende voorbeelden op GitHub |

In deze quickstart gebruikt u de Speech SDK en de Language Understanding-service (LUIS) om intenties te herkennen van audiogegevens die zijn vastgelegd vanuit een microfoon. In het bijzonder gebruikt u de Speech SDK om spraak vast te leggen en een vooraf ingebouwd domein van LUIS om intenties voor huisautomatisering te identificeren, zoals het in- en uitschakelen van een lampje.

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • Maak een taalresource in Azure Portal. U kunt de gratis prijscategorie (F0) gebruiken om de service uit te proberen, en later upgraden naar een betaalde laag voor productie. U hebt deze keer geen Spraakresource nodig.
  • Haal de taalresourcesleutel en -regio op. Nadat uw taalresource is geïmplementeerd, selecteert u Ga naar de resource om sleutels weer te geven en te beheren. Zie De sleutels voor uw resource ophalen voor meer informatie over Azure AI-servicesresources.

Een LUIS-app maken voor intentieherkenning

Voor het voltooien van de quickstart voor het herkennen van intenties moet u een LUIS-account en een project maken met behulp van de LUIS-previewportal. Voor deze quickstart is een LUIS-abonnement vereist in een regio waar intentieherkenning beschikbaar is. Een spraakserviceabonnement is niet vereist.

Eerst moet u een LUIS-account en -app maken in de LUIS-previewportal. Voor de LUIS-app die u maakt, wordt een vooraf samengesteld domein gebruikt voor automatisering van de startpagina. Dit domein biedt intenties, entiteiten en voorbeelduitingen. Wanneer u klaar bent, hebt u een LUIS-eindpunt in de cloud dat u kunt aanroepen met behulp van de Speech-SDK.

Volg deze instructies om uw LUIS-app te maken:

Wanneer u klaar bent, hebt u vier dingen nodig:

  • Nieuwe publicatie met Spraakvoorbereiding ingeschakeld
  • Uw primaire LUIS-sleutel
  • Uw LUIS-locatie
  • De app-id van uw LUIS-app

Hier is de locatie van deze informatie in de LUIS-previewportal:

  1. Selecteer uw app in de LUIS-previewportal en selecteer vervolgens de knop Publiceren.

  2. Selecteer de productiesite als u en-US instellingen voor wijzigingen selecteert en schakel de optie Spraak automatisch in op de positie Aan. Selecteer vervolgens de knop Publiceren.

    Belangrijk

    Spraakvoorbereiding wordt ten zeerste aangeraden, aangezien de nauwkeurigheid van spraakherkenning hiermee wordt verbeterd.

    Publish LUIS to endpoint

  3. Selecteer Beheren in de LUIS-previewportal en selecteer vervolgens Azure-resources. Op deze pagina vindt u uw LUIS-sleutel en -locatie (ook wel regio genoemd) voor uw LUIS-voorspellingsresource.

    LUIS key and location

  4. Zodra u over uw sleutel en locatie beschikt, hebt u de app-id nodig. Selecteer Instellingen. uw app-id is beschikbaar op deze pagina.

    LUIS app ID

Open uw project in Visual Studio

Open vervolgens uw project in Visual Studio.

  1. Start Visual Studio 2019.
  2. Laad uw project en open helloworld.cpp.

Beginnen met standaardcode

We gaan wat code toevoegen die als basis voor het project gaat dienen. Houd er rekening mee dat u een asynchrone methode met de naam recognizeIntent() hebt gemaakt.

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

Een Speech-configuratie maken

Voordat u een IntentRecognizer-object kunt initialiseren, moet u een configuratie maken die gebruikmaakt van de sleutel en de locatie voor uw LUIS-voorspellingsresource.

Belangrijk

Uw startsleutel- en ontwerpsleutels werken niet. U moet uw voorspellingssleutel en -locatie gebruiken die u eerder hebt gemaakt. Voor meer informatie, raadpleegt u Een LUIS-app maken voor intentieherkenning.

Voeg deze code toe in de methode recognizeIntent(). Zorg ervoor dat u deze waarden bijwerkt:

  • Vervang "YourLanguageUnderstandingSubscriptionKey" door de LUIS-voorspellingssleutel.
  • Vervang "YourLanguageUnderstandingServiceRegion" door de locatie van uw LUIS. Gebruik Regio-id uit regio.

Tip

Als u hulp nodig hebt bij het vinden van deze waarden, raadpleegt u Een LUIS-app maken voor intentieherkenning.

Belangrijk

Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en maak deze sleutel nooit openbaar. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het beveiligingsartikel over Azure AI-services voor meer informatie.

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

In dit voorbeeld wordt de methode FromSubscription() gebruikt om de SpeechConfig te maken. Zie SpeechConfig Class voor een volledige lijst met beschikbare methoden.

De Speech SDK wordt standaard herkend met behulp van en-us voor de taal. Zie Spraak herkennen voor informatie over het kiezen van de brontaal.

Een IntentRecognizer initialiseren

Laten we nu een IntentRecognizer maken. Voeg deze code toe in de methode recognizeIntent(), recht onder uw Speech-configuratie.

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

Een LanguageUnderstandingModel en Intents toevoegen

U moet een LanguageUnderstandingModel koppelen aan de intentieherkenning en de intenties toevoegen die u wilt laten herkennen. We gaan de intenties van het vooraf ontwikkelde domein voor woningautomatisering gebruiken.

Voeg deze code toe onder uw IntentRecognizer. Zorg ervoor dat u "YourLanguageUnderstandingAppId" vervangt door de id van uw LUIS-app.

Tip

Als u hulp nodig hebt bij het vinden van deze waarde, raadpleegt u Een LUIS-app maken voor intentieherkenning.

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

In dit voorbeeld wordt de functie AddIntent() gebruikt om intenties afzonderlijk toe te voegen. Als u alle intenties uit een model wilt toevoegen, gebruikt u AddAllIntents(model) en geeft u het model door.

Een intentie herkennen

Vanuit het IntentRecognizer-object roept u de methode RecognizeOnceAsync() aan. Met deze methode laat u de Speech-service weten dat u één woordgroep verstuurt voor herkenning en dat er kan worden gestopt met het herkennen van spraak zodra de woordgroep is geïdentificeerd. Voor de eenvoud zullen we wachten tot de toekomstige retournering voltooid is.

Voeg deze code toe onder uw model:

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

De herkenningsresultaten (of fouten) weergeven

Wanneer het herkenningsresultaat wordt geretourneerd door de Speech-service, wilt u daar iets mee doen. We zullen het eenvoudig houden en het resultaat afdrukken naar de console.

Voeg deze code toe onder 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;
    }
}

Uw code controleren

Op dit punt moet uw code er als volgt uitzien:

Notitie

Er zijn enkele opmerkingen toegevoegd aan deze versie.

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

De app bouwen en uitvoeren

U bent nu klaar om uw app te bouwen en de spraakherkenning te testen met behulp van de Speech-service.

  1. De code compileren: kies in de menubalk van Visual Studio Build>Build Solution.
  2. Start uw app: kies in de menubalk Debug>Start Debugging of druk op F5.
  3. Herkenning starten: u wordt gevraagd om een woordgroep uit te spreken in het Engels. Uw spraak wordt verzonden naar de Speech-service, getranscribeerd als tekst en weergegeven in de console.

Referentiedocumentatie | Aanvullende voorbeelden op GitHub

In deze quickstart gebruikt u de Speech SDK en de Language Understanding-service (LUIS) om intenties te herkennen van audiogegevens die zijn vastgelegd vanuit een microfoon. In het bijzonder gebruikt u de Speech SDK om spraak vast te leggen en een vooraf ingebouwd domein van LUIS om intenties voor huisautomatisering te identificeren, zoals het in- en uitschakelen van een lampje.

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • Maak een taalresource in Azure Portal. U kunt de gratis prijscategorie (F0) gebruiken om de service uit te proberen, en later upgraden naar een betaalde laag voor productie. U hebt deze keer geen Spraakresource nodig.
  • Haal de taalresourcesleutel en -regio op. Nadat uw taalresource is geïmplementeerd, selecteert u Ga naar de resource om sleutels weer te geven en te beheren. Zie De sleutels voor uw resource ophalen voor meer informatie over Azure AI-servicesresources.

U moet ook de Speech SDK voor uw ontwikkelomgeving installeren en een leeg voorbeeldproject maken.

Een LUIS-app maken voor intentieherkenning

Voor het voltooien van de quickstart voor het herkennen van intenties moet u een LUIS-account en een project maken met behulp van de LUIS-previewportal. Voor deze quickstart is een LUIS-abonnement vereist in een regio waar intentieherkenning beschikbaar is. Een spraakserviceabonnement is niet vereist.

Eerst moet u een LUIS-account en -app maken in de LUIS-previewportal. Voor de LUIS-app die u maakt, wordt een vooraf samengesteld domein gebruikt voor automatisering van de startpagina. Dit domein biedt intenties, entiteiten en voorbeelduitingen. Wanneer u klaar bent, hebt u een LUIS-eindpunt in de cloud dat u kunt aanroepen met behulp van de Speech-SDK.

Volg deze instructies om uw LUIS-app te maken:

Wanneer u klaar bent, hebt u vier dingen nodig:

  • Nieuwe publicatie met Spraakvoorbereiding ingeschakeld
  • Uw primaire LUIS-sleutel
  • Uw LUIS-locatie
  • De app-id van uw LUIS-app

Hier is de locatie van deze informatie in de LUIS-previewportal:

  1. Selecteer uw app in de LUIS-previewportal en selecteer vervolgens de knop Publiceren.

  2. Selecteer de productiesite als u en-US instellingen voor wijzigingen selecteert en schakel de optie Spraak automatisch in op de positie Aan. Selecteer vervolgens de knop Publiceren.

    Belangrijk

    Spraakvoorbereiding wordt ten zeerste aangeraden, aangezien de nauwkeurigheid van spraakherkenning hiermee wordt verbeterd.

    Publish LUIS to endpoint

  3. Selecteer Beheren in de LUIS-previewportal en selecteer vervolgens Azure-resources. Op deze pagina vindt u uw LUIS-sleutel en -locatie (ook wel regio genoemd) voor uw LUIS-voorspellingsresource.

    LUIS key and location

  4. Zodra u over uw sleutel en locatie beschikt, hebt u de app-id nodig. Selecteer Instellingen. uw app-id is beschikbaar op deze pagina.

    LUIS app ID

Uw project openen

  1. Open de IDE van uw voorkeur.
  2. Laad uw project en open Main.java.

Beginnen met standaardcode

We gaan wat code toevoegen die als basis voor het project gaat dienen.

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

Een Speech-configuratie maken

Voordat u een IntentRecognizer-object kunt initialiseren, moet u een configuratie maken die gebruikmaakt van de sleutel en de locatie voor uw LUIS-voorspellingsresource.

Voeg deze code toe aan het blok try/catch in main(). Zorg ervoor dat u deze waarden bijwerkt:

  • Vervang "YourLanguageUnderstandingSubscriptionKey" door de LUIS-voorspellingssleutel.
  • Vervang "YourLanguageUnderstandingServiceRegion" door de locatie van uw LUIS. Gebruik Regio-id uit regio

Tip

Als u hulp nodig hebt bij het vinden van deze waarden, raadpleegt u Een LUIS-app maken voor intentieherkenning.

Belangrijk

Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en maak deze sleutel nooit openbaar. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het beveiligingsartikel over Azure AI-services voor meer informatie.

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

In dit voorbeeld wordt de methode FromSubscription() gebruikt om de SpeechConfig te maken. Zie SpeechConfig Class voor een volledige lijst met beschikbare methoden.

De Speech SDK wordt standaard herkend met behulp van en-us voor de taal. Zie Spraak herkennen voor informatie over het kiezen van de brontaal.

Een IntentRecognizer initialiseren

Laten we nu een IntentRecognizer maken. Voeg deze code toe onder uw Speech-configuratie.

IntentRecognizer recognizer = new IntentRecognizer(config)) {

Een LanguageUnderstandingModel en Intents toevoegen

U moet een LanguageUnderstandingModel koppelen aan de intentieherkenning en de intenties toevoegen die u wilt laten herkennen. We gaan de intenties van het vooraf ontwikkelde domein voor woningautomatisering gebruiken.

Voeg deze code toe onder uw IntentRecognizer. Zorg ervoor dat u "YourLanguageUnderstandingAppId" vervangt door de id van uw LUIS-app.

Tip

Als u hulp nodig hebt bij het vinden van deze waarde, raadpleegt u Een LUIS-app maken voor intentieherkenning.

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

In dit voorbeeld wordt de functie addIntent() gebruikt om intenties afzonderlijk toe te voegen. Als u alle intenties uit een model wilt toevoegen, gebruikt u addAllIntents(model) en geeft u het model door.

Een intentie herkennen

Vanuit het IntentRecognizer-object roept u de methode recognizeOnceAsync() aan. Met deze methode laat u de Speech-service weten dat u één woordgroep verstuurt voor herkenning en dat er kan worden gestopt met het herkennen van spraak zodra de woordgroep is geïdentificeerd.

Voeg deze code toe onder uw model:

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

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

De herkenningsresultaten (of fouten) weergeven

Wanneer het herkenningsresultaat wordt geretourneerd door de Speech-service, wilt u daar iets mee doen. We zullen het eenvoudig houden en het resultaat afdrukken naar de console.

Voeg deze code toe onder uw aanroep van 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?");
    }
}

Uw code controleren

Op dit punt moet uw code er als volgt uitzien:

Notitie

Er zijn enkele opmerkingen toegevoegd aan deze versie.

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

De app bouwen en uitvoeren

Druk op F11 of selecteer Uitvoeren>Fouten opsporen. De volgende 15 seconden aan spraakinvoer vanuit uw microfoon worden herkend en geregistreerd in het consolevenster.

Referentiedocumentatiepakket (npm) | Aanvullende voorbeelden op GitHub | Library-broncode |

In deze quickstart gebruikt u de Speech SDK en de Language Understanding-service (LUIS) om intenties te herkennen van audiogegevens die zijn vastgelegd vanuit een microfoon. In het bijzonder gebruikt u de Speech SDK om spraak vast te leggen en een vooraf ingebouwd domein van LUIS om intenties voor huisautomatisering te identificeren, zoals het in- en uitschakelen van een lampje.

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • Maak een taalresource in Azure Portal. U kunt de gratis prijscategorie (F0) gebruiken om de service uit te proberen, en later upgraden naar een betaalde laag voor productie. U hebt deze keer geen Spraakresource nodig.
  • Haal de taalresourcesleutel en -regio op. Nadat uw taalresource is geïmplementeerd, selecteert u Ga naar de resource om sleutels weer te geven en te beheren. Zie De sleutels voor uw resource ophalen voor meer informatie over Azure AI-servicesresources.

U moet ook de Speech SDK voor uw ontwikkelomgeving installeren en een leeg voorbeeldproject maken.

Een LUIS-app maken voor intentieherkenning

Voor het voltooien van de quickstart voor het herkennen van intenties moet u een LUIS-account en een project maken met behulp van de LUIS-previewportal. Voor deze quickstart is een LUIS-abonnement vereist in een regio waar intentieherkenning beschikbaar is. Een spraakserviceabonnement is niet vereist.

Eerst moet u een LUIS-account en -app maken in de LUIS-previewportal. Voor de LUIS-app die u maakt, wordt een vooraf samengesteld domein gebruikt voor automatisering van de startpagina. Dit domein biedt intenties, entiteiten en voorbeelduitingen. Wanneer u klaar bent, hebt u een LUIS-eindpunt in de cloud dat u kunt aanroepen met behulp van de Speech-SDK.

Volg deze instructies om uw LUIS-app te maken:

Wanneer u klaar bent, hebt u vier dingen nodig:

  • Nieuwe publicatie met Spraakvoorbereiding ingeschakeld
  • Uw primaire LUIS-sleutel
  • Uw LUIS-locatie
  • De app-id van uw LUIS-app

Hier is de locatie van deze informatie in de LUIS-previewportal:

  1. Selecteer uw app in de LUIS-previewportal en selecteer vervolgens de knop Publiceren.

  2. Selecteer de productiesite als u en-US instellingen voor wijzigingen selecteert en schakel de optie Spraak automatisch in op de positie Aan. Selecteer vervolgens de knop Publiceren.

    Belangrijk

    Spraakvoorbereiding wordt ten zeerste aangeraden, aangezien de nauwkeurigheid van spraakherkenning hiermee wordt verbeterd.

    Publish LUIS to endpoint

  3. Selecteer Beheren in de LUIS-previewportal en selecteer vervolgens Azure-resources. Op deze pagina vindt u uw LUIS-sleutel en -locatie (ook wel regio genoemd) voor uw LUIS-voorspellingsresource.

    LUIS key and location

  4. Zodra u over uw sleutel en locatie beschikt, hebt u de app-id nodig. Selecteer Instellingen. uw app-id is beschikbaar op deze pagina.

    LUIS app ID

Beginnen met standaardcode

We gaan wat code toevoegen die als basis voor het project gaat dienen.

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

Nu gaan we enkele eenvoudige gebruikersinterface-elementen toevoegen (invoervakken), verwijzen naar de JavaScript van de Speech-SDK en een autorisatietoken ophalen, indien beschikbaar.

Belangrijk

Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en maak deze sleutel nooit openbaar. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het beveiligingsartikel over Azure AI-services voor meer informatie.

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

Een Speech-configuratie maken

Voordat u een SpeechRecognizer-object kunt initialiseren, moet u een configuratie maken die gebruikmaakt van de abonnementssleutel en de regio van het abonnement. Voeg deze code toe in de methode startRecognizeOnceAsyncButton.addEventListener().

Notitie

De Speech SDK wordt standaard herkend met behulp van en-us voor de taal. Zie Spraak herkennen voor informatie over het kiezen van de brontaal.

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

Een audioconfiguratie maken

Nu moet u een AudioConfig-object maken dat verwijst naar het invoerapparaat. Voeg deze code toe in de methode startIntentRecognizeAsyncButton.addEventListener(), recht onder uw Speech-configuratie.

        var audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();

Een IntentRecognizer initialiseren

Nu gaan we het IntentRecognizer-object maken met behulp van de SpeechConfig- en AudioConfig-objecten die u eerder hebt gemaakt. Voeg deze code toe in de methode startIntentRecognizeAsyncButton.addEventListener().

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

Een LanguageUnderstandingModel en Intents toevoegen

U moet een LanguageUnderstandingModel koppelen aan de intentieherkenning en de intenties toevoegen die u wilt laten herkennen. We gaan de intenties van het vooraf ontwikkelde domein voor woningautomatisering gebruiken.

Voeg deze code toe onder uw IntentRecognizer. Zorg ervoor dat u "YourLanguageUnderstandingAppId" vervangt door de id van uw LUIS-app.

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

          recognizer.addAllIntents(lm);
        }

Notitie

Speech SDK ondersteunt alleen LUIS v2.0-eindpunten. U moet de URL van het v3.0-eindpunt in het veld van de voorbeeldquery handmatig wijzigen om een v2.0 URL-patroon te gebruiken. LUIS v2.0-eindpunten volgen altijd een van deze twee patronen:

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

Een intentie herkennen

Vanuit het IntentRecognizer-object roept u de methode recognizeOnceAsync() aan. Met deze methode laat u de Speech-service weten dat u één woordgroep verstuurt voor herkenning en dat er kan worden gestopt met het herkennen van spraak zodra de woordgroep is geïdentificeerd.

Voeg deze code toe onder de modeltoevoeging:

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

Uw code controleren

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

De tokenbron maken (optioneel)

Als u de webpagina wilt hosten op een webserver, kunt u desgewenst een tokenbron opgeven voor uw voorbeeldtoepassing. Op die manier verlaat uw abonnementssleutel nooit uw server en is het gebruikers toegestaan gebruik te maken van spraakmogelijkheden zonder zelf een autorisatiecode in te hoeven voeren.

Maak een nieuw bestand met de naam token.php. In dit voorbeeld gaan we ervan uit dat uw webserver de PHP-scripttaal ondersteunt als cURL is ingeschakeld. Voer de volgende code in:

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

Notitie

Autorisatietokens hebben slechts een beperkte levensduur. In dit eenvoudige voorbeeld wordt niet weergegeven hoe autorisatietokens automatisch worden vernieuwd. Als een gebruiker kunt u de pagina handmatig opnieuw laden of op F5 drukken om te vernieuwen.

Het voorbeeld bouwen en lokaal uitvoeren

Om de app te starten, dubbelklikt u op het bestand index.html of opent u index.html met uw favoriete webbrowser. Er wordt een eenvoudige gebruikersinterface weergegeven waarin u uw LUIS-sleutel, LUIS-regio en LUIS-toepassings-id kunt invoeren. Zodra deze velden zijn ingevuld, kunt u op de juiste knop klikken om spraakherkenning te activeren met behulp van de microfoon.

Notitie

Deze methode werkt niet in de Safari-browser. In Safari moet de voorbeeldwebpagina worden gehost op een webserver. Met Safari is het gebruik van de microfoon niet mogelijk voor websites die zijn geladen vanuit een lokaal bestand.

De voorbeeldtoepassing bouwen en uitvoeren via een webserver

Om uw app te starten opent u uw favoriete webbrowser en laat u deze wijzen naar de openbare URL waarop u de map host, geeft u uw LUIS-regio en de LUIS-toepassings-id op en activeert u spraakherkenning met behulp van de microfoon. Indien dit is geconfigureerd, wordt er een token uit uw tokenbron opgehaald en wordt gestart met het herkennen van gesproken opdrachten.

Referentiedocumentatiepakket (PyPi) | Aanvullende voorbeelden op GitHub |

In deze quickstart gebruikt u de Speech SDK en de Language Understanding-service (LUIS) om intenties te herkennen van audiogegevens die zijn vastgelegd vanuit een microfoon. In het bijzonder gebruikt u de Speech SDK om spraak vast te leggen en een vooraf ingebouwd domein van LUIS om intenties voor huisautomatisering te identificeren, zoals het in- en uitschakelen van een lampje.

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • Maak een taalresource in Azure Portal. U kunt de gratis prijscategorie (F0) gebruiken om de service uit te proberen, en later upgraden naar een betaalde laag voor productie. U hebt deze keer geen Spraakresource nodig.
  • Haal de taalresourcesleutel en -regio op. Nadat uw taalresource is geïmplementeerd, selecteert u Ga naar de resource om sleutels weer te geven en te beheren. Zie De sleutels voor uw resource ophalen voor meer informatie over Azure AI-servicesresources.

U moet ook de Speech SDK voor uw ontwikkelomgeving installeren en een leeg voorbeeldproject maken.

Een LUIS-app maken voor intentieherkenning

Voor het voltooien van de quickstart voor het herkennen van intenties moet u een LUIS-account en een project maken met behulp van de LUIS-previewportal. Voor deze quickstart is een LUIS-abonnement vereist in een regio waar intentieherkenning beschikbaar is. Een spraakserviceabonnement is niet vereist.

Eerst moet u een LUIS-account en -app maken in de LUIS-previewportal. Voor de LUIS-app die u maakt, wordt een vooraf samengesteld domein gebruikt voor automatisering van de startpagina. Dit domein biedt intenties, entiteiten en voorbeelduitingen. Wanneer u klaar bent, hebt u een LUIS-eindpunt in de cloud dat u kunt aanroepen met behulp van de Speech-SDK.

Volg deze instructies om uw LUIS-app te maken:

Wanneer u klaar bent, hebt u vier dingen nodig:

  • Nieuwe publicatie met Spraakvoorbereiding ingeschakeld
  • Uw primaire LUIS-sleutel
  • Uw LUIS-locatie
  • De app-id van uw LUIS-app

Hier is de locatie van deze informatie in de LUIS-previewportal:

  1. Selecteer uw app in de LUIS-previewportal en selecteer vervolgens de knop Publiceren.

  2. Selecteer de productiesite als u en-US instellingen voor wijzigingen selecteert en schakel de optie Spraak automatisch in op de positie Aan. Selecteer vervolgens de knop Publiceren.

    Belangrijk

    Spraakvoorbereiding wordt ten zeerste aangeraden, aangezien de nauwkeurigheid van spraakherkenning hiermee wordt verbeterd.

    Publish LUIS to endpoint

  3. Selecteer Beheren in de LUIS-previewportal en selecteer vervolgens Azure-resources. Op deze pagina vindt u uw LUIS-sleutel en -locatie (ook wel regio genoemd) voor uw LUIS-voorspellingsresource.

    LUIS key and location

  4. Zodra u over uw sleutel en locatie beschikt, hebt u de app-id nodig. Selecteer Instellingen. uw app-id is beschikbaar op deze pagina.

    LUIS app ID

Uw project openen

  1. Open de IDE van uw voorkeur.
  2. Maak een nieuw project en maak een bestand met de naam quickstart.py en open het.

Beginnen met standaardcode

We gaan wat code toevoegen die als basis voor het project gaat dienen.

import azure.cognitiveservices.speech as speechsdk

print("Say something...")

Een Speech-configuratie maken

Voordat u een IntentRecognizer-object kunt initialiseren, moet u een configuratie maken die gebruikmaakt van de sleutel en de locatie voor uw LUIS-voorspellingsresource.

Voeg deze code toe in quickstart.py. Zorg ervoor dat u deze waarden bijwerkt:

  • Vervang "YourLanguageUnderstandingSubscriptionKey" door de LUIS-voorspellingssleutel.
  • Vervang "YourLanguageUnderstandingServiceRegion" door de locatie van uw LUIS. Gebruik Regio-id uit regio

Tip

Als u hulp nodig hebt bij het vinden van deze waarden, raadpleegt u Een LUIS-app maken voor intentieherkenning.

Belangrijk

Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en maak deze sleutel nooit openbaar. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het beveiligingsartikel over Azure AI-services voor meer informatie.

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

Met dit voorbeeld wordt het object SpeechConfig gebouwd met behulp van de LUIS-sleutel en-regio. Zie SpeechConfig Class voor een volledige lijst met beschikbare methoden.

De Speech SDK wordt standaard herkend met behulp van en-us voor de taal. Zie Spraak herkennen voor informatie over het kiezen van de brontaal.

Een IntentRecognizer initialiseren

Laten we nu een IntentRecognizer maken. Voeg deze code toe onder uw Speech-configuratie.

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

Een LanguageUnderstandingModel en Intents toevoegen

U moet een LanguageUnderstandingModel koppelen aan de intentieherkenning en de intenties toevoegen die u wilt laten herkennen. We gaan de intenties van het vooraf ontwikkelde domein voor woningautomatisering gebruiken.

Voeg deze code toe onder uw IntentRecognizer. Zorg ervoor dat u "YourLanguageUnderstandingAppId" vervangt door de id van uw LUIS-app.

Tip

Als u hulp nodig hebt bij het vinden van deze waarde, raadpleegt u Een LUIS-app maken voor intentieherkenning.

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

In dit voorbeeld wordt de functie add_intents() gebruikt om een lijst met expliciet gedefinieerde intenties toe te voegen. Als u alle intenties uit een model wilt toevoegen, gebruikt u add_all_intents(model) en geeft u het model door.

Een intentie herkennen

Vanuit het IntentRecognizer-object roept u de methode recognize_once() aan. Met deze methode laat u de Speech-service weten dat u één woordgroep verstuurt voor herkenning en dat er kan worden gestopt met het herkennen van spraak zodra de woordgroep is geïdentificeerd.

Voeg deze code toe onder uw model.

intent_result = intent_recognizer.recognize_once()

De herkenningsresultaten (of fouten) weergeven

Wanneer het herkenningsresultaat wordt geretourneerd door de Speech-service, wilt u daar iets mee doen. We zullen het eenvoudig houden en het resultaat afdrukken naar de console.

Voeg deze code toe onder de aanroep van 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))

Uw code controleren

Op dit punt moet uw code er als volgt uitzien.

Notitie

Er zijn enkele opmerkingen toegevoegd aan deze versie.

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

De app bouwen en uitvoeren

Voer het voorbeeld uit vanaf de console of in uw IDE:

python quickstart.py

De volgende 15 seconden aan spraakinvoer vanuit uw microfoon worden herkend en geregistreerd in het consolevenster.

Referentiedocumentatiepakket (Go) | Aanvullende voorbeelden op GitHub |

De Speech SDK voor Go biedt geen ondersteuning voor intentieherkenning. Selecteer een andere programmeertaal of de Go-verwijzing en voorbeelden die zijn gekoppeld aan het begin van dit artikel.

Referentiedocumentatiepakket (downloaden) | Aanvullende voorbeelden op GitHub |

De Speech SDK voor Objective-C biedt ondersteuning voor intentieherkenning, maar we hebben hier nog geen handleiding opgenomen. Selecteer een andere programmeertaal om aan de slag te gaan en meer te weten te komen over de concepten, of bekijk de Objective-C-verwijzing en voorbeelden die zijn gekoppeld aan het begin van dit artikel.

Referentiedocumentatiepakket (downloaden) | Aanvullende voorbeelden op GitHub |

De Speech SDK voor Swift biedt wel ondersteuning voor intentieherkenning, maar we hebben hier nog geen handleiding opgenomen. Selecteer een andere programmeertaal om aan de slag te gaan en meer te weten te komen over de concepten, of bekijk de Swift-verwijzing en voorbeelden die zijn gekoppeld aan het begin van dit artikel.

Spraak-naar-tekst-REST API-verwijzing Speech naar text REST API voor korte audioverwijzing | Aanvullende voorbeelden op GitHub |

U kunt de REST API gebruiken voor intentieherkenning, maar we hebben hier nog geen handleiding opgenomen. Selecteer een andere programmeertaal om aan de slag te gaan en meer te weten te komen over de concepten.

De Speech-opdrachtregelinterface (CLI) biedt ondersteuning voor intentieherkenning, maar we hebben hier nog geen handleiding opgenomen. Selecteer een andere programmeertaal om aan de slag te gaan en meer te weten te komen over de concepten, of zie het Overzicht van Speech CLI voor meer informatie over de CLI.

Volgende stappen