Rychlý start: Rozpoznávání záměrů pomocí služby Speech a služby LUIS

Důležité

Služba LUIS bude vyřazena 1. října 2025. Od 1. dubna 2023 nemůžete vytvářet nové prostředky LUIS. Doporučujeme migrovat aplikace LUIS do porozumění konverzačnímu jazyku, abyste mohli využívat další podporu produktů a vícejazyčné funkce.

Konverzační language Understanding (CLU) je k dispozici pro C# a C++ se sadou Speech SDK verze 1.25 nebo novější. Informace o rozpoznávání záměrů pomocí sady Speech SDK a CLU najdete v rychlém startu .

Referenční dokumentace | – balíček (NuGet) | Další ukázky na GitHubu

V tomto rychlém startu použijete sadu Speech SDK a službu LUIS (Language Understanding) k rozpoznávání záměrů ze zvukových dat zachycených z mikrofonu. Konkrétně použijete sadu Speech SDK k zachycení řeči a předem připravené domény ze služby LUIS k identifikaci záměrů pro domácí automatizaci, jako je zapnutí a vypnutí světla.

Požadavky

  • Předplatné Azure: Můžete si ho vytvořit zdarma.
  • Na webu Azure Portal vytvořte prostředek jazyka. K vyzkoušení služby můžete použít cenovou úroveňF0 Free a později upgradovat na placenou úroveň pro produkční prostředí. Tentokrát nebudete potřebovat prostředek služby Speech.
  • Získejte klíč prostředku jazyka a oblast. Po nasazení prostředku jazyka vyberte Přejít k prostředku a zobrazte a spravujte klíče. Další informace o prostředcích služeb Azure AI najdete v tématu Získání klíčů pro váš prostředek.

Vytvoření aplikace LUIS pro rozpoznávání záměru

K dokončení rychlého startu pro rozpoznávání záměru budete muset vytvořit účet LUIS a projekt pomocí portálu LUIS Preview. Tento rychlý start vyžaduje předplatné SLUŽBY LUIS v oblasti, kde je k dispozici rozpoznávání záměru. Předplatné služby Speech se nevyžaduje.

První věcí, kterou musíte udělat, je vytvoření účtu a aplikace LUIS pomocí portálu LUIS Preview. Aplikace LUIS, kterou vytvoříte, použije předem připravenou doménu pro domácí automatizaci, která poskytuje záměry, entity a ukázkové promluvy. Po dokončení budete mít koncový bod SLUŽBY LUIS spuštěný v cloudu, který můžete volat pomocí sady Speech SDK.

Podle těchto pokynů vytvořte aplikaci LUIS:

Až budete hotovi, budete potřebovat čtyři věci:

  • Opětovné publikování se zapnutým přetěžováním řeči
  • Primární klíč služby LUIS
  • Umístění služby LUIS
  • ID vaší aplikace LUIS

Tady najdete tyto informace na portálu LUIS Preview:

  1. Na portálu LUIS Preview vyberte aplikaci a pak vyberte tlačítko Publikovat .

  2. Vyberte produkční slot, pokud používáte en-US možnost Změnit nastavení, a přepněte možnost Přemísťování řeči na pozici Zapnuto. Pak vyberte tlačítko Publikovat .

    Důležité

    Preprimace řeči se důrazně doporučuje, protože zlepšuje přesnost rozpoznávání řeči.

    Publish LUIS to endpoint

  3. Na portálu LUIS Preview vyberte Spravovat a pak vyberte Prostředky Azure. Na této stránce najdete klíč a umístění služby LUIS (někdy označované jako oblast) pro prostředek predikce služby LUIS.

    LUIS key and location

  4. Jakmile budete mít klíč a umístění, budete potřebovat ID aplikace. Vyberte Nastavení. VAŠE ID aplikace je k dispozici na této stránce.

    LUIS app ID

Otevření projektu v sadě Visual Studio

Dále otevřete projekt v sadě Visual Studio.

  1. Spusťte Visual Studio 2019.
  2. Načtěte projekt a otevřete Program.cs.

Začněte s některými často používanými kódy

Pojďme přidat kód, který funguje jako kostra našeho projektu. Všimněte si, že jste vytvořili asynchronní metodu s názvem RecognizeIntentAsync().

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

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

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

Vytvoření konfigurace služby Speech

Než budete moct inicializovat IntentRecognizer objekt, musíte vytvořit konfiguraci, která používá klíč a umístění pro prostředek predikce služby LUIS.

Důležité

Počáteční klíč a klíče pro vytváření nebudou fungovat. Musíte použít prediktivní klíč a umístění, které jste vytvořili dříve. Další informace najdete v tématu Vytvoření aplikace LUIS pro rozpoznávání záměru.

