Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Für Interactive Voice Response (IVR)-Anwendungen und umfassendere Spracherkennungsaufgaben für Sprachanwendungen bietet eine eingeschränkte Liste oder grammatikbasierte Erkennung erhebliche Vorteile. Sie übertrifft die herkömmliche semantikbasierte Spracherkennung, die in modernen Speech-to-Text-(STT) KI-Modulen verwendet wird, bei Weitem in Bezug auf Genauigkeit, Leistung und Kosten. Diese Leistungssteigerung liegt daran, dass die grammatikbasierte Erkennung die Erkennungsausgabe auf einen vordefinierten Satz von Regeln beschränken kann, wodurch die Genauigkeit verbessert wird.
Grammatiken entsprechen der Spracherkennungs-Grammatikspezifikationen (SRGS), wie in der W3C-Spezifikation beschrieben. Wenn eine Anforderung in das Modul gelangt, wandelt sie gesprochenes Audio („Äußerungen“) in Text um. Das Modul vergleicht dann den erkannten Text mit der Grammatik und allen zugehörigen Artefakten, z. B. Aussprache-Lexikons. Dieser Prozess bietet entweder eine wortgetreue Transkription oder eine Interpretation, die durch die Grammatik auf die innerhalb der Grammatik bereitgestellten Informationen beschränkt wird. Zusätzliche Logik, z. B. ECMAScript, die in die Grammatik integriert ist, kann die Interpretation weiter verfeinern.
Die eingeschränkte Spracherkennung eignet sich ideal für:
Erkennen eingeschränkter Listen (Adressen, Börsenticker, Postleitzahlen und Abteilungsnamen, und andere).
Alphanumerische Zeichenfolgenerkennung (Nachverfolgen von Nummern, Kontonummern, Bestätigungscodes usw.).
- Einschließlich Positionseinschränkungen. Die ersten beiden Zeichen der Mitglieds-ID beginnen z. B. mit AN, FD, NT. Ein weiteres Beispiel für Positionseinschränkungen ist eine Fahrzeugidentifikationsnummer.
Alphanumerische oder Ziffernerkennung mit Prüfsummen oder ähnlichen Einschränkungen. Beispielsweise Kreditkartennummern, bei denen eine Luhn-Prüfsumme vorhanden ist.
Direktgesteuerte Dialoganwendungen, bei denen bestimmte Wörter oder Ausdrücke ausgesprochen werden sollten.
Erstellen von Sprachgrammatiken
Schreiben eingeschränkter Sprachgrammatiken mithilfe von Grammatik-XML (GrXML). Wie jedes XML-Dokument muss eine Grammatikdatei mit einem Header beginnen, der bestimmte Merkmale der Grammatik angibt. Der Haupttext einer Grammatikdatei besteht aus Grammatikregeln, die die von der Grammatik erkannten gesprochenen Wörter definieren und die entsprechenden Variablenwerte, die von den erkannten Elementen zurückgegeben werden.
Grammatikdatei-Header
Der Header in einer Grammatikdatei besteht aus der XML-Deklaration und dem Element, das die <grammar> Dokumentsprache, den Stamm und den Namespace angibt.
<?xml version="1.0" encoding="UTF-8" ?>
<grammar xmlns="http://www.w3.org/2001/06/grammar"
version="1.0" xml:lang="en-US" root="YesNo"
tag-format="swi-semantics/1.0">
XML-Deklaration und Codierungstyp
Das erste Element im Header ist immer die XML-Deklaration. Dieses Element gibt die im Dokument verwendete XML-Version an (1.0 oder 1.1). Außerdem wird die Codierung angegeben, die für das Dokument gilt, wodurch die Sprachen bestimmt werden, die nicht verwendet werden können.
Die Version und Codierung sind erforderliche Attribute. Verwenden Sie jede Codierung, die Ihren Vorlieben entspricht (z. B. Ihr Computersetup, die Textverarbeitungsanwendung usw.). Das eingeschränkte Spracherkennungsmodul kümmert sich nicht darum, welche Codierung Sie verwenden.
Eine kurze Liste der typischen Codierungen für verschiedene Sprachen ist in der folgenden Tabelle dargestellt:
| Codierung | Beschreibung |
|---|---|
| ISO-8859-1 | Latin-1. Wird für Englisch, Französisch, Deutsch und Spanisch verwendet. |
| UTF-8 | Wird für alle Sprachen verwendet. |
| UTF-16 | Wird für alle Sprachen verwendet. |
| Big5 | Wird für kantonesisch (ce-HK) verwendet. |
| Großbritannien | Wird für Mandarin (zh-TW) verwendet. |
| Shift-JIS und EUC-JP | Wird für Japanisch verwendet. |
| KSC und EUC-KR | Wird für Koreanisch verwendet. |
Die meisten Sprachen können in mehr als einer Codierung dargestellt werden.
Zur Laufzeit konvertiert das System die Grammatikdatei-Codierung automatisch unter Anwendung der International Components for Unicode (ICU)-Bibliotheken in das UTF-16-Format. Die offizielle Website des Unicode-Konsortiums ist http://site.icu-project.org/.
Sprach-, Namespace- und Semantik-Tagformat
Das zweite Element in der Kopfzeile ist das <grammar> Element, dessen Attribute Standardinformationen für das Dokument angeben. Die erforderlichen Attribute sind:
xml:lang: Gibt den Bezeichner für die zu verwendende Standardsprache an, wie im RFC-Dokument (Request for Comments) RFC 3066 auf der IETF-Website definiert.Microsoft unterstützt eine Vielzahl von Sprachen. Die von Ihnen ausgewählte Sprache muss mit dem Grammatikcodierungstyp kompatibel sein.
version: Gibt die Version von GrXML (1.0) an.xmlns: Legt den Grammatik-Namespace fest. Bei GrXML-Grammatiken ist diese Bezeichnung immerhttp://www.w3.org./2001/06/grammar.tag-format: Definiert das Format, das für Skripts innerhalb<tag>von Elementen im Haupttext der Grammatik zum Zuweisen von Werten verwendet wird.
Das Tagformat muss eine der folgenden Zeichenfolgen sein:
| Wert | Format von semantischen Tags |
|---|---|
| swi-semantics/1.0 | Tagsyntax (wird verwendet, wenn das Tagformat nicht definiert ist). Diese Syntax wird als swi syntax (für SpeechWorks International) bezeichnet. |
| semantics/1.0 | W3C-Skripttag-Syntax. |
| semantics/1.0-literals | W3C-Zeichenfolgenliteral-Tag-Syntax. |
Hinweis
Streng genommen ist das Tagformat-Attribut nicht erforderlich, wenn die Grammatik das Element nicht verwendet
<tag>. Die meisten Grammatiken verwenden<tag>jedoch zum Zuweisen von Werten, daher empfiehlt Microsoft dringend, das Tagformat anzugeben.Verweisen Sie immer GrXML-Attribute und -Elemente wie
xmlnsauf den Namespace<http://voicexml.site.com/grammar>.
Dictionaries
In einigen Fällen muss die Grammatik möglicherweise Wörter oder Ausdrücke enthalten, die das eingeschränkte Spracherkennungsmodul nicht normal analysieren kann. Beispielsweise kann ein Name anders gesagt und geschrieben werden, wie die Stadt "Worcester", die möglicherweise "wih-sta" ausgesprochen wird.
Verwenden Sie das <lexicon> Element, um Wörterbücher zu importieren, die Ausdrücke dem übereinstimmenden Text in der Grammatikdatei zuordnen.
Haupttext der Grammatikdatei
Der Hauptabschnitt einer Grammatikdatei enthält die Regeln, die tatsächlich die Grammatik definieren: die gesprochenen Wörter und Ausdrücke, die erkannt werden sollen, und die Werte, die an die Hauptanwendung für jedes erkannte Element zurückgegeben werden sollen.
Regeln
Der Haupttext einer Grammatikdatei besteht aus Regeln, die mithilfe des GrXML-Elements <rule> definiert werden. Jede Regel verfügt über einen eindeutigen Bezeichner. Jede Regel listet die Wörter und Ausdrücke auf, die sie als Text innerhalb eines <item> Elements oder <token> Elements erkennt. Diese Elemente können in anderen GrXML-Elementen geschachtelt werden:
Das
<one-of>Element stellt eine Liste zulässiger Alternativen dar, und es ist nur eine Alternative erforderlich, um die Regel zu aktivieren.Das
<ruleref>Element bezieht sich auf eine andere Regel als eine Unterroutine.Das
<tag>Element gibt Aktionen an, die ausgeführt werden sollen, oder Werte, die einer Variablen zugewiesen werden sollen. Es kann ein Skript enthalten, das in der Sprache des Tagformats geschrieben wurde.
Wenn der Benutzer ein Wort oder einen Ausdruck ausgibt, das von der Regel abgedeckt wird, führt die Regel die Aktionen, Wertzuweisungen oder einen anderen Code aus, der für diese Äußerung definiert ist.
Stammregel
Die Stammregel ist die erste Regel in der Datei, es sei denn, der Header gibt andernfalls an. Sie dient als Standardregel auf Op-Ebene. Wenn auf die Grammatik verwiesen wird, ohne die Regel nachzuschlagen, ist diese Stammregel die erste, die konsultiert wird.
Regelbereich
Weisen Sie jede Regel im Haupttext einer Grammatikdatei als Bereich zu. Der Bereich gibt an, ob Sie unabhängig von externen Dateien (öffentlich) oder nur von einer anderen Regel innerhalb derselben Grammatik (privat) auf die Regel verweisen können. Alle Regeln sind standardmäßig privat, es sei denn, Sie definieren sie als öffentlich.
Wenn die Regel öffentlich ist, können Sie das ID-Attribut als Anker für Verweise aus anderen Dokumenten verwenden. Stellen Sie sich beispielsweise die folgende Syntax vor.
<grammar src="../grammars/universals.grxml#YesNo"/>
Wenn Sie dieses Grammatikelement aufrufen, verweist es direkt auf die öffentliche "YesNo"-Regel in der Datei "universals.grxml ", unabhängig davon, ob es sich um die Stammregel der Datei handelt.
Hinweis
Die Stammregel einer Grammatikdatei ist möglicherweise privat. Auf diese Regel kann nicht unabhängig verwiesen werden. Sie wird jedoch standardmäßig als Einstiegspunkt für die Grammatik verwendet, wenn Sie die Grammatikdatei selbst aufrufen.
Extrahieren der Bedeutung und Rückgabe von Ergebnissen
Hinweis
Der SWI_meaning Schlüssel sollte die Informationen enthalten, die an den sprachfähigen Agent zurückgegeben werden, der in Copilot Studio ausgeführt wird.
Der SWI_meaning Schlüssel enthält die semantische Bedeutung eines erkannten Ausdrucks. Sie können sie nur für die Stammregel festlegen. Dieser Schlüssel ist standardmäßig in der swirec_extra_nbest_keys Liste enthalten, sodass er im XML-Ergebnis angezeigt wird, wenn die Grammatik diesen Schlüssel festlegt.
SWI_meaning Filtert redundante Antworten, sodass Einträge in der n-besten Liste wirklich eindeutig sind. Das Entfernen von Redundanz verbessert die Konfidenzbewertungen und die Nützlichkeit der n-besten Liste.
Wenn ein erkannter Ausdruck einem anderen in der Grammatik ähnlich ist, weist er häufig eine niedrige Konfidenzbewertung auf, da das eingeschränkte Spracherkennungsmodul nicht sicher ist, welcher Ausdruck korrekt ist. Wenn Sie SWI_meaning ordnungsgemäß verwenden, gruppiert die eingeschränkte Spracherkennungs-Engine redundante Interpretationen in denselben Slot auf der n-besten Liste. Im folgenden Beispiel wird SWI_meaning auf „Direkte Anrufe zu Hause“ festgelegt, wenn der erkannte Ausdruck „Meine Anrufe nach Hause leiten“ oder „Bitte meine Anrufe nach Hause leiten“ lautet.
Ohne SWI_meaning, kann die Grammatik die folgende n-besten Liste erzeugen:
| N | Text |
|---|---|
| 1 | Meine Anrufe an mein Autotelefon weiterleiten |
| 2 | Direktanrufe an mein Auto |
| 3 | Anrufe nach Hause weiterleiten |
| 4 | bitte leiten Sie meine Anrufe an das Büro weiter |
| 5 | bitte leiten Sie meine Anrufe an das Büro weiter |
| 6 | Direktanrufe an mein Zuhause |
Wenn Sie verwenden SWI_meaning, ordnet das eingeschränkte Spracherkennungsmodul die n-beste Liste anhand der Bedeutung der Interpretation statt des genauen gesprochenen Ausdrucks an, sodass Einträge in der n-besten Liste wirklich unterschiedlich sind:
| N | Text | SWI_meaning-Schlüssel der obersten Ebene |
|---|---|---|
| 1 | Meine Anrufe an mein Autotelefon weiterleiten | Direktanrufe Auto |
| Direktanrufe an mein Auto | Direktanrufe Auto | |
| 2 | Anrufe nach Hause weiterleiten | Direktanrufe zu Hause |
| Direktanrufe an mein Zuhause | Direktanrufe zu Hause | |
| 3 | bitte leiten Sie meine Anrufe an das Büro weiter | Direkte Anrufe funktionieren |
| bitte leiten Sie meine Anrufe an das Büro weiter | Direkte Anrufe funktionieren |
Das eingeschränkte Spracherkennungsmodul stellt SWI_meaning automatisch ein, auch wenn Sie es nicht explizit in einem Skript innerhalb des Grammatikmoduls festlegen.
Wenn Sie den Stamm nicht explizit definieren, wird SWI_meaning erstellt, indem alle im Stamm definierten Schlüssel und deren Werte verkettet werden. Diese Konstruktion gilt jedoch nicht für Schlüssel, die mit SWI_ beginnen, wie SWI_literal. Die Schlüssel-Wert-Paare werden zuerst alphabetisch sortiert. Der Grund hierfür ist, dass soweit die Anwendung betroffen ist, die zurückgegebenen Schlüssel die Bedeutung des Satzes ist.
Wenn keine Schlüssel vorhanden sind, hängen die Ergebnisse davon ab, ob Sie SISR- oder SWI-Semantik verwenden. Bei SISR wird der SWI_meaning Schlüssel nicht festgelegt, wenn keine Schlüssel vorhanden sind. Im Gegensatz dazu ist die SWI-Semantik SWI_meaning auf Folgendes festgelegt:
{SWI_literal:<literal>}
Wenn SWI_meaning es sich um ein Objekt handelt, wird es in eine Zeichenfolgendarstellung konvertiert.
Während die Anwendung darauf zugreifen SWI_meaningkann, verwendet sie häufiger andere Schlüssel-Wert-Paare, die speziell für sie definiert sind.
Hosten von Sprachgrammatiken über Azure Storage
Copilot Studio unterstützt eingeschränkte Spracherkennung durch Sprachgrammatiken. Es wird jedoch nicht unterstützt, diese Grammatiken direkt zu erstellen, zu testen oder zu hosten. Verwenden Sie Microsoft Azure Storage zum Hosten von Grammatiken, um eine vertrauenswürdige und sichere Verbindung zwischen dem sprachfähigen Agent und dem Grammatikspeicher zu erstellen.
Richten Sie ein Azure-Speicherkonto ein
Erstellen Sie ein Azure-Speicherkonto. Stellen Sie sicher, dass das Abonnement, die Ressourcengruppe, die Region und der Ressourcenname des neuen Speicherkontos den Richtlinien Ihrer Organisation entsprechen. Verwenden Sie folgende Einstellungen:
Wählen Sie für den primären DienstAzure Blob Storage oder Azure Data Lake Storage Gen 2 aus.
Wählen Sie Premium für die Leistung aus.
Weitere Informationen finden Sie unter Erstellen eines Azure-Speicherkontos.
Einrichten des Speichercontainers
Verwenden Sie die statische Website als Speichercontainer für Ihre hochgeladenen Grammatikdateien. Der Speichercontainer stellt den primären Endpunkt und den sekundären Endpunkt für die Website bereit.
Wählen Sie nach dem Hochladen der Grammatikdatei die Datei aus dem Verzeichnis aus, um die Eigenschaften und Details der Datei anzuzeigen. Speichern Sie die URL für die Datei, die im folgenden Format vorliegen soll:
https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}
Weitere Informationen finden Sie unter "Erstellen eines Containers".
Authentifizieren des eingeschränkten Spracherkennungsmoduls
Damit die Spracherkennung innerhalb eines sprachgesteuerten Agenten funktioniert, muss sich das System mithilfe des Speicherkontos authentifizieren, das als vertrauenswürdiger Speicherort im vorherigen Schritt erstellt wurde. Für diese Authentifizierung ist die Rolle " Storage Blob Data Reader " erforderlich.
Weitere Informationen finden Sie unter Assign Azure Rollen mithilfe des Azure Portals.
Melden Sie sich beim Azure-Portal an, öffnen Sie eine Azure Cloud Shell-Sitzung, und führen Sie den folgenden Befehl aus, um einen eingeschränkten Dienstprinzipal für die Spracherkennung in Ihrem Mandanten zu erstellen.
az ad sp create --id e0e7bef0-777c-40ef-86aa-79d83ba643c7
Hinweis
Wenn Sie nach dem Dienstprinzipal suchen, sehen Sie, dass er "NRaaS" im Namen enthält.
Verwenden von eingeschränkter Spracherkennung in Copilot Studio
Eine externe Entität erstellen
Sie können sich eine Entität in Copilot Studio als Informationseinheit vorstellen, die einen bestimmten Typ von realen Subjekten darstellt. Beispielsweise eine Telefonnummer, postleitzahl, Ort oder sogar den Namen einer Person. Mithilfe von Entitäten kann ein Agent die relevanten Informationen von einer Benutzereingabe erkennen und zur späteren Verwendung speichern. In diesem Szenario führt eine eingeschränkte Sprachgrammatik die Erkennung durch.
Verwenden Sie externe Entitäten, um auf Sprachgrammatiken zu verweisen. Um eine externe Entität zu erstellen, öffnen Sie Ihren sprachgesteuerten Agenten, und wechseln Sie zu Einstellungen>Entitäten>Entität hinzufügen>Registrieren einer externen Entität.
Hinweis
Verwenden Sie beim Erstellen Der Entität entweder eine globale oder eine Systemvariable und keineUmgebungsvariable . Wenn Sie eine Umgebungsvariable verwenden müssen, erstellen Sie eine globale Variable, die sie dem Wert der Umgebungsvariable zuweist. Anschließend kann diese globale Variable in der Grammatik-ULR zur Referenz verwendet werden.
Geben Sie die folgenden Informationen ein:
Name: Grammatik-URL in Form von
https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}?constrainedrequired=trueHinweis
Bei der URL ist die Groß-/Kleinschreibung zu beachten.
Der Standarderkennungsmodus ist "Nur Sprache". Alternative Grammatikkonfigurationen finden Sie in der folgenden Tabelle:
| Art | Abfrageparameter | Beispiel |
|---|---|---|
| Nur Sprache | Keiner | https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}?constrainedrequired=true |
| MFV | &mode=dtmf |
https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}?constrainedrequired=true&mode=dtmf |
| Sprache oder DTMF (Gleiche Grammatikdatei) |
&mode=speechdtmf |
https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}?constrainedrequired=true&mode=speechdtmf |
| Sprache oder DTMF (Unterschiedliche Grammatikdateien) | &mode=speechdtmf&dtmfgrammar={grammarURL} |
https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}?constrainedrequired=true&mode=speechftmf&dtmfgrammar=https://{resourceName}.blob.core.windows.net/\$web/{DTMFgrammarFileName} |
Hinweis
URLs können auch direkte Variablennamen in Copilot Studio enthalten.
Angenommen, es gibt zwei identische Grammatiksätze, eine für Englisch und eine für Spanisch, und jede wird in einem anderen Unterverzeichnis gespeichert. Der mehrsprachige Agent sollte in der Lage sein, die englischen Grammatiken beim Sprechen in Englisch und ähnlich in Spanisch zu verwenden. In diesem Fall wäre die Grammatik-URL wie folgt: {Env.BaseURL}/common/**{System.User.Language}**/{grammarFileName}?
Wo System.User.Languageen_US oder es_US ist und sich ändert, wenn die Sprache in Ihrem Agenten wechselt.
Beschreibung: Eine einfache Beschreibung der Grammatik, auf die der Selektor auf der Leinwand als Name der Entität verweist. Beispiel: "Kreditkartennummer".
Datentyp: Wählen Sie den Datensatzdatentyp aus, und definieren Sie das Schema der erwarteten Tags als Antwort. Wenn z. B. die Grammatik
SWI_meaningund Stadt zurückgibt, sieht das Datensatz-Schema wie folgt aus:kind: Record properties: city: String SWI_meaning: String
Nachdem Sie " Speichern" ausgewählt haben, wird die Entität in der Liste angezeigt. Gehen Sie im Erstellungsbereich zu Frageknoten. Wählen Sie genau wie bei herkömmlichen Entitäten die externe Entität (angefügt an eine Grammatik) aus, die der Agent als Ergebnis der Antwort des Benutzers auf die Eingabeaufforderung erkennen soll.
Laufzeitverhalten
Wenn ein sprachfähiger Agent ausgeführt wird und auf die Logik trifft, die eine externe Grammatik verwendet, verbindet sich der sprachfähige Agent mit dem Azure-Speicherkonto und ruft die Grammatikdatei ab, um sie zu interpretieren. Der Agent stimmt dann mit dem ab, was der Benutzer mit der in der Grammatik angewendeten Einschränkung gesagt hat. Wenn eine Übereinstimmung erfolgreich ist, gibt das System die Antwort in der Datensatzvariablen gemäß dem in der externen Entität definierten Schema zurück.
Canvas-Logik
Das in der Variablen des Knotens gespeicherte Ergebnis ist immer ein Datensatztyp , der im Schema der externen Entität definiert ist. Autoren können diese Datensatzvariable verwenden, um auf im Schema definierte Schlüssel zuzugreifen, wie z. B. variableName.SWI_meaning oder variableName.city durch Punktnotation.
Fehlersuche
Fehlercodes
| Fehler | Definition |
|---|---|
| 400 | Fehlerhafte Anfrage |
| 401 | Nicht authentifiziert |
| 403 | Verboten |
| 404 | Keine Sprache |
| 408 | Kein Eingabe-Zeitüberschreitung |
| 418 | Sitzungszeitüberschreitung |
| 419 | Keine aktiven Ressourcen – fehlende Grammatik |
| 500 | Interner Fehler – Microsoft über ein Supportticket melden |
SWI_Literal
Bei vielen Grammatiken, die mit dem eingeschränkten Spracherkennungsmodul arbeiten, gibt das SWI_Literal Feature die literale Anweisung zurück, die der Benutzer vorgibt, nicht das interpretierte Ergebnis. Protokollieren Sie diesen Wert als eine der Ausgaben in Copilot Studio, um beim Debuggen zu helfen.
Bekannte Einschränkungen
Die Lösung hat die folgenden Einschränkungen:
- Maximale Größe einer einzelnen Grammatikdatei, die derzeit auf 100 MB beschränkt ist.
- Variablenübergabe wird nicht unterstützt.
- Das Speicherkonto muss im selben Mandant wie Ihr Agent erstellt werden.
- Die URL darf maximal 500 Zeichen lang sein.
- Es sind nur Azure-Speicherkonto-Endpunkte zulässig.
- Untergrammatiken können nur im gleichen Speicherkonto gehostet werden (mit demselben FPA für die Autorisierung).
- Sicherer XML-Parser (d. h. DTD ist nicht zulässig und muss anhand des SRGS/SISR-Schemas überprüft werden).
- Nur das NLSML-Ausgabeformat wird intern unterstützt.
- Der ältere
swirec_simple_result_keyParam hat keine Auswirkung, und alle Tags werden zurückgegeben.
Legal
Der Microsoft Dynamics-Dienst verarbeitet eingeschränkte Spracherkennungssysteme. Mit der Nutzung dieser Erfahrung stimmen Sie den Dynamics Bestimmungen zu.