HoloLens (1. generációs) és Azure 303: Természetes nyelvfelismerés (LUIS)


Megjegyzés

A Mixed Reality Academy oktatóanyagait a HoloLens (1. generációs) és Mixed Reality modern headsetekkel tervezték. Ezért fontosnak tartjuk, hogy ezeket az oktatóanyagokat megtartsuk azoknak a fejlesztőknek, akik továbbra is útmutatást keresnek az eszközök fejlesztéséhez. Ezek az oktatóanyagok nem frissülnek az HoloLens 2 legújabb eszközkészleteivel vagy interakcióival. A támogatott eszközökön való munka folytatásához megmaradnak. A jövőben egy új oktatóanyag-sorozat jelenik meg, amely bemutatja, hogyan fejleszthet HoloLens 2. Ezt az értesítést a közzétételükkor az oktatóanyagokra mutató hivatkozással frissítjük.


Ebben a tanfolyamban megtudhatja, hogyan integrálhatja a Language Understanding egy vegyes valósági alkalmazásba az Azure Cognitive Services használatával, a Language Understanding API-val.

Tesztkörnyezet eredménye

A Language Understanding (LUIS) egy Microsoft Azure-szolgáltatás, amely lehetővé teszi az alkalmazások számára, hogy a felhasználói bevitelből , például a személy által kívánt tartalom kinyerésével, saját szavaikból nyerjék ki a kívánt értéket. Ez a gépi tanulással érhető el, amely megérti és megtanulja a bemeneti információkat, majd részletes, releváns információkkal válaszolhat. További információt az Azure Language Understanding (LUIS) oldalán talál.

A tanfolyam elvégzése után vegyes valóságú, magával ragadó headset-alkalmazással rendelkezik, amely a következőket fogja tudni elvégezni:

  1. Rögzítse a felhasználói beviteli beszédet a modern headsethez csatlakoztatott mikrofonnal.
  2. Küldje el a rögzített diktálást az Azure Language Understanding Intelligent Service (LUIS) számára.
  3. Kérje meg a LUIS-t, hogy kinyerje a küldési információk jelentését, amelyet elemezni fog, és megkísérli meghatározni a felhasználó kérésének szándékát.

A fejlesztés magában foglalja egy alkalmazás létrehozását, amelyben a felhasználó hang és/vagy tekintet használatával módosíthatja a jelenet objektumainak méretét és színét. A mozgásvezérlők használata nem terjed ki.

Az alkalmazásban ön múlik, hogyan fogja integrálni az eredményeket a tervével. Ez a kurzus arra szolgál, hogy megtanítsa, hogyan integrálhat egy Azure-szolgáltatást a Unity Projecttel. Az Ön feladata, hogy felhasználja a tanfolyamból megszerzett tudást a vegyes valóság alkalmazásának továbbfejlesztéséhez.

Készüljön fel többször a LUIS betanítása gombra, amelyről a 12. fejezet foglalkozik. Jobb eredményeket fog kapni annál többször, amikor a LUIS betanítása megtörtént.

Eszköztámogatás

Tanfolyam HoloLens Modern headsetek
MR és Azure 303: Természetes nyelvfelismerés (LUIS) ✔️ ✔️

Megjegyzés

Bár ez a kurzus elsősorban Windows Mixed Reality magával ragadó (VR) headsetekkel foglalkozik, a tanfolyam során tanultakat a Microsoft HoloLens is alkalmazhatja. Ahogy a tanfolyamot is követi, a HoloLens támogatásához esetleg szükséges módosításokkal kapcsolatos megjegyzéseket fog látni. A HoloLens használatakor a hangrögzítés során némi visszhangot tapasztalhat.

Előfeltételek

Megjegyzés

Ez az oktatóanyag olyan fejlesztőknek készült, akik alapszintű tapasztalattal rendelkeznek a Unityben és a C#-ben. Felhívjuk a figyelmét arra is, hogy a jelen dokumentumban foglalt előfeltételek és írásos utasítások az írás időpontjában (2018. május) tesztelt és ellenőrzött adatokat jelölik. Szabadon használhatja a legújabb szoftvert, ahogy az az eszközök telepítéséről szóló cikkben szerepel, bár nem szabad feltételezni, hogy a tanfolyam információi tökéletesen megfelelnek az újabb szoftverekben található információknak, mint az alább felsoroltak.

A tanfolyamhoz a következő hardvereket és szoftvereket ajánljuk:

Előkészületek

  1. A projekt létrehozásával kapcsolatos problémák elkerülése érdekében javasoljuk, hogy hozza létre az oktatóanyagban említett projektet egy gyökér- vagy gyökérmappában (a hosszú mappaútvonalak buildeléskor problémákat okozhatnak).

  2. Ha engedélyezni szeretné a gép számára a diktálás engedélyezését, lépjen a Windows-beállítások > Adatvédelmi > beszédfelismerés, a Tintakészítés & Gépelés területre, és nyomja le a Beszédszolgáltatások bekapcsolása és a gépelési javaslatok gombot.

  3. Az oktatóanyagban szereplő kód lehetővé teszi a számítógépen beállított alapértelmezett mikrofoneszköz rögzítését. Győződjön meg arról, hogy az alapértelmezett mikrofoneszköz van beállítva a hang rögzítéséhez használni kívánt eszközként.

  4. Ha a mikrofonos fejhallgató beépített mikrofonnal rendelkezik, győződjön meg arról, hogy a "Ha a mikrofonos fejhallgatót viselem, váltson mikrofonos mikrofonra" beállítás be van kapcsolva a Mixed Reality Portál beállításai között.

    Modern headset beállítása

1. fejezet – Az Azure Portal beállítása