Vložte tento kód do RecognizeIntentAsync() metody. Nezapomeňte aktualizovat tyto hodnoty:

  • Nahraďte "YourLanguageUnderstandingSubscriptionKey" klíčem predikce služby LUIS.
  • Nahraďte "YourLanguageUnderstandingServiceRegion" umístěním služby LUIS. Použijte identifikátor oblasti z oblasti.

Tip

Pokud potřebujete pomoc s vyhledáním těchto hodnot, přečtěte si téma Vytvoření aplikace LUIS pro rozpoznávání záměru.

Důležité

Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

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

Tato ukázka používá metodu FromSubscription()SpeechConfigk sestavení . Úplný seznam dostupných metod naleznete v tématu SpeechConfig – třída.

Sada Speech SDK ve výchozím nastavení rozpoznává jazyk pomocí en-us. Informace o výběru zdrojového jazyka najdete v tématu Rozpoznávání řeči .

Inicializace objektu IntentRecognizer

Teď vytvoříme .IntentRecognizer Tento objekt se vytvoří uvnitř příkazu using, aby se zajistilo správné uvolnění nespravovaných prostředků. Vložte tento kód do RecognizeIntentAsync() metody přímo pod konfiguraci služby Speech.

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

Přidání modelu LanguageUnderstandingModel a záměrů

Potřebujete přidružit k LanguageUnderstandingModel rozpoznávání záměru a přidat záměry, které chcete rozpoznat. Pro domácí automatizaci použijeme záměry z předem připravené domény. Vložte tento kód do příkazu using z předchozí části. Ujistěte se, že nahrazujete "YourLanguageUnderstandingAppId" ID aplikace LUIS.

Tip

Pokud potřebujete pomoc s nalezením této hodnoty, přečtěte si téma Vytvoření aplikace LUIS pro rozpoznávání záměru.

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

Tento příklad používá AddIntent() funkci k individuálnímu přidání záměrů. Pokud chcete přidat všechny záměry z modelu, použijte AddAllIntents(model) ho a předejte ho.

Rozpoznávání záměru

Z objektu IntentRecognizer zavoláte metodu RecognizeOnceAsync() . Tato metoda službě Speech umožňuje vědět, že odesíláte jednu frázi pro rozpoznávání a že jakmile je fráze identifikována k zastavení rozpoznávání řeči.

Do příkazu using přidejte tento kód pod 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();

Zobrazení výsledků rozpoznávání (nebo chyb)

Když služba Speech vrátí výsledek rozpoznávání, budete s ním chtít něco udělat. Necháme to jednoduché a vytiskneme výsledky do konzoly.

Do příkazu using níže RecognizeOnceAsync()přidejte tento kód:

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

Kontrola kódu

V tomto okamžiku by váš kód měl vypadat takto:

Poznámka:

Do této verze jsme přidali nějaké komentáře.

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

Sestavení a spuštění aplikace

Teď jste připraveni sestavit aplikaci a otestovat rozpoznávání řeči pomocí služby Speech.

  1. Zkompilujte kód – Na řádku nabídek sady Visual Studio zvolte Sestavit>řešení sestavení.
  2. Spusťte aplikaci – na řádku nabídek zvolte> Spustit ladění nebo stiskněte klávesu F5.
  3. Začněte rozpoznát – zobrazí se výzva, abyste vyslovili frázi v angličtině. Vaše řeč se odešle do služby Speech, přepíše se jako text a v konzole se vykreslí.

Referenční dokumentace | – balíček (NuGet) | Další ukázky na GitHubu

V tomto rychlém startu použijete sadu Speech SDK a službu LUIS (Language Understanding) k rozpoznávání záměrů ze zvukových dat zachycených z mikrofonu. Konkrétně použijete sadu Speech SDK k zachycení řeči a předem připravené domény ze služby LUIS k identifikaci záměrů pro domácí automatizaci, jako je zapnutí a vypnutí světla.

Požadavky

  • Předplatné Azure: Můžete si ho vytvořit zdarma.
  • Na webu Azure Portal vytvořte prostředek jazyka. K vyzkoušení služby můžete použít cenovou úroveňF0 Free a později upgradovat na placenou úroveň pro produkční prostředí. Tentokrát nebudete potřebovat prostředek služby Speech.
  • Získejte klíč prostředku jazyka a oblast. Po nasazení prostředku jazyka vyberte Přejít k prostředku a zobrazte a spravujte klíče. Další informace o prostředcích služeb Azure AI najdete v tématu Získání klíčů pro váš prostředek.

Vytvoření aplikace LUIS pro rozpoznávání záměru

K dokončení rychlého startu pro rozpoznávání záměru budete muset vytvořit účet LUIS a projekt pomocí portálu LUIS Preview. Tento rychlý start vyžaduje předplatné SLUŽBY LUIS v oblasti, kde je k dispozici rozpoznávání záměru. Předplatné služby Speech se nevyžaduje.

