Ulkoisten puheen kielioppien käyttäminen

Interactive Voice Response (IVR) -sovelluksille ja äänisovellusten laajempille puheentunnistus tehtäville rajoitettu luettelo tai kielioppipohjainen tunnustaminen tarjoaa merkittäviä etuja. Se toimii selvästi paremmin kuin perinteiset semanttiset puheentunnistimet, joita käytetään nykyaikaisissa Puheesta tekstiksi (STT) -tekoälymoottoreissa tarkkuuden, suorituskyvyn ja kustannusten osalta. Tämä suorituskyvyn lisääntyminen johtuu siitä, että kielioppipohjainen tunnistaminen voi rajoittaa tunnistamisen tulosteen ennalta määritettyihin sääntöjoukkoihin, mikä vahvistaa tarkkuutta.

Kieliopissa noudatetaan SRGS:n (Speech Recognition Grammar Specification) kielioppimääritystä, kuten W3C-määrityksessä on kuvattu. Kun pyyntö tulee moduuliin, se muuntaa puhutun äänen ("ilmaukset") tekstiksi. Tämän jälkeen moduuli vertaa tunnistettua tekstiä kielioppiin ja siihen liittyviin artefakteihin, kuten ääntämisen sääntöihin. Tämä prosessi sisältää joko literaalitallennuksen tai tulkinnan, jonka kielioppi rajoittaa kieliopin sisältämiin tietoihin. Kielioppiin sisäänrakennettu lisälogiikka, kuten ECMAScript, voi tarkentaa tulkintaa entisestään.

Rajoitettu puheentunnistus sopii erinomaisesti:

  • Rajoitettujen luetteloiden (osoitteet, varaston kaupankäyntitunnukset, postinumerot ja osastojen nimet) tunnistaminen.

  • Aakkosnumeerinen merkkijonon tunnistaminen (numeroiden, tilinumeroiden ja vahvistuskoodien seuranta).

    • Mukaan lukien sijaintirajoitukset. Esimerkiksi jäsentunnuksen kaksi ensimmäistä merkkiä alkavat merkeillä AN, FD, NT. Toinen esimerkki sijainnin rajoitteista on ajoneuvon tunnistusnumero.
  • Aakkosnumeerinen tai numeroiden tunnistus tarkistussummilla tai vastaavilla rajoituksilla. Esimerkiksi luottokorttinumerot, joissa on Luhn-tarkistussumma.

  • Suunnatut dialogisovellukset, joilla tarkat sanat tai lauseet tulee lausua.

Puhekielioppien luominen

Rajoitettujen puheoppien kirjoittaminen käyttämällä Grammar XML:ää (GrXML). Kuten minkä tahansa XML-tiedoston, kielioppitiedoston alussa on oltava otsikko, joka määrittää kieliopin tietyt ominaisuudet. Kielioppitiedoston tärkein leipäteksti koostuu kielioppisäännöistä, jotka määrittävät kieliopin tunnistamat sanat ja vastaavat muuttuja-arvot, jotka tunnistetut kohteet palauttavat.

Kielioppitiedoston otsikko

Kielioppitiedoston otsikko koostuu XML-esittelystä ja <grammar> elementistä, joka määrittää asiakirjan kielen, pääkansion ja nimitilan.

<?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-esittely ja koodaustyyppi

Otsikon ensimmäinen elementti on aina XML-esittely. Tämä elementti määrittää asiakirjassa käytetyn XML-version (1.0 tai 1.1). Se määrittää myös tiedostoon sovellettavan koodauksen, joka määrittää kielet, joita voidaan käyttää tai ei voi käyttää.

Versio ja koodaus ovat pakollisia määritteitä. Käytä haluamaasi koodausta (esimerkiksi tietokoneen asennusta, tekstinkäsittelysovellusta ja niin edelleen). Rajoitettu puheentunnistusmoduuli ei välitä, mitä koodausta käytät.

Seuraavassa taulukossa on esitetty lyhyt luettelo eri kielten tyypillisistä koodauksista:

Koodaus Kuvaus
ISO-8859-1 Latin-1. Käytetään englannissa, ranskassa, saksassa ja espanjassa.
UTF-8 Käytetään kaikille kielille.
UTF-16 Käytetään kaikille kielille.
Big5 Käytetään kantoninkiinassa (ce-HK).
Gt Käytetään mandariinikiinassa (zh-TW).
Shift-JIS ja EUC-JP Käytetään japanissa.
KSC ja EUC-KR Käytetään koreassa.

Useimmat kielet voidaan esittää useammassa kuin yhdessä koodauksessa.

