Oktatóanyag: Szándék felismerése beszédből a C#-hez készült Speech SDK használatávalTutorial: Recognize intents from speech using the Speech SDK for C#

A Cognitive Services SPEECH SDK a Language Understanding szolgáltatással (Luis) integrálódik a szándék-felismerésbiztosításához.The Cognitive Services Speech SDK integrates with the Language Understanding service (LUIS) to provide intent recognition. A szándék az, amit a felhasználó tenni szeretne: például repülőutat foglalni, megnézni az időjárást vagy telefonhívást indítani.An intent is something the user wants to do: book a flight, check the weather, or make a call. A felhasználó bármilyen kifejezést használhat, amely számára természetes.The user can use whatever terms feel natural. A Machine learning használatával a LUIS leképezi a felhasználói kéréseket a definiált szándékokra.Using machine learning, LUIS maps user requests to the intents you've defined.

Megjegyzés

A LUIS alkalmazás meghatározza a felismerni kívánt szándékokat és entitásokat.A LUIS application defines the intents and entities you want to recognize. Az alkalmazás elkülönül a Speech Service szolgáltatást használó C#-alkalmazástól.It's separate from the C# application that uses the Speech service. Ebben a cikkben az „app” program kifejezés a LUIS-alkalmazásra, az „alkalmazás” kifejezés pedig a C#-kódra utal.In this article, "app" means the LUIS app, while "application" means the C# code.

Ebben az oktatóanyagban a Speech SDK használatával fejleszthet ki egy olyan C#-konzolalkalmazást, amely az eszköz mikrofonján keresztül a felhasználó által kimondott szöveg alapján meghatározza a szándékot.In this tutorial, you use the Speech SDK to develop a C# console application that derives intents from user utterances through your device's microphone. A következőket fogja megtanulni:You'll learn how to:

  • A Speech SDK NuGet-csomagra vonatkozó Visual Studio-projekt létrehozásaCreate a Visual Studio project referencing the Speech SDK NuGet package
  • Beszédfelismerési konfiguráció létrehozása és a szándék felismerésének beolvasásaCreate a speech configuration and get an intent recognizer
  • A LUIS-app modelljének lekérése és a kívánt szándékok hozzáadásaGet the model for your LUIS app and add the intents you need
  • A beszédfelismerés nyelvének megadásaSpecify the language for speech recognition
  • Beszédfelismerés végrehajtása fájlbólRecognize speech from a file
  • Aszinkron, eseményvezérelt folyamatos felismerés használataUse asynchronous, event-driven continuous recognition

ElőfeltételekPrerequisites

Az oktatóanyag megkezdése előtt győződjön meg arról, hogy rendelkezik az alábbi elemekkel:Be sure you have the following items before you begin this tutorial:

A LUIS és a beszédLUIS and speech

A LUIS integrálva van a Speech Services szolgáltatással, hogy felismerje a beszédfelismerési szándékokat.LUIS integrates with the Speech Services to recognize intents from speech. Nincs szüksége a Speech Services-előfizetésre, csak LUIS-ra.You don't need a Speech Services subscription, just LUIS.

A LUIS háromféle kulcsot használ:LUIS uses three kinds of keys:

Kulcs típusaKey type CélPurpose
TartalomkészítésAuthoring Lehetővé teszi a LUIS-alkalmazások programozott módon történő létrehozását és módosításátLets you create and modify LUIS apps programmatically
KezdőStarter Lehetővé teszi a LUIS-alkalmazás tesztelését csak szöveg használatávalLets you test your LUIS application using text only
VégpontEndpoint Engedélyezi a hozzáférést egy adott LUIS-alkalmazáshozAuthorizes access to a particular LUIS app

Ebben az oktatóanyagban a végponti kulcs típusát kell megadnia.For this tutorial, you need the endpoint key type. Az oktatóanyag a példa Home Automation LUIS alkalmazást használja, amelyet az előre elkészített Home Automation-alkalmazás használata című rövid útmutatóban hozhat létre.The tutorial uses the example Home Automation LUIS app, which you can create by following the Use prebuilt Home automation app quickstart. Ha saját LUIS-alkalmazást hozott létre, azt használhatja helyette.If you've created a LUIS app of your own, you can use it instead.