První věcí, kterou musíte udělat, je vytvoření účtu a aplikace LUIS pomocí portálu LUIS Preview. Aplikace LUIS, kterou vytvoříte, použije předem připravenou doménu pro domácí automatizaci, která poskytuje záměry, entity a ukázkové promluvy. Po dokončení budete mít koncový bod SLUŽBY LUIS spuštěný v cloudu, který můžete volat pomocí sady Speech SDK.

Podle těchto pokynů vytvořte aplikaci LUIS:

Až budete hotovi, budete potřebovat čtyři věci:

  • Opětovné publikování se zapnutým přetěžováním řeči
  • Primární klíč služby LUIS
  • Umístění služby LUIS
  • ID vaší aplikace LUIS

Tady najdete tyto informace na portálu LUIS Preview:

  1. Na portálu LUIS Preview vyberte aplikaci a pak vyberte tlačítko Publikovat .

  2. Vyberte produkční slot, pokud používáte en-US možnost Změnit nastavení, a přepněte možnost Přemísťování řeči na pozici Zapnuto. Pak vyberte tlačítko Publikovat .

    Důležité

    Preprimace řeči se důrazně doporučuje, protože zlepšuje přesnost rozpoznávání řeči.

    Publish LUIS to endpoint

  3. Na portálu LUIS Preview vyberte Spravovat a pak vyberte Prostředky Azure. Na této stránce najdete klíč a umístění služby LUIS (někdy označované jako oblast) pro prostředek predikce služby LUIS.

    LUIS key and location

  4. Jakmile budete mít klíč a umístění, budete potřebovat ID aplikace. Vyberte Nastavení. VAŠE ID aplikace je k dispozici na této stránce.

    LUIS app ID

Otevření projektu v sadě Visual Studio

Dále otevřete projekt v sadě Visual Studio.

  1. Spusťte Visual Studio 2019.
  2. Načtěte projekt a otevřete helloworld.cpp.

Začněte s některými často používanými kódy

Pojďme přidat kód, který funguje jako kostra našeho projektu. Všimněte si, že jste vytvořili asynchronní metodu s názvem recognizeIntent().

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

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

void recognizeIntent()
{
}

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

Vytvoření konfigurace služby Speech

Než budete moct inicializovat IntentRecognizer objekt, musíte vytvořit konfiguraci, která používá klíč a umístění pro prostředek predikce služby LUIS.

Důležité

Počáteční klíč a klíče pro vytváření nebudou fungovat. Musíte použít prediktivní klíč a umístění, které jste vytvořili dříve. Další informace najdete v tématu Vytvoření aplikace LUIS pro rozpoznávání záměru.

Vložte tento kód do recognizeIntent() metody. Nezapomeňte aktualizovat tyto hodnoty:

  • Nahraďte "YourLanguageUnderstandingSubscriptionKey" klíčem predikce služby LUIS.
  • Nahraďte "YourLanguageUnderstandingServiceRegion" umístěním služby LUIS. Použijte identifikátor oblasti z oblasti.

Tip

Pokud potřebujete pomoc s vyhledáním těchto hodnot, přečtěte si téma Vytvoření aplikace LUIS pro rozpoznávání záměru.

Důležité

Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

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

Tato ukázka používá metodu FromSubscription()SpeechConfigk sestavení . Úplný seznam dostupných metod naleznete v tématu SpeechConfig – třída.

Sada Speech SDK ve výchozím nastavení rozpoznává jazyk pomocí en-us. Informace o výběru zdrojového jazyka najdete v tématu Rozpoznávání řeči .

Inicializace objektu IntentRecognizer

Teď vytvoříme .IntentRecognizer Vložte tento kód do recognizeIntent() metody přímo pod konfiguraci služby Speech.

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

Přidání modelu LanguageUnderstandingModel a intents

Potřebujete přidružit k LanguageUnderstandingModel rozpoznávání záměru a přidat záměry, které chcete rozpoznat. Pro domácí automatizaci použijeme záměry z předem připravené domény.

Vložte tento kód pod svůj IntentRecognizer. Ujistěte se, že nahrazujete "YourLanguageUnderstandingAppId" ID aplikace LUIS.

Tip

Pokud potřebujete pomoc s nalezením této hodnoty, přečtěte si téma Vytvoření aplikace LUIS pro rozpoznávání záměru.

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

Tento příklad používá AddIntent() funkci k individuálnímu přidání záměrů. Pokud chcete přidat všechny záměry z modelu, použijte AddAllIntents(model) ho a předejte ho.

Rozpoznávání záměru

Z objektu IntentRecognizer zavoláte metodu RecognizeOnceAsync() . Tato metoda službě Speech umožňuje vědět, že odesíláte jednu frázi pro rozpoznávání a že jakmile je fráze identifikována k zastavení rozpoznávání řeči. Pro zjednodušení počkáme na dokončení budoucnosti.

Vložte tento kód pod 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();

