Szybki start: rozpoznawanie intencji za pomocą Language Understanding konwersacji
Dokumentacja referencyjna | Pakiet (NuGet) | Dodatkowe przykłady w usłudze GitHub
W tym przewodniku Szybki start użyjesz usług rozpoznawania mowy i języka do rozpoznawania intencji z danych dźwiękowych przechwyconych z mikrofonu. W szczególności użyjesz usługi rozpoznawania mowy do rozpoznawania mowy i modelu konwersacyjnej Language Understanding (CLU) do identyfikowania intencji.
Ważne
Konwersacyjna Language Understanding (CLU) jest dostępna dla języków C# i C++ z zestawem Speech SDK w wersji 1.25 lub nowszej.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Utwórz zasób języka w Azure Portal.
- Pobierz klucz zasobu języka i punkt końcowy. Po wdrożeniu zasobu language wybierz pozycję Przejdź do zasobu, aby wyświetlić klucze i zarządzać nimi. Aby uzyskać więcej informacji na temat zasobów usług Azure AI, zobacz Uzyskiwanie kluczy dla zasobu.
- Utwórz zasób usługi Mowa w Azure Portal.
- Pobierz klucz zasobu usługi Mowa i region. Po wdrożeniu zasobu usługi Mowa wybierz pozycję Przejdź do zasobu, aby wyświetlić klucze i zarządzać nimi. Aby uzyskać więcej informacji na temat zasobów usług Azure AI, zobacz Uzyskiwanie kluczy dla zasobu.
Konfigurowanie środowiska
Zestaw SPEECH SDK jest dostępny jako pakiet NuGet i implementuje platformę .NET Standard 2.0. Zestaw SDK usługi Mowa zostanie zainstalowany w dalszej części tego przewodnika, ale najpierw zapoznaj się z przewodnikiem instalacji zestawu SDK , aby uzyskać więcej wymagań.
Ustawianie zmiennych środowiskowych
W tym przykładzie są wymagane zmienne środowiskowe o nazwach LANGUAGE_KEY
, LANGUAGE_ENDPOINT
, SPEECH_KEY
i SPEECH_REGION
.
Aby można było uzyskiwać dostęp do zasobów usług Azure AI, aplikacja musi być uwierzytelniona. W środowisku produkcyjnym należy użyć bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń. Na przykład po otrzymaniu klucza dla mowy zapisz go w nowej zmiennej środowiskowej na komputerze lokalnym z uruchomioną aplikacją.
Porada
Nie dołączaj klucza bezpośrednio do kodu i nigdy nie publikuj go publicznie. Aby uzyskać więcej opcji uwierzytelniania, takich jak Azure Key Vault, zobacz artykuł Azure AI Services security (Zabezpieczenia usług Azure AI).
Aby ustawić zmienne środowiskowe, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.
- Aby ustawić zmienną
LANGUAGE_KEY
środowiskową, zastąpyour-language-key
element jednym z kluczy zasobu. - Aby ustawić zmienną
LANGUAGE_ENDPOINT
środowiskową, zastąpyour-language-endpoint
element jednym z regionów zasobu. - Aby ustawić zmienną
SPEECH_KEY
środowiskową, zastąpyour-speech-key
element jednym z kluczy zasobu. - Aby ustawić zmienną
SPEECH_REGION
środowiskową, zastąpyour-speech-region
element jednym z regionów zasobu.
setx LANGUAGE_KEY your-language-key
setx LANGUAGE_ENDPOINT your-language-endpoint
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region
Uwaga
Jeśli musisz uzyskać dostęp tylko do zmiennej środowiskowej w bieżącej uruchomionej konsoli, możesz ustawić zmienną środowiskową set
zamiast setx
.
Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich uruchomionych programów, które będą musiały odczytać zmienną środowiskową, w tym okno konsoli. Jeśli na przykład używasz programu Visual Studio jako edytora, uruchom ponownie program Visual Studio przed uruchomieniem przykładu.
Tworzenie projektu Language Understanding konwersacji
Po utworzeniu zasobu Language utwórz projekt usługi Language understanding języka konwersacyjnego w programie Language Studio. Projekt to obszar roboczy umożliwiający tworzenie niestandardowych modeli uczenia maszynowego na podstawie Twoich danych. Dostęp do projektu można uzyskać tylko do Ciebie i innych osób, które mają dostęp do używanego zasobu Language.
Przejdź do programu Language Studio i zaloguj się przy użyciu konta platformy Azure.
Tworzenie projektu interpretacji języka konwersacyjnego
W tym przewodniku Szybki start możesz pobrać ten przykładowy projekt automatyzacji domu i zaimportować go. Ten projekt może przewidzieć zamierzone polecenia na podstawie danych wejściowych użytkownika, takich jak włączanie i wyłączanie świateł.
W sekcji Understand questions and conversational language (Informacje o pytaniach i języku konwersacyjnym) w programie Language Studio wybierz pozycję Conversational Language understanding (Interpretacja języka konwersacyjnego).
Spowoduje to wyświetlenie strony projektów z informacjami o języku konwersacyjnym . Obok przycisku Utwórz nowy projekt wybierz pozycję Importuj.
W wyświetlonym oknie przekaż plik JSON, który chcesz zaimportować. Upewnij się, że plik jest zgodny z obsługiwanym formatem JSON.
Po zakończeniu przekazywania zostanie wyświetlona strona Definicja schematu . W tym przewodniku Szybki start schemat został już skompilowany, a wypowiedzi są już oznaczone intencjami i jednostkami.
Szkolenie modelu
Zazwyczaj po utworzeniu projektu należy utworzyć schemat i etykiety wypowiedzi. Na potrzeby tego przewodnika Szybki start zaimportowaliśmy już gotowy projekt ze skompilowanym schematem i oznaczonymi wypowiedziami.
Aby wytrenować model, musisz uruchomić zadanie szkoleniowe. Dane wyjściowe pomyślnego zadania szkoleniowego to wytrenowany model.
Aby rozpocząć trenowanie modelu z poziomu programu Language Studio:
Wybierz pozycję Train model (Trenowanie modelu ) z menu po lewej stronie.
Wybierz pozycję Start a training job (Uruchom zadanie szkoleniowe ) z górnego menu.
Wybierz pozycję Train a new model (Trenowanie nowego modelu ) i wprowadź nową nazwę modelu w polu tekstowym. W przeciwnym razie, aby zastąpić istniejący model modelem wytrenowanym na nowych danych, wybierz pozycję Zastąp istniejący model , a następnie wybierz istniejący model. Zastąpienie wytrenowanego modelu jest nieodwracalne, ale nie wpłynie to na wdrożone modele do momentu wdrożenia nowego modelu.
Wybierz tryb trenowania. Możesz wybrać standardowe szkolenie w celu szybszego trenowania, ale jest dostępne tylko dla języka angielskiego. Możesz też wybrać opcję Zaawansowane szkolenie , które jest obsługiwane w innych językach i projektach wielojęzycznych, ale obejmuje dłuższe czasy trenowania. Dowiedz się więcej o trybach trenowania.
Wybierz metodę dzielenia danych . Możesz wybrać opcję Automatycznie dzielenie zestawu testów na podstawie danych treningowych , w których system podzieli wypowiedzi między zestawy treningowe i testowe, zgodnie z określonymi wartościami procentowymi. Możesz też użyć ręcznego podziału danych treningowych i testowych. Ta opcja jest włączona tylko w przypadku dodania wypowiedzi do zestawu testowego po oznaczeniu wypowiedzi.
Wybierz przycisk Train (Trenuj ).
Wybierz identyfikator zadania szkoleniowego z listy. Zostanie wyświetlony panel, w którym można sprawdzić postęp trenowania, stan zadania i inne szczegóły dotyczące tego zadania.
Uwaga
- Tylko pomyślnie ukończone zadania szkoleniowe będą generować modele.
- Trenowanie może zająć trochę czasu od kilku minut do kilku godzin na podstawie liczby wypowiedzi.
- Jednocześnie może być uruchomione tylko jedno zadanie trenowania. Nie można uruchomić innych zadań szkoleniowych w ramach tego samego projektu, dopóki uruchomione zadanie nie zostanie ukończone.
- Uczenie maszynowe używane do trenowania modeli jest regularnie aktualizowane. Aby wytrenować w poprzedniej wersji konfiguracji, wybierz pozycję Wybierz tutaj, aby zmienić stronę Rozpocznij zadanie trenowania i wybierz poprzednią wersję.
Wdrażanie modelu
Ogólnie po trenowaniu modelu należy przejrzeć jego szczegóły oceny. W tym przewodniku Szybki start wdrożysz model i udostępnisz go do wypróbowania w programie Language Studio lub możesz wywołać interfejs API przewidywania.
Aby wdrożyć model z poziomu programu Language Studio:
Wybierz pozycję Deploying a model (Wdrażanie modelu) z menu po lewej stronie.
Wybierz pozycję Dodaj wdrożenie , aby uruchomić Kreatora dodawania wdrożenia .
Wybierz pozycję Utwórz nową nazwę wdrożenia , aby utworzyć nowe wdrożenie i przypisać wytrenowany model z poniższej listy rozwijanej. W przeciwnym razie możesz wybrać pozycję Zastąp istniejącą nazwę wdrożenia , aby skutecznie zastąpić model używany przez istniejące wdrożenie.
Uwaga
Zastąpienie istniejącego wdrożenia nie wymaga zmian wywołania interfejsu API przewidywania , ale uzyskane wyniki będą oparte na nowo przypisanym modelu.
Wybierz wytrenowany model z listy rozwijanej Model .
Wybierz pozycję Wdróż , aby uruchomić zadanie wdrożenia.
Po pomyślnym wdrożeniu obok niego pojawi się data wygaśnięcia. Wygaśnięcie wdrożenia jest wtedy, gdy wdrożony model będzie niedostępny do przewidywania, co zwykle ma miejsce dwanaście miesięcy po wygaśnięciu konfiguracji trenowania.
W następnej sekcji użyjesz nazwy projektu i nazwy wdrożenia.
Rozpoznawanie intencji z mikrofonu
Wykonaj następujące kroki, aby utworzyć nową aplikację konsolową i zainstalować zestaw SPEECH SDK.
Otwórz wiersz polecenia, w którym chcesz utworzyć nowy projekt, i utwórz aplikację konsolową przy użyciu interfejsu wiersza polecenia platformy .NET. Plik
Program.cs
powinien zostać utworzony w katalogu projektu.dotnet new console
Zainstaluj zestaw SPEECH SDK w nowym projekcie przy użyciu interfejsu wiersza polecenia platformy .NET.
dotnet add package Microsoft.CognitiveServices.Speech
Zastąp zawartość
Program.cs
pliku poniższym kodem.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?"); } } } } }
W
Program.cs
ustawieniucluProjectName
zmiennych icluDeploymentName
na nazwy projektu i wdrożenia. Aby uzyskać informacje na temat tworzenia projektu CLU i wdrożenia, zobacz Tworzenie projektu Language Understanding konwersacyjnego.Aby zmienić język rozpoznawania mowy, zastąp
en-US
element innym obsługiwanym językiem. Na przykłades-ES
w przypadku języka hiszpańskiego (Hiszpania). Język domyślny toen-US
, jeśli nie określisz języka. Aby uzyskać szczegółowe informacje na temat identyfikowania jednego z wielu języków, które mogą być mówione, zobacz identyfikacja języka.
Uruchom nową aplikację konsolową, aby rozpocząć rozpoznawanie mowy z mikrofonu:
dotnet run
Ważne
Upewnij się, że ustawiono LANGUAGE_KEY
zmienne środowiskowe , , LANGUAGE_ENDPOINT
SPEECH_KEY
i SPEECH_REGION
zgodnie z powyższym opisem. Jeśli te zmienne nie zostaną ustawione, próba zakończy się niepowodzeniem z komunikatem o błędzie.
Po wyświetleniu monitu porozmawiaj z mikrofonem. Mówisz, że dane wyjściowe powinny być danymi wyjściowymi jako tekst:
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"}]}]}}}.
Uwaga
Obsługa odpowiedzi JSON dla funkcji CLU za pośrednictwem właściwości LanguageUnderstandingServiceResponse_JsonResult została dodana w zestawie SPEECH SDK w wersji 1.26.
Intencje są zwracane w kolejności prawdopodobieństwa, która jest najbardziej prawdopodobna. Oto sformatowana wersja danych wyjściowych JSON, w której topIntent
wskaźnik ufności wynosi HomeAutomation.TurnOn
0,97712576 (97,71%). Drugim najbardziej prawdopodobnym zamiarem może być HomeAutomation.TurnOff
współczynnik ufności 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"
}
]
}
]
}
}
}
Uwagi
Teraz, po ukończeniu przewodnika Szybki start, poniżej przedstawiono kilka dodatkowych zagadnień:
- W tym przykładzie użyto
RecognizeOnceAsync
operacji do transkrypcji wypowiedzi do 30 sekund lub do momentu wykrycia ciszy. Aby uzyskać informacje na temat ciągłego rozpoznawania dłuższego dźwięku, w tym konwersacji wielojęzycznych, zobacz Jak rozpoznawać mowę. - Aby rozpoznać mowę z pliku audio, użyj polecenia
FromWavFileInput
zamiastFromDefaultMicrophoneInput
:using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
- W przypadku skompresowanych plików audio, takich jak MP4, zainstaluj usługę GStreamer i użyj polecenia
PullAudioInputStream
lubPushAudioInputStream
. Aby uzyskać więcej informacji, zobacz Jak używać skompresowanego dźwięku wejściowego.
Czyszczenie zasobów
Aby usunąć utworzone zasoby języka i mowy, możesz użyć Azure Portal interfejsu wierszapolecenia platformy Azure lub interfejsu wiersza polecenia platformy Azure.
Dokumentacja referencyjna | Pakiet (NuGet) | Dodatkowe przykłady w usłudze GitHub
W tym przewodniku Szybki start użyjesz usług rozpoznawania mowy i języka do rozpoznawania intencji z danych dźwiękowych przechwyconych z mikrofonu. W szczególności użyjesz usługi rozpoznawania mowy do rozpoznawania mowy i modelu konwersacyjnej Language Understanding (CLU) do identyfikowania intencji.
Ważne
Konwersacyjna Language Understanding (CLU) jest dostępna dla języków C# i C++ z zestawem Speech SDK w wersji 1.25 lub nowszej.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Utwórz zasób języka w Azure Portal.
- Pobierz klucz zasobu języka i punkt końcowy. Po wdrożeniu zasobu language wybierz pozycję Przejdź do zasobu, aby wyświetlić klucze i zarządzać nimi. Aby uzyskać więcej informacji na temat zasobów usług Azure AI, zobacz Uzyskiwanie kluczy dla zasobu.
- Utwórz zasób usługi Mowa w Azure Portal.
- Pobierz klucz zasobu usługi Mowa i region. Po wdrożeniu zasobu usługi Mowa wybierz pozycję Przejdź do zasobu, aby wyświetlić klucze i zarządzać nimi. Aby uzyskać więcej informacji na temat zasobów usług Azure AI, zobacz Uzyskiwanie kluczy dla zasobu.
Konfigurowanie środowiska
Zestaw SPEECH SDK jest dostępny jako pakiet NuGet i implementuje platformę .NET Standard 2.0. Zestaw SDK usługi Mowa zostanie zainstalowany w dalszej części tego przewodnika, ale najpierw zapoznaj się z przewodnikiem instalacji zestawu SDK , aby uzyskać więcej wymagań.
Ustawianie zmiennych środowiskowych
W tym przykładzie są wymagane zmienne środowiskowe o nazwach LANGUAGE_KEY
, LANGUAGE_ENDPOINT
, SPEECH_KEY
i SPEECH_REGION
.
Aby można było uzyskiwać dostęp do zasobów usług Azure AI, aplikacja musi być uwierzytelniona. W środowisku produkcyjnym należy użyć bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń. Na przykład po otrzymaniu klucza dla mowy zapisz go w nowej zmiennej środowiskowej na komputerze lokalnym z uruchomioną aplikacją.
Porada
Nie dołączaj klucza bezpośrednio do kodu i nigdy nie publikuj go publicznie. Aby uzyskać więcej opcji uwierzytelniania, takich jak Azure Key Vault, zobacz artykuł Azure AI Services security (Zabezpieczenia usług Azure AI).
Aby ustawić zmienne środowiskowe, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.
- Aby ustawić zmienną
LANGUAGE_KEY
środowiskową, zastąpyour-language-key
element jednym z kluczy zasobu. - Aby ustawić zmienną
LANGUAGE_ENDPOINT
środowiskową, zastąpyour-language-endpoint
element jednym z regionów zasobu. - Aby ustawić zmienną
SPEECH_KEY
środowiskową, zastąpyour-speech-key
element jednym z kluczy zasobu. - Aby ustawić zmienną
SPEECH_REGION
środowiskową, zastąpyour-speech-region
element jednym z regionów zasobu.
setx LANGUAGE_KEY your-language-key
setx LANGUAGE_ENDPOINT your-language-endpoint
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region
Uwaga
Jeśli musisz uzyskać dostęp tylko do zmiennej środowiskowej w bieżącej uruchomionej konsoli, możesz ustawić zmienną środowiskową set
zamiast setx
.
Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich uruchomionych programów, które będą musiały odczytać zmienną środowiskową, w tym okno konsoli. Jeśli na przykład używasz programu Visual Studio jako edytora, uruchom ponownie program Visual Studio przed uruchomieniem przykładu.
Tworzenie projektu Language Understanding konwersacji
Po utworzeniu zasobu Language utwórz projekt interpretacji języka konwersacyjnego w programie Language Studio. Projekt to obszar roboczy do tworzenia niestandardowych modeli uczenia maszynowego na podstawie danych. Dostęp do projektu można uzyskać tylko do Ciebie i innych osób, które mają dostęp do używanego zasobu Language.
Przejdź do programu Language Studio i zaloguj się przy użyciu konta platformy Azure.
Tworzenie projektu interpretacji języka konwersacyjnego
W tym przewodniku Szybki start możesz pobrać ten przykładowy projekt automatyzacji domu i zaimportować go. Ten projekt może przewidzieć zamierzone polecenia z danych wejściowych użytkownika, takich jak włączanie i wyłączanie świateł.
W sekcji Informacje o pytaniach i języku konwersacyjnym w programie Language Studio wybierz pozycję Interpretacja języka konwersacyjnego.
Spowoduje to wyświetlenie strony projektów interpretacji języka konwersacyjnego . Obok przycisku Utwórz nowy projekt wybierz pozycję Importuj.
W wyświetlonym oknie przekaż plik JSON, który chcesz zaimportować. Upewnij się, że plik jest zgodny z obsługiwanym formatem JSON.
Po zakończeniu przekazywania zostanie wyświetlona strona Definicja schematu . W tym przewodniku Szybki start schemat jest już skompilowany, a wypowiedzi są już oznaczone intencjami i jednostkami.
Szkolenie modelu
Zazwyczaj po utworzeniu projektu należy utworzyć wypowiedzi schematu i etykiety. Na potrzeby tego przewodnika Szybki start zaimportowaliśmy już gotowy projekt z utworzonym schematem i oznaczonymi etykietami wypowiedzi.
Aby wytrenować model, musisz rozpocząć zadanie szkoleniowe. Dane wyjściowe pomyślnego zadania szkoleniowego to wytrenowany model.
Aby rozpocząć trenowanie modelu z poziomu programu Language Studio:
Wybierz pozycję Train model (Trenowanie modelu ) z menu po lewej stronie.
Wybierz pozycję Start a training job (Uruchom zadanie szkoleniowe ) z górnego menu.
Wybierz pozycję Train a new model (Trenowanie nowego modelu) i wprowadź nową nazwę modelu w polu tekstowym. W przeciwnym razie, aby zastąpić istniejący model modelem wytrenowanym na nowych danych, wybierz pozycję Zastąp istniejący model , a następnie wybierz istniejący model. Zastępowanie wytrenowanego modelu jest nieodwracalne, ale nie wpłynie to na wdrożone modele do momentu wdrożenia nowego modelu.
Wybierz tryb trenowania. Możesz wybrać standardowe szkolenie w celu szybszego trenowania, ale jest dostępne tylko dla języka angielskiego. Możesz też wybrać opcję Zaawansowane szkolenie , które jest obsługiwane w przypadku innych języków i projektów wielojęzycznych, ale obejmuje dłuższe czasy trenowania. Dowiedz się więcej o trybach trenowania.
Wybierz metodę dzielenia danych . Możesz wybrać opcję Automatyczne dzielenie zestawu testów na podstawie danych treningowych , w których system podzieli wypowiedzi między zestawy treningowe i testowe, zgodnie z określonymi wartościami procentowymi. Możesz też użyć ręcznego podziału danych treningowych i testowych, ta opcja jest włączona tylko w przypadku dodania wypowiedzi do zestawu testów podczas etykietowania wypowiedzi.
Wybierz przycisk Train (Trenowanie ).
Wybierz identyfikator zadania trenowania z listy. Zostanie wyświetlony panel, w którym można sprawdzić postęp trenowania, stan zadania i inne szczegóły dotyczące tego zadania.
Uwaga
- Tylko pomyślnie ukończone zadania szkoleniowe będą generować modele.
- Trenowanie może zająć trochę czasu od kilku minut do kilku godzin na podstawie liczby wypowiedzi.
- Jednocześnie może być uruchomione tylko jedno zadanie trenowania. Nie można uruchomić innych zadań szkoleniowych w ramach tego samego projektu, dopóki uruchomione zadanie nie zostanie ukończone.
- Uczenie maszynowe używane do trenowania modeli jest regularnie aktualizowane. Aby wyszkolić poprzednią wersję konfiguracji, wybierz pozycję Wybierz tutaj, aby zmienić wersję na stronie Rozpocznij zadanie trenowania i wybierz poprzednią wersję.
Wdrażanie modelu
Ogólnie po trenowaniu modelu należy przejrzeć jego szczegóły oceny. W tym przewodniku Szybki start wdrożysz model i udostępnisz go do wypróbowania w programie Language Studio lub możesz wywołać interfejs API przewidywania.
Aby wdrożyć model z poziomu programu Language Studio:
Wybierz pozycję Deploying a model (Wdrażanie modelu) z menu po lewej stronie.
Wybierz pozycję Dodaj wdrożenie , aby uruchomić Kreatora dodawania wdrożenia .
Wybierz pozycję Utwórz nową nazwę wdrożenia , aby utworzyć nowe wdrożenie i przypisać wytrenowany model z poniższej listy rozwijanej. W przeciwnym razie możesz wybrać opcję Zastąp istniejącą nazwę wdrożenia , aby skutecznie zastąpić model używany przez istniejące wdrożenie.
Uwaga
Zastępowanie istniejącego wdrożenia nie wymaga zmian wywołania interfejsu API przewidywania , ale wyniki, które otrzymasz, będą oparte na nowo przypisanym modelu.
Wybierz wytrenowany model z listy rozwijanej Model .
Wybierz pozycję Wdróż, aby rozpocząć zadanie wdrażania.
Po pomyślnym wdrożeniu obok niego pojawi się data wygaśnięcia. Wygaśnięcie wdrożenia jest wtedy, gdy wdrożony model będzie niedostępny do przewidywania, co zwykle odbywa się dwanaście miesięcy po wygaśnięciu konfiguracji trenowania.
W następnej sekcji użyjesz nazwy projektu i nazwy wdrożenia.
Rozpoznawanie intencji z mikrofonu
Wykonaj następujące kroki, aby utworzyć nową aplikację konsolową i zainstalować zestaw SPEECH SDK.
Utwórz nowy projekt konsoli języka C++ w Visual Studio Community 2022 o nazwie
SpeechRecognition
.Zainstaluj zestaw SPEECH SDK w nowym projekcie za pomocą menedżera pakietów NuGet.
Install-Package Microsoft.CognitiveServices.Speech
Zastąp zawartość
SpeechRecognition.cpp
następującym kodem:#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 }
W
SpeechRecognition.cpp
ustawieniucluProjectName
zmiennych icluDeploymentName
na nazwy projektu i wdrożenia. Aby uzyskać informacje na temat tworzenia projektu CLU i wdrożenia, zobacz Tworzenie projektu Language Understanding konwersacji.Aby zmienić język rozpoznawania mowy, zastąp
en-US
innym obsługiwanym językiem. Na przykłades-ES
w przypadku języka hiszpańskiego (Hiszpania). Język domyślny toen-US
, jeśli nie określisz języka. Aby uzyskać szczegółowe informacje na temat identyfikowania jednego z wielu języków, które mogą być mówione, zobacz identyfikację języka.
Skompiluj i uruchom nową aplikację konsolową, aby rozpocząć rozpoznawanie mowy z mikrofonu.
Ważne
Upewnij się, że ustawiono LANGUAGE_KEY
zmienne środowiskowe , LANGUAGE_ENDPOINT
, SPEECH_KEY
i SPEECH_REGION
zgodnie z powyższym opisem. Jeśli te zmienne nie zostaną ustawione, przykład zakończy się niepowodzeniem z komunikatem o błędzie.
Po wyświetleniu monitu porozmawiaj z mikrofonem. To, co mówisz, powinno być dane wyjściowe jako tekst:
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"}]}]}}}.
Uwaga
Dodano obsługę odpowiedzi JSON dla funkcji CLU za pośrednictwem właściwości LanguageUnderstandingServiceResponse_JsonResult w zestawie Speech SDK w wersji 1.26.
Intencje są zwracane w kolejności prawdopodobieństwa najprawdopodobniej najmniej prawdopodobne. Oto sformatowana wersja danych wyjściowych JSON, w której topIntent
znajduje się HomeAutomation.TurnOn
wskaźnik ufności 0,97712576 (97,71%). Drugą najbardziej prawdopodobną intencją może być HomeAutomation.TurnOff
wskaźnik ufności 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"
}
]
}
]
}
}
}
Uwagi
Po ukończeniu przewodnika Szybki start poniżej przedstawiono kilka dodatkowych zagadnień:
- W tym przykładzie
RecognizeOnceAsync
użyto operacji do transkrypcji wypowiedzi do 30 sekund lub do momentu wykrycia ciszy. Aby uzyskać informacje na temat ciągłego rozpoznawania dłuższego dźwięku, w tym konwersacji wielojęzycznych, zobacz Jak rozpoznawać mowę. - Aby rozpoznać mowę z pliku audio, użyj
FromWavFileInput
polecenia zamiastFromDefaultMicrophoneInput
:auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
- W przypadku skompresowanych plików audio, takich jak MP4, zainstaluj usługę GStreamer i użyj polecenia
PullAudioInputStream
lubPushAudioInputStream
. Aby uzyskać więcej informacji, zobacz Jak używać skompresowanego dźwięku wejściowego.
Czyszczenie zasobów
Aby usunąć utworzone zasoby języka i mowy, możesz użyć Azure Portal interfejsu wiersza polecenia platformy Azure lub interfejsuwiersza polecenia platformy Azure.
Dokumentacja referencyjna | Dodatkowe przykłady w usłudze GitHub
Zestaw SPEECH SDK dla języka Java nie obsługuje rozpoznawania intencji za pomocą funkcji rozpoznawania języka konwersacyjnego (CLU). Wybierz inny język programowania lub odwołanie do języka Java i przykłady połączone od początku tego artykułu.