Delen via


Quickstart: Intenties herkennen met Conversational Language Understanding

Referentiedocumentatiepakket (NuGet) | Aanvullende voorbeelden op GitHub |

In deze quickstart gebruikt u spraak- en taalservices om intenties te herkennen van audiogegevens die zijn vastgelegd vanuit een microfoon. In het bijzonder gebruikt u de Speech-service om spraak te herkennen en een CLU-model (Conversational Language Understanding) om intenties te identificeren.

Belangrijk

Conversational Language Understanding (CLU) is beschikbaar voor C# en C++ met de Speech SDK versie 1.25 of hoger.

Vereisten

  • Een Azure-abonnement. U kunt er gratis een maken.
  • Maak een taalresource in Azure Portal.
  • Haal de taalresourcesleutel en het eindpunt op. Nadat uw taalresource is geïmplementeerd, selecteert u Ga naar de resource om sleutels weer te geven en te beheren.
  • Maak een AI Services-resource voor Spraak in Azure Portal.
  • Haal de spraakresourcesleutel en -regio op. Nadat uw Spraak-resource is geïmplementeerd, selecteert u Ga naar de resource om sleutels weer te geven en te beheren.

De omgeving instellen

De Speech SDK is beschikbaar als een NuGet-pakket en implementeert .NET Standard 2.0. U installeert de Speech SDK verderop in deze handleiding, maar controleer eerst de SDK-installatiehandleiding voor meer vereisten.

Omgevingsvariabelen instellen

In dit voorbeeld zijn omgevingsvariabelen met de naam LANGUAGE_KEY, LANGUAGE_ENDPOINT, SPEECH_KEYen SPEECH_REGION.

Uw toepassing moet worden geverifieerd voor toegang tot Azure AI-servicesbronnen. In dit artikel leest u hoe u omgevingsvariabelen gebruikt om uw referenties op te slaan. Vervolgens hebt u vanuit uw code toegang tot de omgevingsvariabelen om uw toepassing te verifiëren. Gebruik voor productie een veiligere manier om uw referenties op te slaan en te openen.

Belangrijk

We raden Microsoft Entra ID-verificatie aan met beheerde identiteiten voor Azure-resources om te voorkomen dat referenties worden opgeslagen met uw toepassingen die in de cloud worden uitgevoerd.

Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u API-sleutels gebruikt, slaat u deze veilig op in Azure Key Vault, draait u de sleutels regelmatig en beperkt u de toegang tot Azure Key Vault met behulp van op rollen gebaseerd toegangsbeheer en netwerktoegangsbeperkingen. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.

Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-services.

Als u de omgevingsvariabelen wilt instellen, opent u een consolevenster en volgt u de instructies voor uw besturingssysteem en ontwikkelomgeving.

  • Als u de LANGUAGE_KEY omgevingsvariabele wilt instellen, vervangt u deze door your-language-key een van de sleutels voor uw resource.
  • Als u de LANGUAGE_ENDPOINT omgevingsvariabele wilt instellen, vervangt u deze door your-language-endpoint een van de regio's voor uw resource.
  • Als u de SPEECH_KEY omgevingsvariabele wilt instellen, vervangt u deze door your-speech-key een van de sleutels voor uw resource.
  • Als u de SPEECH_REGION omgevingsvariabele wilt instellen, vervangt u deze door your-speech-region een van de regio's voor uw resource.
setx LANGUAGE_KEY your-language-key
setx LANGUAGE_ENDPOINT your-language-endpoint
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region

Notitie

Als u alleen toegang nodig hebt tot de omgevingsvariabele in de huidige actieve console, kunt u de omgevingsvariabele instellen in set plaats van setx.

Nadat u de omgevingsvariabelen hebt toegevoegd, moet u mogelijk alle actieve programma's opnieuw opstarten die de omgevingsvariabele moeten lezen, inclusief het consolevenster. Als u bijvoorbeeld Visual Studio als editor gebruikt, start u Visual Studio opnieuw voordat u het voorbeeld uitvoert.

Een Conversational Language Understanding-project maken

Zodra u een taalresource hebt gemaakt, maakt u een gesprekstaalkennisproject in Language Studio. Een project is een werkgebied voor het bouwen van uw aangepaste ML-modellen op basis van uw gegevens. Uw project kan alleen worden geopend door u en anderen die toegang hebben tot de taalresource die wordt gebruikt.

Ga naar Language Studio en meld u aan met uw Azure-account.

Een gesprekstaalkennisproject maken