Suorituksen aikana järjestelmä muuntaa automaattisesti kielioppitiedoston koodauksen UTF-16-muotoon ICU (International Components for Unicode) -kirjastoilla. Unicode-konsortion virallinen verkkosivusto on http://site.icu-project.org/.

Kieli, nimitila ja semanttinen tunnisteen muoto

Otsikon toinen elementti on <grammar> elementti, jonka määritteet määrittävät asiakirjan oletustiedot. Pakolliset määritteet ovat:

  • xml:lang: Määrittää tunnisteen oletusarvoiselle ihmiskielelle, joka on määritetty Request For Comments (RFC) -asiakirjassa RFC 3066 IETF-sivustossa.

  • Microsoft tukee useita eri kieliä. Valitsemasi kielen on oltava yhteensopiva kielioppikoodaustyypin kanssa.

  • version: Määrittää GrXML-version (1.0).

  • xmlns: Määrittää kieliopin nimitilan. GrXML-kielioppien kohdalla tämä määritys on aina http://www.w3.org./2001/06/grammar.

  • tag-format: Määrittää muodon, jota käytetään kieliopin pääkappaleen <tag> elementtien skripteihin arvojen määrittämiseksi.

Tunnisteen muodon on oltava jokin seuraavista merkkijonoista:

Value Semanttisten tunnisteiden muoto
swi-semantics/1.0 Tunnisteiden syntaksi (käytetään, jos tunnistemuotoa ei ole määritetty). Tätä syntaksia kutsutaan nimellä swi syntax (SpeechWorks International).
semantics/1.0 W3C-komentosarjatunnisteen syntaksi.
semantics/1.0-literals W3C-merkkijonoliteraalitunnisteen syntaksi.

Note

  • Tarkalleen ottaen tunnistemuodon määritettä ei tarvita, jos kielioppi ei käytä <tag> -elementtiä. Useimmissa kieliopissa kuitenkin käytetään <tag> arvojen määrittämiseen, joten Microsoft suosittelee painokkaasti tunnistemuodon määrittämistä.

  • Osoita aina GrXML-määritteet ja -elementit, kuten xmlns, nimitilaan <http://voicexml.site.com/grammar>.

Sanakirjat

Joissakin tapauksissa kieliopin täytyy ehkä sisältää sanoja tai lauseita, joita rajoitettu puheentunnistusmoduuli ei pysty jäsentämään normaalisti. Esimerkiksi nimi voidaan sanoa ja kirjoittaa eri tavalla, kuten kaupunki "Worcester", joka voidaan lausua "wih-sta".

-elementin <lexicon> avulla voit tuoda sanastoja, jotka yhdistävät ilmaukset kielioppitiedoston tekstin vastaaviin teksteihin.

Kielioppitiedoston pääleipäteksti

Kielioppitiedoston pääosa sisältää säännöt, jotka todellisuudessa määrittävät kieliopin: puhutut sanat ja tunnistettavat lauseet sekä arvot, jotka palautetaan kunkin tunnistetun kohteen pääsovellukseen.

Rules

Kielioppitiedoston pää leipäteksti koostuu säännöistä, jotka on määritetty käyttämällä GrXML-elementtiä <rule> . Kullakin säännöllä on yksilöivä tunniste. Jokainen sääntö luettelee sanat ja lauseet, jotka se tunnistaa tekstiksi <item> -elementin tai <token> -elementin sisällä. Nämä elementit voivat olla sisäkkäin muiden GrXML-elementtien sisällä:

  • Elementti <one-of> näyttää luettelon hyväksyttävistä vaihtoehdoista, ja säännön aktivointiin tarvitaan vain yksi vaihtoehto.

  • Elementti <ruleref> viittaa toiseen sääntöön eli aliraporttiin.

  • Elementti <tag> määrittää suoritettavat toiminnot tai muuttujalle määritettävät arvot. Se voi sisältää tag-format-kielellä kirjoitetun komentosarjan.

Kun käyttäjä lausuu sanan tai lauseen, jonka sääntö koskee, sääntö suorittaa kyseiselle lausekkeelle määritetyt toiminnot, arvomääritykset tai muun koodin.

Juurisääntö

Pääsääntö on tiedoston ensimmäinen sääntö, ellei otsikko määritä muuta. Se toimii ylätason oletussääntönä. Kun kielioppiin viitataan määrittämättä hakusääntöä, tämä juurisääntö on ensimmäinen, jota konsultoidaan.

Säännön vaikutusalue