Az azure-beli Language Understanding szolgáltatás használatához konfigurálnia kell a szolgáltatás egy példányát, hogy elérhetővé legyen téve az alkalmazás számára.

  1. Jelentkezzen be az Azure Portalra.

    Megjegyzés

    Ha még nem rendelkezik Azure-fiókkal, létre kell hoznia egyet. Ha ezt az oktatóanyagot osztályteremben vagy laborhelyzetben követi, kérjen segítséget az oktatótól vagy az egyik proktortól az új fiók beállításához.

  2. Miután bejelentkezett, kattintson a bal felső sarokban az Új elemre, keresse meg a Language Understanding, majd kattintson az Enter gombra.

    LUIS-erőforrás létrehozása

    Megjegyzés

    Előfordulhat, hogy az Új szót lecserélték az Erőforrás létrehozása elemre az újabb portálokon.

  3. A jobb oldalon található új oldal a Language Understanding szolgáltatás leírását adja meg. A lap bal alsó részén kattintson a Létrehozás gombra a szolgáltatás példányának létrehozásához.

    LUIS-szolgáltatás létrehozása – jogi nyilatkozat

  4. Miután a Létrehozás gombra kattintott:

    1. Szúrja be a kívánt nevet ehhez a szolgáltatáspéldányhoz.

    2. Válasszon ki egy előfizetést.

    3. Válassza ki az Önnek megfelelő tarifacsomagot , ha ez az első alkalom, hogy létrehoz egy LUIS-szolgáltatást, akkor egy ingyenes (F0 nevű) szintnek kell elérhetőnek lennie. Az ingyenes foglalásnak több mint elegendőnek kell lennie ehhez a kurzushoz.

    4. Válasszon egy erőforráscsoportot , vagy hozzon létre egy újat. Az erőforráscsoportok lehetővé teszi az Azure-eszközök gyűjteményéhez tartozó számlázás monitorozását, vezérlését, kiépítését és kezelését. Javasoljuk, hogy az egyetlen projekthez (például a tanfolyamokhoz) társított összes Azure-szolgáltatást egy közös erőforráscsoportban tartsa.

      Ha többet szeretne megtudni az Azure-erőforráscsoportokról, tekintse meg az erőforráscsoportról szóló cikket.

    5. Határozza meg az erőforráscsoport helyét (ha új erőforráscsoportot hoz létre). A hely ideális esetben abban a régióban lenne, ahol az alkalmazás futna. Egyes Azure-eszközök csak bizonyos régiókban érhetők el.

    6. Azt is meg kell erősítenie, hogy megértette a szolgáltatásra vonatkozó feltételeket.

    7. Válassza a Létrehozás lehetőséget.

      LUIS-szolgáltatás létrehozása – felhasználói bevitel

  5. Miután a Létrehozás gombra kattintott, meg kell várnia a szolgáltatás létrehozását, ez eltarthat egy percig.

  6. A szolgáltatáspéldány létrehozása után megjelenik egy értesítés a portálon.

    Új Azure-értesítési rendszerkép

  7. Kattintson az értesítésre az új szolgáltatáspéldány megismeréséhez.

    Sikeres erőforrás-létrehozási értesítés

  8. Az értesítésben kattintson az Erőforrás megnyitása gombra az új szolgáltatáspéldány megismeréséhez. A rendszer az új LUIS-szolgáltatáspéldányra nyitja meg.

    LUIS-kulcsok elérése

  9. Ebben az oktatóanyagban az alkalmazásnak hívásokat kell kezdeményeznie a szolgáltatáshoz, amelyet a szolgáltatás előfizetési kulcsának használatával kell elvégeznie.

  10. A LUIS API-szolgáltatásgyors kezdőoldalán lépjen az első lépésre, a Kulcsok megragadása, majd a Kulcsok elemre (ezt a szolgáltatások navigációs menüjében található, a kulcs ikonnal jelölhető kék hivatkozásra kattintva is elérheti). Ekkor megjelennek a szolgáltatáskulcsok.

  11. Készítsen másolatot az egyik megjelenített kulcsról, mert erre később szüksége lesz a projektben.

  12. A Szolgáltatás lapon kattintson a Language Understanding portálra, hogy átirányítsa az új szolgáltatás létrehozásához használni kívánt weblapra a LUIS-alkalmazásban.

2. fejezet – A Language Understanding portál

Ebben a szakaszban megtudhatja, hogyan hozhat létre LUIS-alkalmazást a LUIS-portálon.

Fontos

Vegye figyelembe, hogy az entitások, szándékok és kimondott szövegek beállítása ebben a fejezetben csak az első lépés a LUIS-szolgáltatás kiépítésében: a szolgáltatás többszöri újratanítására is szükség lesz, hogy pontosabb legyen. A szolgáltatás újratanításáról a tanfolyam utolsó fejezete foglalkozik, ezért győződjön meg arról, hogy elvégezte.

  1. A Language Understanding portál elérésekor előfordulhat, hogy be kell jelentkeznie, ha még nem tette meg, ugyanazokkal a hitelesítő adatokkal, mint a Azure Portal.

    LUIS bejelentkezési oldal

  2. Ha most először használja a LUIS-t, görgessen le az üdvözlőlap aljára, és kattintson a LUIS-alkalmazás létrehozása gombra.

    LUIS-alkalmazáslap létrehozása

  3. Miután bejelentkezett, kattintson a Saját alkalmazások elemre (ha jelenleg nem ebben a szakaszban van). Ezután kattintson az Új alkalmazás létrehozása elemre.

    LUIS – saját alkalmazások képe

  4. Adjon nevet az alkalmazásnak.

  5. Ha az alkalmazásnak az angoltól eltérő nyelvet kell értenie, akkor a kulturális környezetet a megfelelő nyelvre kell módosítania.

  6. Itt hozzáadhatja az új LUIS-alkalmazás leírását is.

    LUIS – új alkalmazás létrehozása

  7. Miután lenyomta a Kész gombot, beírja az új LUIS-alkalmazásBuild (Build) lapját.

  8. Itt néhány fontos fogalmat kell megértenie:

    • Az Intent (Szándék) azt a metódust jelöli, amelyet a rendszer a felhasználó lekérdezése alapján hív meg. A SZÁNDÉKok egy vagy több ENTITÁST tartalmazhatnak.
    • Az entitás a lekérdezés egyik összetevője, amely az INTENT-hez kapcsolódó információkat írja le.
    • A kimondott szövegek a fejlesztő által biztosított lekérdezések példái, amelyeket a LUIS saját betanítására fog használni.

Ha ezek a fogalmak nem teljesen világosak, ne aggódjon, mivel ez a kurzus tovább tisztázza őket ebben a fejezetben.

Először hozza létre a kurzus létrehozásához szükséges entitásokat .

  1. A lap bal oldalán kattintson az Entitások elemre, majd az Új entitás létrehozása elemre.

    Új entitás létrehozása

  2. Hívja meg az új Entitás színt, állítsa a típusát Egyszerű értékre, majd nyomja le a Kész gombot.

    Egyszerű entitás létrehozása – szín

  3. Ismételje meg ezt a folyamatot három (3) nevű egyszerű entitás létrehozásához:

    • Továbbfejleszteni
    • Csökkentse
    • Cél

Az eredménynek az alábbi képhez hasonlóan kell kinéznie:

Entitáslétrehozás eredménye

Ekkor megkezdheti a szándékok létrehozását.

Figyelmeztetés