Voor deze quickstart kunt u dit voorbeeldproject voor huisautomatisering downloaden en importeren. Dit project kan de beoogde opdrachten voorspellen op basis van gebruikersinvoer, zoals het in- en uitschakelen van lichten.

  1. Selecteer Onder de sectie Vragen begrijpen en gesprekstaal van Language Studio de optie Begrip van conversationele taal.

    Een schermopname van de locatie van Custom Language Understanding op de landingspagina van Language Studio.

  2. Hiermee gaat u naar de pagina Conversational Language Understanding-projecten . Selecteer Importeren naast de knop Nieuw project maken.

    Een schermopname van de gespreksprojectpagina in Language Studio.

  3. Upload het JSON-bestand dat u wilt importeren in het venster dat wordt weergegeven. Zorg ervoor dat uw bestand de ondersteunde JSON-indeling volgt.

Zodra het uploaden is voltooid, komt u terecht op de pagina Schemadefinitie . Voor deze quickstart is het schema al gebouwd en zijn utterances al gelabeld met intenties en entiteiten.

Uw model trainen

Wanneer u een project hebt gemaakt, moet u doorgaans een schema maken en utterances labelen. Voor deze quickstart hebben we al een gereed project geïmporteerd met een gebouwd schema en gelabelde utterances.

Als u een model wilt trainen, moet u een trainingstaak starten. De uitvoer van een geslaagde trainingstaak is uw getrainde model.

Ga als volgende te werk om uw model te trainen vanuit Language Studio:

  1. Selecteer Model trainen in het menu aan de linkerkant.

  2. Selecteer Een trainingstaak starten in het bovenste menu.

  3. Selecteer Een nieuw model trainen en voer een nieuwe modelnaam in het tekstvak in. Als u een bestaand model anders wilt vervangen door een model dat is getraind op de nieuwe gegevens, selecteert u Een bestaand model overschrijven en selecteert u vervolgens een bestaand model . Het overschrijven van een getraind model kan niet ongedaan worden gemaakt, maar dit heeft geen invloed op uw geïmplementeerde modellen totdat u het nieuwe model implementeert.

  4. Selecteer de trainingsmodus. U kunt Standard-training kiezen voor een snellere training, maar deze is alleen beschikbaar voor engels. U kunt ook geavanceerde training kiezen die wordt ondersteund voor andere talen en meertalige projecten, maar het gaat om langere trainingstijden. Meer informatie over trainingsmodi.

  5. Selecteer een methode voor gegevenssplitsing . U kunt de testset automatisch splitsen op basis van trainingsgegevens , waarbij het systeem uw uitingen splitst tussen de trainings- en testsets, volgens de opgegeven percentages. Of u kunt een handmatige splitsing van trainings- en testgegevens gebruiken. Deze optie is alleen ingeschakeld als u uitingen hebt toegevoegd aan uw testset wanneer u uw utterances hebt gelabeld.

  6. Selecteer de knop Trainen .

    Een schermopname van de trainingspagina in Language Studio.

  7. Selecteer de id van de trainingstaak in de lijst. Er wordt een deelvenster weergegeven waarin u de voortgang van de training, de taakstatus en andere details voor deze taak kunt controleren.

    Notitie

    • Alleen voltooide trainingstaken genereren modellen.
    • Training kan enige tijd duren tussen een paar minuten en een paar uur op basis van het aantal uitingen.
    • U kunt slechts één trainingstaak tegelijk uitvoeren. U kunt pas andere trainingstaken binnen hetzelfde project starten als de actieve taak is voltooid.
    • De machine learning die wordt gebruikt om modellen te trainen, wordt regelmatig bijgewerkt. Als u wilt trainen op een eerdere configuratieversie, selecteert u hier om te wijzigen op de pagina Een trainingstaak starten en kiest u een eerdere versie.

Uw model implementeren

Over het algemeen controleert u na het trainen van een model de evaluatiedetails. In deze quickstart implementeert u uw model en stelt u het model beschikbaar om te proberen in Language Studio of kunt u de voorspellings-API aanroepen.