Määritä kukin sääntö kielioppitiedoston päärungossa vaikutusalueena. Laajuus ilmaisee, voitko viitata sääntöön erillään ulkoisista tiedostoista (julkisesta) vai vain toisesta säännöstä samassa kieliopissa (yksityinen). Kaikki säännöt ovat oletusarvoisesti yksityisiä, ellet määritä niitä julkisiksi.

Kun sääntö on julkinen, voit käyttää sen ID-määritettä ankkurina muista asiakirjoista peräisin olevia viittauksia varten. Ota huomioon esimerkiksi seuraava syntaksi:

<grammar src="../grammars/universals.grxml#YesNo"/>

Kun käynnistät tämän kielioppielementin, se viittaa suoraan julkiseen YesNo-sääntöön universals.grxml-tiedostossa riippumatta siitä, onko se tiedoston pääsääntö.

Note

Kielioppitiedoston juurisääntö voi olla yksityinen. Tähän sääntöön ei voi viitata erikseen. Sitä käytetään kuitenkin oletusarvoisesti kieliopin aloituspisteenä, kun käynnistät itse kielioppitiedoston.

Poimi merkitys ja palauta tulokset

Note

Avaimen SWI_meaning tulee sisältää tiedot, jotka palautetaan Copilot Studiossa toimivalle äänikäyttöisten agenttien kanssa.

Avain SWI_meaning sisältää tunnistetun lauseen semanttisen merkityksen. Voit määrittää sen vain pääsäännölle. Tämä avain on oletusarvoisesti mukana swirec_extra_nbest_keys luettelossa, joten se näkyy XML-tuloksessa, jos kielioppi asettaa tämän avaimen.

SWI_meaning suodattaa pois tarpeettomat vastaukset, jotta n-best-luettelon merkinnät ovat todella erillisiä. Redundanssin poistaminen parantaa luotettavuuspisteitä ja n-parhaan luettelon hyödyllisyyttä.

Kun yksi tunnistettu lause muistuttaa toista kielioppia, sillä on usein alhaiset pisteet, koska rajoitettu puheentunnistusmoduuli ei ole varma, mikä lause on oikea. Kun käytät oikein SWI_meaning , rajoitettu puheentunnistusmoduuli ryhmittelee tarpeettomia tulkintoja samaan n-parhaan luettelon ajanjaksoon. Seuraavassa esimerkissä SWI_meaning on määritetty "suorat puhelut kotiin", oli tunnistettava lause "suorat puhelut kotiin" tai "ohjaa puheluni kotiin".

Ilman SWI_meaning, kielioppi voi tuottaa seuraavan n-best-luettelon:

N Tekstiviesti
1 ohjaa puheluni autopuhelimeeni
2 suorat puhelut autooni
3 lähetä puheluita kotiin
4 lähetä puheluni toimistolle
5 lähetä puhelut toimistolle
6 suorat puhelut kotiini

Kun käytät -funktiota SWI_meaning, rajoitettu puheentunnistusmoduuli järjestää n-parhaan luettelon tulkinnan merkityksen mukaan tarkan puhutun lauseen sijaan, jotta n-best-luettelon merkinnät ovat todella erillisiä:

N Tekstiviesti Ylimmän tason SWI_meaning-avain
1 ohjaa puheluni autopuhelimeeni suorat puhelut auto
suorat puhelut autooni suorat puhelut auto
2 lähetä puheluita kotiin suorat puhelut koti
suorat puhelut kotiini suorat puhelut koti
3 lähetä puheluni toimistolle suorat puhelut työ
lähetä puhelut toimistolle suorat puhelut työ

Rajoitettu puheentunnistusmoduuli määrittää SWI_meaning automaattisesti, vaikka et määrittäsi sitä kieliopin komentosarjassa.

Jos et nimenomaisesti määritä SWI_meaning pääkansiota, se muodostetaan ketjuttamalla kaikki pääkansiossa määritetyt avaimet ja niiden arvot. Tämä rakenne ei kuitenkaan koske avaimia, jotka alkavat :lla SWI_, kuten SWI_literal. Avain/arvo-parit lajitellaan ensin aakkosjärjestyksessä. Tämä johtuu siitä, että sovelluksen osalta palautettujen avainten joukko on virkkeen merkitys.

Jos avaimia ei ole, tulokset riippuvat siitä, käytätkö SISR- vai SWI-semantiikkaa. SISR:ssä avainta SWI_meaning ei ole määritetty, jos avaimia ei ole. Sen sijaan SWI-semantiikassa SWI_meaning on määritetty seuraavasti:

{SWI_literal:<literal>}

Jos SWI_meaning on objekti, se muunnetaan merkkijonoesitykseksi.