LUIS-alkalmazás létrehozásakor a LUIS automatikusan létrehoz egy alapszintű kulcsot, amellyel szöveges lekérdezések használatával tesztelheti az alkalmazást.When you create a LUIS app, LUIS automatically generates a starter key so you can test the app using text queries. Ez a kulcs nem engedélyezi a beszédfelismerési szolgáltatások integrációját, és nem fog működni ezzel az Oktatóanyaggal.This key doesn't enable the Speech Services integration and won't work with this tutorial. Hozzon létre egy LUIS-erőforrást az Azure irányítópulton, és rendelje hozzá a LUIS alkalmazáshoz.Create a LUIS resource in the Azure dashboard and assign it to the LUIS app. Az oktatóanyaghoz használhatja az ingyenes előfizetési szintet.You can use the free subscription tier for this tutorial.

Miután létrehozta a LUIS-erőforrást az Azure-irányítópulton, jelentkezzen be a Luis portálra, válassza ki az alkalmazást a saját alkalmazások lapon, majd váltson az alkalmazás kezelése lapra.After you create the LUIS resource in the Azure dashboard, log into the LUIS portal, choose your application on the My Apps page, then switch to the app's Manage page. Végül válassza a kulcsok és végpontok lehetőséget az oldalsávon.Finally, select Keys and Endpoints in the sidebar.

A LUIS portál kulcs- és a végpontbeállításai

A kulcsok és végpont beállításai lapon:On the Keys and Endpoint settings page:

  1. Görgessen le az erőforrások és kulcsok szakaszhoz, majd válassza az erőforrás kiosztásaelemet.Scroll down to the Resources and Keys section and select Assign resource.

  2. A kulcs kiosztása az alkalmazáshoz párbeszédpanelen végezze el a következő módosításokat:In the Assign a key to your app dialog box, make the following changes:

    • A bérlőterületen válassza a Microsoftlehetőséget.Under Tenant, choose Microsoft.
    • Az előfizetés neveterületen válassza ki azt az Azure-előfizetést, amely a használni kívánt Luis-erőforrást tartalmazza.Under Subscription Name, choose the Azure subscription that contains the LUIS resource you want to use.
    • A kulcsalatt válassza ki az alkalmazással használni kívánt Luis-erőforrást.Under Key, choose the LUIS resource that you want to use with the app.

    Az új előfizetés hamarosan megjelenik a lap alján található táblázatban.In a moment, the new subscription appears in the table at the bottom of the page.

  3. Kattintson a kulcs melletti ikonra a vágólapra másoláshoz.Select the icon next to a key to copy it to the clipboard. (Bármelyik kulcsot használhatja.)(You may use either key.)

A LUIS-app előfizetési kulcsai

Beszédprojekt létrehozása Visual StudióbanCreate a speech project in Visual Studio

A Windows-fejlesztéshez készült Visual Studio-projekt létrehozásához létre kell hoznia a projektet, be kell állítania a Visual studiót a .NET Desktop-fejlesztéshez, telepítenie kell a Speech SDK-t, és ki kell választania a cél architektúrát.To create a Visual Studio project for Windows development, you need to create the project, set up Visual Studio for .NET desktop development, install the Speech SDK, and choose the target architecture.

A projekt létrehozása és a munkaterhelés hozzáadásaCreate the project and add the workload

