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_KEY
en 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 dooryour-language-key
een van de sleutels voor uw resource. - Als u de
LANGUAGE_ENDPOINT
omgevingsvariabele wilt instellen, vervangt u deze dooryour-language-endpoint
een van de regio's voor uw resource. - Als u de
SPEECH_KEY
omgevingsvariabele wilt instellen, vervangt u deze dooryour-speech-key
een van de sleutels voor uw resource. - Als u de
SPEECH_REGION
omgevingsvariabele wilt instellen, vervangt u deze dooryour-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.
Selecteer Onder de sectie Vragen begrijpen en gesprekstaal van Language Studio de optie Begrip van conversationele taal.
Hiermee gaat u naar de pagina Conversational Language Understanding-projecten . Selecteer Importeren naast de knop Nieuw project maken.
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:
Selecteer Model trainen in het menu aan de linkerkant.
Selecteer Een trainingstaak starten in het bovenste menu.
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.
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.
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.
Selecteer de knop Trainen .
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:
Selecteer Een model implementeren in het menu aan de linkerkant.
Selecteer Implementatie toevoegen om de wizard Implementatie toevoegen te starten.
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.
Selecteer een getraind model in de vervolgkeuzelijst Model .
Selecteer Implementeren om de implementatietaak te starten.
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.
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
Installeer de Speech SDK in uw nieuwe project met de .NET CLI.
dotnet add package Microsoft.CognitiveServices.Speech
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?"); } } } } }
Stel
Program.cs
decluProjectName
encluDeploymentName
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.Als u de taal voor spraakherkenning wilt wijzigen, vervangt u deze door
en-US
een andere ondersteunde taal. Bijvoorbeeld voores-ES
Spaans (Spanje). De standaardtaal isen-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_KEY
omgevingsvariabelen en LANGUAGE_ENDPOINT
SPEECH_REGION
SPEECH_KEY
omgevingsvariabelen 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 topIntent
HomeAutomation.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 vanFromDefaultMicrophoneInput
:using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
- Voor gecomprimeerde audiobestanden zoals MP4 installeert u GStreamer en gebruikt
PullAudioInputStream
ofPushAudioInputStream
. 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_KEY
en 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 dooryour-language-key
een van de sleutels voor uw resource. - Als u de
LANGUAGE_ENDPOINT
omgevingsvariabele wilt instellen, vervangt u deze dooryour-language-endpoint
een van de regio's voor uw resource. - Als u de
SPEECH_KEY
omgevingsvariabele wilt instellen, vervangt u deze dooryour-speech-key
een van de sleutels voor uw resource. - Als u de
SPEECH_REGION
omgevingsvariabele wilt instellen, vervangt u deze dooryour-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.
Selecteer Onder de sectie Vragen begrijpen en gesprekstaal van Language Studio de optie Begrip van conversationele taal.
Hiermee gaat u naar de pagina Conversational Language Understanding-projecten . Selecteer Importeren naast de knop Nieuw project maken.
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:
Selecteer Model trainen in het menu aan de linkerkant.
Selecteer Een trainingstaak starten in het bovenste menu.
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.
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.
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.
Selecteer de knop Trainen .
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:
Selecteer Een model implementeren in het menu aan de linkerkant.
Selecteer Implementatie toevoegen om de wizard Implementatie toevoegen te starten.
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.
Selecteer een getraind model in de vervolgkeuzelijst Model .
Selecteer Implementeren om de implementatietaak te starten.
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.
Maak een nieuw C++-consoleproject in Visual Studio Community 2022 met de naam
SpeechRecognition
.Installeer de Speech SDK in uw nieuwe project met nuGet-pakketbeheer.
Install-Package Microsoft.CognitiveServices.Speech
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 }
Stel
SpeechRecognition.cpp
decluProjectName
encluDeploymentName
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.Als u de taal voor spraakherkenning wilt wijzigen, vervangt u deze door
en-US
een andere ondersteunde taal. Bijvoorbeeld voores-ES
Spaans (Spanje). De standaardtaal isen-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_KEY
omgevingsvariabelen en LANGUAGE_ENDPOINT
SPEECH_REGION
SPEECH_KEY
omgevingsvariabelen 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 topIntent
HomeAutomation.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 vanFromDefaultMicrophoneInput
:auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
- Voor gecomprimeerde audiobestanden zoals MP4 installeert u GStreamer en gebruikt
PullAudioInputStream
ofPushAudioInputStream
. 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.