Uw model implementeren vanuit Language Studio:

  1. Selecteer Een model implementeren in het menu aan de linkerkant.

  2. Selecteer Implementatie toevoegen om de wizard Implementatie toevoegen te starten.

    Een schermopname van de knop voor modelimplementatie in Language Studio.

  3. Selecteer Een nieuwe implementatienaam maken om een nieuwe implementatie te maken en wijs een getraind model toe vanuit de vervolgkeuzelijst hieronder. U kunt anders een bestaande implementatienaam overschrijven selecteren om het model dat wordt gebruikt door een bestaande implementatie effectief te vervangen.

    Notitie

    Het overschrijven van een bestaande implementatie vereist geen wijzigingen in uw voorspellings-API-aanroep , maar de resultaten die u krijgt, zijn gebaseerd op het zojuist toegewezen model.

    Een schermopname van het scherm voor het toevoegen van een nieuwe implementatie in Language Studio.

  4. Selecteer een getraind model in de vervolgkeuzelijst Model .

  5. Selecteer Implementeren om de implementatietaak te starten.

  6. Nadat de implementatie is voltooid, wordt er een vervaldatum weergegeven naast de implementatie. Het verloop van de implementatie is wanneer uw geïmplementeerde model niet beschikbaar is om te worden gebruikt voor voorspelling. Dit gebeurt meestal twaalf maanden nadat een trainingsconfiguratie is verlopen.

In de volgende sectie gebruikt u de projectnaam en de implementatienaam.

Intenties herkennen vanuit een microfoon

Volg deze stappen om een nieuwe consoletoepassing te maken en de Speech SDK te installeren.

  1. Open een opdrachtprompt waar u het nieuwe project wilt gebruiken en maak een consoletoepassing met de .NET CLI. Het Program.cs bestand moet worden gemaakt in de projectmap.

    dotnet new console
    
  2. Installeer de Speech SDK in uw nieuwe project met de .NET CLI.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. Vervang de inhoud door Program.cs de volgende code.

    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    using Microsoft.CognitiveServices.Speech.Intent;
    
    class Program 
    {
        // This example requires environment variables named:
        // "LANGUAGE_KEY", "LANGUAGE_ENDPOINT", "SPEECH_KEY", and "SPEECH_REGION"
        static string languageKey = Environment.GetEnvironmentVariable("LANGUAGE_KEY");
        static string languageEndpoint = Environment.GetEnvironmentVariable("LANGUAGE_ENDPOINT");
        static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY");
        static string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION");
    
        // Your CLU project name and deployment name.
        static string cluProjectName = "YourProjectNameGoesHere";
        static string cluDeploymentName = "YourDeploymentNameGoesHere";
    
        async static Task Main(string[] args)
        {
            var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion);        
            speechConfig.SpeechRecognitionLanguage = "en-US";
    
            using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
    
            // Creates an intent recognizer in the specified language using microphone as audio input.
            using (var intentRecognizer = new IntentRecognizer(speechConfig, audioConfig))
            {
                var cluModel = new ConversationalLanguageUnderstandingModel(
                    languageKey,
                    languageEndpoint,
                    cluProjectName, 
                    cluDeploymentName);
                var collection = new LanguageUnderstandingModelCollection();
                collection.Add(cluModel);
                intentRecognizer.ApplyLanguageModels(collection);
    
                Console.WriteLine("Speak into your microphone.");
                var recognitionResult = await intentRecognizer.RecognizeOnceAsync().ConfigureAwait(false);
    
                // Checks result.
                if (recognitionResult.Reason == ResultReason.RecognizedIntent)
                {
                    Console.WriteLine($"RECOGNIZED: Text={recognitionResult.Text}");
                    Console.WriteLine($"    Intent Id: {recognitionResult.IntentId}.");
                    Console.WriteLine($"    Language Understanding JSON: {recognitionResult.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult)}.");
                }
                else if (recognitionResult.Reason == ResultReason.RecognizedSpeech)
                {
                    Console.WriteLine($"RECOGNIZED: Text={recognitionResult.Text}");
                    Console.WriteLine($"    Intent not recognized.");
                }
                else if (recognitionResult.Reason == ResultReason.NoMatch)
                {
                    Console.WriteLine($"NOMATCH: Speech could not be recognized.");
                }
                else if (recognitionResult.Reason == ResultReason.Canceled)
                {
                    var cancellation = CancellationDetails.FromResult(recognitionResult);
                    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?");
                    }
                }
            }
        }
    }
    
  4. Stel Program.cs de cluProjectName en cluDeploymentName variabelen in op de namen van uw project en implementatie. Zie Een Conversational Language Understanding-project maken voor informatie over het maken van een CLU-project en -implementatie.

  5. Als u de taal voor spraakherkenning wilt wijzigen, vervangt u deze door en-US een andere ondersteunde taal. Bijvoorbeeld voor es-ES Spaans (Spanje). De standaardtaal is en-US als u geen taal opgeeft. Zie taalidentificatie voor meer informatie over het identificeren van een van meerdere talen die kunnen worden gesproken.

Voer de nieuwe consoletoepassing uit om spraakherkenning vanaf een microfoon te starten:

dotnet run

Belangrijk

Zorg ervoor dat u de LANGUAGE_KEYomgevingsvariabelen en LANGUAGE_ENDPOINTSPEECH_REGIONSPEECH_KEYomgevingsvariabelen instelt zoals hierboven beschreven. Als u deze variabelen niet instelt, mislukt het voorbeeld met een foutbericht.

Spreek in uw microfoon wanneer u hierom wordt gevraagd. Wat u spreekt, moet als tekst worden uitgevoerd:

Speak into your microphone.
RECOGNIZED: Text=Turn on the lights.
    Intent Id: HomeAutomation.TurnOn.
    Language Understanding JSON: {"kind":"ConversationResult","result":{"query":"turn on the lights","prediction":{"topIntent":"HomeAutomation.TurnOn","projectKind":"Conversation","intents":[{"category":"HomeAutomation.TurnOn","confidenceScore":0.97712576},{"category":"HomeAutomation.TurnOff","confidenceScore":0.8431633},{"category":"None","confidenceScore":0.782861}],"entities":[{"category":"HomeAutomation.DeviceType","text":"lights","offset":12,"length":6,"confidenceScore":1,"extraInformation":[{"extraInformationKind":"ListKey","key":"light"}]}]}}}.

Notitie

Ondersteuning voor het JSON-antwoord voor CLU via de eigenschap LanguageUnderstandingServiceResponse_JsonResult is toegevoegd in de Speech SDK-versie 1.26.

De intenties worden geretourneerd in de waarschijnlijkheidsvolgorde van de meest waarschijnlijke waarschijnlijkheid. Hier volgt een opgemaakte versie van de JSON-uitvoer met topIntentHomeAutomation.TurnOn een betrouwbaarheidsscore van 0,97712576 (97,71%). De tweede waarschijnlijke intentie is HomeAutomation.TurnOff mogelijk met een betrouwbaarheidsscore van 0,8985081 (84,31%).

{
  "kind": "ConversationResult",
  "result": {
    "query": "turn on the lights",
    "prediction": {
      "topIntent": "HomeAutomation.TurnOn",
      "projectKind": "Conversation",
      "intents": [
        {
          "category": "HomeAutomation.TurnOn",
          "confidenceScore": 0.97712576
        },
        {
          "category": "HomeAutomation.TurnOff",
          "confidenceScore": 0.8431633
        },
        {
          "category": "None",
          "confidenceScore": 0.782861
        }
      ],
      "entities": [
        {
          "category": "HomeAutomation.DeviceType",
          "text": "lights",
          "offset": 12,
          "length": 6,
          "confidenceScore": 1,
          "extraInformation": [
            {
              "extraInformationKind": "ListKey",
              "key": "light"
            }
          ]
        }
      ]
    }
  }
}

Opmerkingen

Nu u de quickstart hebt voltooid, zijn hier enkele aanvullende overwegingen:

  • In dit voorbeeld wordt de RecognizeOnceAsync bewerking gebruikt om utterances van maximaal 30 seconden te transcriberen of totdat stilte wordt gedetecteerd. Zie Spraak herkennen voor informatie over continue herkenning voor langere audio, inclusief meertalige gesprekken.
  • Als u spraak uit een audiobestand wilt herkennen, gebruikt FromWavFileInput u in plaats van FromDefaultMicrophoneInput:
    using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
    
  • Voor gecomprimeerde audiobestanden zoals MP4 installeert u GStreamer en gebruikt PullAudioInputStream of PushAudioInputStream. Zie Gecomprimeerde invoeraudio gebruiken voor meer informatie.

Resources opschonen

U kunt de Azure-portal of Azure CLI (Opdrachtregelinterface) gebruiken om de taal- en spraakresources te verwijderen die u hebt gemaakt.

Referentiedocumentatiepakket (NuGet) | Aanvullende voorbeelden op GitHub |

In deze quickstart gebruikt u spraak- en taalservices om intenties te herkennen van audiogegevens die zijn vastgelegd vanuit een microfoon. In het bijzonder gebruikt u de Speech-service om spraak te herkennen en een CLU-model (Conversational Language Understanding) om intenties te identificeren.

Belangrijk

Conversational Language Understanding (CLU) is beschikbaar voor C# en C++ met de Speech SDK versie 1.25 of hoger.