Ne törölje a Nincs szándékot.

  1. A lap bal oldalán kattintson a Szándékok elemre, majd az Új szándék létrehozása elemre.

    Új szándékok létrehozása

  2. Hívja meg az új SzándékváltozásObjectColor elemet.

    Fontos

    Ezt a szándéknevet a tanfolyam későbbi részében használjuk a kódban, így a legjobb eredmény érdekében ezt a nevet pontosan a megadott módon használjuk.

Miután megerősítette a nevet, a rendszer átirányítja az Szándékok lapra.

LUIS – szándékok lap

Megfigyelheti, hogy van egy szövegmező, amely 5 vagy több különböző kimondott szöveg beírását kéri.

Megjegyzés

A LUIS az összes kimondott szöveget kisbetűssé alakítja.

  1. Szúrja be a következő kimondott szöveget a felső szövegmezőbe (jelenleg a Típus körülbelül 5 példa... szöveggel), majd nyomja le az Enter billentyűt:
The color of the cylinder must be red

Megfigyelheti, hogy az új kimondott szöveg megjelenik az alatta lévő listában.

Ugyanezt a folyamatot követve szúrja be a következő hat (6) kimondott szöveget:

make the cube black

make the cylinder color white

change the sphere to red

change it to green

make this yellow

change the color of this object to blue

Minden létrehozott kimondott szöveghez meg kell határoznia, hogy a LUIS mely szavakat használja entitásként. Ebben a példában az összes színt fel kell címkézni egy színentitásként, és minden lehetséges hivatkozást a célra célentitásként.

  1. Ehhez kattintson a henger szóra az első kimondott szövegben, és válassza ki a célértéket.

    Kimondott szöveg céljainak azonosítása

  2. Most kattintson a piros szóra az első kimondott szövegben, és válassza ki a színt.

    Kimondott szöveg entitásainak azonosítása

  3. Jelölje meg a következő sort is, ahol a kockánakcélnak kell lennie, a feketénekpedig színnek kell lennie. Figyelje meg az "ez", "it" és "ez az objektum" szavak használatát is, amelyeket biztosítunk, hogy a nem specifikus céltípusok is elérhetők legyenek.

  4. Ismételje meg a fenti folyamatot, amíg az összes kimondott szöveghez meg nem címkézték az Entitásokat. Ha segítségre van szüksége, tekintse meg az alábbi képet.

    Tipp

    Amikor kijelöli a szavakat, hogy entitásként címkézze őket:

    • Egyetlen szó esetén kattintson rájuk.
    • Két vagy több szóból álló halmaz esetén kattintson a halmaz elejére, majd végére.

    Megjegyzés

    A Jogkivonatok nézet váltógombbal válthat az Entitások / Jogkivonatok nézet között!

  5. Az eredményeknek az alábbi képeken láthatónak kell lenniük, amelyeken az Entitások / Jogkivonatok nézet látható:

    Jogkivonatok & entitásnézetek

  6. Ezen a ponton nyomja le a Betanítása gombot az oldal jobb felső sarkában, és várja meg, amíg a kis kerek jelző zöldre vált. Ez azt jelzi, hogy a LUIS-t sikeresen betanították a szándék felismerésére.

    LUIS betanítása

  7. Gyakorlatként hozzon létre egy changeObjectSize nevű új szándékot az Entitások cél, a fel- és leméreteztetés használatával.

  8. Az előző szándékkal megegyező folyamatot követve szúrja be a következő nyolc (8) kimondott szöveget a méretváltozáshoz :

    increase the dimensions of that
    
    reduce the size of this
    
    i want the sphere smaller
    
    make the cylinder bigger
    
    size down the sphere
    
    size up the cube
    
    decrease the size of that object
    
    increase the size of this object
    
  9. Az eredménynek az alábbi képen láthatóhoz hasonlónak kell lennie:

    A ChangeObjectSize tokenek/entitások beállítása

  10. Miután létrejött és betanította mindkét szándékot, a ChangeObjectColor és a ChangeObjectSize objektumot, kattintson a lap tetején található PUBLISH gombra.

    LUIS-szolgáltatás közzététele

  11. A Közzététel lapon véglegesíti és közzéteszi a LUIS-alkalmazást, hogy a kóddal elérhető legyen.

    1. Állítsa be a publish to as Production (Közzététel élesként) legördülő listát.

    2. Állítsa az időzóna értékét az időzónára.

    3. Jelölje be az Összes előrejelzett szándékpont belefoglalása jelölőnégyzetet.

    4. Kattintson a Közzététel éles környezetben pontra.

      Közzétételi beállítások

  12. Az Erőforrások és kulcsok szakaszban:

    1. Válassza ki a szolgáltatáspéldányhoz beállított régiót az Azure Portalon.
    2. Az alábbiakban egy Starter_Key elemet fog látni, hagyja figyelmen kívül.
    3. Kattintson a Kulcs hozzáadása elemre, és szúrja be az Azure Portalon a szolgáltatáspéldány létrehozásakor beszerzett kulcsot . Ha az Azure-beli és a LUIS-portál ugyanabba a felhasználóba van bejelentkezve, a bérlő neve, az előfizetés neve és a használni kívánt kulcs legördülő menüje (ugyanazzal a névvel fog rendelkezni, mint korábban az Azure Portalon).

    Fontos

    A Végpont alatt készítsen másolatot a beszúrt kulcsnak megfelelő végpontról, amelyet hamarosan használni fog a kódban.

3. fejezet – A Unity-projekt beállítása