Vaikka sovellus pystyy käyttämään SWI_meaning-sovellusta, se käyttää useimmiten muita erityisesti sille määritettyjä avain-/arvopareja.

Puhekielioppien isännöinti Azure-tallennuksen kautta

Copilot Studio tukee rajoitettua puheentunnistusta puheoppien avulla. Se ei kuitenkaan tue suoraan näiden kielioppien luomista, testausta tai isännöimistä. Kielioppien isännöintiin käytetään Microsoft Azure -tallennusta, jonka avulla voit luoda luotettavan ja turvallisen yhteyden ääni-agentin ja kielioppisäilön välille.

Määritä Azure-tallennuksen tili

Luo Azure-tallennustili. Varmista, että uuden tallennustilin tilaus, resurssiryhmä, alue ja resurssinimi noudattavat organisaatiosi käytäntöjä. Käytä seuraavia asetuksia:

  • Valitse Ensisijainen palvelu -kohdassa Azure Blob -säilö tai Azure Data Lake Storage Gen 2.

  • Valitse Suorituskyky-kohdassa Premium .

Lisätietoja on artikkelissa Azure-tallennustilin luominen.

Määritä tallennustilan säilö

Käytä Staattista sivustoa ladattujen kielioppitiedostojen tallennussäilönä. Tallennussäilö tarjoaa verkkosivustolle ensisijaisen päätepisteen ja toissijaisen päätepisteen.

Kun kielioppitiedosto on ladattu palvelimeen, valitse tiedosto hakemistosta, jotta voit tarkastella tiedoston ominaisuuksia ja tietoja. Tallenna tiedoston URL-osoite, jonka täytyy olla seuraavassa muodossa:

https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}

Lisätietoja on artikkelissa Luo säilö.

Rajoitetun puheentunnistusmoduulin todentaminen

Jotta rajoitettu puheentunnistus toimisi äänikäyttöisessä agentissa, järjestelmän on todennettava käyttämällä edellisessä vaiheessa luotua tallennustiliä luotettuna sijaintina. Tämä todennus edellyttää Blob-tietojen lukijan tallennusroolia .

Lue lisätietoja Assign Azure -rooleista Azure-portaalin avulla.

Kirjaudu sisään Azure-portaaliin, avaa Azure Cloud Shell -istunto ja suorita seuraava komento rajoitetun puheentunnistusmoduulin palvelun päänimen luomiseksi vuokraajassasi.

az ad sp create --id e0e7bef0-777c-40ef-86aa-79d83ba643c7

Note

Kun haet palvelun päänimeä, näet sen nimessä "NRaaS".

Käytä rajoitettua puhetta Copilot Studiossa

Ulkoisen entiteetin luominen

Voit ajatella Copilot Studion entiteettiä tietoyksikkönä, joka edustaa tietyntyyppistä reaalimaailman aihetta. Esimerkiksi puhelinnumero, postinumero, kaupunki tai jopa henkilön nimi. Käyttämällä entiteettejä agentti voi tunnistaa tarvittavat tiedot käyttäjän syötteestä ja tallentaa ne myöhempää käyttöä varten. Tässä skenaariossa rajoitettu puheoppi suorittaa tunnistamisen.

Ulkoisten entiteettien käyttäminen puheoppiin viittaamiseen. Jos haluat luoda ulkoisen entiteetin, avaa äänikäyttöinen agenttisi ja valitseAsetuksetEntiteetit>>Lisää entiteetti>Rekisteröi ulkoinen entiteetti.

Note

Kun muodostat entiteettiä, käytä joko yleistä tai järjestelmämuuttujaa , äläympäristömuuttujaa . Jos sinun on käytettävä ympäristömuuttujaa, luo yleinen muuttuja ja määritä sille ympäristömuuttujan arvo. Sitten tätä yleistä muuttujaa voidaan käyttää kieliopin ULR-kieliopissa viitteeksi.

Anna seuraavat tiedot:

  • Nimi: Kieliopin URL-osoite muodossa https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}?constrainedrequired=true

    Note

    URL-osoitteessa kirjainkoko otetaan huomioon.

Oletustunnistustila on Vain puhe. Vaihtoehtoisia kielioppimäärityksiä on seuraavassa taulukossa:

Type Kyselyparametri Esimerkki:
Vain puhe None https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}?constrainedrequired=true
DTMF &mode=dtmf https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}?constrainedrequired=true&mode=dtmf
Puhe tai DTMF
(Sama kielioppitiedosto)
&mode=speechdtmf https://{resourceName}.blob.core.windows.net/\$web/{grammarFileName}?constrainedrequired=true&mode=speechdtmf
Puhe- tai DTMF (eri kielioppitiedostot) &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}