Vereisten

  • Een Azure-abonnement. U kunt er gratis een maken.
  • Maak een taalresource in Azure Portal.
  • Haal de taalresourcesleutel en het eindpunt op. Nadat uw taalresource is geïmplementeerd, selecteert u Ga naar de resource om sleutels weer te geven en te beheren.
  • Maak een AI Services-resource voor Spraak in Azure Portal.
  • Haal de spraakresourcesleutel en -regio op. Nadat uw Spraak-resource is geïmplementeerd, selecteert u Ga naar de resource om sleutels weer te geven en te beheren.

De omgeving instellen

De Speech SDK is beschikbaar als een NuGet-pakket en implementeert .NET Standard 2.0. U installeert de Speech SDK verderop in deze handleiding, maar controleer eerst de SDK-installatiehandleiding voor meer vereisten.

Omgevingsvariabelen instellen

In dit voorbeeld zijn omgevingsvariabelen met de naam LANGUAGE_KEY, LANGUAGE_ENDPOINT, SPEECH_KEYen SPEECH_REGION.

Uw toepassing moet worden geverifieerd voor toegang tot Azure AI-servicesbronnen. In dit artikel leest u hoe u omgevingsvariabelen gebruikt om uw referenties op te slaan. Vervolgens hebt u vanuit uw code toegang tot de omgevingsvariabelen om uw toepassing te verifiëren. Gebruik voor productie een veiligere manier om uw referenties op te slaan en te openen.

Belangrijk

We raden Microsoft Entra ID-verificatie aan met beheerde identiteiten voor Azure-resources om te voorkomen dat referenties worden opgeslagen met uw toepassingen die in de cloud worden uitgevoerd.

Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u API-sleutels gebruikt, slaat u deze veilig op in Azure Key Vault, draait u de sleutels regelmatig en beperkt u de toegang tot Azure Key Vault met behulp van op rollen gebaseerd toegangsbeheer en netwerktoegangsbeperkingen. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.

Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-services.

Als u de omgevingsvariabelen wilt instellen, opent u een consolevenster en volgt u de instructies voor uw besturingssysteem en ontwikkelomgeving.

  • Als u de LANGUAGE_KEY omgevingsvariabele wilt instellen, vervangt u deze door your-language-key een van de sleutels voor uw resource.
  • Als u de LANGUAGE_ENDPOINT omgevingsvariabele wilt instellen, vervangt u deze door your-language-endpoint een van de regio's voor uw resource.
  • Als u de SPEECH_KEY omgevingsvariabele wilt instellen, vervangt u deze door your-speech-key een van de sleutels voor uw resource.
  • Als u de SPEECH_REGION omgevingsvariabele wilt instellen, vervangt u deze door your-speech-region een van de regio's voor uw resource.
setx LANGUAGE_KEY your-language-key
setx LANGUAGE_ENDPOINT your-language-endpoint
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region

Notitie

Als u alleen toegang nodig hebt tot de omgevingsvariabele in de huidige actieve console, kunt u de omgevingsvariabele instellen in set plaats van setx.

Nadat u de omgevingsvariabelen hebt toegevoegd, moet u mogelijk alle actieve programma's opnieuw opstarten die de omgevingsvariabele moeten lezen, inclusief het consolevenster. Als u bijvoorbeeld Visual Studio als editor gebruikt, start u Visual Studio opnieuw voordat u het voorbeeld uitvoert.

Een Conversational Language Understanding-project maken

Zodra u een taalresource hebt gemaakt, maakt u een gesprekstaalkennisproject in Language Studio. Een project is een werkgebied voor het bouwen van uw aangepaste ML-modellen op basis van uw gegevens. Uw project kan alleen worden geopend door u en anderen die toegang hebben tot de taalresource die wordt gebruikt.

Ga naar Language Studio en meld u aan met uw Azure-account.

Een gesprekstaalkennisproject maken

Voor deze quickstart kunt u dit voorbeeldproject voor huisautomatisering downloaden en importeren. Dit project kan de beoogde opdrachten voorspellen op basis van gebruikersinvoer, zoals het in- en uitschakelen van lichten.

  1. Selecteer Onder de sectie Vragen begrijpen en gesprekstaal van Language Studio de optie Begrip van conversationele taal.

    Een schermopname van de locatie van Custom Language Understanding op de landingspagina van Language Studio.

  2. Hiermee gaat u naar de pagina Conversational Language Understanding-projecten . Selecteer Importeren naast de knop Nieuw project maken.

    Een schermopname van de gespreksprojectpagina in Language Studio.

  3. Upload het JSON-bestand dat u wilt importeren in het venster dat wordt weergegeven. Zorg ervoor dat uw bestand de ondersteunde JSON-indeling volgt.

Zodra het uploaden is voltooid, komt u terecht op de pagina Schemadefinitie . Voor deze quickstart is het schema al gebouwd en zijn utterances al gelabeld met intenties en entiteiten.