A kezdéshez hozza létre a projektet a Visual Studióban, és győződjön meg arról, hogy a Visual Studio be van állítva a .NET Desktop Development szolgáltatáshoz:To start, create the project in Visual Studio, and make sure that Visual Studio is set up for .NET desktop development:

  1. Nyissa meg a Visual Studio 2019 alkalmazást.Open Visual Studio 2019.

  2. A Start ablakban válassza az új projekt létrehozásalehetőséget.In the Start window, select Create a new project.

  3. Az új projekt létrehozása ablakban válassza a Console app (.NET-keretrendszer) lehetőséget, majd kattintson a továbbgombra.In the Create a new project window, choose Console App (.NET Framework), and then select Next.

  4. Az új projekt konfigurálása ablakban írja be a HelloWorld nevet a projekt nevemezőbe, válassza ki vagy hozza létre a könyvtár elérési útját a helyen, majd válassza a Létrehozáslehetőséget.In the Configure your new project window, enter helloworld in Project name, choose or create the directory path in Location, and then select Create.

  5. A Visual Studio menüsávban válassza az eszközök > eszközök és szolgáltatások beolvasásalehetőséget, amely megnyitja a Visual Studio telepítőjét, és megjeleníti a módosítás párbeszédpanelt.From the Visual Studio menu bar, select Tools > Get Tools and Features, which opens Visual Studio Installer and displays the Modifying dialog box.

  6. Győződjön meg arról, hogy elérhető-e a .net Desktop fejlesztői munkaterhelése.Check whether the .NET desktop development workload is available. Ha a munkaterhelés még nincs telepítve, jelölje be a jelölőnégyzetet, majd kattintson a módosítás gombra a telepítés elindításához.If the workload hasn't been installed, select the check box next to it, and then select Modify to start the installation. A letöltése és telepítése néhány percet is igénybe vehet.It may take a few minutes to download and install.

    Ha a .net Desktop-fejlesztés melletti jelölőnégyzet már be van jelölve, kattintson a Bezárás gombra a párbeszédpanelből való kilépéshez.If the check box next to .NET desktop development is already selected, select Close to exit the dialog box.

    A .NET asztali fejlesztés engedélyezése

  7. Zárjuk be a Visual Studio telepítőjét.Close Visual Studio Installer.

A Speech SDK telepítéseInstall the Speech SDK

A következő lépés a SPEECH SDK NuGet-csomagtelepítése, így a kódban hivatkozhat rá.The next step is to install the Speech SDK NuGet package, so you can reference it in the code.

  1. A Megoldáskezelő kattintson a jobb gombbal a HelloWorld projektre, majd válassza a NuGet-csomagok kezelése lehetőséget a NuGet csomagkezelő megjelenítéséhez.In the Solution Explorer, right-click the helloworld project, and then select Manage NuGet Packages to show the NuGet Package Manager.

    NuGet csomagkezelő

  2. A jobb felső sarokban keresse meg a csomag forrása legördülő listát, és ellenőrizze, hogy a nuget.org van-e kiválasztva.In the upper-right corner, find the Package Source drop-down box, and make sure that nuget.org is selected.

  3. A bal felső sarokban válassza a Tallózáslehetőséget.In the upper-left corner, select Browse.

  4. A keresőmezőbe írja be a Microsoft. CognitiveServices. Speech kifejezést, és válassza az ENTER billentyűt.In the search box, type Microsoft.CognitiveServices.Speech and select Enter.

  5. A keresési eredmények közül válassza ki a Microsoft. CognitiveServices. Speech csomagot, majd válassza a telepítés lehetőséget a legújabb stabil verzió telepítéséhez.From the search results, select the Microsoft.CognitiveServices.Speech package, and then select Install to install the latest stable version.

    Telepítse a Microsoft. CognitiveServices. Speech NuGet csomagot

  6. A telepítés elindításához fogadja el az összes szerződést és licencet.Accept all agreements and licenses to start the installation.

    A csomag telepítése után a rendszer megerősítő üzenetet jelenít meg a Package Manager konzol ablakban.After the package is installed, a confirmation appears in the Package Manager Console window.

Válassza ki a cél architektúrátChoose the target architecture

A konzol alkalmazás létrehozásához és futtatásához hozzon létre egy, a számítógép architektúrájának megfelelő platform-konfigurációt.Now, to build and run the console application, create a platform configuration matching your computer's architecture.

  1. A menüsávban válassza a Build > Configuration Managerelemet.From the menu bar, select Build > Configuration Manager. A Configuration Manager párbeszédpanel jelenik meg.The Configuration Manager dialog box appears.

    Configuration Manager párbeszédpanel

  2. Az aktív megoldási platform legördülő listában válassza az újlehetőséget.In the Active solution platform drop-down box, select New. Megjelenik az új megoldás-platform párbeszédpanel.The New Solution Platform dialog box appears.

  3. A típus vagy a válassza ki az új platform legördülő listát:In the Type or select the new platform drop-down box:

    • Ha 64 bites Windows rendszert futtat, válassza az x64elemet.If you're running 64-bit Windows, select x64.
    • Ha 32 bites Windows rendszert futtat, válassza az x86lehetőséget.If you're running 32-bit Windows, select x86.
  4. Válassza az OK , majd a Bezáráslehetőséget.Select OK and then Close.

