Samouczek: włączanie głosu bota
Możesz użyć usługi Azure AI Speech, aby włączyć czatbota głosowego.
W tym samouczku użyjesz platformy Microsoft Bot Framework do utworzenia bota, który odpowiada na to, co mówisz. Bot jest wdrażany na platformie Azure i rejestrowany za pomocą kanału mowy direct line platformy Bot Framework. Następnie skonfigurujesz przykładową aplikację kliencką dla systemu Windows, która pozwala porozmawiać z botem i usłyszeć, jak mówisz z powrotem do Ciebie.
Aby ukończyć samouczek, nie potrzebujesz obszernego doświadczenia ani znajomości platformy Azure, botów platformy Bot Framework ani mowy direct line.
Czatbot z obsługą głosu, który wykonasz w tym samouczku, wykonuje następujące kroki:
- Przykładowa aplikacja kliencka jest skonfigurowana do nawiązywania połączenia z kanałem mowy direct line i botem echo.
- Gdy użytkownik naciśnie przycisk, strumienie dźwięku głosowego z mikrofonu. Lub dźwięk jest stale rejestrowany, gdy jest używane słowo kluczowe niestandardowe.
- Jeśli jest używane niestandardowe słowo kluczowe, wykrywanie słów kluczowych odbywa się na urządzeniu lokalnym, gating audio streaming to the cloud.
- Przykładowa aplikacja kliencka używa zestawu SPEECH SDK do nawiązywania połączenia z kanałem mowy direct line i przesyłaniem strumieniowego dźwięku.
- Opcjonalnie weryfikacja słowa kluczowego o wyższej dokładności odbywa się w usłudze.
- Dźwięk jest przekazywany do usługi rozpoznawania mowy i transkrybowany do tekstu.
- Rozpoznany tekst jest przekazywany do bota echo jako działania bota Bot Framework.
- Tekst odpowiedzi jest przekształcany w dźwięk przez tekst do usługi mowy i przesyłany strumieniowo z powrotem do aplikacji klienckiej w celu odtwarzania.
Uwaga
Kroki opisane w tym samouczku nie wymagają płatnej usługi. Jako nowy użytkownik platformy Azure możesz skorzystać ze środków z bezpłatnej subskrypcji wersji próbnej platformy Azure i warstwy bezpłatnej usługi Mowa, aby ukończyć ten samouczek.
Oto co obejmuje ten samouczek:
- Utwórz nowe zasoby platformy Azure.
- Skompiluj, przetestuj i wdróż przykładowy bot echo w usłudze aplikacja systemu Azure.
- Zarejestruj bota za pomocą kanału mowy direct line.
- Skompiluj i uruchom klienta Asystenta głosowego systemu Windows, aby wchodzić w interakcję z botem echo.
- Dodaj aktywację słowa kluczowego niestandardowego.
- Dowiedz się, jak zmienić język rozpoznawanej i mówionej mowy.
Wymagania wstępne
Poniżej przedstawiono elementy potrzebne do ukończenia tego samouczka:
- Komputer z systemem Windows 10 z działającym mikrofonem i głośnikami (lub słuchawkami).
- Program Visual Studio 2017 lub nowszy z zainstalowanym obciążeniem tworzenia aplikacji internetowych i ASP.NET.
- Środowisko uruchomieniowe programu .NET Framework w wersji 4.6.1 lub nowszej.
- Konto Azure. Zarejestruj się bezpłatnie.
- Konto usługi GitHub.
- Git dla systemu Windows.
Tworzenie grupy zasobów
Aplikacja kliencka utworzona w tym samouczku korzysta z kilku usług platformy Azure. Aby skrócić czas rundy odpowiedzi bota, upewnij się, że te usługi znajdują się w tym samym regionie świadczenia usługi platformy Azure.
W tej sekcji opisano proces tworzenia grupy zasobów w regionie Zachodnie stany USA. Ta grupa zasobów jest używana podczas tworzenia poszczególnych zasobów dla platformy Bot Framework, kanału mowy direct line i usługi Mowa.
- Przejdź do strony witryny Azure Portal, aby utworzyć grupę zasobów.
- Podaj następujące informacje:
- Ustaw pozycję Subskrypcja na bezpłatną wersję próbną. (Możesz również użyć istniejącej subskrypcji).
- Wprowadź nazwę grupy zasobów. Zalecamy mowę SpeechEchoBotTutorial-ResourceGroup.
- Z menu rozwijanego Region wybierz pozycję Zachodnie stany USA.
- Wybierz opcję Przejrzyj i utwórz. Powinien zostać wyświetlony baner z pomyślnie odczytaną weryfikacją.
- Wybierz pozycję Utwórz. Utworzenie grupy zasobów może potrwać kilka minut.
- Podobnie jak w przypadku zasobów utworzonych w dalszej części tego samouczka, dobrym pomysłem jest przypięcie tej grupy zasobów do pulpitu nawigacyjnego w celu uzyskania łatwego dostępu. Jeśli chcesz przypiąć tę grupę zasobów, wybierz ikonę pinezki obok nazwy.
Wybieranie regionu świadczenia usługi Azure
Upewnij się, że używasz obsługiwanego regionu świadczenia usługi Azure. Kanał direct line speech używa tekstu do usługi mowy, która ma neuronowe i standardowe głosy. Głosy neuronowe są używane w tych regionach świadczenia usługi Azure, a standardowe głosy (wycofywanie) są używane w tych regionach świadczenia usługi Azure.
Aby uzyskać więcej informacji na temat regionów, zobacz Lokalizacje platformy Azure.
Tworzenie zasobów
Teraz, gdy masz grupę zasobów w obsługiwanym regionie, następnym krokiem jest utworzenie poszczególnych zasobów dla każdej usługi, która będzie używana w tym samouczku.
Tworzenie zasobu usługi Mowa
- Przejdź do strony witryny Azure Portal, aby utworzyć zasób usługi Mowa.
- Podaj następujące informacje:
- W polu Nazwa zalecamy zamianę mowyEchoBotTutorial-Speech jako nazwę zasobu.
- W obszarze Subskrypcja upewnij się, że wybrano opcję Bezpłatna wersja próbna.
- W polu Lokalizacja wybierz pozycję Zachodnie stany USA.
- W obszarze Warstwa cenowa wybierz pozycję F0. Jest to warstwa Bezpłatna.
- W obszarze Grupa zasobów wybierz pozycję SpeechEchoBotTutorial-ResourceGroup.
- Po wprowadzeniu wszystkich wymaganych informacji wybierz pozycję Utwórz. Utworzenie zasobu może potrwać kilka minut.
- W dalszej części tego samouczka potrzebne są klucze subskrypcji dla tej usługi. Dostęp do tych kluczy można uzyskać w dowolnym momencie z obszaru Przegląd zasobu (w obszarze Zarządzanie kluczami) lub obszaru Klucze.
Na tym etapie sprawdź, czy grupa zasobów (SpeechEchoBotTutorial-ResourceGroup) ma zasób usługi Mowa:
Nazwisko | Typ | Lokalizacja |
---|---|---|
SpeechEchoBotTutorial-Speech | Mowa | Zachodnie stany USA |
Tworzenie planu usługi Azure App Service
Plan usługi App Service definiuje zestaw zasobów obliczeniowych dla aplikacji internetowej używanych podczas jej uruchamiania.
- Przejdź do strony witryny Azure Portal, aby utworzyć plan usługi aplikacja systemu Azure.
- Podaj następujące informacje:
- Ustaw pozycję Subskrypcja na bezpłatną wersję próbną. (Możesz również użyć istniejącej subskrypcji).
- W obszarze Grupa zasobów wybierz pozycję SpeechEchoBotTutorial-ResourceGroup.
- W polu Nazwa zalecamy parametr SpeechEchoBotTutorial-AppServicePlan jako nazwę planu.
- W polu System operacyjny wybierz pozycję Windows.
- W obszarze Region wybierz pozycję Zachodnie stany USA.
- W obszarze Warstwa cenowa upewnij się, że wybrano opcję Standardowa S1 . Powinna to być wartość domyślna. Jeśli tak nie jest, ustaw wartość System operacyjny na Windows.
- Wybierz opcję Przejrzyj i utwórz. Powinien zostać wyświetlony baner z pomyślnie odczytaną weryfikacją.
- Wybierz pozycję Utwórz. Utworzenie zasobu może potrwać kilka minut.
Na tym etapie sprawdź, czy grupa zasobów (SpeechEchoBotTutorial-ResourceGroup) ma dwa zasoby:
Nazwisko | Typ | Lokalizacja |
---|---|---|
SpeechEchoBotTutorial-AppServicePlan | Plan usługi App Service | Zachodnie stany USA |
SpeechEchoBotTutorial-Speech | Usługi platformy Azure AI | Zachodnie stany USA |
Tworzenie bota echo
Po utworzeniu zasobów zacznij od przykładu echo bota, który odzwierciedla tekst wprowadzony jako odpowiedź. Przykładowy kod jest już skonfigurowany do pracy z kanałem mowy direct line, który łączy się po wdrożeniu bota na platformie Azure.
Uwaga
Poniższe instrukcje wraz z więcej informacji na temat bota echo są dostępne w pliku README przykładu w witrynie GitHub.
Uruchamianie przykładu bota na maszynie
Sklonuj repozytorium przykładów:
git clone https://github.com/Microsoft/botbuilder-samples.git
Otwórz program Visual Studio.
Na pasku narzędzi wybierz pozycję Plik>Otwórz>projekt/rozwiązanie. Następnie otwórz rozwiązanie projektu:
samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
Po załadowaniu projektu wybierz klucz F5 , aby skompilować i uruchomić projekt.
W otwieranej przeglądarce zostanie wyświetlony ekran podobny do następującego:
Testowanie przykładu bota za pomocą emulatora platformy Bot Framework
Bot Framework Emulator to aplikacja klasyczna, która umożliwia deweloperom botów testowanie i debugowanie botów lokalnie (lub zdalnie przez tunel). Emulator akceptuje wpisany tekst jako dane wejściowe (a nie głos). Bot odpowiada również tekstem.
Wykonaj następujące kroki, aby przetestować bota echo uruchomionego lokalnie przy użyciu emulatora platformy Bot Framework z danymi wejściowymi tekstowymi i tekstowymi. Po wdrożeniu bota na platformie Azure przetestujesz go przy użyciu danych wejściowych głosowych i danych głosowych.
Zainstaluj program Bot Framework Emulator w wersji 4.3.0 lub nowszej.
Otwórz program Bot Framework Emulator, a następnie wybierz pozycję Plik>Otwórz bota.
Wprowadź adres URL bota. Na przykład:
http://localhost:3978/api/messages
Wybierz pozycję Połącz.
Bot powinien powitać Cię z komunikatem "Witaj i witamy!". Wpisz dowolny komunikat tekstowy i potwierdź, że otrzymasz odpowiedź od bota.
Wdrażanie bota w usłudze aplikacja systemu Azure
Następnym krokiem jest wdrożenie bota echo na platformie Azure. Istnieje kilka sposobów wdrażania bota, w tym interfejsu wiersza polecenia platformy Azure i szablonów wdrażania. Ten samouczek koncentruje się na publikowaniu bezpośrednio z poziomu programu Visual Studio.
Uwaga
Jeśli funkcja Publikuj nie jest wyświetlana podczas wykonywania poniższych kroków, użyj Instalator programu Visual Studio, aby dodać obciążenie ASP.NET i tworzenie aplikacji internetowych.
W programie Visual Studio otwórz bota echo, który został skonfigurowany do użycia z kanałem mowy direct line:
samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt EchoBot i wybierz pozycję Publikuj.
W oknie Publikowanie, które zostanie otwarte:
- Wybierz pozycję Azure Next (Dalej>).
- Wybierz pozycję usługa aplikacja systemu Azure (Windows)>Dalej.
- Wybierz pozycję Utwórz nową usługę aplikacja systemu Azure przy użyciu zielonego znaku plusa.
Gdy zostanie wyświetlone okno usługi App Service (Windows):
Wybierz pozycję Dodaj konto i zaloguj się przy użyciu poświadczeń konta platformy Azure. Jeśli już się zalogowałeś, wybierz swoje konto z listy rozwijanej.
W polu Nazwa wprowadź globalnie unikatową nazwę bota. Ta nazwa służy do tworzenia unikatowego adresu URL bota.
Domyślna nazwa zawierająca datę i godzinę pojawia się w polu (na przykład EchoBot20190805125647). W tym samouczku możesz użyć nazwy domyślnej.
W obszarze Subskrypcja wybierz pozycję Bezpłatna wersja próbna.
W obszarze Grupa zasobów wybierz pozycję SpeechEchoBotTutorial-ResourceGroup.
W polu Plan hostingu wybierz pozycję SpeechEchoBotTutorial-AppServicePlan.
Wybierz pozycję Utwórz. Na ekranie ostatniego kreatora wybierz pozycję Zakończ.
Wybierz Publikuj. Program Visual Studio wdraża bota na platformie Azure.
W oknie danych wyjściowych programu Visual Studio powinien zostać wyświetlony komunikat o powodzeniu, który wygląda następująco:
Publish Succeeded. Web App was published successfully https://EchoBot20190805125647.azurewebsites.net/
Domyślna przeglądarka powinna zostać otwarta i wyświetlona strona z napisem: "Twój bot jest gotowy!"
Na tym etapie sprawdź grupę zasobów (SpeechEchoBotTutorial-ResourceGroup) w witrynie Azure Portal. Upewnij się, że zawiera on następujące trzy zasoby:
Nazwisko | Typ | Lokalizacja |
---|---|---|
EchoBot20190805125647 | App Service | Zachodnie stany USA |
SpeechEchoBotTutorial-AppServicePlan | Plan usługi App Service | Zachodnie stany USA |
SpeechEchoBotTutorial-Speech | Usługi platformy Azure AI | Zachodnie stany USA |
Włączanie gniazd internetowych
Należy wprowadzić niewielką zmianę konfiguracji, aby bot mógł komunikować się z kanałem mowy direct line przy użyciu gniazd internetowych. Wykonaj następujące kroki, aby włączyć gniazda internetowe:
- Przejdź do witryny Azure Portal i wybierz zasób usługi App Service. Nazwa zasobu powinna być podobna do EchoBot20190805125647 (unikatowa nazwa aplikacji).
- W okienku po lewej stronie w obszarze Ustawienia wybierz pozycję Konfiguracja.
- Wybierz kartę Ustawienia Ogólne.
- Znajdź przełącznik gniazd sieci Web i ustaw go na wartość Włączone.
- Wybierz pozycję Zapisz.
Napiwek
Możesz użyć kontrolek w górnej części strony usługi aplikacja systemu Azure, aby zatrzymać lub ponownie uruchomić usługę. Ta możliwość może przydać się podczas rozwiązywania problemów.
Tworzenie rejestracji kanału
Po utworzeniu zasobu usługi aplikacja systemu Azure do hostowania bota następnym krokiem jest utworzenie rejestracji kanału. Tworzenie rejestracji kanału jest wymaganiem wstępnym do zarejestrowania bota w kanałach bot framework, w tym kanału mowy direct line. Jeśli chcesz dowiedzieć się więcej o sposobie korzystania z kanałów przez boty, zobacz Łączenie bota z kanałami.
- Przejdź do strony witryny Azure Portal, aby utworzyć bota platformy Azure.
- Podaj następujące informacje:
W polu Obsługa bota wprowadź ciąg SpeechEchoBotTutorial-BotRegistration-####. Zastąp #### ciąg wieloma wybranymi elementami.
Uwaga
Dojście bota musi być globalnie unikatowe. Jeśli wprowadzisz jeden i zostanie wyświetlony komunikat o błędzie "Żądany identyfikator bota jest niedostępny", wybierz inną liczbę. W poniższych przykładach użyto wartości 8726.
W obszarze Subskrypcja wybierz pozycję Bezpłatna wersja próbna.
W obszarze Grupa zasobów wybierz pozycję SpeechEchoBotTutorial-ResourceGroup.
W polu Lokalizacja wybierz pozycję Zachodnie stany USA.
W obszarze Warstwa cenowa wybierz pozycję F0.
Ignoruj automatyczne tworzenie identyfikatora aplikacji i hasła.
- W dolnej części okienka Azure Bot wybierz pozycję Utwórz.
- Po utworzeniu zasobu otwórz zasób SpeechEchoBotTutorial-BotRegistration-#### w witrynie Azure Portal.
- W obszarze Ustawienia wybierz pozycję Konfiguracja.
- W polu Punkt końcowy obsługi komunikatów wprowadź adres URL aplikacji internetowej z dołączonym ścieżką /api/messages . Jeśli na przykład globalnie unikatowa nazwa aplikacji to EchoBot20190805125647, punkt końcowy obsługi komunikatów to
https://EchoBot20190805125647.azurewebsites.net/api/messages/
.
Na tym etapie sprawdź grupę zasobów (SpeechEchoBotTutorial-ResourceGroup) w witrynie Azure Portal. Powinien on teraz wyświetlać co najmniej cztery zasoby:
Nazwisko | Typ | Lokalizacja |
---|---|---|
EchoBot20190805125647 | App Service | Zachodnie stany USA |
SpeechEchoBotTutorial-AppServicePlan | Plan usługi App Service | Zachodnie stany USA |
SpeechEchoBotTutorial-BotRegistration-8726 | Bot Service | Globalnie |
SpeechEchoBotTutorial-Speech | Usługi platformy Azure AI | Zachodnie stany USA |
Ważne
Zasób usługi Azure AI Bot Service pokazuje region globalny, mimo że wybrano pozycję Zachodnie stany USA. Jest to oczekiwane.
Opcjonalnie: Testowanie w czacie internetowym
Strona Azure Bot ma opcję Testuj w czat internetowy w obszarze Ustawienia. Nie działa domyślnie z botem, ponieważ czat internetowy musi uwierzytelniać się względem bota.
Jeśli chcesz przetestować wdrożonego bota przy użyciu danych wejściowych tekstowych, wykonaj następujące kroki. Te kroki są opcjonalne i nie są wymagane do kontynuowania pracy z samouczkiem.
W witrynie Azure Portal znajdź i otwórz zasób EchoBotTutorial-BotRegistration-###.
W obszarze Ustawienia wybierz pozycję Konfiguracja. Skopiuj wartość w obszarze Identyfikator aplikacji microsoft.
Otwórz rozwiązanie EchoBot programu Visual Studio. W Eksplorator rozwiązań znajdź i wybierz dwukrotnie appsettings.json.
Zastąp pusty ciąg obok wartości MicrosoftAppId w pliku JSON skopiowaną wartością identyfikatora.
Wróć do witryny Azure Portal. W obszarze Ustawienia wybierz pozycję Konfiguracja. Następnie wybierz pozycję Zarządzaj obok pozycji Identyfikator aplikacji firmy Microsoft.
Wybierz Nowy klucz tajny klienta. Dodaj opis (na przykład czat internetowy) i wybierz pozycję Dodaj. Skopiuj nowy wpis tajny.
Zastąp pusty ciąg obok wartości MicrosoftAppPassword w pliku JSON skopiowaną wartością wpisu tajnego.
Zapisz plik JSON. Powinien on wyglądać podobnie do następującego kodu:
{ "MicrosoftAppId": "YourAppId", "MicrosoftAppPassword": "YourAppPassword" }
Opublikuj ponownie aplikację: kliknij prawym przyciskiem myszy projekt EchoBot w programie Visual Studio Eksplorator rozwiązań, wybierz pozycję Publikuj, a następnie wybierz przycisk Publikuj.
Rejestrowanie kanału mowy direct line
Teraz nadszedł czas, aby zarejestrować bota w kanale mowy direct line. Ten kanał tworzy połączenie między botem a aplikacją kliencką skompilowanymi za pomocą zestawu Speech SDK.
W witrynie Azure Portal znajdź i otwórz zasób SpeechEchoBotTutorial-BotRegistration-##### .
W obszarze Ustawienia wybierz pozycję Kanały, a następnie wykonaj następujące czynności:
- W obszarze Więcej kanałów wybierz pozycję Mowa bezpośrednia.
- Przejrzyj tekst na stronie Konfigurowanie mowy w wierszu bezpośrednim, a następnie rozwiń menu rozwijane Konto usługi Cognitive Service.
- Wybierz utworzony wcześniej zasób usługi Rozpoznawanie mowy (na przykład SpeechEchoBotTutorial-Speech) z menu, aby skojarzyć bota z kluczem subskrypcji.
- Ignoruj pozostałe pola opcjonalne.
- Wybierz pozycję Zapisz.
W obszarze Ustawienia wybierz pozycję Konfiguracja, a następnie wykonaj następujące kroki:
- Zaznacz pole wyboru Włącz punkt końcowy przesyłania strumieniowego. Ten krok jest niezbędny do utworzenia protokołu komunikacyjnego opartego na gniazdach internetowych między botem a kanałem mowy direct line.
- Wybierz pozycję Zapisz.
Jeśli chcesz dowiedzieć się więcej, zobacz Łączenie bota z usługą Direct Line Speech.
Uruchamianie klienta Asystenta głosowego systemu Windows
Klient asystenta głosowego systemu Windows to aplikacja windows Presentation Foundation (WPF) w języku C#, która używa zestawu SPEECH SDK do zarządzania komunikacją z botem za pośrednictwem kanału mowy direct line. Użyj go do interakcji i przetestowania bota przed napisaniem niestandardowej aplikacji klienckiej. Jest to oprogramowanie typu open source, więc możesz pobrać plik wykonywalny i uruchomić go lub utworzyć samodzielnie.
Klient asystenta głosowego systemu Windows ma prosty interfejs użytkownika, który umożliwia konfigurowanie połączenia z botem, wyświetlanie konwersacji tekstowej, wyświetlanie działań platformy Bot Framework w formacie JSON i wyświetlanie kart adaptacyjnych. Obsługuje również używanie niestandardowych słów kluczowych. Ten klient jest używany do rozmowy z botem i odbierania odpowiedzi głosowej.
Uwaga
W tym momencie upewnij się, że mikrofon i głośniki są włączone i działają.
Przejdź do repozytorium GitHub dla klienta Asystenta głosowego systemu Windows.
Postępuj zgodnie z podanymi instrukcjami, aby wykonać następujące czynności:
- Pobieranie wstępnie utworzonego pliku wykonywalnego w pakiecie .zip do uruchomienia
- Skompiluj plik wykonywalny samodzielnie, klonując repozytorium i tworząc projekt
Otwórz aplikację klienta VoiceAssistantClient.exe i skonfiguruj ją w celu nawiązania połączenia z botem, postępując zgodnie z instrukcjami w repozytorium GitHub.
Wybierz pozycję Połącz ponownie i upewnij się, że zostanie wyświetlony komunikat "Nowa konwersacja rozpoczęta — wpisz lub naciśnij przycisk mikrofonu".
Przetestujmy go. Wybierz przycisk mikrofonu i powiedz kilka słów w języku angielskim. Rozpoznany tekst jest wyświetlany podczas mówienia. Gdy skończysz mówić, bot odpowiada własnym głosem, mówiąc "echo", a następnie rozpoznane słowa.
Możesz również użyć tekstu do komunikowania się z botem. Wystarczy wpisać tekst na dolnym pasku.
Rozwiązywanie problemów z błędami w kliencie asystenta głosowego systemu Windows
Jeśli w oknie głównej aplikacji zostanie wyświetlony komunikat o błędzie, użyj tej tabeli, aby zidentyfikować i rozwiązać problem:
Komunikat | Co należy zrobić? |
---|---|
Błąd (AuthenticationFailure): Uaktualnienie protokołu WebSocket nie powiodło się z powodu błędu uwierzytelniania (401). Sprawdzanie poprawnego klucza zasobu (lub tokenu autoryzacji) i nazwy regionu | Na stronie Ustawienia aplikacji upewnij się, że klucz i jego region zostały poprawnie wprowadzone. |
Błąd (ConnectionFailure): połączenie zostało zamknięte przez hosta zdalnego. Kod błędu: 1011. Szczegóły błędu: nie można nawiązać połączenia z botem przed wysłaniem komunikatu | Upewnij się, że zaznaczono pole wyboru Włącz punkt końcowy przesyłania strumieniowego i/lub włączono gniazda internetowe. Upewnij się, że usługa aplikacja systemu Azure jest uruchomiona. Jeśli tak jest, spróbuj go ponownie uruchomić. |
Błąd (ConnectionFailure): połączenie zostało zamknięte przez hosta zdalnego. Kod błędu: 1002. Szczegóły błędu: Serwer zwrócił kod stanu "503", gdy oczekiwano kodu stanu "101" | Upewnij się, że zaznaczono pole wyboru Włącz punkt końcowy przesyłania strumieniowego i/lub włączono gniazda internetowe. Upewnij się, że usługa aplikacja systemu Azure jest uruchomiona. Jeśli tak jest, spróbuj go ponownie uruchomić. |
Błąd (ConnectionFailure): połączenie zostało zamknięte przez hosta zdalnego. Kod błędu: 1011. Szczegóły błędu: Kod stanu odpowiedzi nie wskazuje powodzenia: 500 (InternalServerError) | Bot określił neuronowy głos w polu speak jego działania wyjściowego, ale region świadczenia usługi Azure skojarzony z kluczem zasobu nie obsługuje głosów neuronowych. Zobacz neuronowe głosy i standardowe głosy. |
Jeśli akcje w tabeli nie rozwiążą problemu, zobacz Asystenty głosowe: często zadawane pytania. Jeśli nadal nie możesz rozwiązać problemu po wykonaniu wszystkich kroków opisanych w tym samouczku, wprowadź nowy problem na stronie GitHub Asystenta głosowego.
Uwaga dotycząca limitu czasu połączenia
Jeśli masz połączenie z botem i w ciągu ostatnich pięciu minut nie wystąpiło żadne działanie, usługa automatycznie zamyka połączenie gniazda internetowego z klientem i botem. Jest to celowe. Na dolnym pasku pojawi się komunikat: "Upłynął limit czasu aktywnego połączenia, ale gotowy do ponownego nawiązania połączenia na żądanie".
Nie musisz wybierać przycisku Połącz ponownie . Naciśnij przycisk mikrofonu i zacznij mówić, wprowadź wiadomość tekstową lub powiedz słowo kluczowe (jeśli jest włączone). Połączenie zostanie automatycznie ponownie nawiązane.
Wyświetlanie działań bota
Każdy bot wysyła i odbiera komunikaty o aktywności. W oknie Dziennik aktywności klienta Asystenta głosowego systemu Windows dzienniki ze znacznikami czasu pokazują każde działanie odebrane przez klienta z bota. Możesz również zobaczyć działania wysyłane przez klienta do bota przy użyciu metody DialogServiceConnector.SendActivityAsync . Po wybraniu elementu dziennika zostaną wyświetlone szczegóły skojarzonego działania w formacie JSON.
Oto przykładowy kod JSON działania otrzymanego przez klienta:
{
"attachments":[],
"channelData":{
"conversationalAiData":{
"requestInfo":{
"interactionId":"8d5cb416-73c3-476b-95fd-9358cbfaebfa",
"version":"0.2"
}
}
},
"channelId":"directlinespeech",
"conversation":{
"id":"129ebffe-772b-47f0-9812-7c5bfd4aca79",
"isGroup":false
},
"entities":[],
"from":{
"id":"SpeechEchoBotTutorial-BotRegistration-8726"
},
"id":"89841b4d-46ce-42de-9960-4fe4070c70cc",
"inputHint":"acceptingInput",
"recipient":{
"id":"129ebffe-772b-47f0-9812-7c5bfd4aca79|0000"
},
"replyToId":"67c823b4-4c7a-4828-9d6e-0b84fd052869",
"serviceUrl":"urn:botframework:websocket:directlinespeech",
"speak":"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='en-US'><voice name='en-US-JennyNeural'>Echo: Hello and welcome.</voice></speak>",
"text":"Echo: Hello and welcome.",
"timestamp":"2019-07-19T20:03:51.1939097Z",
"type":"message"
}
Aby dowiedzieć się więcej o tym, co jest zwracane w danych wyjściowych JSON, zobacz pola w działaniu. Na potrzeby tego samouczka możesz skoncentrować się na polach tekstowych i mówić .
Wyświetlanie kodu źródłowego klienta dla wywołań zestawu Speech SDK
Klient Asystenta głosowego systemu Windows używa pakietu NuGet Microsoft.CognitiveServices.Speech, który zawiera zestaw SPEECH SDK. Dobrym miejscem do rozpoczęcia przeglądania przykładowego kodu jest metoda InitSpeechConnector()
w pliku VoiceAssistantClient\MainWindow.xaml.cs, która tworzy te dwa obiekty zestawu Speech SDK:
- DialogServiceConfig: w przypadku ustawień konfiguracji, takich jak klucz zasobu i jego region.
- DialogServiceConnector: aby zarządzać połączeniami kanału i zdarzeniami subskrypcji klienta na potrzeby obsługi rozpoznanych odpowiedzi mowy i bota.
Dodawanie aktywacji przy użyciu niestandardowych słów kluczowych
Zestaw SPEECH SDK obsługuje aktywację słów kluczowych niestandardowych. Podobnie jak "Hej Cortana" dla asystenta firmy Microsoft, możesz napisać aplikację, która będzie stale nasłuchiwać wybranego słowa kluczowego. Należy pamiętać, że słowo kluczowe może być pojedynczym słowem lub frazą z wieloma wyrazami.
Uwaga
Termin słowo kluczowe jest często używane zamiennie z terminem wake word. Oba te elementy mogą być używane w dokumentacji firmy Microsoft.
Wykrywanie słów kluczowych odbywa się w aplikacji klienckiej. Jeśli używasz słowa kluczowego, dźwięk jest przesyłany strumieniowo do kanału mowy direct line tylko wtedy, gdy słowo kluczowe zostanie wykryte. Kanał mowy direct line zawiera składnik o nazwie weryfikacja słowa kluczowego, który wykonuje bardziej złożone przetwarzanie w chmurze w celu sprawdzenia, czy wybrane słowo kluczowe znajduje się na początku strumienia audio. Jeśli weryfikacja słowa kluczowego powiedzie się, kanał komunikuje się z botem.
Wykonaj następujące kroki, aby utworzyć model słowa kluczowego, skonfigurować klienta Asystenta głosowego systemu Windows do korzystania z tego modelu i przetestować go za pomocą bota:
- Utwórz niestandardowe słowo kluczowe przy użyciu usługi Mowa.
- Rozpakuj plik modelu pobrany w poprzednim kroku. Nazwa powinna mieć nazwę słowa kluczowego. Szukasz pliku o nazwie kws.table.
- W kliencie Asystenta głosowego systemu Windows znajdź menu Ustawienia (ikona koła zębatego w prawym górnym rogu). W polu Ścieżka pliku modelu wprowadź pełną nazwę ścieżki dla pliku kws.table z kroku 2.
- Zaznacz pole wyboru Włączone. Obok pola wyboru powinien zostać wyświetlony następujący komunikat: "Będzie nasłuchiwać słowa kluczowego po następnym połączeniu". Jeśli podano nieprawidłowy plik lub nieprawidłową ścieżkę, powinien zostać wyświetlony komunikat o błędzie.
- Wprowadź wartości w obszarze Klucz subskrypcji i Region klucza subskrypcji, a następnie wybierz przycisk OK , aby zamknąć menu Ustawienia .
- Wybierz pozycję Połącz ponownie. Powinien zostać wyświetlony komunikat z informacją: "Nowa konwersacja została rozpoczęta — wpisz, naciśnij przycisk mikrofonu lub powiedz słowo kluczowe". Aplikacja stale nasłuchuje.
- Mów dowolną frazę rozpoczynającą się od słowa kluczowego. Na przykład: "{twoje słowo kluczowe}, o której godzinie?" Nie musisz wstrzymywać się po wypowiedzeniu słowa kluczowego. Po zakończeniu następuje dwie rzeczy:
- Zobaczysz transkrypcję tego, co mówiłeś.
- Słyszysz odpowiedź bota.
- Kontynuuj eksperymentowanie z trzema typami danych wejściowych, które obsługuje bot:
- Wprowadzanie tekstu na dolnym pasku
- Naciśnięcie ikony mikrofonu i wypowiadanie
- Powiedzenie frazy rozpoczynającej się od słowa kluczowego
Wyświetlanie kodu źródłowego, który umożliwia wykrywanie słów kluczowych
W kodzie źródłowym klienta Asystenta głosowego systemu Windows użyj tych plików, aby przejrzeć kod, który umożliwia wykrywanie słów kluczowych:
- VoiceAssistantClient\Models.cs zawiera wywołanie metody Speech SDK KeywordRecognitionModel.fromFile(). Ta metoda służy do tworzenia wystąpienia modelu z pliku lokalnego na dysku.
- VoiceAssistantClient\MainWindow.xaml.cs zawiera wywołanie metody Zestawu SDK usługi Mowa DialogServiceConnector.StartKeywordRecognitionAsync(). Ta metoda aktywuje ciągłe wykrywanie słów kluczowych.
Opcjonalnie: Zmiana języka i głosu bota
Utworzony bot będzie nasłuchiwać i odpowiadać w języku angielskim przy użyciu domyślnego tekstu w języku angielskim USA na głos mowy. Nie ogranicza się jednak do używania języka angielskiego ani domyślnego głosu.
W tej sekcji dowiesz się, jak zmienić język, na który bot nasłuchuje i odpowiada. Dowiesz się również, jak wybrać inny głos dla tego języka.
Zmienianie języka
Możesz wybrać jedną z języków wymienionych w tabeli zamiany mowy na tekst . Poniższy przykład zmienia język na niemiecki.
Otwórz aplikację Klienta Asystenta głosowego systemu Windows, wybierz przycisk Ustawienia (ikona koła zębatego w prawym górnym rogu), a następnie wprowadź polecenie de-de w polu Język. Jest to wartość ustawień regionalnych wymieniona w tabeli zamiany mowy na tekst .
W tym kroku ustawia język mówiony, który ma zostać rozpoznany, przesłaniając domyślną wartość en-us. Instruuje również kanał Direct Line Speech, aby używał domyślnego niemieckiego głosu dla odpowiedzi bota.
Zamknij stronę Ustawienia, a następnie wybierz przycisk Połącz ponownie, aby nawiązać nowe połączenie z botem echo.
Wybierz przycisk mikrofonu i wpisz frazę w języku niemieckim. Zostanie wyświetlony rozpoznany tekst, a bot echo odpowiada za pomocą domyślnego niemieckiego głosu.
Zmienianie domyślnego głosu bota
Możesz wybrać tekst na głos mowy i kontrolować wymowę, jeśli bot określa odpowiedź w postaci języka znaczników syntezy mowy (SSML) zamiast prostego tekstu. Bot echo nie używa języka SSML, ale można łatwo zmodyfikować kod, aby to zrobić.
W poniższym przykładzie dodano język SSML do odpowiedzi bota echo, tak aby niemiecki głos de-DE-RalfNeural
(głos męski) był używany zamiast domyślnego głosu kobiecego. Zapoznaj się z listą standardowych głosów i listą neuronowych głosów obsługiwanych w twoim języku.
Otwórz plik samples\csharp_dotnetcore\02.echo-bot\echo-bot.cs.
Znajdź następujące wiersze:
var replyText = $"Echo: {turnContext.Activity.Text}"; await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
Zastąp je następującym kodem:
var replyText = $"Echo: {turnContext.Activity.Text}"; var replySpeak = @"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='de-DE'> <voice name='de-DE-RalfNeural'>" + $"{replyText}" + "</voice></speak>"; await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replySpeak), cancellationToken);
Skompiluj rozwiązanie w programie Visual Studio i napraw wszelkie błędy kompilacji.
Drugi argument w metodzie MessageFactory.Text
ustawia pole wypowiedzi działania w odpowiedzi bota. Po poprzedniej zmianie jest zastępowany z prostego tekstu na SSML w celu określenia nie domyślnego niemieckiego głosu.
Ponowne wdrażanie bota
Po wprowadzeniu niezbędnych zmian w botze następnym krokiem jest ponowne opublikowanie go w usłudze aplikacja systemu Azure i wypróbowanie go:
W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt EchoBot i wybierz polecenie Publikuj.
Poprzednia konfiguracja wdrożenia została już załadowana jako domyślna. Wybierz pozycję Publikuj obok pozycji EchoBot20190805125647 — Web Deploy.
Komunikat Publikowanie powiodło się zostanie wyświetlony w oknie danych wyjściowych programu Visual Studio, a strona internetowa zostanie otwarta z komunikatem "Twój bot jest gotowy!"
Otwórz aplikację klienta Asystenta głosowego systemu Windows. Wybierz przycisk Ustawienia (ikona koła zębatego w prawym górnym rogu) i upewnij się, że nadal masz de-de w polu Język.
Postępuj zgodnie z instrukcjami w temacie Uruchamianie klienta asystenta głosowego systemu Windows, aby ponownie nawiązać połączenie z nowo wdrożonym botem, mówić w nowym języku i usłyszeć odpowiedź bota w tym języku za pomocą nowego głosu.
Czyszczenie zasobów
Jeśli nie zamierzasz nadal korzystać z bota echo wdrożonego w tym samouczku, możesz usunąć go i wszystkie skojarzone z nią zasoby platformy Azure, usuwając grupę zasobów platformy Azure:
- W witrynie Azure Portal wybierz pozycję Grupy zasobów w obszarze Usługi platformy Azure.
- Znajdź grupę zasobów SpeechEchoBotTutorial-ResourceGroup . Wybierz trzy kropki (...).
- Wybierz pozycję Usuń grupę zasobów.
Zapoznaj się z dokumentacją
- Wdróż w regionie platformy Azure w pobliżu, aby zobaczyć poprawę czasu odpowiedzi bota.
- Wdróż w regionie platformy Azure, który obsługuje wysokiej jakości tekst neuronowy na głosy mowy.
- Pobierz cennik skojarzony z kanałem mowy direct line:
- Skompiluj i wdróż własnego bota obsługującego głos:
- Tworzenie bota bota platformy Bot Framework. Następnie zarejestruj go za pomocą kanału mowy direct line i dostosuj bota do obsługi głosu.
- Zapoznaj się z istniejącymi rozwiązaniami platformy Bot Framework: utwórz asystenta wirtualnego i rozszerz go do usługi Direct Line Speech.