Uw model trainen

Wanneer u een project hebt gemaakt, moet u doorgaans een schema maken en utterances labelen. Voor deze quickstart hebben we al een gereed project geïmporteerd met een gebouwd schema en gelabelde utterances.

Als u een model wilt trainen, moet u een trainingstaak starten. De uitvoer van een geslaagde trainingstaak is uw getrainde model.

Ga als volgende te werk om uw model te trainen vanuit Language Studio:

  1. Selecteer Model trainen in het menu aan de linkerkant.

  2. Selecteer Een trainingstaak starten in het bovenste menu.

  3. Selecteer Een nieuw model trainen en voer een nieuwe modelnaam in het tekstvak in. Als u een bestaand model anders wilt vervangen door een model dat is getraind op de nieuwe gegevens, selecteert u Een bestaand model overschrijven en selecteert u vervolgens een bestaand model . Het overschrijven van een getraind model kan niet ongedaan worden gemaakt, maar dit heeft geen invloed op uw geïmplementeerde modellen totdat u het nieuwe model implementeert.

  4. Selecteer de trainingsmodus. U kunt Standard-training kiezen voor een snellere training, maar deze is alleen beschikbaar voor engels. U kunt ook geavanceerde training kiezen die wordt ondersteund voor andere talen en meertalige projecten, maar het gaat om langere trainingstijden. Meer informatie over trainingsmodi.

  5. Selecteer een methode voor gegevenssplitsing . U kunt de testset automatisch splitsen op basis van trainingsgegevens , waarbij het systeem uw uitingen splitst tussen de trainings- en testsets, volgens de opgegeven percentages. Of u kunt een handmatige splitsing van trainings- en testgegevens gebruiken. Deze optie is alleen ingeschakeld als u uitingen hebt toegevoegd aan uw testset wanneer u uw utterances hebt gelabeld.

  6. Selecteer de knop Trainen .

    Een schermopname van de trainingspagina in Language Studio.

  7. Selecteer de id van de trainingstaak in de lijst. Er wordt een deelvenster weergegeven waarin u de voortgang van de training, de taakstatus en andere details voor deze taak kunt controleren.

    Notitie

    • Alleen voltooide trainingstaken genereren modellen.
    • Training kan enige tijd duren tussen een paar minuten en een paar uur op basis van het aantal uitingen.
    • U kunt slechts één trainingstaak tegelijk uitvoeren. U kunt pas andere trainingstaken binnen hetzelfde project starten als de actieve taak is voltooid.
    • De machine learning die wordt gebruikt om modellen te trainen, wordt regelmatig bijgewerkt. Als u wilt trainen op een eerdere configuratieversie, selecteert u hier om te wijzigen op de pagina Een trainingstaak starten en kiest u een eerdere versie.

Uw model implementeren

Over het algemeen controleert u na het trainen van een model de evaluatiedetails. In deze quickstart implementeert u uw model en stelt u het model beschikbaar om te proberen in Language Studio of kunt u de voorspellings-API aanroepen.

Uw model implementeren vanuit Language Studio:

  1. Selecteer Een model implementeren in het menu aan de linkerkant.

  2. Selecteer Implementatie toevoegen om de wizard Implementatie toevoegen te starten.

    Een schermopname van de knop voor modelimplementatie in Language Studio.

  3. Selecteer Een nieuwe implementatienaam maken om een nieuwe implementatie te maken en wijs een getraind model toe vanuit de vervolgkeuzelijst hieronder. U kunt anders een bestaande implementatienaam overschrijven selecteren om het model dat wordt gebruikt door een bestaande implementatie effectief te vervangen.

    Notitie

    Het overschrijven van een bestaande implementatie vereist geen wijzigingen in uw voorspellings-API-aanroep , maar de resultaten die u krijgt, zijn gebaseerd op het zojuist toegewezen model.

    Een schermopname van het scherm voor het toevoegen van een nieuwe implementatie in Language Studio.

  4. Selecteer een getraind model in de vervolgkeuzelijst Model .

  5. Selecteer Implementeren om de implementatietaak te starten.

  6. Nadat de implementatie is voltooid, wordt er een vervaldatum weergegeven naast de implementatie. Het verloop van de implementatie is wanneer uw geïmplementeerde model niet beschikbaar is om te worden gebruikt voor voorspelling. Dit gebeurt meestal twaalf maanden nadat een trainingsconfiguratie is verlopen.

In de volgende sectie gebruikt u de projectnaam en de implementatienaam.

Intenties herkennen vanuit een microfoon