Az alábbiak egy tipikusan a vegyes valósággal való fejlesztésre szolgálnak, és mint ilyen, jó sablon más projektekhez.

  1. Nyissa meg a Unityt , és kattintson az Új gombra.

    Indítsa el az új Unity-projektet.

  2. Most meg kell adnia a Unity-projekt nevét, be kell szúrnia MR_LUIS. Győződjön meg arról, hogy a projekt típusa 3D. Állítsa a Hely értékét az Ön számára megfelelő helyre (ne feledje, a gyökérkönyvtárakhoz való közelebb jobb). Ezután kattintson a Projekt létrehozása elemre.

    Adja meg az új Unity-projekt részleteit.

  3. Ha a Unity nyitva van, érdemes ellenőrizni, hogy az alapértelmezett szkriptszerkesztőVisual Studióra van-e állítva. Lépjen a Beállítások szerkesztése > elemre, majd az új ablakból lépjen a Külső eszközök elemre. Módosítsa a Külső szkriptszerkesztőtVisual Studio 2017-re. Zárja be a Beállítások ablakot.

    A szkriptszerkesztő beállításainak frissítése.

  4. Ezután lépjen a Fájlkészítési > beállítások területre, és váltson a platformra Univerzális Windows-platform, és kattintson a Platformváltás gombra.

    A Beállítások létrehozása ablakban váltson platformra UWP-re.

  5. Lépjen a Fájl > buildelési beállításai területre , és győződjön meg arról, hogy:

    1. A céleszközbármely eszközre van állítva

      A Microsoft HoloLens állítsa a Céleszköz értékét HoloLens értékre.

    2. A build típusaD3D értékre van állítva

    3. Az SDK a Legújabb telepített értékre van állítva

    4. A Visual Studio verziója a Legújabb telepítve értékre van állítva

    5. A buildelés és a futtatáshelyi gépre van állítva

    6. Mentse a jelenetet, és adja hozzá a buildhez.

      1. Ehhez válassza a Nyitott jelenetek hozzáadása lehetőséget. Ekkor megjelenik egy mentési ablak.

        Kattintson a Nyitott jelenetek hozzáadása gombra

      2. Hozzon létre egy új mappát ehhez, és minden jövőbeni jelenethez, majd az Új mappa gombra kattintva hozzon létre egy új mappát, és adja neki a Jelenetek nevet.

        Új szkriptek mappa létrehozása

      3. Nyissa meg az újonnan létrehozott Jelenetek mappát, majd a Fájlnév: szöveg mezőbe írja be a MR_LuisScene, majd nyomja le a Mentés gombot.

        Adjon nevet az új jelenetnek.

    7. A buildbeállításokban lévő többi beállításnak egyelőre alapértelmezettnek kell lennie.

  6. A Build Settings (Összeállítási beállítások ) ablakban kattintson a Lejátszó beállításai gombra, ezzel megnyitja a kapcsolódó panelt abban a térben, ahol az Inspector található.

    Nyissa meg a lejátszóbeállításokat.

  7. Ebben a panelen ellenőrizni kell néhány beállítást:

    1. Az Egyéb beállítások lapon:

      1. A szkriptelési futtatókörnyezet verziójánakstabilnak kell lennie (.NET 3.5-ös egyenértékű).

      2. A szkriptelési háttérrendszernek.NET-nek kell lennie

      3. Az API-kompatibilitási szintnek.NET 4.6-osnak kell lennie

        Frissítse az egyéb beállításokat.

    2. A Közzétételi beállítások lapon, a Képességek területen ellenőrizze a következőt:

      1. InternetClient

      2. Mikrofon

        Közzétételi beállítások frissítése.

    3. A panelen lejjebb, az XR-beállítások területen (amely a Közzétételi beállítások alatt található) jelölje be a Támogatott virtuális valóság jelölőnégyzetet, és győződjön meg arról, hogy a Windows Mixed Reality SDK hozzá van adva.

      Frissítse az X R-beállításokat.

  8. A buildbeállításokban a Unity C#-projektek már nem szürkén jelennek meg; jelölje be a mellette lévő jelölőnégyzetet.

  9. Zárja be a Létrehozási beállítások ablakot.

  10. Mentse a jelenetet és a projektet (FILE > SAVE SCENE /FILE > SAVE PROJECT).

4. fejezet – A jelenet létrehozása

Fontos

Ha ki szeretné hagyni a kurzus Unity Set up összetevőjét, és közvetlenül a kódba szeretne lépni, nyugodtan töltse le ezt a .unitypackage csomagot, importálja a projektbe egyéni csomagként, majd folytassa az 5. fejezettel.

  1. Kattintson a jobb gombbal a Hierarchia panel üres területére a 3D objektum területen, és adjon hozzá egy síkot.

    Sík létrehozása.

  2. Vegye figyelembe, hogy ha a jobb gombbal ismét a hierarchián belülre kattint, hogy több objektumot hozzon létre, ha még mindig az utolsó objektum van kijelölve, a kijelölt objektum lesz az új objektum szülője. Ne kattintson a bal gombbal a hierarchia üres területére, majd kattintson a jobb gombbal.

  3. Ismételje meg a fenti eljárást a következő objektumok hozzáadásához:

    1. Sphere
    2. Henger
    3. Köbre emelés
    4. Térhatású szöveg
  4. Az eredményként kapott jelenetnek a hierarchia az alábbi képen láthatóhoz hasonlónak kell lennie:

    Jelenethierarchia beállítása.

  5. A fő kamera kiválasztásához kattintson a bal gombbal a Fő kamerára , és nézze meg az Inspector Panelt , amelyen a Kamera objektum látható az összes összetevővel együtt.

  6. Kattintson az Összetevő hozzáadása gombra, amely az Inspector panel alján található.

    Hangforrás hozzáadása

  7. Keresse meg a Hangforrás nevű összetevőt a fent látható módon.

  8. Győződjön meg arról is, hogy a Fő kamera Átalakítás összetevője (0,0,0) értékre van állítva. Ehhez nyomja le a Fogaskerék ikont a Kamera Átalakítás összetevője mellett, és válassza az Alaphelyzetbe állítás lehetőséget. Az Átalakítás összetevőnek ezután a következőképpen kell kinéznie:

    1. A pozíció értéke 0, 0, 0.
    2. A forgatás értéke 0, 0, 0.

    Megjegyzés

    A Microsoft HoloLens a következőket is módosítania kell, amelyek a Fő kamerán található Kamera összetevő részét képezik:

    • Jelzők törlése: Egyszínű.
    • Háttér "Fekete, Alfa 0" – Hexa szín: #00000000.
  9. A kijelöléshez kattintson a bal gombbal a síkra . Az Inspector panelen állítsa be az Átalakítás összetevőt a következő értékekkel:

    X tengely Y tengely Z tengely
    0 -1 0
  10. A kijelöléshez kattintson a bal gombbal a gömbre . Az Inspector panelen állítsa be az Átalakítás összetevőt a következő értékekkel:

    X tengely Y tengely Z tengely
    2 1 2
  11. Kattintson a bal gombbal a hengerre a kiválasztásához. Az Inspector panelen állítsa be az Átalakítás összetevőt a következő értékekkel:

    X tengely Y tengely Z tengely
    -2 1 2
  12. Kattintson a bal gombbal a kockára a kijelöléshez. Az Inspector panelen állítsa be az Átalakítás összetevőt a következő értékekkel:

Átalakítás – Pozíció

X Y Z
0 1 4

Átalakítás – Forgatás

X Y Z
45 45 0
  1. A kijelöléshez kattintson a bal gombbal az Új szöveg objektumra. Az Inspector panelen állítsa be az Átalakítás összetevőt a következő értékekkel:

Átalakítás – Pozíció