Zobrazení výsledků rozpoznávání (nebo chyb)

Když služba Speech vrátí výsledek rozpoznávání, budete s ním chtít něco udělat. Necháme to jednoduché a vytiskneme výsledek do konzoly.

Vložte následující kód 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;
    }
}

Kontrola kódu

V tomto okamžiku by váš kód měl vypadat takto:

Poznámka:

Do této verze jsme přidali nějaké komentáře.

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

Sestavení a spuštění aplikace

Teď jste připraveni sestavit aplikaci a otestovat rozpoznávání řeči pomocí služby Speech.

  1. Zkompilujte kód – Na řádku nabídek sady Visual Studio zvolte Sestavit>řešení sestavení.
  2. Spusťte aplikaci – na řádku nabídek zvolte> Spustit ladění nebo stiskněte klávesu F5.
  3. Začněte rozpoznát – zobrazí se výzva, abyste vyslovili frázi v angličtině. Vaše řeč se odešle do služby Speech, přepíše se jako text a v konzole se vykreslí.

Referenční dokumentace | Další ukázky na GitHubu

V tomto rychlém startu použijete sadu Speech SDK a službu LUIS (Language Understanding) k rozpoznávání záměrů ze zvukových dat zachycených z mikrofonu. Konkrétně použijete sadu Speech SDK k zachycení řeči a předem připravené domény ze služby LUIS k identifikaci záměrů pro domácí automatizaci, jako je zapnutí a vypnutí světla.

Požadavky

  • Předplatné Azure: Můžete si ho vytvořit zdarma.
  • Na webu Azure Portal vytvořte prostředek jazyka. K vyzkoušení služby můžete použít cenovou úroveňF0 Free a později upgradovat na placenou úroveň pro produkční prostředí. Tentokrát nebudete potřebovat prostředek služby Speech.
  • Získejte klíč prostředku jazyka a oblast. Po nasazení prostředku jazyka vyberte Přejít k prostředku a zobrazte a spravujte klíče. Další informace o prostředcích služeb Azure AI najdete v tématu Získání klíčů pro váš prostředek.

Musíte také nainstalovat sadu Speech SDK pro vývojové prostředí a vytvořit prázdný ukázkový projekt.

Vytvoření aplikace LUIS pro rozpoznávání záměru

K dokončení rychlého startu pro rozpoznávání záměru budete muset vytvořit účet LUIS a projekt pomocí portálu LUIS Preview. Tento rychlý start vyžaduje předplatné SLUŽBY LUIS v oblasti, kde je k dispozici rozpoznávání záměru. Předplatné služby Speech se nevyžaduje.

První věcí, kterou musíte udělat, je vytvoření účtu a aplikace LUIS pomocí portálu LUIS Preview. Aplikace LUIS, kterou vytvoříte, použije předem připravenou doménu pro domácí automatizaci, která poskytuje záměry, entity a ukázkové promluvy. Po dokončení budete mít koncový bod SLUŽBY LUIS spuštěný v cloudu, který můžete volat pomocí sady Speech SDK.

Podle těchto pokynů vytvořte aplikaci LUIS:

Až budete hotovi, budete potřebovat čtyři věci:

  • Opětovné publikování se zapnutým přetěžováním řeči
  • Primární klíč služby LUIS
  • Umístění služby LUIS
  • ID vaší aplikace LUIS

Tady najdete tyto informace na portálu LUIS Preview:

  1. Na portálu LUIS Preview vyberte aplikaci a pak vyberte tlačítko Publikovat .

  2. Vyberte produkční slot, pokud používáte en-US možnost Změnit nastavení, a přepněte možnost Přemísťování řeči na pozici Zapnuto. Pak vyberte tlačítko Publikovat .

    Důležité

    Preprimace řeči se důrazně doporučuje, protože zlepšuje přesnost rozpoznávání řeči.

    Publish LUIS to endpoint

  3. Na portálu LUIS Preview vyberte Spravovat a pak vyberte Prostředky Azure. Na této stránce najdete klíč a umístění služby LUIS (někdy označované jako oblast) pro prostředek predikce služby LUIS.

    LUIS key and location

  4. Jakmile budete mít klíč a umístění, budete potřebovat ID aplikace. Vyberte Nastavení. VAŠE ID aplikace je k dispozici na této stránce.

    LUIS app ID

Otevření projektu

  1. Otevřete upřednostňované integrované vývojové prostředí (IDE).
  2. Načtěte projekt a otevřete Main.java.

Začněte s některými často používanými kódy

Pojďme přidat kód, který funguje jako kostra našeho projektu.

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

Vytvoření konfigurace služby Speech

Než budete moct inicializovat IntentRecognizer objekt, musíte vytvořit konfiguraci, která používá klíč a umístění pro prostředek predikce služby LUIS.

