Tutorial: Sprachaktivierung für Ihren Bot
Mithilfe von Azure KI Speech können Sie die Sprachaktivierung für einen Chatbot implementieren.
In diesem Tutorial wird Microsoft Bot Framework verwendet, um einen Bot zu erstellen, der auf Ihre Aussagen antwortet. Der Bot wird in Azure bereitgestellt und beim Direct Line Speech-Kanal von Bot Framework registriert. Anschließend wird eine exemplarische Client-App für Windows konfiguriert, über die Sie mit dem Bot sprechen und dessen Antwort hören können.
Zum Abschließen des Tutorials benötigen Sie keine umfassende Erfahrung oder Vertrautheit mit Azure, Bot Framework-Bots oder Direct Line Speech erforderlich.
Der Chatbot mit Sprachunterstützung, der in diesem Tutorial erstellt wird, funktioniert wie folgt:
- Die Beispielclientanwendung ist so konfiguriert, dass eine Verbindung mit dem Direct Line Speech-Kanal und dem Echobot hergestellt wird.
- Wenn der Benutzer eine Taste drückt, wird der Audiostream der Stimme vom Mikrofon übertragen. (Oder die Audiodaten werden fortlaufend aufgezeichnet, wenn ein benutzerdefiniertes Schlüsselwort verwendet wird.)
- Wenn ein benutzerdefiniertes Schlüsselwort verwendet wird, erfolgt die Schlüsselworterkennung auf dem lokalen Gerät, wobei das Audiostreaming in die Cloud geleitet wird.
- Die exemplarische Clientanwendung stellt unter Verwendung des Speech SDK eine Verbindung mit dem Direct Line Speech-Kanal her und streamt Audioinhalte.
- Optional wird im Dienst eine Überprüfung des Schlüsselworts mit höherer Genauigkeit durchgeführt.
- Die Audioinhalte werden an den Spracherkennungsdienst übermittelt und in Text umgewandelt.
- Der erkannte Text wird als Bot Framework-Aktivität an den Echobot übergeben.
- Der Antworttext wird vom Sprachsynthesedienst in Audio umgewandelt und zur Wiedergabe wieder an die Clientanwendung zurück gestreamt.
Hinweis
Für die in diesem Tutorial beschriebenen Schritte ist kein kostenpflichtiger Dienst erforderlich. Als neuer Azure-Benutzer können Sie Guthaben aus Ihrem kostenlosen Azure-Testabonnement sowie den Free-Tarif des Speech-Diensts für dieses Tutorial verwenden.
Hier ist angegeben, was in diesem Tutorial vermittelt wird:
- Erstellen neuer Azure-Ressourcen
- Erstellen, Testen und Bereitstellen des Echobotbeispiels in Azure App Service
- Registrieren des Bots bei einem Direct Line Speech-Kanal
- Erstellen und Ausführen des Windows-Sprachassistent-Clients für die Interaktion mit dem Echobot
- Hinzufügen der Aktivierung mittels benutzerdefiniertem Schlüsselwort
- Ändern der Sprache der erkannten und gesprochenen Sprache
Voraussetzungen
Für dieses Tutorial benötigen Sie Folgendes:
- Windows 10-PC mit einem funktionierenden Mikrofon und Lautsprechern (oder Kopfhörer)
- Visual Studio 2017 oder höher mit installierter Workload ASP.NET und Webentwicklung
- .NET Framework Runtime 4.6.1 oder höher
- Ein Azure-Konto. Registrieren Sie sich kostenlos.
- Ein GitHub-Konto.
- Git für Windows.
Erstellen einer Ressourcengruppe
In der Client-App, die Sie in diesem Tutorial erstellen, werden einige Azure-Dienste verwendet. Um die Roundtripzeit für Antworten des Bots zu verkürzen, sollten sich diese Dienste in derselben Azure-Region befinden.
In diesem Abschnitt erfahren Sie, wie Sie eine Ressourcengruppe in der Region „USA, Westen“ erstellen. Diese Ressourcengruppe wird beim Erstellen einzelner Ressourcen für Bot Framework, für den Direct Line Speech-Kanal und für den Speech-Dienst verwendet.
- Navigieren Sie im Azure-Portal zur Seite zum Erstellen einer Ressourcengruppe.
- Geben Sie die folgenden Informationen ein:
- Legen Sie Abonnement auf Kostenlose Testversion fest. (Sie können auch ein vorhandenes Abonnement verwenden.)
- Geben Sie unter Ressourcengruppe einen Namen ein. Wir empfehlen den Namen SpeechEchoBotTutorial-ResourceGroup.
- Wählen Sie im Dropdownmenü Region den Eintrag USA, Westen aus.
- Klicken Sie auf Überprüfen und erstellen. Es sollte das Banner Überprüfung erfolgreich angezeigt werden.
- Wählen Sie Erstellen aus. Die Erstellung der Ressourcengruppe kann einige Minuten dauern.
- Wie bei den Ressourcen, die Sie später in diesem Tutorial erstellen, empfiehlt es sich, diese Ressourcengruppe für den einfachen Zugriff an Ihr Dashboard anzuheften. Wenn Sie diese Ressourcengruppe anheften möchten, wählen Sie das Stecknadelsymbol neben dem Namen aus.
Auswahl einer Azure-Region
Stellen Sie sicher, dass Sie eine unterstützte Azure-Region verwenden. Im Direct Line Speech-Kanal wird der Sprachsynthesedienst verwendet, der neuronale Stimmen und Standardstimmen enthält. Neuronale Stimmen werden in diesen Azure-Regionenverwendet. Standardstimmen werden in diesen Azure-Regionen verwendet (aber ausgemustert).
Weitere Informationen zu Regionen finden Sie unter Azure-Standorte.
Erstellen von Ressourcen
Nachdem Sie eine Ressourcengruppe in einer unterstützten Region erstellt haben, werden im nächsten Schritt einzelne Ressourcen für die in diesem Tutorial verwendeten Dienste erstellt.
Erstellen einer Speech-Dienstressource
- Navigieren Sie im Azure-Portal zur Seite zum Erstellen einer Speech-Dienstressource.
- Geben Sie die folgenden Informationen ein:
- Unter Name empfiehlt sich die Angabe von SpeechEchoBotTutorial-Speech als Ressourcenname.
- Vergewissern Sie sich, dass unter Abonnement die Option Kostenlose Testversion ausgewählt ist.
- Wählen Sie unter Standort die Option USA, Westen aus.
- Wählen Sie unter Tarif die Option F0 aus. Dies ist der Free-Tarif.
- Wählen Sie unter Ressourcengruppe die Gruppe SpeechEchoBotTutorial-ResourceGroup aus.
- Wählen Sie nach der Eingabe aller erforderlichen Informationen Erstellen aus. Die Erstellung der Ressource kann einige Minuten dauern.
- Später in diesem Tutorial benötigen Sie Abonnementschlüssel für diesen Dienst. Auf diese Schlüssel können Sie jederzeit im Bereich Übersicht Ihrer Ressource (unter Schlüssel verwalten) oder im Bereich Schlüssel zugreifen.
Vergewissern Sie sich an diesem Punkt, dass Ihre Ressourcengruppe (SpeechEchoBotTutorial-ResourceGroup) über eine Speech-Dienstressource verfügt:
Name | type | Standort |
---|---|---|
SpeechEchoBotTutorial-Speech | Spracheingabe/-ausgabe | USA (Westen) |
Erstellen eines Azure App Service-Plans
Mit einem App Service-Plan wird ein Satz mit Computeressourcen für eine auszuführende Web-App definiert.
- Navigieren Sie im Azure-Portal zur Seite zum Erstellen eines Azure App Service-Plans.
- Geben Sie die folgenden Informationen ein:
- Legen Sie Abonnement auf Kostenlose Testversion fest. (Sie können auch ein vorhandenes Abonnement verwenden.)
- Wählen Sie unter Ressourcengruppe die Gruppe SpeechEchoBotTutorial-ResourceGroup aus.
- Unter Name empfiehlt sich die Angabe von SpeechEchoBotTutorial-AppServicePlan als Name für den Plan.
- Wählen Sie unter Betriebssystem die Option Windows aus.
- Wählen Sie unter Region die Option USA, Westen aus.
- Vergewissern Sie sich, dass unter Tarif die Option Standard S1 ausgewählt ist. Dies sollte der Standardwert sein. Falls nicht, legen Sie Betriebssystem auf Windows fest.
- Klicken Sie auf Überprüfen und erstellen. Es sollte das Banner Überprüfung erfolgreich angezeigt werden.
- Wählen Sie Erstellen aus. Die Erstellung der Ressource kann einige Minuten dauern.
Überprüfen Sie hier, ob die Ressourcengruppe (SpeechEchoBotTutorial-ResourceGroup) zwei Ressourcen enthält:
Name | type | Standort |
---|---|---|
SpeechEchoBotTutorial-AppServicePlan | App Service-Plan | USA (Westen) |
SpeechEchoBotTutorial-Speech | Azure KI Services | USA (Westen) |
Erstellen eines Echobots
Sie haben Ressourcen erstellt. Beginnen Sie nun mit dem Echobotbeispiel, das den eingegebenen Text als Antwort zurückgibt. Der Beispielcode ist bereits für die Verwendung mit dem Direct Line Speech-Kanal konfiguriert. Die Verbindung mit diesem Kanal wird hergestellt, nachdem der Bot in Azure bereitgestellt wurde.
Hinweis
Die folgenden Anweisungen sowie weitere Informationen zum Echobot sind in der Infodatei des Beispiels auf GitHub verfügbar.
Führen Sie das Botbeispiel auf Ihrem Computer aus.
Klonen Sie das Beispielrepository:
git clone https://github.com/Microsoft/botbuilder-samples.git
Öffnen Sie Visual Studio.
Wählen Sie auf der Symbolleiste Datei>Öffnen>Projekt/Projektmappe aus. Öffnen Sie dann die Projektmappe:
samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
Drücken Sie nach dem Laden des Projekts die Taste F5, um das Projekt zu erstellen und auszuführen.
Im daraufhin geöffneten Browser wird ein Bildschirm wie der folgende angezeigt:
Testen des Botbeispiels mit dem Bot Framework Emulator
Bot Framework Emulator ist eine Desktopanwendung, mit der Botentwickler ihre Bots lokal oder remote über einen Tunnel testen und debuggen können. Der Emulator akzeptiert eingegebenen Text (keine Stimme) als Eingabe. Der Bot antwortet auch mit Text.
Führen Sie die folgenden Schritte aus, um Ihren lokal ausgeführten Echobot mit Bot Framework Emulator mit Texteingabe und Textausgabe zu testen. Nach der Bereitstellung des Bots in Azure können Sie ihn mit Spracheingabe und Sprachausgabe testen.
Installieren Sie Bot Framework Emulator (ab Version 4.3.0).
Öffnen Sie Bot Framework Emulator, und wählen Sie File>Open Bot („Datei“ > „Bot öffnen“) aus.
Geben Sie die URL für den Bot ein. Beispiel:
http://localhost:3978/api/messages
Wählen Sie Verbinden.
Der Bot begrüßt Sie mit „Hello and welcome!“ (Hallo und willkommen!). Geben Sie eine beliebige Textnachricht ein, und vergewissern Sie sich, dass Sie eine Antwort vom Bot erhalten.
Hier sehen Sie ein Beispiel für die Kommunikation mit einem Echobot:
Bereitstellen des Bots in Azure App Service
Im nächsten Schritt wird der Echobot in Azure bereitgestellt. Ein Bot kann auf mehrere Arten bereitgestellt werden, unter anderem über die Azure CLI oder mithilfe von Bereitstellungsvorlagen. In diesem Tutorial wird er direkt über Visual Studio veröffentlicht.
Hinweis
Sollte Veröffentlichen im Rahmen der folgenden Schritte nicht angezeigt werden, fügen Sie mithilfe des Visual Studio-Installers die Workload ASP.NET und Webentwicklung hinzu.
Öffnen Sie in Visual Studio den Echobot, der für die Verwendung mit dem Direct Line Speech-Kanal konfiguriert ist:
samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt EchoBot, und wählen Sie Veröffentlichen aus.
Führen Sie im daraufhin geöffneten Fenster Veröffentlichen die folgenden Aktionen aus:
- Wählen Sie Azure>Weiter aus.
- Wählen Sie Azure App Service (Windows)>Weiter aus.
- Wählen Sie neben dem grünen Pluszeichen die Option Neue Azure App Service-Instanz erstellen aus.
Bei Anzeige des Fensters App Service (Windows) :
Wählen Sie Konto hinzufügen aus, und melden Sie sich mit den Anmeldeinformationen für Ihr Azure-Konto an. Wenn Sie bereits angemeldet sind, wählen Sie Ihr Konto in der Dropdownliste aus.
Geben Sie unter Name einen global eindeutigen Namen für Ihren Bot ein. Anhand dieses Namens wird eine eindeutige Bot-URL erstellt.
Im Feld wird ein Standardname mit Datum und Uhrzeit angezeigt (Beispiel: EchoBot20190805125647). In diesem Tutorial können Sie den Standardnamen verwenden.
Wählen Sie unter Abonnement die Option Kostenlose Testversion aus.
Wählen Sie unter Ressourcengruppe die Gruppe SpeechEchoBotTutorial-ResourceGroup aus.
Wählen Sie unter Hostingplan die Option SpeechEchoBotTutorial-AppServicePlan aus.
Wählen Sie Erstellen aus. Wählen Sie auf dem letzten Bildschirm des Assistenten die Option Fertig stellen aus.
Wählen Sie Veröffentlichen aus. Visual Studio stellt den Bot in Azure bereit.
Im Visual Studio-Ausgabefenster wird eine Erfolgsmeldung angezeigt:
Publish Succeeded. Web App was published successfully https://EchoBot20190805125647.azurewebsites.net/
Ihr Standardbrowser wird mit einer Seite geöffnet, auf der Folgendes angezeigt wird: „Your bot is ready!“ (Ihr Bot ist bereit!).
Überprüfen Sie an diesem Punkt Ihre Ressourcengruppe (SpeechEchoBotTutorial-ResourceGroup) im Azure-Portal. Vergewissern Sie sich, dass sie die drei folgenden Ressourcen enthält:
Name | type | Standort |
---|---|---|
EchoBot20190805125647 | App Service | USA (Westen) |
SpeechEchoBotTutorial-AppServicePlan | App Service-Plan | USA (Westen) |
SpeechEchoBotTutorial-Speech | Azure KI Services | USA (Westen) |
Aktivieren von WebSockets
Sie müssen eine kleine Konfigurationsänderung vornehmen, damit der Bot über WebSockets mit dem Direct Line Speech-Kanal kommunizieren kann. Gehen Sie zum Aktivieren von WebSockets wie folgt vor:
- Wählen Sie im Azure-Portal Ihre App Service-Ressource aus. Die Ressource sollte einen Namen wie EchoBot20190805125647 (Ihr eindeutiger App-Name) haben.
- Wählen Sie im linken Bereich unter Einstellungen die Option Konfiguration aus.
- Wählen Sie die Registerkarte Allgemeine Einstellungen aus.
- Suchen Sie die Umschaltfläche Websockets, und legen Sie sie auf Ein fest.
- Wählen Sie Speichern aus.
Tipp
Über die Steuerelemente oben auf der Seite der Azure App Service-Instanz können Sie den Dienst beenden oder neu starten. Dies kann bei der Problembehandlung nützlich sein.
Erstellen einer Kanalregistrierung
Nach dem Erstellen einer Azure App Service-Ressource zum Hosten Ihres Bots wird im nächsten Schritt eine Kanalregistrierung erstellt. Das Erstellen einer Kanalregistrierung ist eine Voraussetzung für die Registrierung des Bots bei Bot Framework-Kanälen (zu denen auch der Direct Line Speech-Kanal gehört). Weitere Informationen zur Kanalnutzung von Bots finden Sie unter Konfigurieren eines Bots zur Ausführung in einem oder mehreren Kanälen.
- Navigieren Sie im Azure-Portal zur Seite zum Erstellen eines Azure-Bots.
- Geben Sie die folgenden Informationen ein:
Geben Sie unter Bot-Handle den Handle SpeechEchoBotTutorial-BotRegistration-#### ein. Ersetzen Sie #### durch mehrere Handles Ihrer Wahl.
Hinweis
Der Bot-Handle muss global eindeutig sein. Wenn Sie einen Bot-Handle eingeben und die Fehlermeldung „Die angeforderte Bot-ID ist nicht verfügbar.“ erhalten, verwenden Sie eine andere Nummer. In den folgenden Beispielen wird 8726 verwendet.
Wählen Sie unter Abonnement die Option Kostenlose Testversion aus.
Wählen Sie unter Ressourcengruppe die Gruppe SpeechEchoBotTutorial-ResourceGroup aus.
Wählen Sie unter Standort die Option USA, Westen aus.
Wählen Sie unter Tarif die Option F0 aus.
Ignorieren Sie Auto create App ID and password (App-ID und Kennwort automatisch erstellen).
- Wählen Sie unten im Bereich Azure-Bot die Option Erstellen aus.
- Nachdem Sie die Ressource erstellt haben, öffnen Sie Ihre Ressource SpeechEchoBotTutorial-BotRegistration-#### im Azure-Portal.
- Wählen Sie im Bereich Einstellungen die Option Konfiguration aus.
- Geben Sie unter Nachrichtenendpunkt die URL für Ihre Web-App mit dem angefügten Pfad /api/messages ein. Wenn der global eindeutige App-Name beispielsweise EchoBot20190805125647 ist, lautet der Messagingendpunkt
https://EchoBot20190805125647.azurewebsites.net/api/messages/
.
Überprüfen Sie an diesem Punkt Ihre Ressourcengruppe (SpeechEchoBotTutorial-ResourceGroup) im Azure-Portal. Es sollte jetzt mindestens vier Ressourcen anzeigen:
Name | type | Standort |
---|---|---|
EchoBot20190805125647 | App Service | USA (Westen) |
SpeechEchoBotTutorial-AppServicePlan | App Service-Plan | USA (Westen) |
SpeechEchoBotTutorial-BotRegistration-8726 | Botdienst | Global |
SpeechEchoBotTutorial-Speech | Azure KI Services | USA (Westen) |
Wichtig
In der Azure KI Bot Service-Ressource wird die globale Region angezeigt, auch wenn Sie „USA, Westen“ ausgewählt haben. Dies entspricht dem erwarteten Verhalten.
Optional: Testen im Webchat
Auf der Seite Azure-Bot befindet sich unter Einstellungen die Option In Webchat testen. Sie funktioniert nicht standardmäßig mit Ihrem Bot, da sich der Webchat bei Ihrem Bot authentifizieren muss.
Wenn Sie Ihren bereitgestellten Bot mit Texteingaben testen möchten, können Sie die folgenden Schritte verwenden. Diese Schritte sind optional und für die Fortsetzung des Tutorials nicht erforderlich.
Suchen Sie im Azure-Portal nach der Ressource EchoBotTutorial-BotRegistration-####, und öffnen Sie sie.
Wählen Sie im Bereich Einstellungen die Option Konfiguration aus. Kopieren Sie den Wert unter Microsoft-App-ID.
Öffnen Sie die Visual Studio-Projektmappe „EchoBot“. Suchen Sie im Projektmappen-Explorer nach appsettings.json und wählen Sie es aus.
Ersetzen Sie die leere Zeichenfolge neben MicrosoftAppId in der JSON-Datei durch den kopierten ID-Wert.
Kehren Sie zum Azure-Portal zurück. Wählen Sie im Bereich Einstellungen die Option Konfiguration aus. Wählen Sie anschließend neben Microsoft-App-ID die Option Verwalten aus.
Wählen Sie Neuer geheimer Clientschlüssel. Fügen Sie eine Beschreibung hinzu (beispielsweise web chat), und wählen Sie Hinzufügen aus. Kopieren Sie das neue Geheimnis.
Ersetzen Sie die leere Zeichenfolge neben MicrosoftAppPassword in der JSON-Datei durch den kopierten Wert des Geheimnisses.
Speichern Sie die JSON-Datei. Sie sollte nun in etwa wie der folgende Code aussehen:
{ "MicrosoftAppId": "YourAppId", "MicrosoftAppPassword": "YourAppPassword" }
Veröffentlichen Sie die App erneut. Klicken Sie dazu im Projektmappen-Explorer von Visual Studio mit der rechten Maustaste auf das Projekt EchoBot, wählen Sie Veröffentlichen aus, und wählen Sie anschließend die Schaltfläche Veröffentlichen aus.
Registrieren des Direct Line Speech-Kanals
Nun muss der Bot beim Direct Line Speech-Kanal registriert werden. Dieser Kanal erstellt eine Verbindung zwischen Ihrem Bot und einer Client-App, die mit dem Speech SDK kompiliert wurde.
Suchen Sie im Azure-Portal nach der Ressource SpeechEchoBotTutorial-BotRegistration-####, und öffnen Sie sie.
Wählen Sie im Bereich Einstellungen die Option Kanäle aus, und führen Sie dann die folgenden Schritte aus:
- Wählen Sie unter Weitere Kanäle die Option Direct Line Speech aus.
- Überprüfen Sie den Text auf der Seite Direct line Speech konfigurieren, und erweitern Sie dann das Dropdownmenü Cognitive Services-Konto.
- Wählen Sie im Menü die zuvor erstellte Speech-Dienstressource (beispielsweise SpeechEchoBotTutorial-Speech) aus, um den Bot Ihrem Abonnementschlüssel zuzuordnen.
- Ignorieren Sie die restlichen optionalen Felder.
- Wählen Sie Speichern aus.
Wählen Sie im Bereich Einstellungen die Option Konfiguration aus, und führen Sie dann die folgenden Schritte aus:
- Aktivieren Sie das Kontrollkästchen Streamingendpunkt aktivieren. Dieser Schritt ist erforderlich, um zwischen dem Bot und dem Direct Line Speech-Kanal ein Kommunikationsprotokoll auf der Basis von Websockets zu erstellen.
- Wählen Sie Speichern aus.
Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Direct Line Speech für einen Bot.
Ausführen des Windows-Sprachassistent-Clients
Der Windows-Sprachassistent-Client ist eine WPF-App (Windows Presentation Foundation) in C#, in der mithilfe des Speech SDK die Kommunikation mit dem Bot über den Direct Line Speech-Kanal verwaltet wird. Verwenden Sie ihn, um mit dem Bot zu interagieren und ihn zu testen, bevor Sie eine benutzerdefinierte Client-App schreiben. Da es sich hierbei um einen Open-Source-Client handelt, können Sie entweder die ausführbare Datei herunterladen und ausführen oder ihn selbst kompilieren.
Der Windows-Sprachassistent-Client verfügt über eine einfache Benutzeroberfläche, über die Sie die Verbindung mit dem Bot konfigurieren und die Textunterhaltung sowie Bot Framework-Aktivitäten im JSON-Format und adaptive Karten anzeigen können. Außerdem wird die Verwendung von benutzerdefinierten Schlüsselwörtern unterstützt. Über diesen Client sprechen Sie mit dem Bot und erhalten eine Sprachantwort.
Hinweis
Vergewissern Sie sich an diesem Punkt, dass Ihr Mikrofon und Ihre Lautsprecher aktiviert sind und funktionieren.
Navigieren Sie zum GitHub-Repository für den Windows-Sprachassistent-Client.
Führen Sie die angegebenen Schritte aus, um eine der folgenden Aktionen auszuführen:
- Herunterladen einer vorab erstellten ausführbaren Datei in einem ZIP-Paket zum Ausführen
- Manuelles Erstellen der ausführbaren Datei durch Klonen des Repositorys und Erstellen des Projekts
Öffnen Sie die Clientanwendung VoiceAssistantClient.exe, und konfigurieren Sie sie für die Verbindungsherstellung mit Ihrem Bot. Orientieren Sie sich dabei an der Anleitung im GitHub-Repository.
Wählen Sie Erneut verbinden aus, und vergewissern Sie sich, dass die Meldung „New conversation started - type or press the microphone button.“ (Neue Unterhaltung begonnen. Geben Sie Text ein, oder klicken Sie auf die Mikrofonschaltfläche.) angezeigt wird.
Testen Sie nun den Bot. Wählen Sie dazu die Mikrofonschaltfläche aus, und sagen Sie ein paar Worte auf Englisch. Der erkannte Text wird angezeigt, während Sie sprechen. Wenn Sie aufhören zu sprechen, antwortet der Bot mit eigener Stimme und sagt „Echo“, gefolgt von den erkannten Wörtern.
Sie können auch über Text mit dem Bot kommunizieren. Geben Sie den Text einfach auf der unteren Leiste ein.
Behandeln von Problemen mit dem Windows-Sprachassistent-Client
Sollte im Hauptfenster der App eine Fehlermeldung angezeigt werden, können Sie das Problem anhand der folgenden Tabelle identifizieren und behandeln:
Meldung | Vorgehensweise |
---|---|
Fehler (AuthenticationFailure): Authentifizierungsfehler beim WebSocket-Upgrade (401). Überprüfung auf korrekten Ressourcenschlüssel (oder Autorisierungstoken) und Regionsnamen | Stellen Sie auf der Seite Einstellungen der App sicher, dass Sie den Schlüssel und die zugehörige Region korrekt eingegeben haben. |
Fehler (ConnectionFailure): Verbindung wurde vom Remotehost geschlossen. Fehlercode: 1011. Fehlerdetails: Vor dem Senden einer Nachricht konnte keine Verbindung mit dem Bot hergestellt werden. | Vergewissern Sie sich, dass Sie das Kontrollkästchen „Streamingendpunkt aktivieren“ aktiviert und/oder Websockets aktiviert haben. Vergewissern Sie sich, dass Azure App Service ausgeführt wird. Falls ja, starten Sie Azure App Service neu. |
Fehler (ConnectionFailure): Verbindung wurde vom Remotehost geschlossen. Fehlercode: 1002 Fehlerdetails: Vom Server wurde Statuscode '503' zurückgegeben, als Statuscode '101' erwartet wurde. | Vergewissern Sie sich, dass Sie das Kontrollkästchen „Streamingendpunkt aktivieren“ aktiviert und/oder Websockets aktiviert haben. Vergewissern Sie sich, dass Azure App Service ausgeführt wird. Falls ja, starten Sie Azure App Service neu. |
Fehler (ConnectionFailure): Verbindung wurde vom Remotehost geschlossen. Fehlercode: 1011. Fehlerdetails: Der Antwortstatuscode weist nicht auf Erfolg hin: 500 (InternalServerError). | Für den Bot ist im Sprachfeld der zugehörigen Ausgabeaktivität eine neuronale Stimme angegeben. In der Azure-Region, die Ihrem Ressourcenschlüssel zugeordnet ist, werden neuronale Stimmen jedoch nicht unterstützt. Informationen zu neuronalen Stimmen finden Sie hier. Informationen zu Standardstimmen finden Sie hier. |
Sollte Ihr Problem durch die Aktionen in der Tabelle nicht abgedeckt sein, finden Sie weitere Informationen unter Häufig gestellte Fragen zu Sprachassistenten. Wenn Sie Ihr Problem auch nach dem Ausführen aller Schritte in diesem Tutorial nicht lösen können, erstellen Sie ein neues Issue auf der GitHub-Seite des Sprachassistenten.
Hinweis zum Verbindungstimeout
Wenn Sie mit einem Bot verbunden sind und innerhalb der letzten fünf Minuten keine Aktivität stattgefunden hat, wird die Websocketverbindung mit dem Client und dem Bot automatisch getrennt. Dies ist beabsichtigt. Auf der unteren Leiste wird eine Meldung mit dem Hinweis angezeigt, dass bei der aktiven Verbindung ein Timeout aufgetreten ist, die Verbindung bei Bedarf aber wiederhergestellt werden kann.
Die Schaltfläche Verbindung wiederherstellen muss nicht ausgewählt werden. Klicken Sie auf die Mikrofonschaltfläche, und beginnen Sie zu sprechen. Alternativ können Sie auch eine Textnachricht eingeben oder das Schlüsselwort sagen (sofern aktiviert). Die Verbindung wird automatisch wiederhergestellt.
Anzeigen von Botaktivitäten
Jeder Bot sendet und empfängt Aktivitätsnachrichten. Im Fenster Aktivitätsprotokoll des Windows-Sprachassistent-Clients werden mit einem Zeitstempel versehene Protokolle mit den einzelnen Aktivitäten angezeigt, die der Client vom Bot empfangen hat. Mithilfe der Methode DialogServiceConnector.SendActivityAsync können Sie auch die Aktivitäten anzeigen, die der Client an den Bot gesendet hat. Wenn Sie ein Protokollelement auswählen, werden die Details der zugeordneten Aktivität als JSON-Code angezeigt.
Hier sehen Sie JSON-Beispielcode einer Aktivität, die vom Client empfangen wurde:
{
"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"
}
Weitere Informationen zu den in der JSON-Ausgabe zurückgegebenen Daten finden Sie in den Feldern in der Aktivität. Für dieses Tutorial können Sie sich auf die Felder text und speak konzentrieren.
Anzeigen des Clientquellcodes für Aufrufe des Speech SDK
Der Windows-Sprachassistent-Client verwendet das NuGet-Paket Microsoft.CognitiveServices.Speech, das das Speech SDK enthält. Ein guter Ausgangspunkt für die Untersuchung des Beispielcodes ist die Methode InitSpeechConnector()
in der Datei VoiceAssistantClient\MainWindow.xaml.cs, mit der die beiden folgenden Speech SDK-Objekte erstellt werden:
- DialogServiceConfig: Wird für Konfigurationseinstellungen wie Ressourcenschlüssel und die zugehörige Region verwendet.
- DialogServiceConnector: Dient zum Verwalten der Kanalverbindungs- und Clientabonnementereignisse für die Verarbeitung von erkannter Sprache und Botantworten.
Hinzufügen der Aktivierung für benutzerdefinierte Schlüsselwörter
Das Speech SDK unterstützt die Aktivierung durch benutzerdefinierte Schlüsselwörter. Ähnlich wie „Hey Cortana“ für den Microsoft-Assistenten können Sie eine App schreiben, die kontinuierlich auf ein Schlüsselwort Ihrer Wahl lauscht. Ein Schlüsselwort kann ein einzelnes Wort oder ein Ausdruck mit mehreren Wörtern sein.
Hinweis
Der Begriff Schlüsselwort wird häufig als Synonym für den Begriff Aktivierungswort verwendet. In der Microsoft-Dokumentation begegnet Ihnen möglicherweise beides.
Die Erkennung des Schlüsselworts erfolgt in der Client-App. Bei Verwendung eines Schlüsselworts werden Audioinhalte nur dann an den Direct Line Speech-Kanal gestreamt, wenn das Schlüsselwort erkannt wird. Der Direct Line Speech-Kanal umfasst die Komponente Schlüsselwortüberprüfung, über die eine komplexere Verarbeitung in der Cloud durchgeführt wird, um zu überprüfen, ob sich das ausgewählte Schlüsselwort am Anfang des Audiostreams befindet. Wenn die Überprüfung des Schlüsselworts erfolgreich durchgeführt wurde, kommuniziert der Kanal mit dem Bot.
Führen Sie die folgenden Schritte aus, um ein Schlüsselwortmodell zu erstellen, den Windows-Sprachassistent-Client zur Verwendung des Modells zu konfigurieren und das Modell mit Ihrem Bot zu testen:
- Erstellen Sie ein benutzerdefiniertes Schlüsselwort mithilfe des Speech-Diensts.
- Entzippen Sie die Modelldatei, die Sie im vorherigen Schritt heruntergeladen haben. Sie sollte nach Ihrem Schlüsselwort benannt werden. Suchen Sie nach einer Datei mit dem Namen kws.table.
- Navigieren Sie im Windows-Sprachassistent-Client zum Menü Einstellungen (Zahnradsymbol rechts oben). Geben Sie für den Modelldateipfad den vollständigen Pfadnamen für die Datei kws.table aus Schritt 2 ein.
- Aktivieren Sie das Kontrollkästchen Aktiviert. Die folgende Meldung sollte neben dem Kontrollkästchen angezeigt werden: „Lauscht bei der nächsten Verbindung auf das Schlüsselwort“. Wenn Sie die falsche Datei oder einen ungültigen Pfad angegeben haben, sollte eine Fehlermeldung angezeigt werden.
- Geben Sie die Werte für Abonnementschlüssel und Abonnementschlüsselregion ein, und wählen Sie anschließend OK aus, um das Menü Einstellungen zu schließen.
- Wählen Sie Verbindung wiederherstellen aus. Daraufhin wird die folgende Meldung angezeigt: „New conversation started - type, press the microphone button, or say the keyword.“ (Neue Unterhaltung begonnen. Geben Sie Text ein, klicken Sie auf die Mikrofonschaltfläche, oder sagen Sie das Schlüsselwort). Die App lauscht nun kontinuierlich.
- Sagen Sie einen Ausdruck, der mit dem Schlüsselwort beginnt. Beispiel: „{Ihr Schlüsselwort}, wie spät ist es?“. Sie müssen beim Sprechen keine Pause nach dem Schlüsselwort machen. Anschließend geschehen zwei Dinge:
- Eine Transkription des Gesagten wird angezeigt.
- Sie hören die Antwort des Bots.
- Testen Sie die drei Eingabetypen, die für den Bot unterstützt werden:
- Eingeben von Text auf der unteren Leiste
- Klicken auf das Mikrofonsymbol und Sprechen
- Sprechen eines Ausdrucks, der mit Ihrem Schlüsselwort beginnt
Ansehen des Quellcodes, der die Schlüsselworterkennung ermöglicht
Verwenden Sie im Quellcode des Windows-Sprachassistent-Clients die folgenden Dateien, um den Code zu überprüfen, der die Schlüsselworterkennung ermöglicht:
- VoiceAssistantClient\Models.cs enthält einen Aufruf der Speech SDK-Methode KeywordRecognitionModel.fromFile(). Diese Methode wird verwendet, um das Modell aus einer lokalen Datei auf dem Datenträger zu instanziieren.
- VoiceAssistantClient\MainWindow.xaml.cs enthält einen Aufruf der Speech SDK-Methode DialogServiceConnector.StartKeywordRecognitionAsync(). Diese Methode dient zum Aktivieren der kontinuierlichen Schlüsselworterkennung.
Optional: Ändern von Sprache und Stimme des Bots
Der Bot, den Sie erstellt haben, lauscht und antwortet in englischer Sprache. Standardmäßig ist die Sprachsynthese in US-amerikanischem Englisch. Sie sind jedoch nicht auf die Verwendung von Englisch oder einer Standardstimme beschränkt.
In diesem Abschnitt erfahren Sie, wie Sie die Sprache ändern, auf die der Bot lauscht und in der er antwortet. Außerdem lernen Sie, wie Sie eine andere Stimme für diese Sprache auswählen.
Ändern der Sprache
Sie können eine der Sprachen auswählen, die in der Tabelle Spracherkennung erwähnt sind. Im folgenden Beispiel wird die Sprache in Deutsch geändert.
Öffnen Sie die App für den Windows-Sprachassistent-Client, wählen Sie die Schaltfläche Einstellungen (Zahnradsymbol rechts oben) aus, und geben Sie de-de in das Feld Sprache ein. Dies ist der in der Tabelle Spracherkennung erwähnte Wert für das Gebietsschema.
Durch diesen Schritt wird die zu erkennende gesprochene Sprache festgelegt und der Standardwert en-us überschrieben. Außerdem wird der Direct Line Speech-Client angewiesen, eine deutsche Standardstimme für die Botantwort zu verwenden.
Schließen Sie die Seite Einstellungen, und wählen Sie die Schaltfläche Verbindung wiederherstellen aus, um eine neue Verbindung mit Ihrem Echobot herzustellen.
Wählen Sie die Mikrofonschaltfläche aus, und sagen Sie etwas auf Deutsch. Der erkannte Text wird angezeigt, und der Echobot antwortet mit der deutschen Standardstimme.
Ändern der Standardstimme des Bots
Sie können die Sprachsynthesestimme auswählen und die Aussprache steuern, wenn der Bot die Antwort in Form einer Markupsprache für Sprachsynthese (Speech Synthesis Markup Language, SSML) anstelle von einfachem Text angibt. Der Echobot verwendet SSML zwar nicht, Sie können den Code aber mühelos ändern, um dies zu erreichen.
Im folgenden Beispiel wird der Antwort des Echobots SSML hinzugefügt, sodass anstelle der weiblichen Standardstimme die deutsche Stimme de-DE-RalfNeural
(eine männliche Stimme) verwendet wird. Weitere Informationen finden Sie in der Liste der Standardstimmen und in der Liste der neuronalen Stimmen, die für Ihre Sprache unterstützt werden.
Öffnen Sie samples\csharp_dotnetcore\02.echo-bot\echo-bot.cs.
Suchen Sie nach den folgenden Zeilen:
var replyText = $"Echo: {turnContext.Activity.Text}"; await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
Ersetzen Sie sie durch den folgenden Code:
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);
Erstellen Sie die Projektmappe in Visual Studio, und beheben Sie alle Buildfehler.
Mit dem zweiten Argument in der Methode MessageFactory.Text
wird das Aktivitätsfeld „speak“ in der Botantwort festgelegt. Mit der obigen Änderung wurde einfacher Text durch SSML ersetzt, um die Standardstimme in eine deutsche Stimme zu ändern.
Erneutes Bereitstellen des Bots
Nachdem Sie die erforderliche Änderung am Bot vorgenommen haben, wird er im nächsten Schritt erneut in Azure App Service bereitgestellt und dann getestet:
Klicken Sie im Fenster des Projektmappen-Explorers mit der rechten Maustaste auf das Projekt EchoBot, und wählen Sie Veröffentlichen aus.
Ihre vorherige Bereitstellungskonfiguration wurde bereits als Standardkonfiguration geladen. Wählen Sie neben EchoBot20190805125647 - Web Deploy. die Option Veröffentlichen aus.
Im Visual Studio-Ausgabefenster wird die Meldung Veröffentlichung erfolgreich angezeigt, und eine Webseite mit der Meldung „Your bot is ready!“ (Ihr Bot ist bereit!) wird geöffnet.
Öffnen Sie die App für den Windows-Sprachassistent-Client. Wählen Sie die Schaltfläche Einstellungen (Zahnradsymbol rechts oben) aus, und vergewissern Sie sich, dass im Feld Sprache weiterhin de-de angegeben ist.
Befolgen Sie die Anweisungen unter Ausführen des Windows-Sprachassistent-Clients, um eine Verbindung mit dem neu bereitgestellten Bot herzustellen. Sprechen Sie dann in der neuen Sprache, und hören Sie sich die Antwort des Bots in dieser Sprache mit einer neuen Stimme an.
Bereinigen von Ressourcen
Wenn Sie den in diesem Tutorial bereitgestellten Echobot nicht mehr benötigen, können Sie ihn und alle zugehörigen Azure-Ressourcen entfernen, indem Sie die Azure-Ressourcengruppe löschen:
- Wählen Sie im Azure-Portal unter Azure-Dienste die Option Ressourcengruppen aus.
- Suchen Sie nach der Ressourcengruppe SpeechEchoBotTutorial-ResourceGroup. Wählen Sie die drei Punkte (...) aus.
- Wählen Sie die Option Ressourcengruppe löschen.
Dokumentation erkunden
- Bereitstellen in einer Azure-Region in Ihrer Nähe, um die Antwortzeit des Bots zu verbessern
- Stellen Sie in einer Azure-Region bereit, in der neuronale Stimmen mit hoher Qualität für die Sprachsynthese unterstützt werden.
- Preisübersicht für den Direct Line Speech-Kanal:
- Erstellen und Bereitstellen eines eigenen Bots mit Sprachunterstützung:
- Erstellen Sie einen Bot Framework-Bot. Registrieren Sie den Bot beim Direct Line Speech-Kanal, und passen Sie den Bot für Sprache an.
- Erkunden Sie vorhandene Bot Framework-Lösungen: Erstellen Sie einen virtuellen Assistenten, und erweitern Sie ihn um Direct Line Speech.