X Y Z
-2 6 9

Átalakítás – Skálázás

X Y Z
0.1 0.1 0.1
  1. Módosítsa a Szövegháló összetevő betűméretét50-esre.

  2. Módosítsa a Text Mesh objektum nevétdiktálási szövegre.

    3D text objektum létrehozása

  3. A hierarchiapanel struktúrájának a következőképpen kell kinéznie:

    szövegháló jelenetnézetben

  4. Az utolsó jelenetnek az alábbi képhez hasonlóan kell kinéznie:

    A jelenet nézet.

5. fejezet – A MicrophoneManager osztály létrehozása

Az első létrehozandó szkript a MicrophoneManager osztály. Ezt követően létre fogja hozni a LuisManagert, a Viselkedések osztályt, végül pedig a Gaze osztályt (nyugodtan hozza létre most ezeket, bár ez az egyes fejezetek elérésekor lesz lefedve).

A MicrophoneManager osztály feladata:

  • A mikrofonos fejhallgatóhoz vagy géphez csatlakoztatott rögzítőeszköz észlelése (amelyik az alapértelmezett).
  • Rögzítse a hangot (hang), és diktálás használatával sztringként tárolja.
  • A hang szüneteltetése után küldje el a diktálást a LuisManager osztálynak.

Az osztály létrehozása:

  1. Kattintson a jobb gombbal a Projekt panelMappa létrehozása > elemére. Hívja meg a Szkriptek mappát.

    Szkriptek mappa létrehozása.

  2. A Szkriptek mappa létrehozása után kattintson rá duplán a megnyitásához. Ezután a mappában kattintson a jobb gombbal a Create C# Script (C#-szkript létrehozása > ) elemre. Nevezze el a MicrophoneManager szkriptet.

  3. Kattintson duplán a MicrophoneManager elemre a Visual Studióval való megnyitásához.

  4. Adja hozzá a következő névtereket a fájl elejéhez:

        using UnityEngine;
        using UnityEngine.Windows.Speech;
    
  5. Ezután adja hozzá a következő változókat a MicrophoneManager osztályban:

        public static MicrophoneManager instance; //help to access instance of this object
        private DictationRecognizer dictationRecognizer;  //Component converting speech to text
        public TextMesh dictationText; //a UI object used to debug dictation result
    
  6. Az Awake() és a Start() metódusok kódját most már hozzá kell adni. Ezek a következők lesznek meghívva, amikor az osztály inicializálódik:

        private void Awake()
        {
            // allows this class instance to behave like a singleton
            instance = this;
        }
    
        void Start()
        {
            if (Microphone.devices.Length > 0)
            {
                StartCapturingAudio();
                Debug.Log("Mic Detected");
            }
        }
    
  7. Most már szüksége van arra a módszerre, amelyet az alkalmazás a hangrögzítés elindításához és leállításához használ, majd átadja azt a LuisManager osztálynak, amelyet hamarosan létrehoz.

        /// <summary>
        /// Start microphone capture, by providing the microphone as a continual audio source (looping),
        /// then initialise the DictationRecognizer, which will capture spoken words
        /// </summary>
        public void StartCapturingAudio()
        {
            if (dictationRecognizer == null)
            {
                dictationRecognizer = new DictationRecognizer
                {
                    InitialSilenceTimeoutSeconds = 60,
                    AutoSilenceTimeoutSeconds = 5
                };
    
                dictationRecognizer.DictationResult += DictationRecognizer_DictationResult;
                dictationRecognizer.DictationError += DictationRecognizer_DictationError;
            }
            dictationRecognizer.Start();
            Debug.Log("Capturing Audio...");
        }
    
        /// <summary>
        /// Stop microphone capture
        /// </summary>
        public void StopCapturingAudio()
        {
            dictationRecognizer.Stop();
            Debug.Log("Stop Capturing Audio...");
        }
    
  8. Adjon hozzá egy diktálási kezelőt , amely a hang szüneteltetésekor lesz meghívva. Ez a metódus átadja a diktálási szöveget a LuisManager osztálynak.

        /// <summary>
        /// This handler is called every time the Dictation detects a pause in the speech. 
        /// This method will stop listening for audio, send a request to the LUIS service 
        /// and then start listening again.
        /// </summary>
        private void DictationRecognizer_DictationResult(string dictationCaptured, ConfidenceLevel confidence)
        {
            StopCapturingAudio();
            StartCoroutine(LuisManager.instance.SubmitRequestToLuis(dictationCaptured, StartCapturingAudio));
            Debug.Log("Dictation: " + dictationCaptured);
            dictationText.text = dictationCaptured;
        }
    
        private void DictationRecognizer_DictationError(string error, int hresult)
        {
            Debug.Log("Dictation exception: " + error);
        }
    

    Fontos

    Törölje az Update() metódust, mivel ez az osztály nem fogja használni.

  9. Mielőtt visszatér a Unitybe, mentse a módosításokat a Visual Studióban.

    Megjegyzés

    Ekkor hibaüzenet jelenik meg a Unity Szerkesztő konzolpaneljén. Ennek az az oka, hogy a kód a következő fejezetben létrehozott LuisManager osztályra hivatkozik.

6. fejezet – A LUISManager osztály létrehozása

Itt az ideje, hogy létrehozza a LuisManager osztályt, amely meghívja az Azure LUIS szolgáltatást.

Ennek az osztálynak az a célja, hogy megkapja a diktálási szöveget a MicrophoneManager osztályból, és elküldje azt az Elemezendő Azure Language Understanding API-nak.

Ez az osztály deszerializálja a JSON-választ , és meghívja a Viselkedések osztály megfelelő metódusait egy művelet elindításához.