Vložte tento kód do bloku try /catch v main()souboru . Nezapomeňte aktualizovat tyto hodnoty:

  • Nahraďte "YourLanguageUnderstandingSubscriptionKey" klíčem predikce služby LUIS.
  • Nahraďte "YourLanguageUnderstandingServiceRegion" umístěním služby LUIS. Použití identifikátoru oblasti z oblasti

Tip

Pokud potřebujete pomoc s vyhledáním těchto hodnot, přečtěte si téma Vytvoření aplikace LUIS pro rozpoznávání záměru.

Důležité

Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

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

Tato ukázka používá metodu FromSubscription()SpeechConfigk sestavení . Úplný seznam dostupných metod naleznete v tématu SpeechConfig – třída.

Sada Speech SDK ve výchozím nastavení rozpoznává jazyk pomocí en-us. Informace o výběru zdrojového jazyka najdete v tématu Rozpoznávání řeči .

Inicializace objektu IntentRecognizer

Teď vytvoříme .IntentRecognizer Vložte tento kód přímo pod konfiguraci služby Speech.

IntentRecognizer recognizer = new IntentRecognizer(config)) {

Přidání modelu LanguageUnderstandingModel a intents

Potřebujete přidružit k LanguageUnderstandingModel rozpoznávání záměru a přidat záměry, které chcete rozpoznat. Pro domácí automatizaci použijeme záměry z předem připravené domény.

Vložte tento kód pod svůj IntentRecognizer. Ujistěte se, že nahrazujete "YourLanguageUnderstandingAppId" ID aplikace LUIS.

Tip

Pokud potřebujete pomoc s nalezením této hodnoty, přečtěte si téma Vytvoření aplikace LUIS pro rozpoznávání záměru.

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

Tento příklad používá addIntent() funkci k individuálnímu přidání záměrů. Pokud chcete přidat všechny záměry z modelu, použijte addAllIntents(model) ho a předejte ho.

Rozpoznávání záměru

Z objektu IntentRecognizer zavoláte metodu recognizeOnceAsync() . Tato metoda službě Speech umožňuje vědět, že odesíláte jednu frázi pro rozpoznávání a že jakmile je fráze identifikována k zastavení rozpoznávání řeči.

Vložte tento kód pod model:

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

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

Zobrazení výsledků rozpoznávání (nebo chyb)

Když služba Speech vrátí výsledek rozpoznávání, budete s ním chtít něco udělat. Necháme to jednoduché a vytiskneme výsledek do konzoly.

Vložte tento kód pod volání .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?");
    }
}

Kontrola kódu

V tomto okamžiku by váš kód měl vypadat takto:

Poznámka:

Do této verze jsme přidali nějaké komentáře.

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

Sestavení a spuštění aplikace

Stiskněte klávesu F11 nebo vyberte Spustit>ladění. Následujících 15 sekund hlasového vstupu z mikrofonu se rozpozná a zaprotokoluje v okně konzoly.

Referenční dokumentace | Balíček (npm) | Další ukázky zdrojového kódu knihovny GitHub |

V tomto rychlém startu použijete sadu Speech SDK a službu LUIS (Language Understanding) k rozpoznávání záměrů ze zvukových dat zachycených z mikrofonu. Konkrétně použijete sadu Speech SDK k zachycení řeči a předem připravené domény ze služby LUIS k identifikaci záměrů pro domácí automatizaci, jako je zapnutí a vypnutí světla.

Požadavky

  • Předplatné Azure: Můžete si ho vytvořit zdarma.
  • Na webu Azure Portal vytvořte prostředek jazyka. K vyzkoušení služby můžete použít cenovou úroveňF0 Free a později upgradovat na placenou úroveň pro produkční prostředí. Tentokrát nebudete potřebovat prostředek služby Speech.
  • Získejte klíč prostředku jazyka a oblast. Po nasazení prostředku jazyka vyberte Přejít k prostředku a zobrazte a spravujte klíče. Další informace o prostředcích služeb Azure AI najdete v tématu Získání klíčů pro váš prostředek.

Musíte také nainstalovat sadu Speech SDK pro vývojové prostředí a vytvořit prázdný ukázkový projekt.

Vytvoření aplikace LUIS pro rozpoznávání záměru

K dokončení rychlého startu pro rozpoznávání záměru budete muset vytvořit účet LUIS a projekt pomocí portálu LUIS Preview. Tento rychlý start vyžaduje předplatné SLUŽBY LUIS v oblasti, kde je k dispozici rozpoznávání záměru. Předplatné služby Speech se nevyžaduje.

První věcí, kterou musíte udělat, je vytvoření účtu a aplikace LUIS pomocí portálu LUIS Preview. Aplikace LUIS, kterou vytvoříte, použije předem připravenou doménu pro domácí automatizaci, která poskytuje záměry, entity a ukázkové promluvy. Po dokončení budete mít koncový bod SLUŽBY LUIS spuštěný v cloudu, který můžete volat pomocí sady Speech SDK.