A kód hozzáadásaAdd the code

Ezután adja hozzá a projekthez egy kódot.Next, you add code to the project.

  1. A megoldáskezelőnyissa meg a program.csfájlt.From Solution Explorer, open the file Program.cs.

  2. Cserélje le using utasítások blokkját a fájl elejére a következő deklarációkkal:Replace the block of using statements at the beginning of the file with the following declarations:

    using System;
    using System.Threading.Tasks;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    using Microsoft.CognitiveServices.Speech.Intent;
    
  3. A megadott Main() metóduson belül adja hozzá a következő kódot:Inside the provided Main() method, add the following code:

    RecognizeIntentAsync().Wait();
    Console.WriteLine("Please press Enter to continue.");
    Console.ReadLine();
    
  4. Hozzon létre egy üres aszinkron metódust RecognizeIntentAsync(), ahogy az itt látható:Create an empty asynchronous method RecognizeIntentAsync(), as shown here:

    static async Task RecognizeIntentAsync()
    {
    }
    
  5. Az új metódus törzsében adja hozzá a következő kódot:In the body of this new method, add this code:

    // 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".
    var config = SpeechConfig.FromSubscription("YourLanguageUnderstandingSubscriptionKey", "YourLanguageUnderstandingServiceRegion");
    
    // Creates an intent recognizer using microphone as audio input.
    using (var recognizer = new IntentRecognizer(config))
    {
        // 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");
    
        // 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().ConfigureAwait(false);
    
        // Checks result.
        if (result.Reason == ResultReason.RecognizedIntent)
        {
            Console.WriteLine($"RECOGNIZED: Text={result.Text}");
            Console.WriteLine($"    Intent Id: {result.IntentId}.");
            Console.WriteLine($"    Language Understanding JSON: {result.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult)}.");
        }
        else if (result.Reason == ResultReason.RecognizedSpeech)
        {
            Console.WriteLine($"RECOGNIZED: Text={result.Text}");
            Console.WriteLine($"    Intent not recognized.");
        }
        else if (result.Reason == ResultReason.NoMatch)
        {
            Console.WriteLine($"NOMATCH: Speech could not be recognized.");
        }
        else if (result.Reason == 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?");
            }
        }
    }
    
  6. A metódusban szereplő helyőrzőket cserélje le a LUIS előfizetési kulcsára, a régióra és az app azonosítójára az alább látható módon.Replace the placeholders in this method with your LUIS subscription key, region, and app ID as follows.

    HelyőrzőPlaceholder Csere erreReplace with
    YourLanguageUnderstandingSubscriptionKey A LUIS végpontkulcsa.Your LUIS endpoint key. Ezt az elemet újra be kell szereznie az Azure-irányítópultról, nem pedig "kezdő kulcs".Again, you must get this item from your Azure dashboard, not a "starter key." A Luis portálonmegtalálhatja az alkalmazás kulcsai és végpontok lapján (a kezelésalatt).You can find it on your app's Keys and Endpoints page (under Manage) in the LUIS portal.
    YourLanguageUnderstandingServiceRegion Annak a régiónak a rövid azonosítója, amelyben a LUIS-előfizetése van, például az USA nyugati régiója esetén westus.The short identifier for the region your LUIS subscription is in, such as westus for West US. Lásd: Régiók.See Regions.
    YourLanguageUnderstandingAppId A LUIS-app azonosítója.The LUIS app ID. A Luis portálonmegtalálhatja az alkalmazás Beállítások lapján.You can find it on your app's Settings page in the LUIS portal.

Ezekkel a módosításokkal létrehozhatja (vezérlő + SHIFT + B) és futtathatja (F5) az oktatóanyag-alkalmazást.With these changes made, you can build (Control+Shift+B) and run (F5) the tutorial application. Ha a rendszer kéri, próbálja meg "a fények kikapcsolása" kifejezést a számítógép mikrofonjában.When you're prompted, try saying "Turn off the lights" into your PC's microphone. Az alkalmazás megjeleníti az eredményt a konzol ablakban.The application displays the result in the console window.

A kód ismertetése a következő szakaszokban szerepel.The following sections include a discussion of the code.