Az osztály létrehozása:

  1. Kattintson duplán a Szkriptek mappára a megnyitásához.

  2. Kattintson a jobb gombbal a Szkriptek mappába, majd kattintson a C# szkript létrehozása > parancsra. Nevezze el a LuisManager szkriptet.

  3. Kattintson duplán a szkriptre a Visual Studióval való megnyitásához.

  4. Adja hozzá a következő névtereket a fájl elejéhez:

        using System;
        using System.Collections;
        using System.Collections.Generic;
        using System.IO;
        using UnityEngine;
        using UnityEngine.Networking;
    
  5. Első lépésként hozzon létre három osztályt a LuisManagerosztályban (ugyanabban a szkriptfájlban, a Start() metódus fölött, amely az Azure deszerializált JSON-válaszát jelöli.

        [Serializable] //this class represents the LUIS response
        public class AnalysedQuery
        {
            public TopScoringIntentData topScoringIntent;
            public EntityData[] entities;
            public string query;
        }
    
        // This class contains the Intent LUIS determines 
        // to be the most likely
        [Serializable]
        public class TopScoringIntentData
        {
            public string intent;
            public float score;
        }
    
        // This class contains data for an Entity
        [Serializable]
        public class EntityData
        {
            public string entity;
            public string type;
            public int startIndex;
            public int endIndex;
            public float score;
        }
    
  6. Ezután adja hozzá a következő változókat a LuisManager osztályban:

        public static LuisManager instance;
    
        //Substitute the value of luis Endpoint with your own End Point
        string luisEndpoint = "https://westus.api.cognitive... add your endpoint from the Luis Portal";
    
  7. Győződjön meg arról, hogy most helyezi el a LUIS-végpontot (amely a LUIS-portálról lesz).

  8. Az Awake() metódus kódját most hozzá kell adni. Ez a metódus a osztály inicializálásakor lesz meghívva:

        private void Awake()
        {
            // allows this class instance to behave like a singleton
            instance = this;
        }
    
  9. Most már szüksége van az alkalmazás által a MicrophoneManager osztálytól kapott diktálás LUIS-ba való küldéséhez használt módszerekre, majd fogadja és deszerializálja a választ.

  10. A szándék és a társított entitások értékének meghatározása után a rendszer átadja őket a Viselkedések osztály példányának a kívánt művelet aktiválásához.

        /// <summary>
        /// Call LUIS to submit a dictation result.
        /// The done Action is called at the completion of the method.
        /// </summary>
        public IEnumerator SubmitRequestToLuis(string dictationResult, Action done)
        {
            string queryString = string.Concat(Uri.EscapeDataString(dictationResult));
    
            using (UnityWebRequest unityWebRequest = UnityWebRequest.Get(luisEndpoint + queryString))
            {
                yield return unityWebRequest.SendWebRequest();
    
                if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
                {
                    Debug.Log(unityWebRequest.error);
                }
                else
                {
                    try
                    {
                        AnalysedQuery analysedQuery = JsonUtility.FromJson<AnalysedQuery>(unityWebRequest.downloadHandler.text);
    
                        //analyse the elements of the response 
                        AnalyseResponseElements(analysedQuery);
                    }
                    catch (Exception exception)
                    {
                        Debug.Log("Luis Request Exception Message: " + exception.Message);
                    }
                }
    
                done();
                yield return null;
            }
        }
    
  11. Hozzon létre egy új, AnalyseResponseElements() nevű metódust , amely beolvassa az eredményül kapott AnalysedQueryt , és meghatározza az entitásokat. Az entitások meghatározása után a rendszer átadja azokat a Viselkedések osztály példányának, amelyet a műveletekben használni fog.

        private void AnalyseResponseElements(AnalysedQuery aQuery)
        {
            string topIntent = aQuery.topScoringIntent.intent;
    
            // Create a dictionary of entities associated with their type
            Dictionary<string, string> entityDic = new Dictionary<string, string>();
    
            foreach (EntityData ed in aQuery.entities)
            {
                entityDic.Add(ed.type, ed.entity);
            }
    
            // Depending on the topmost recognized intent, read the entities name
            switch (aQuery.topScoringIntent.intent)
            {
                case "ChangeObjectColor":
                    string targetForColor = null;
                    string color = null;
    
                    foreach (var pair in entityDic)
                    {
                        if (pair.Key == "target")
                        {
                            targetForColor = pair.Value;
                        }
                        else if (pair.Key == "color")
                        {
                            color = pair.Value;
                        }
                    }
    
                    Behaviours.instance.ChangeTargetColor(targetForColor, color);
                    break;
    
                case "ChangeObjectSize":
                    string targetForSize = null;
                    foreach (var pair in entityDic)
                    {
                        if (pair.Key == "target")
                        {
                            targetForSize = pair.Value;
                        }
                    }
    
                    if (entityDic.ContainsKey("upsize") == true)
                    {
                        Behaviours.instance.UpSizeTarget(targetForSize);
                    }
                    else if (entityDic.ContainsKey("downsize") == true)
                    {
                        Behaviours.instance.DownSizeTarget(targetForSize);
                    }
                    break;
            }
        }
    

    Fontos

    Törölje a Start() és Update() metódusokat, mivel ez a osztály nem fogja használni őket.

  12. Mielőtt visszatér a Unitybe, mentse a módosításokat a Visual Studióban.

Megjegyzés

Ezen a ponton számos hiba jelenik meg a Unity Szerkesztő konzolpaneljén. Ennek az az oka, hogy a kód a következő fejezetben létrehozott Viselkedések osztályra hivatkozik.

7. fejezet – A Viselkedések osztály létrehozása

A Viselkedések osztály a LuisManager osztály által biztosított entitások használatával aktiválja a műveleteket.

Az osztály létrehozása:

  1. Kattintson duplán a Szkriptek mappára a megnyitásához.

  2. Kattintson a jobb gombbal a Szkriptek mappába, majd kattintson a C# szkript létrehozása > parancsra. Nevezze el a szkript viselkedését.

  3. Kattintson duplán a szkriptre a Visual Studióval való megnyitásához.

  4. Ezután adja hozzá a következő változókat a Behaviors osztályba:

        public static Behaviours instance;
    
        // the following variables are references to possible targets
        public GameObject sphere;
        public GameObject cylinder;
        public GameObject cube;
        internal GameObject gazedTarget;
    
  5. Adja hozzá az Awake() metóduskódot. Ez a metódus a osztály inicializálásakor lesz meghívva:

        void Awake()
        {
            // allows this class instance to behave like a singleton
            instance = this;
        }
    
  6. Az alábbi metódusokat a LuisManager osztály hívja meg (amelyet korábban létrehozott), hogy megállapítsa, melyik objektum a lekérdezés célja, majd aktiválja a megfelelő műveletet.

        /// <summary>
        /// Changes the color of the target GameObject by providing the name of the object
        /// and the name of the color
        /// </summary>
        public void ChangeTargetColor(string targetName, string colorName)
        {
            GameObject foundTarget = FindTarget(targetName);
            if (foundTarget != null)
            {
                Debug.Log("Changing color " + colorName + " to target: " + foundTarget.name);
    
                switch (colorName)
                {
                    case "blue":
                        foundTarget.GetComponent<Renderer>().material.color = Color.blue;
                        break;
    
                    case "red":
                        foundTarget.GetComponent<Renderer>().material.color = Color.red;
                        break;
    
                    case "yellow":
                        foundTarget.GetComponent<Renderer>().material.color = Color.yellow;
                        break;
    
                    case "green":
                        foundTarget.GetComponent<Renderer>().material.color = Color.green;
                        break;
    
                    case "white":
                        foundTarget.GetComponent<Renderer>().material.color = Color.white;
                        break;
    
                    case "black":
                        foundTarget.GetComponent<Renderer>().material.color = Color.black;
                        break;
                }          
            }
        }
    
        /// <summary>
        /// Reduces the size of the target GameObject by providing its name
        /// </summary>
        public void DownSizeTarget(string targetName)
        {
            GameObject foundTarget = FindTarget(targetName);
            foundTarget.transform.localScale -= new Vector3(0.5F, 0.5F, 0.5F);
        }
    
        /// <summary>
        /// Increases the size of the target GameObject by providing its name
        /// </summary>
        public void UpSizeTarget(string targetName)
        {
            GameObject foundTarget = FindTarget(targetName);
            foundTarget.transform.localScale += new Vector3(0.5F, 0.5F, 0.5F);
        }
    
  7. Adja hozzá a FindTarget() metódust annak meghatározásához, hogy a GameObjects melyik célja az aktuális szándéknak. Ez a metódus alapértelmezés szerint a GameObject célértékét "megtekinti", ha az entitásokban nincs explicit cél definiálva.

        /// <summary>
        /// Determines which object reference is the target GameObject by providing its name
        /// </summary>
        private GameObject FindTarget(string name)
        {
            GameObject targetAsGO = null;
    
            switch (name)
            {
                case "sphere":
                    targetAsGO = sphere;
                    break;
    
                case "cylinder":
                    targetAsGO = cylinder;
                    break;
    
                case "cube":
                    targetAsGO = cube;
                    break;
    
                case "this": // as an example of target words that the user may use when looking at an object
                case "it":  // as this is the default, these are not actually needed in this example
                case "that":
                default: // if the target name is none of those above, check if the user is looking at something
                    if (gazedTarget != null) 
                    {
                        targetAsGO = gazedTarget;
                    }
                    break;
            }
            return targetAsGO;
        }
    

    Fontos

    Törölje a Start() és Update() metódusokat, mivel ez a osztály nem fogja használni őket.

  8. Mielőtt visszatér a Unitybe, mentse a módosításokat a Visual Studióban.

8. fejezet – A tekintetosztály létrehozása

Az alkalmazás befejezéséhez az utolsó osztály a Gaze osztály. Ez az osztály frissíti a felhasználó vizuális fókuszában lévő GameObjectre mutató hivatkozást.

Az osztály létrehozása:

  1. Kattintson duplán a Szkriptek mappára a megnyitásához.

  2. Kattintson a jobb gombbal a Szkriptek mappába, és válassza a C#-szkript létrehozása > parancsot. Nevezze el a szkriptet Gaze névvel.

  3. Kattintson duplán a szkriptre a Visual Studióval való megnyitásához.

  4. Szúrja be a következő kódot ehhez az osztályhoz:

        using UnityEngine;
    
        public class Gaze : MonoBehaviour
        {        
            internal GameObject gazedObject;
            public float gazeMaxDistance = 300;
    
            void Update()
            {
                // Uses a raycast from the Main Camera to determine which object is gazed upon.
                Vector3 fwd = gameObject.transform.TransformDirection(Vector3.forward);
                Ray ray = new Ray(Camera.main.transform.position, fwd);
                RaycastHit hit;
                Debug.DrawRay(Camera.main.transform.position, fwd);
    
                if (Physics.Raycast(ray, out hit, gazeMaxDistance) && hit.collider != null)
                {
                    if (gazedObject == null)
                    {
                        gazedObject = hit.transform.gameObject;
    
                        // Set the gazedTarget in the Behaviours class
                        Behaviours.instance.gazedTarget = gazedObject;
                    }
                }
                else
                {
                    ResetGaze();
                }         
            }
    
            // Turn the gaze off, reset the gazeObject in the Behaviours class.
            public void ResetGaze()
            {
                if (gazedObject != null)
                {
                    Behaviours.instance.gazedTarget = null;
                    gazedObject = null;
                }
            }
        }
    
  5. Ne felejtse el menteni a módosításokat a Visual Studióban , mielőtt visszatér a Unitybe.

9. fejezet – A jelenet beállításának befejezése

  1. A jelenet beállításának befejezéséhez húzza az összes létrehozott szkriptet a Szkriptek mappából a Hierarchia panelFő kamerája objektumába.

  2. Válassza ki a Fő kamerát , és tekintse meg az Inspector panelt, látnia kell az egyes csatolt szkripteket, és megfigyelheti, hogy minden szkripten vannak paraméterek, amelyeket még be kell állítani.

    A kamera referenciapéldányainak beállítása.

  3. A paraméterek helyes beállításához kövesse az alábbi utasításokat:

    1. MicrophoneManager:

      • A Hierarchia panelen húzza a Diktálási szöveg objektumot a Diktálási szöveg paraméter értékmezőbe.
    2. Viselkedések a Hierarchia panelről:

      • Húzza a Sphere objektumot a Sphere hivatkozási célmezőbe.
      • Húzza a hengert a Henger referencia célmezőbe.
      • Húzza a kockát a Kockahivatkozás célmezőbe.
    3. Tekintet:

      • Állítsa a Tekintet maximális távolságát300-ra (ha még nem tette meg).
  4. Az eredménynek az alábbi képhez hasonlóan kell kinéznie:

    A kamera referenciapéldányainak megjelenítése, most már be van állítva.

10. fejezet – Tesztelés a Unity Szerkesztőben

Ellenőrizze, hogy a Jelenet beállítása megfelelően van-e implementálva.

Győződjön meg a következőkről:

  • Az összes szkript a Fő kamera objektumhoz van csatolva.
  • A Fő kamerafelügyelő panel összes mezője megfelelően van hozzárendelve.
  1. Nyomja le a Lejátszás gombot a Unity-szerkesztőben. Az alkalmazásnak a csatlakoztatott modern headseten belül kell futnia.

  2. Próbáljon ki néhány kimondott szöveget, például:

    make the cylinder red
    
    change the cube to yellow
    
    I want the sphere blue
    
    make this to green
    
    change it to white
    

    Megjegyzés

    Ha hibaüzenetet lát a Unity-konzolon az alapértelmezett hangeszköz módosításával kapcsolatban, előfordulhat, hogy a jelenet nem a várt módon működik. Ennek az az oka, hogy a vegyes valóság portálja a beépített mikrofonokkal foglalkozik azokkal rendelkező headsetekhez. Ha ezt a hibát látja, egyszerűen állítsa le a jelenetet, és indítsa újra, és a dolgok a várt módon működjenek.

11. fejezet – Az UWP-megoldás felépítése és közvetlen betöltése

Miután meggyőződett arról, hogy az alkalmazás működik a Unity Szerkesztőben, készen áll a buildelésre és üzembe helyezésre.

Buildelés:

  1. Mentse az aktuális jelenetet a Fájl > mentése gombra kattintva.

  2. Lépjen a Fájl > buildelési beállításai területre.

  3. Jelölje be a Unity C# Projects (Unity C#-projektek ) nevű jelölőnégyzetet (ez hasznos a kód megtekintéséhez és hibakereséséhez az UWP-projekt létrehozása után.

  4. Kattintson a Nyitott jelenetek hozzáadása, majd a Build elemre.

    Buildbeállítások ablak

  5. A rendszer kérni fogja, hogy válassza ki azt a mappát, amelyben létre szeretné tenni a megoldást.

  6. Hozzon létre egy BUILDS mappát, és a mappán belül hozzon létre egy másik mappát a kívánt névvel.

  7. Kattintson a Mappa kiválasztása gombra a build ezen a helyen való megkezdéséhez.

    Buildek mappa létrehozása– Buildek mappa kiválasztása

  8. Miután a Unity befejezte az építést (eltarthat egy ideig), meg kell nyitnia egy Fájlkezelő ablakot a build helyén.

Üzembe helyezés helyi gépen:

  1. Nyissa meg az előző fejezetben létrehozott megoldásfájlt a Visual Studióban.

  2. A Megoldásplatformon válassza az x86, Helyi gép lehetőséget.

  3. A Megoldás konfigurációja területen válassza a Hibakeresés lehetőséget.

    A Microsoft HoloLens egyszerűbben beállíthatja távoli gépre, hogy ne legyen a számítógéphez kötve. Azonban a következőket is el kell végeznie:

    • Ismerje meg a HoloLens IP-címét , amely a Beállítások > hálózat & az Internet > Wi-Fi > Speciális beállítások területen található; az IPv4 a használni kívánt cím.
    • Győződjön meg arról, hogy a fejlesztői módbe van kapcsolva; A következőt találja: Gépházban > Frissítés & Biztonsági beállítások > fejlesztőknek.

    Alkalmazás üzembe helyezése

  4. Nyissa meg a Build (Build) menüt , és kattintson a Deploy Solution (Megoldás üzembe helyezése ) elemre az alkalmazás gépre való közvetlen telepítéséhez.

  5. Az alkalmazásnak most már meg kell jelennie a telepített alkalmazások listájában, készen áll az indításra!

  6. Az indítás után az alkalmazás kérni fogja, hogy engedélyezze a mikrofonhoz való hozzáférést. A Mozgásvezérlők, a Hangbemenet vagy a Billentyűzet segítségével nyomja le az IGEN gombot.

12. fejezet – A LUIS-szolgáltatás fejlesztése

Fontos

Ez a fejezet rendkívül fontos, és előfordulhat, hogy többször is meg kell ismételnünk, mivel ez segít a LUIS-szolgáltatás pontosságának javításában: győződjön meg arról, hogy ezt elvégezte.

A LUIS által biztosított megértési szint javításához új kimondott szövegeket kell rögzítenie, és azokkal újra be kell tanítania a LUIS-alkalmazást.

Előfordulhat például, hogy betanította a LUIS-t a "Növelés" és az "Upsize" megértéséhez, de nem szeretné, hogy az alkalmazás megértse az olyan szavakat is, mint a "Nagyítás"?

Miután néhányszor használta az alkalmazást, a LUIS összegyűjti és elérhetővé teszi azokat a LUIS-portálon, amelyeket ön mondott.

  1. Nyissa meg a portálalkalmazást a hivatkozás után, és jelentkezzen be.

  2. Miután bejelentkezett az MS hitelesítő adataival, kattintson az alkalmazás nevére.

  3. Kattintson a végponti kimondott szövegek áttekintése gombra az oldal bal oldalán.

    Kimondott szövegek áttekintése

  4. Megjelenik azoknak a kimondott szövegeknek a listája, amelyeket a vegyes valósági alkalmazás küldött a LUIS-nak.

    Kimondott szövegek listája

Megfigyelhet néhány kiemelt entitást.

Ha az egérmutatót az egyes kiemelt szavak fölé viszi, áttekintheti az egyes kimondott szövegeket, és megállapíthatja, hogy melyik entitás lett helyesen felismerve, mely entitások hibásak, és mely entitások hiányoznak.

A fenti példában azt találták, hogy a "lándzsás" szó ki van emelve célként, ezért ki kell javítani a hibát, ami úgy történik, hogy az egérrel rámutat a szóra, és a Címke eltávolítása gombra kattint.

Kimondott szövegek ellenőrzése– Címkekép eltávolítása

  1. Ha teljesen helytelen kimondott szövegeket talál, törölheti őket a képernyő jobb oldalán található Törlés gombbal.

    Helytelen kimondott szövegek törlése

  2. Vagy ha úgy érzi, hogy a LUIS helyesen értelmezte a kimondott szöveget, az Igazított szándék hozzáadása gombbal ellenőrizheti annak megértését.

    Hozzáadás az igazított szándékhoz

  3. Az összes megjelenített kimondott szöveg rendezése után próbálja meg újra betölteni a lapot, és ellenőrizze, hogy vannak-e továbbiak.

  4. Nagyon fontos, hogy a lehető legtöbb alkalommal megismételjük ezt a folyamatot az alkalmazás megértésének javítása érdekében.

Jó munkát!

A kész LUIS integrált alkalmazás

Gratulálunk, olyan vegyes valósági alkalmazást készített, amely az Azure Language Understanding Intelligence Service-t használja, hogy megértse, mit mond egy felhasználó, és reagáljon az információkra.

Tesztkörnyezet eredménye

Soron kívüli gyakorlatok

1. gyakorlat

Az alkalmazás használata során észreveheti, hogy ha a Floor objektumra néz, és megkéri, hogy módosítsa a színét, akkor ezt fogja tenni. Meg tudja akadályozni, hogy az alkalmazás módosítsa a Floor színét?

2. gyakorlat

Próbálja kiterjeszteni a LUIS és az alkalmazás képességeit, és adjon hozzá további funkciókat a jelenetben lévő objektumokhoz; Például hozzon létre új objektumokat a Tekintet találati ponton attól függően, hogy mit mond a felhasználó, majd használhatja ezeket az objektumokat az aktuális jelenetobjektumokkal együtt a meglévő parancsokkal.