Note

URL-osoitteet voivat sisältää myös suoria muuttujien nimiä Copilot Studiossa.

Oletetaan esimerkiksi, että on olemassa kaksi identtistä kielioppijoukkoa, yksi englannille ja yksi espanjalle, ja kumpikin on tallennettu eri alahakemistoon. Monikielisen agentin tulee pystyä käyttämään englannin kielioppia, kun hän keskustelee englanniksi ja samalla tavalla espanjaksi. Tässä tapauksessa kieliopin URL-osoite olisi: {Env.BaseURL}/common/**{System.User.Language}**/{grammarFileName}?

Missä System.User.Language on en_US tai es_US muuttuu, kun kieli vaihtuu agentissasi.

  • Kuvaus: Tämä on yksinkertainen kieliopin kuvaus, johon pohjan valitsin viittaa entiteetin nimenä. Esimerkiksi luottokorttinumero.

  • Tietotyyppi: Valitse tietueen tietotyyppi ja määritä vastatessa olevien odotettujen tunnisteiden rakenne. Jos esimerkiksi kielioppi palauttaa SWI_meaning arvon ja kaupungin, tietue-rakenne näyttää tältä:

    kind: Record
    properties:
      city: String
      SWI_meaning: String
    

Kun olet valinnut Tallenna, entiteetti tulee näkyviin luetteloon. Siirry laadintakaaviossa kysymyssolmuun. Kuten perinteisissäkin entiteeteissä, valitse myös ulkoinen entiteetti (joka on liitetty kielioppiin), jonka haluat agentin tunnistavan käyttäjän kehotteeseen vastaamisen tuloksena.

Suorituksenaikainen toiminta

Kun äänikäyttöinen agentti suorittaa ja havaitsee logiikan, joka käyttää ulkoista kielioppia, äänikäyttöinen agentti ottaa yhteyttä Azure-tallennustiliin ja noutaa kieliopin tulkkausta varten. Tämän jälkeen agentti vastaa käyttäjän sanomia kieliopissa sovellettavaa rajoitusta. Jos vastaavuus onnistuu, järjestelmä palauttaa vastauksen tietue-muuttujassa ulkoisessa entiteetissä määritetyn rakenteen mukaisesti.

Kaavion logiikka

Solmun muuttujaan tallennettu tulos on aina tietuetyyppi , joka on määritetty ulkoisen entiteetin rakenteessa. Tekijät voivat käyttää tätä tietuemuuttujaa avainten käyttämiseen rakenteessa määritetyllä tavalla, kuten variableName.SWI_meaning tai variableName.city pistemerkinnän kautta.

Virheenkorjaus

Virhekoodit

Error Definition
400 Virheellinen pyyntö
401 Todentamaton
403 Kielletty
404 Ei puhetta
408 Ei syötteen aikakatkaisua
418 Istunnon aikakatkaisu
419 Ei aktiivisia resursseja – kieliopin puuttuminen
500 Sisäinen virhe – ilmoita Microsoftille tukipalvelupyynnön avulla

SWI_Literal

Monet kieliopit, jotka toimivat rajoitetun puheentunnistusmoduulin SWI_Literal kanssa, palauttavat käyttäjän lausumansa literaalilausekkeen, eivät tulkittua tulosta. Kirjaa tämä arvo yhdeksi Copilot Studion tulosteiksi virheenkorjauksen helpottamiseksi.

Tunnetut rajoitukset

Ratkaisulla on seuraavat rajoitukset:

  • Yksittäisen kielioppitiedoston enimmäiskoko, joka on tällä hetkellä rajoitettu 100 Mt:iin.
  • Muuttujan välittämistä ei tueta.
  • Tallennustili on sijoitettava samalle vuokraajalle kuin agentti.
  • URL-osoitteen koko voi olla enintään 500 merkkiä.
  • Vain Azure-tallennustilin päätepisteet sallitaan.
  • Alikielioppeja voidaan isännöidä vain samalla tallennustilillä (käyttämällä samaa FPA-valtuutusta).
  • Suojattu XML-jäsennys (eli DTD:tä ei sallita, ja se on vahvistettava SRGS/SISR-rakenteessa).
  • Vain NLSML-tulosmuotoa tuetaan sisäisesti.
  • Vanhalla swirec_simple_result_key -parametrilla ei ole vaikutusta ja kaikki tunnisteet palautetaan.

Microsoft Dynamics -palvelu käsittelee rajoitettuja puheentunnistusjärjestelmiä. Käyttämällä tätä käyttökokemusta hyväksyt Dynamics-ehdot.