Podle těchto pokynů vytvořte aplikaci LUIS:

Až budete hotovi, budete potřebovat čtyři věci:

  • Opětovné publikování se zapnutým přetěžováním řeči
  • Primární klíč služby LUIS
  • Umístění služby LUIS
  • ID vaší aplikace LUIS

Tady najdete tyto informace na portálu LUIS Preview:

  1. Na portálu LUIS Preview vyberte aplikaci a pak vyberte tlačítko Publikovat .

  2. Vyberte produkční slot, pokud používáte en-US možnost Změnit nastavení, a přepněte možnost Přemísťování řeči na pozici Zapnuto. Pak vyberte tlačítko Publikovat .

    Důležité

    Preprimace řeči se důrazně doporučuje, protože zlepšuje přesnost rozpoznávání řeči.

    Publish LUIS to endpoint

  3. Na portálu LUIS Preview vyberte Spravovat a pak vyberte Prostředky Azure. Na této stránce najdete klíč a umístění služby LUIS (někdy označované jako oblast) pro prostředek predikce služby LUIS.

    LUIS key and location

  4. Jakmile budete mít klíč a umístění, budete potřebovat ID aplikace. Vyberte Nastavení. VAŠE ID aplikace je k dispozici na této stránce.

    LUIS app ID

Začněte s některými často používanými kódy

Pojďme přidat kód, který funguje jako kostra našeho projektu.

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

Přidání prvků uživatelského rozhraní

Teď přidáme základní uživatelské rozhraní pro vstupní pole, odkazujeme na JavaScript sady Speech SDK a v případě dostupnosti chytneme autorizační token.

Důležité

Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

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

Vytvoření konfigurace služby Speech

Než budete moct inicializovat SpeechRecognizer objekt, musíte vytvořit konfiguraci, která používá klíč předplatného a oblast předplatného. Vložte tento kód do startRecognizeOnceAsyncButton.addEventListener() metody.

Poznámka:

Sada Speech SDK ve výchozím nastavení rozpoznává jazyk pomocí en-us. Informace o výběru zdrojového jazyka najdete v tématu Rozpoznávání řeči .

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

Vytvoření konfigurace zvuku

Teď musíte vytvořit AudioConfig objekt, který odkazuje na vaše vstupní zařízení. Vložte tento kód do startIntentRecognizeAsyncButton.addEventListener() metody přímo pod konfiguraci služby Speech.

        var audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();

Inicializace záměruRecognizer

Teď vytvoříme IntentRecognizer objekt pomocí SpeechConfigAudioConfig objektů vytvořených dříve. Vložte tento kód do startIntentRecognizeAsyncButton.addEventListener() metody.

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

Přidání modelu LanguageUnderstandingModel a intents

Musíte přidružit k LanguageUnderstandingModel rozpoznávání záměru a přidat záměry, které chcete rozpoznat. Pro domácí automatizaci použijeme záměry z předem připravené domény.

Vložte tento kód pod svůj IntentRecognizer. Ujistěte se, že nahrazujete "YourLanguageUnderstandingAppId" ID aplikace LUIS.

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

          recognizer.addAllIntents(lm);
        }

Poznámka:

Sada Speech SDK podporuje pouze koncové body služby LUIS v2.0. Adresu URL koncového bodu v3.0, kterou najdete v ukázkovém poli dotazu, musíte ručně upravit tak, aby používala vzor adresy URL verze 2.0. Koncové body LUIS v2.0 vždy sledují jeden z těchto dvou vzorů:

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

Rozpoznávání záměru

Z objektu IntentRecognizer zavoláte metodu recognizeOnceAsync() . Tato metoda službě Speech umožňuje vědět, že odesíláte jednu frázi pro rozpoznávání a že jakmile je fráze identifikována k zastavení rozpoznávání řeči.

Vložte tento kód pod přidání modelu:

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

Kontrola kódu

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

Vytvoření zdroje tokenu (volitelné)

Pokud chcete webovou stránku hostovat na webovém serveru, můžete pro ukázkovou aplikaci volitelně zadat zdroj tokenu. Díky tomu váš klíč předplatného nikdy neopustí váš server a uživatelé budou moct využívat řečové funkce, aniž by sami museli zadávat jakýkoli autorizační kód.

Vytvořte nový soubor s názvem token.php. V tomto příkladu předpokládáme, že váš webový server podporuje skriptovací jazyk PHP s povoleným curl. Zadejte následující kód:

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

Poznámka:

Autorizační tokeny mají pouze omezenou dobu života. Tento zjednodušený příklad neukazuje, jak autorizační tokeny automaticky aktualizovat. Jako uživatel můžete stránku ručně znovu načíst nebo aktualizovat stisknutím klávesy F5.

Místní sestavení a spuštění ukázky