Volg deze stappen om een nieuwe consoletoepassing te maken en de Speech SDK te installeren.

  1. Maak een nieuw C++-consoleproject in Visual Studio Community 2022 met de naam SpeechRecognition.

  2. Installeer de Speech SDK in uw nieuwe project met nuGet-pakketbeheer.

    Install-Package Microsoft.CognitiveServices.Speech
    
  3. Vervang de inhoud door SpeechRecognition.cpp de volgende code:

    #include <iostream> 
    #include <stdlib.h>
    #include <speechapi_cxx.h>
    
    using namespace Microsoft::CognitiveServices::Speech;
    using namespace Microsoft::CognitiveServices::Speech::Audio;
    using namespace Microsoft::CognitiveServices::Speech::Intent;
    
    std::string GetEnvironmentVariable(const char* name);
    
    int main()
    {
        // This example requires environment variables named:
        // "LANGUAGE_KEY", "LANGUAGE_ENDPOINT", "SPEECH_KEY", and "SPEECH_REGION"
        auto languageKey = GetEnvironmentVariable("LANGUAGE_KEY");
        auto languageEndpoint = GetEnvironmentVariable("LANGUAGE_ENDPOINT");
        auto speechKey = GetEnvironmentVariable("SPEECH_KEY");
        auto speechRegion = GetEnvironmentVariable("SPEECH_REGION");
    
        auto cluProjectName = "YourProjectNameGoesHere";
        auto cluDeploymentName = "YourDeploymentNameGoesHere";
    
        if ((size(languageKey) == 0) || (size(languageEndpoint) == 0) || (size(speechKey) == 0) || (size(speechRegion) == 0)) {
            std::cout << "Please set LANGUAGE_KEY, LANGUAGE_ENDPOINT, SPEECH_KEY, and SPEECH_REGION environment variables." << std::endl;
            return -1;
        }
    
        auto speechConfig = SpeechConfig::FromSubscription(speechKey, speechRegion);
    
        speechConfig->SetSpeechRecognitionLanguage("en-US");
    
        auto audioConfig = AudioConfig::FromDefaultMicrophoneInput();
        auto intentRecognizer = IntentRecognizer::FromConfig(speechConfig, audioConfig);
    
        std::vector<std::shared_ptr<LanguageUnderstandingModel>> models;
    
        auto cluModel = ConversationalLanguageUnderstandingModel::FromResource(
            languageKey,
            languageEndpoint,
            cluProjectName,
            cluDeploymentName);
    
        models.push_back(cluModel);
        intentRecognizer->ApplyLanguageModels(models);
    
        std::cout << "Speak into your microphone.\n";
        auto result = intentRecognizer->RecognizeOnceAsync().get();
    
        if (result->Reason == ResultReason::RecognizedIntent)
        {
            std::cout << "RECOGNIZED: Text=" << result->Text << std::endl;
            std::cout << "  Intent Id: " << result->IntentId << std::endl;
            std::cout << "  Intent Service JSON: " << result->Properties.GetProperty(PropertyId::LanguageUnderstandingServiceResponse_JsonResult) << std::endl;
        }
        else if (result->Reason == ResultReason::RecognizedSpeech)
        {
            std::cout << "RECOGNIZED: Text=" << result->Text << " (intent could not be recognized)" << std::endl;
        }
        else if (result->Reason == ResultReason::NoMatch)
        {
            std::cout << "NOMATCH: Speech could not be recognized." << std::endl;
        }
        else if (result->Reason == ResultReason::Canceled)
        {
            auto cancellation = CancellationDetails::FromResult(result);
            std::cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
    
            if (cancellation->Reason == CancellationReason::Error)
            {
                std::cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
                std::cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
                std::cout << "CANCELED: Did you update the subscription info?" << std::endl;
            }
        }
    }
    
    std::string GetEnvironmentVariable(const char* name)
    {
    #if defined(_MSC_VER)
        size_t requiredSize = 0;
        (void)getenv_s(&requiredSize, nullptr, 0, name);
        if (requiredSize == 0)
        {
            return "";
        }
        auto buffer = std::make_unique<char[]>(requiredSize);
        (void)getenv_s(&requiredSize, buffer.get(), requiredSize, name);
        return buffer.get();
    #else
        auto value = getenv(name);
        return value ? value : "";
    #endif
    }
    
  4. Stel SpeechRecognition.cpp de cluProjectName en cluDeploymentName variabelen in op de namen van uw project en implementatie. Zie Een Conversational Language Understanding-project maken voor informatie over het maken van een CLU-project en -implementatie.

  5. Als u de taal voor spraakherkenning wilt wijzigen, vervangt u deze door en-US een andere ondersteunde taal. Bijvoorbeeld voor es-ES Spaans (Spanje). De standaardtaal is en-US als u geen taal opgeeft. Zie taalidentificatie voor meer informatie over het identificeren van een van meerdere talen die kunnen worden gesproken.