Szándékfelismerő létrehozásaCreate an intent recognizer

Először létre kell hoznia egy beszédfelismerési konfigurációt a LUIS Endpoint kulcsból és régióból.First, you need to create a speech configuration from your LUIS endpoint key and region. A beszédfelismerési konfigurációk segítségével felismerőket hozhat létre a Speech SDK különböző képességeihez.You can use speech configurations to create recognizers for the various capabilities of the Speech SDK. A beszédfelismerési konfiguráció több módon is megadhatja a használni kívánt előfizetést. Itt FromSubscriptiont használunk, amely az előfizetési kulcsot és régiót veszi igénybe.The speech configuration has multiple ways to specify the subscription you want to use; here, we use FromSubscription, which takes the subscription key and region.

Megjegyzés

Használja a LUIS-előfizetés kulcsát és régióját, nem pedig a Speech Services-előfizetést.Use the key and region of your LUIS subscription, not of a Speech Services subscription.

A következő lépés egy szándékfelismerő létrehozása a new IntentRecognizer(config) metódus használatával.Next, create an intent recognizer using new IntentRecognizer(config). Mivel a konfiguráció már tudja, hogy melyik előfizetést szeretné használni, nem kell újra megadnia az előfizetési kulcsot és a végpontot a felismerő létrehozásakor.Since the configuration already knows which subscription to use, you don't need to specify the subscription key and endpoint again when creating the recognizer.

LUIS-modell importálása és szándékok hozzáadásaImport a LUIS model and add intents

Most importálja a modellt a LUIS-appból a LanguageUnderstandingModel.FromAppId() használatával, majd adja hozzá azokat a LUIS-szándékokat, amelyeket a felismerő AddIntent() metódusával fel szeretne ismerni.Now import the model from the LUIS app using LanguageUnderstandingModel.FromAppId() and add the LUIS intents that you wish to recognize via the recognizer's AddIntent() method. Ezzel a két lépéssel növelheti a beszédfelismerés pontosságát, ha megadja azokat a szavakat, amelyeket a felhasználó a kérésekben nagy valószínűséggel használni fog.These two steps improve the accuracy of speech recognition by indicating words that the user is likely to use in their requests. Nem kell hozzáadnia az összes alkalmazást, ha az alkalmazásban nem kell felismernie őket.You don't have to add all the app's intents if you don't need to recognize them all in your application.

A leképezések hozzáadásához három argumentumot kell megadnia: a LUIS modellt (amelyet létrehoztak, és a neve model), a szándék neve és a szándék azonosítója.To add intents, you must provide three arguments: the LUIS model (which has been created and is named model), the intent name, and an intent ID. Az azonosító és a név közötti különbség a következő.The difference between the ID and the name is as follows.

AddIntent() argumentumAddIntent() argument CélPurpose
intentNameintentName A szándék LUIS-appban meghatározott neve.The name of the intent as defined in the LUIS app. Ennek az értéknek pontosan egyeznie kell a LUIS-cél nevével.This value must match the LUIS intent name exactly.
intentIDintentID A Speech SDK által felismert szándékhoz rendelt azonosító.An ID assigned to a recognized intent by the Speech SDK. Ez az érték lehet bármilyen hasonló; nem kell megegyeznie a cél nevével a LUIS alkalmazásban meghatározottak szerint.This value can be whatever you like; it doesn't need to correspond to the intent name as defined in the LUIS app. Ha például ugyanaz a kód több szándékot is kezel, használhatja hozzájuk ugyanazt az azonosítót.If multiple intents are handled by the same code, for instance, you could use the same ID for them.

A Home Automation LUIS alkalmazásnak két célja van: egyet az eszköz bekapcsolásához, egy másikat pedig egy eszköz kikapcsolásához.The Home Automation LUIS app has two intents: one for turning on a device, and another for turning off a device. A felismerő az alábbi sorokkal adható hozzá a felismerőhöz. Cserélje le a AddIntent metódus három RecognizeIntentAsync() sorát erre a kódra.The lines below add these intents to the recognizer; replace the three AddIntent lines in the RecognizeIntentAsync() method with this code.

recognizer.AddIntent(model, "HomeAutomation.TurnOff", "off");
recognizer.AddIntent(model, "HomeAutomation.TurnOn", "on");