Pokud chcete aplikaci spustit, dvakrát klikněte na soubor index.html nebo tento soubor otevřete v oblíbeném webovém prohlížeči. Zobrazí jednoduché grafické uživatelské rozhraní, které vám umožní zadat klíč LUIS, oblast LUIS a ID aplikace LUIS. Po zadání těchto polí můžete kliknutím na příslušné tlačítko aktivovat rozpoznávání pomocí mikrofonu.

Poznámka:

Tato metoda nefunguje v prohlížeči Safari. V Safari musí být ukázková webová stránka hostovaná na webovém serveru; Safari nepovoluje používání mikrofonu weby načtené z místního souboru.

Sestavení a spuštění ukázky pomocí webového serveru

Aplikaci spustíte tak, že otevřete oblíbený webový prohlížeč a nasměrujete ji na veřejnou adresu URL, na které složku hostujete, zadejte oblast LUIS a ID aplikace LUIS a aktivujte rozpoznávání pomocí mikrofonu. Pokud je nakonfigurovaná, získá token ze zdroje tokenu a začne rozpoznávat mluvené příkazy.

Referenční dokumentace | – balíček (PyPi) | Další ukázky na GitHubu

V tomto rychlém startu použijete sadu Speech SDK a službu LUIS (Language Understanding) k rozpoznávání záměrů ze zvukových dat zachycených z mikrofonu. Konkrétně použijete sadu Speech SDK k zachycení řeči a předem připravené domény ze služby LUIS k identifikaci záměrů pro domácí automatizaci, jako je zapnutí a vypnutí světla.

Požadavky

  • Předplatné Azure: Můžete si ho vytvořit zdarma.
  • Na webu Azure Portal vytvořte prostředek jazyka. K vyzkoušení služby můžete použít cenovou úroveňF0 Free a později upgradovat na placenou úroveň pro produkční prostředí. Tentokrát nebudete potřebovat prostředek služby Speech.
  • Získejte klíč prostředku jazyka a oblast. Po nasazení prostředku jazyka vyberte Přejít k prostředku a zobrazte a spravujte klíče. Další informace o prostředcích služeb Azure AI najdete v tématu Získání klíčů pro váš prostředek.

Musíte také nainstalovat sadu Speech SDK pro vývojové prostředí a vytvořit prázdný ukázkový projekt.

Vytvoření aplikace LUIS pro rozpoznávání záměru

K dokončení rychlého startu pro rozpoznávání záměru budete muset vytvořit účet LUIS a projekt pomocí portálu LUIS Preview. Tento rychlý start vyžaduje předplatné SLUŽBY LUIS v oblasti, kde je k dispozici rozpoznávání záměru. Předplatné služby Speech se nevyžaduje.

První věcí, kterou musíte udělat, je vytvoření účtu a aplikace LUIS pomocí portálu LUIS Preview. Aplikace LUIS, kterou vytvoříte, použije předem připravenou doménu pro domácí automatizaci, která poskytuje záměry, entity a ukázkové promluvy. Po dokončení budete mít koncový bod SLUŽBY LUIS spuštěný v cloudu, který můžete volat pomocí sady Speech SDK.

Podle těchto pokynů vytvořte aplikaci LUIS:

Až budete hotovi, budete potřebovat čtyři věci:

  • Opětovné publikování se zapnutým přetěžováním řeči
  • Primární klíč služby LUIS
  • Umístění služby LUIS
  • ID vaší aplikace LUIS

Tady najdete tyto informace na portálu LUIS Preview:

  1. Na portálu LUIS Preview vyberte aplikaci a pak vyberte tlačítko Publikovat .

  2. Vyberte produkční slot, pokud používáte en-US možnost Změnit nastavení, a přepněte možnost Přemísťování řeči na pozici Zapnuto. Pak vyberte tlačítko Publikovat .

    Důležité

    Preprimace řeči se důrazně doporučuje, protože zlepšuje přesnost rozpoznávání řeči.

    Publish LUIS to endpoint

  3. Na portálu LUIS Preview vyberte Spravovat a pak vyberte Prostředky Azure. Na této stránce najdete klíč a umístění služby LUIS (někdy označované jako oblast) pro prostředek predikce služby LUIS.

    LUIS key and location

  4. Jakmile budete mít klíč a umístění, budete potřebovat ID aplikace. Vyberte Nastavení. VAŠE ID aplikace je k dispozici na této stránce.

    LUIS app ID

Otevření projektu

  1. Otevřete upřednostňované integrované vývojové prostředí (IDE).
  2. Vytvořte nový projekt a vytvořte soubor s názvem quickstart.pya otevřete ho.

Začněte s některými často používanými kódy

Pojďme přidat kód, který funguje jako kostra našeho projektu.

import azure.cognitiveservices.speech as speechsdk

print("Say something...")

Vytvoření konfigurace služby Speech