Bouw uw nieuwe consoletoepassing en voer deze uit om spraakherkenning vanaf een microfoon te starten.

Belangrijk

Zorg ervoor dat u de LANGUAGE_KEYomgevingsvariabelen en LANGUAGE_ENDPOINTSPEECH_REGIONSPEECH_KEYomgevingsvariabelen instelt zoals hierboven beschreven. Als u deze variabelen niet instelt, mislukt het voorbeeld met een foutbericht.

Spreek in uw microfoon wanneer u hierom wordt gevraagd. Wat u spreekt, moet als tekst worden uitgevoerd:

Speak into your microphone.
RECOGNIZED: Text=Turn on the lights.
    Intent Id: HomeAutomation.TurnOn.
    Language Understanding JSON: {"kind":"ConversationResult","result":{"query":"turn on the lights","prediction":{"topIntent":"HomeAutomation.TurnOn","projectKind":"Conversation","intents":[{"category":"HomeAutomation.TurnOn","confidenceScore":0.97712576},{"category":"HomeAutomation.TurnOff","confidenceScore":0.8431633},{"category":"None","confidenceScore":0.782861}],"entities":[{"category":"HomeAutomation.DeviceType","text":"lights","offset":12,"length":6,"confidenceScore":1,"extraInformation":[{"extraInformationKind":"ListKey","key":"light"}]}]}}}.

Notitie

Ondersteuning voor het JSON-antwoord voor CLU via de eigenschap LanguageUnderstandingServiceResponse_JsonResult is toegevoegd in de Speech SDK-versie 1.26.

De intenties worden geretourneerd in de waarschijnlijkheidsvolgorde van de meest waarschijnlijke waarschijnlijkheid. Hier volgt een opgemaakte versie van de JSON-uitvoer met topIntentHomeAutomation.TurnOn een betrouwbaarheidsscore van 0,97712576 (97,71%). De tweede waarschijnlijke intentie is HomeAutomation.TurnOff mogelijk met een betrouwbaarheidsscore van 0,8985081 (84,31%).

{
  "kind": "ConversationResult",
  "result": {
    "query": "turn on the lights",
    "prediction": {
      "topIntent": "HomeAutomation.TurnOn",
      "projectKind": "Conversation",
      "intents": [
        {
          "category": "HomeAutomation.TurnOn",
          "confidenceScore": 0.97712576
        },
        {
          "category": "HomeAutomation.TurnOff",
          "confidenceScore": 0.8431633
        },
        {
          "category": "None",
          "confidenceScore": 0.782861
        }
      ],
      "entities": [
        {
          "category": "HomeAutomation.DeviceType",
          "text": "lights",
          "offset": 12,
          "length": 6,
          "confidenceScore": 1,
          "extraInformation": [
            {
              "extraInformationKind": "ListKey",
              "key": "light"
            }
          ]
        }
      ]
    }
  }
}

Opmerkingen

Nu u de quickstart hebt voltooid, zijn hier enkele aanvullende overwegingen:

  • In dit voorbeeld wordt de RecognizeOnceAsync bewerking gebruikt om utterances van maximaal 30 seconden te transcriberen of totdat stilte wordt gedetecteerd. Zie Spraak herkennen voor informatie over continue herkenning voor langere audio, inclusief meertalige gesprekken.
  • Als u spraak uit een audiobestand wilt herkennen, gebruikt FromWavFileInput u in plaats van FromDefaultMicrophoneInput:
    auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
    
  • Voor gecomprimeerde audiobestanden zoals MP4 installeert u GStreamer en gebruikt PullAudioInputStream of PushAudioInputStream. Zie Gecomprimeerde invoeraudio gebruiken voor meer informatie.

Resources opschonen

U kunt de Azure-portal of Azure CLI (Opdrachtregelinterface) gebruiken om de taal- en spraakresources te verwijderen die u hebt gemaakt.

Referentiedocumentatie | Aanvullende voorbeelden op GitHub

De Speech SDK voor Java biedt geen ondersteuning voor intentieherkenning met conversational language understanding (CLU). Selecteer een andere programmeertaal of de Java-verwijzing en voorbeelden die zijn gekoppeld aan het begin van dit artikel.

Volgende stappen