Az egyéni leképezések hozzáadása helyett a AddAllIntents metódussal is hozzáadhatja a modellben található összes leképezést a felismerőhöz.Instead of adding individual intents, you can also use the AddAllIntents method to add all the intents in a model to the recognizer.

Felismerés indításaStart recognition

A felismerő létrehozása és a szándékok hozzáadása után elkezdődhet a felismerés.With the recognizer created and the intents added, recognition can begin. A Speech SDK az egyszeri és folyamatos felismerést is támogatja.The Speech SDK supports both single-shot and continuous recognition.

Felismerési módRecognition mode Meghívandó metódusokMethods to call EredményResult
EgyszeriSingle-shot RecognizeOnceAsync() Egyszer kimondott szöveg alapján visszaadja a felismert szándékot (ha van).Returns the recognized intent, if any, after one utterance.
FolyamatosContinuous StartContinuousRecognitionAsync()
StopContinuousRecognitionAsync()
Több hosszúságú kimondott szöveg felismerése; eseményeket bocsát ki (például IntermediateResultReceived), ha az eredmények elérhetők.Recognizes multiple utterances; emits events (for example, IntermediateResultReceived) when results are available.

Az oktatóalkalmazás az egyszeri módot használja, ezért a felismerés megkezdéséhez a RecognizeOnceAsync() metódust alkalmazza.The tutorial application uses single-shot mode and so calls RecognizeOnceAsync() to begin recognition. Az eredmény egy IntentRecognitionResult objektum, amely a felismert szándékra vonatkozó információkat tartalmaz.The result is an IntentRecognitionResult object containing information about the intent recognized. A LUIS JSON-választ kinyerheti a következő kifejezés használatával:You extract the LUIS JSON response by using the following expression:

result.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult)

Az oktatóanyag-alkalmazás nem elemzi a JSON-eredményt.The tutorial application doesn't parse the JSON result. Csak a JSON-szöveget jeleníti meg a konzol ablakban.It only displays the JSON text in the console window.

Egyetlen LUIS-felismerés eredményei

Adja meg a felismerés nyelvétSpecify recognition language

A LUIS alapértelmezés szerint amerikai angol (en-us) nyelven végzi a szándékfelismerést.By default, LUIS recognizes intents in US English (en-us). A területibeállítás-kódnak a beszédkonfiguráció SpeechRecognitionLanguage tulajdonságához való hozzárendelésével más nyelveken is végezhet szándékfelismerést.By assigning a locale code to the SpeechRecognitionLanguage property of the speech configuration, you can recognize intents in other languages. Például német nyelven végezhet szándékfelismerést, ha a felismerő létrehozása előtt az oktatóalkalmazáshoz hozzáadja a config.SpeechRecognitionLanguage = "de-de"; argumentumot.For example, add config.SpeechRecognitionLanguage = "de-de"; in our tutorial application before creating the recognizer to recognize intents in German. További információ: támogatott nyelvek.For more information, see Supported Languages.

Folyamatos felismerés fájlbólContinuous recognition from a file

Az alábbi kód szemlélteti a Speech SDK-val való szándékfelismerés két további képességét.The following code illustrates two additional capabilities of intent recognition using the Speech SDK. Az első a korábban említett folyamatos felismerés, amelynek esetén a felismerő eseményeket bocsát ki, ha eredmények érhetők el.The first, previously mentioned, is continuous recognition, where the recognizer emits events when results are available. Ezeket az események aztán feldolgozhatók az Ön által megadott eseménykezelőkkel.These events can then be processed by event handlers that you provide. A folyamatos felismeréssel a felismerő StartContinuousRecognitionAsync() metódusának meghívásával elindíthatja az elismerést RecognizeOnceAsync()helyett.With continuous recognition, you call the recognizer's StartContinuousRecognitionAsync() method to start recognition instead of RecognizeOnceAsync().

A másik képesség a feldolgozandó beszédet tartalmazó hangfelvétel leolvasása egy WAV-fájlból.The other capability is reading the audio containing the speech to be processed from a WAV file. A megvalósítás magában foglalja egy hangkonfiguráció létrehozását, amelyet a rendszer a szándék-felismerő létrehozásakor használhat.Implementation involves creating an audio configuration that can be used when creating the intent recognizer. A fájlnak egycsatornásnak (mono) kell lennie, 16 kHz-es mintavételi aránnyal.The file must be single-channel (mono) with a sampling rate of 16 kHz.