Než budete moct inicializovat IntentRecognizer objekt, musíte vytvořit konfiguraci, která používá klíč a umístění pro prostředek predikce služby LUIS.

Vložte tento kód do quickstart.pysouboru . Nezapomeňte aktualizovat tyto hodnoty:

  • Nahraďte "YourLanguageUnderstandingSubscriptionKey" klíčem predikce služby LUIS.
  • Nahraďte "YourLanguageUnderstandingServiceRegion" umístěním služby LUIS. Použití identifikátoru oblasti z oblasti

Tip

Pokud potřebujete pomoc s vyhledáním těchto hodnot, přečtěte si téma Vytvoření aplikace LUIS pro rozpoznávání záměru.

Důležité

Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

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

Tato ukázka vytvoří SpeechConfig objekt pomocí klíče a oblasti SLUŽBY LUIS. Úplný seznam dostupných metod naleznete v tématu SpeechConfig – třída.

Sada Speech SDK ve výchozím nastavení rozpoznává jazyk pomocí en-us. Informace o výběru zdrojového jazyka najdete v tématu Rozpoznávání řeči .

Inicializace objektu IntentRecognizer

Teď vytvoříme .IntentRecognizer Vložte tento kód přímo pod konfiguraci služby Speech.

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

Přidání modelu LanguageUnderstandingModel a intents

Musíte přidružit k LanguageUnderstandingModel rozpoznávání záměru a přidat záměry, které chcete rozpoznat. Pro domácí automatizaci použijeme záměry z předem připravené domény.

Vložte tento kód pod svůj IntentRecognizer. Ujistěte se, že nahrazujete "YourLanguageUnderstandingAppId" ID aplikace LUIS.

Tip

Pokud potřebujete pomoc s nalezením této hodnoty, přečtěte si téma Vytvoření aplikace LUIS pro rozpoznávání záměru.

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

Tento příklad používá add_intents() funkci k přidání seznamu explicitně definovaných záměrů. Pokud chcete přidat všechny záměry z modelu, použijte add_all_intents(model) ho a předejte ho.

Rozpoznávání záměru

Z objektu IntentRecognizer zavoláte metodu recognize_once() . Tato metoda službě Speech umožňuje vědět, že odesíláte jednu frázi pro rozpoznávání a že jakmile je fráze identifikována k zastavení rozpoznávání řeči.

Vložte tento kód pod model.

intent_result = intent_recognizer.recognize_once()

Zobrazení výsledků rozpoznávání (nebo chyb)

Když služba Speech vrátí výsledek rozpoznávání, budete s ním chtít něco udělat. Necháme to jednoduché a vytiskneme výsledek do konzoly.

Pod voláním recognize_once()přidejte tento kód.

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

Kontrola kódu

V tuto chvíli by měl váš kód vypadat takto.

Poznámka:

Do této verze jsme přidali nějaké komentáře.

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

Sestavení a spuštění aplikace

Spusťte ukázku z konzoly nebo v integrovaném vývojovém prostředí (IDE):

python quickstart.py

Následujících 15 sekund hlasového vstupu z mikrofonu se rozpozná a zaprotokoluje v okně konzoly.

Referenční dokumentace | – balíček (Go) | Další ukázky na GitHubu

Sada Speech SDK pro Go nepodporuje rozpoznávání záměru. Vyberte jiný programovací jazyk nebo referenční informace k Jazyku Go a ukázky propojené od začátku tohoto článku.

Referenční dokumentace | Balíček (stáhnout) | Další ukázky na GitHubu

Sada Speech SDK pro Objective-C podporuje rozpoznávání záměrů, ale zatím jsme do ní nezahrnuli průvodce. Začněte výběrem jiného programovacího jazyka a seznamte se s koncepty nebo si projděte referenční informace k Objective-C a ukázky propojené od začátku tohoto článku.

Referenční dokumentace | Balíček (stáhnout) | Další ukázky na GitHubu

Sada Speech SDK pro Swift podporuje rozpoznávání záměrů, ale zatím jsme do ní nezahrnuli průvodce. Začněte výběrem jiného programovacího jazyka a seznamte se s koncepty nebo si prohlédněte referenční informace a ukázky Swiftu, které jsou propojené od začátku tohoto článku.

Speech to text REST API reference | Speech to text REST API for short audio reference | Additional Samples on GitHub

K rozpoznávání záměrů můžete použít rozhraní REST API, ale zatím jsme tu nezahrnuli příručku. Začněte výběrem jiného programovacího jazyka a seznamte se s koncepty.

Rozhraní příkazového řádku služby Speech (CLI) podporuje rozpoznávání záměrů, ale zatím jsme do tohoto průvodce nezahrnuli. Pokud chcete začít, vyberte jiný programovací jazyk a seznamte se s koncepty nebo si přečtěte přehled rozhraní příkazového řádku služby Speech, kde najdete další informace o rozhraní příkazového řádku.

Další kroky