A funkciók kipróbálásához törölje vagy véleményezze a RecognizeIntentAsync() metódus törzsét, és adja hozzá a következő kódot a helyére.To try out these features, delete or comment out the body of the RecognizeIntentAsync() method, and add the following code in its place.

// 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").
var config = SpeechConfig.FromSubscription("YourLanguageUnderstandingSubscriptionKey", "YourLanguageUnderstandingServiceRegion");

// Creates an intent recognizer using file as audio input.
// Replace with your own audio file name.
using (var audioInput = AudioConfig.FromWavFileInput("whatstheweatherlike.wav"))
{
    using (var recognizer = new IntentRecognizer(config, audioInput))
    {
        // The TaskCompletionSource to stop recognition.
        var stopRecognition = new TaskCompletionSource<int>();

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

        // Subscribes to events.
        recognizer.Recognizing += (s, e) => {
            Console.WriteLine($"RECOGNIZING: Text={e.Result.Text}");
        };

        recognizer.Recognized += (s, e) => {
            if (e.Result.Reason == ResultReason.RecognizedIntent)
            {
                Console.WriteLine($"RECOGNIZED: Text={e.Result.Text}");
                Console.WriteLine($"    Intent Id: {e.Result.IntentId}.");
                Console.WriteLine($"    Language Understanding JSON: {e.Result.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult)}.");
            }
            else if (e.Result.Reason == ResultReason.RecognizedSpeech)
            {
                Console.WriteLine($"RECOGNIZED: Text={e.Result.Text}");
                Console.WriteLine($"    Intent not recognized.");
            }
            else if (e.Result.Reason == ResultReason.NoMatch)
            {
                Console.WriteLine($"NOMATCH: Speech could not be recognized.");
            }
        };

        recognizer.Canceled += (s, e) => {
            Console.WriteLine($"CANCELED: Reason={e.Reason}");

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

            stopRecognition.TrySetResult(0);
        };

        recognizer.SessionStarted += (s, e) => {
            Console.WriteLine("\n    Session started event.");
        };

        recognizer.SessionStopped += (s, e) => {
            Console.WriteLine("\n    Session stopped event.");
            Console.WriteLine("\nStop recognition.");
            stopRecognition.TrySetResult(0);
        };


        // Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
        Console.WriteLine("Say something...");
        await recognizer.StartContinuousRecognitionAsync().ConfigureAwait(false);

        // Waits for completion.
        // Use Task.WaitAny to keep the task rooted.
        Task.WaitAny(new[] { stopRecognition.Task });

        // Stops recognition.
        await recognizer.StopContinuousRecognitionAsync().ConfigureAwait(false);
    }
}

Módosítsa a kódot úgy, hogy benne legyen a LUIS végpontkulcsa, a régió és az app azonosítója, illetve hogy az előzőekhez hasonlóan hozzáadhassa az otthonautomatizálási szándékokat.Revise the code to include your LUIS endpoint key, region, and app ID and to add the Home Automation intents, as before. Módosítsa whatstheweatherlike.wav a rögzített hangfájl nevére.Change whatstheweatherlike.wav to the name of your recorded audio file. Ezután hozza létre, másolja a hangfájlt a Build könyvtárba, és futtassa az alkalmazást.Then build, copy the audio file to the build directory, and run the application.

Ha például a "fények kikapcsolása", a pause, majd a "fények bekapcsolása" lehetőséget választja a rögzített hangfájlban, a konzol kimenete az alábbihoz hasonló lehet:For example, if you say "Turn off the lights", pause, and then say "Turn on the lights" in your recorded audio file, console output similar to the following may appear:

A LUIS hangfájl-felismerési eredményei

A minták beszerzéseGet the samples

A legújabb minták, lásd: a Cognitive Services beszédfelismerő SDK minta kódtár a Githubon.For the latest samples, see the Cognitive Services Speech SDK sample code repository on GitHub.

Keresse meg a kódot ebből a cikkből a Samples/csharp/sharedcontent/Console mappában.Look for the code from this article in the samples/csharp/sharedcontent/console folder.

További lépésekNext steps