Bagikan melalui


HoloLens (generasi ke-1) Input 212: Suara

Penting

Tutorial Mixed Reality Academy dirancang dengan HoloLens (generasi ke-1), Unity 2017, dan Mixed Reality Headset Imersif dalam pikiran. Dengan demikian, kami merasa penting untuk meninggalkan tutorial ini di tempat bagi pengembang yang masih mencari panduan dalam mengembangkan untuk perangkat tersebut. Tutorial ini tidak akan diperbarui dengan toolset atau interaksi terbaru yang digunakan untuk HoloLens 2 dan mungkin tidak kompatibel dengan versi Unity yang lebih baru. Mereka akan dipertahankan untuk terus bekerja pada perangkat yang didukung. Serangkaian tutorial baru telah diposting untuk HoloLens 2.

Input suara memberi kita cara lain untuk berinteraksi dengan hologram kita. Perintah suara bekerja dengan cara yang sangat alami dan mudah. Rancang perintah suara Anda sehingga:

  • Natural
  • Mudah diingat
  • Konteks yang sesuai
  • Cukup berbeda dari opsi lain dalam konteks yang sama

Di MR Basics 101, kami menggunakan KeywordRecognizer untuk membangun dua perintah suara sederhana. Dalam MR Input 212, kita akan menyelam lebih dalam dan mempelajari cara:

  • Mendesain perintah suara yang dioptimalkan untuk mesin ucapan HoloLens.
  • Buat pengguna mengetahui perintah suara apa yang tersedia.
  • Mengakui bahwa kami telah mendengar perintah suara pengguna.
  • Pahami apa yang dikatakan pengguna, menggunakan Dictation Recognizer.
  • Gunakan Grammar Recognizer untuk mendengarkan perintah berdasarkan SRGS, atau Spesifikasi Tata Bahasa Pengenalan Ucapan, file.

Dalam kursus ini, kita akan mengunjungi kembali Model Explorer, yang kita bangun di MR Input 210 dan MR Input 211.

Penting

Video yang disematkan di setiap bab di bawah ini direkam menggunakan versi Unity yang lebih lama dan Mixed Reality Toolkit. Meskipun instruksi langkah demi langkah akurat dan terkini, Anda mungkin melihat skrip dan visual dalam video yang sesuai yang sudah kedaluarsa. Video tetap disertakan untuk posteritas dan karena konsep yang dibahas masih berlaku.

Dukungan perangkat

Kursus HoloLens Headset imersif
Masukan MR 212: Suara ✔️ ✔️

Sebelum memulai

Prasyarat

File proyek

  • Unduh file yang diperlukan oleh proyek. Membutuhkan Unity 2017.2 atau yang lebih baru.
  • Batalkan arsip file ke desktop Anda atau lokasi lain yang mudah dijangkau.

Catatan

Jika Anda ingin melihat melalui kode sumber sebelum mengunduh, kode tersebut tersedia di GitHub.

Errata dan Catatan

  • "Aktifkan Hanya Kode Saya" perlu dinonaktifkan (tidak dicentang) di Visual Studio di bawah Tools-Options-Debugging>> untuk mencapai titik henti dalam kode Anda.

Penyiapan Unity

Petunjuk

  1. Mulai Unity.
  2. Pilih Buka.
  3. Navigasikan ke folder HolographicAcademy-Holograms-212-Voice yang sebelumnya tidak Diarsipkan.
  4. Temukan dan pilih folder Memulai/Penjelajah Model .
  5. Klik tombol Pilih Folder .
  6. Di panel Proyek , perluas folder Adegan .
  7. Klik dua kali adegan ModelExplorer untuk memuatnya di Unity.

Gedung

  1. Di Unity, pilih Pengaturan Build File>.
  2. Jika Adegan/ModelExplorer tidak tercantum dalam Adegan Dalam Build, klik Tambahkan Adegan Terbuka untuk menambahkan adegan.
  3. Jika Anda secara khusus mengembangkan untuk HoloLens, atur Perangkat target ke HoloLens. Jika tidak, biarkan di perangkat apa pun.
  4. Pastikan Jenis Build diatur ke D3D dan SDK diatur ke Terbaru diinstal (yang seharusnya SDK 16299 atau yang lebih baru).
  5. Klik Bangun.
  6. Buat Folder Baru bernama "Aplikasi".
  7. Klik tunggal folder Aplikasi .
  8. Tekan Pilih Folder dan Unity akan mulai membangun proyek untuk Visual Studio.

Ketika Unity selesai, jendela File Explorer akan muncul.

  1. Buka folder Aplikasi .
  2. Buka Solusi Visual Studio ModelExplorer.

Jika menyebarkan ke HoloLens:

  1. Menggunakan toolbar atas di Visual Studio, ubah target dari Debug ke Rilis dan dari ARM ke x86.
  2. Klik panah drop-down di samping tombol Komputer Lokal, dan pilih Komputer Jarak Jauh.
  3. Masukkan alamat IP perangkat HoloLens Anda dan atur Mode Autentikasi ke Universal (Protokol Tidak Terenkripsi). Klik Pilih. Jika Anda tidak mengetahui alamat IP perangkat Anda, lihat di Pengaturan > Jaringan & Opsi Tingkat Lanjut Internet>.
  4. Di bilah menu atas, klik Debug -> Mulai Tanpa penelusuran kesalahan atau tekan Ctrl + F5. Jika ini adalah pertama kalinya menyebarkan ke perangkat Anda, Anda harus memasangkannya dengan Visual Studio.
  5. Saat aplikasi telah disebarkan, tutup Fitbox dengan gerakan tertentu.

Jika menyebarkan ke headset imersif:

  1. Menggunakan toolbar atas di Visual Studio, ubah target dari Debug ke Rilis dan dari ARM ke x64.
  2. Pastikan target penyebaran diatur ke Komputer Lokal.
  3. Di bilah menu atas, klik Debug -> Mulai Tanpa penelusuran kesalahan atau tekan Ctrl + F5.
  4. Saat aplikasi telah disebarkan, tutup Fitbox dengan menarik pemicu pada pengontrol gerakan.

Catatan

Anda mungkin melihat beberapa kesalahan merah di panel Kesalahan Visual Studio. Aman untuk mengabaikan mereka. Beralih ke panel Output untuk melihat kemajuan build aktual. Kesalahan di panel Output akan mengharuskan Anda untuk melakukan perbaikan (paling sering disebabkan oleh kesalahan dalam skrip).

Bab 1 - Kesadaran

Tujuan

  • Pelajari desain perintah Dos and Don'ts of voice.
  • Gunakan KeywordRecognizer untuk menambahkan perintah suara berbasis tatapan.
  • Buat pengguna mengetahui perintah suara menggunakan umpan balik kursor.

Desain Perintah Suara

Dalam bab ini, Anda akan mempelajari tentang merancang perintah suara. Saat membuat perintah suara:

DO

  • Membuat perintah ringkas. Anda tidak ingin menggunakan "Putar video yang saat ini dipilih", karena perintah tersebut tidak ringkas dan akan mudah dilupakan oleh pengguna. Sebagai gantinya, Anda harus menggunakan: "Putar Video", karena ringkas dan memiliki beberapa suku kata.
  • Gunakan kosakata sederhana. Selalu coba gunakan kata dan frasa umum yang mudah ditemukan dan diingat pengguna. Misalnya, jika aplikasi Anda memiliki objek catatan yang dapat ditampilkan atau disembunyikan dari tampilan, Anda tidak akan menggunakan perintah "Tampilkan Plakat", karena "plakat" adalah istilah yang jarang digunakan. Sebagai gantinya, Anda akan menggunakan perintah: "Tampilkan Catatan", untuk mengungkapkan catatan dalam aplikasi Anda.
  • Jadilah konsisten. Perintah suara harus tetap konsisten di seluruh aplikasi Anda. Bayangkan Anda memiliki dua adegan dalam aplikasi Anda dan kedua adegan berisi tombol untuk menutup aplikasi. Jika adegan pertama menggunakan perintah "Exit" untuk memicu tombol, tetapi adegan kedua menggunakan perintah "Tutup Aplikasi", maka pengguna akan menjadi sangat bingung. Jika fungsionalitas yang sama berlanjut di beberapa adegan, perintah suara yang sama harus digunakan untuk memicunya.

JANGAN

  • Gunakan perintah suku kata tunggal. Sebagai contoh, jika Anda membuat perintah suara untuk memutar video, Anda harus menghindari penggunaan perintah sederhana "Putar", karena hanya satu suku kata dan dapat dengan mudah dilewatkan oleh sistem. Sebagai gantinya, Anda harus menggunakan: "Putar Video", karena ringkas dan memiliki beberapa suku kata.
  • Gunakan perintah sistem. Perintah "Pilih" dicadangkan oleh sistem untuk memicu peristiwa Ketuk untuk objek yang saat ini difokuskan. Jangan gunakan kembali perintah "Pilih" dalam kata kunci atau frasa, karena mungkin tidak berfungsi seperti yang Anda harapkan. Misalnya, jika perintah suara untuk memilih kubus di aplikasi Anda adalah "Pilih kubus", tetapi pengguna melihat bola ketika mereka mengucapkan perintah, maka bola akan dipilih sebagai gantinya. Demikian pula perintah bilah aplikasi diaktifkan suara. Jangan gunakan perintah ucapan berikut di Tampilan CoreWindow Anda:
    1. Kembali
    2. Alat Gulir
    3. Alat Zoom
    4. Seret Alat
    5. Sesuaikan
    6. Hapus
  • Gunakan suara serupa. Cobalah untuk menghindari penggunaan perintah suara yang berirama. Jika Anda memiliki aplikasi belanja yang mendukung "Show Store" dan "Show More" sebagai perintah suara, maka Anda ingin menonaktifkan salah satu perintah saat yang lain sedang digunakan. Misalnya, Anda dapat menggunakan tombol "Tampilkan Toko" untuk membuka penyimpanan, lalu menonaktifkan perintah tersebut saat penyimpanan ditampilkan sehingga perintah "Tampilkan Lebih Banyak" dapat digunakan untuk penjelajahan.

Petunjuk

  • Di panel Hierarki Unity , gunakan alat pencarian untuk menemukan objek holoComm_screen_mesh .
  • Klik dua kali pada objek holoComm_screen_mesh untuk melihatnya di Adegan. Ini adalah watch astronaut, yang akan menanggapi perintah suara kita.
  • Di panel Pemeriksa, temukan komponen Sumber Input Ucapan (Skrip).
  • Perluas bagian Kata Kunci untuk melihat perintah suara yang didukung: Buka Communicator.
  • Klik cog di sisi kanan, lalu pilih Edit Skrip.
  • Jelajahi SpeechInputSource.cs untuk memahami cara menggunakan KeywordRecognizer untuk menambahkan perintah suara.

Membangun dan Menyebarkan

  • Di Unity, gunakan Pengaturan Build File > untuk membangun kembali aplikasi.
  • Buka folder Aplikasi .
  • Buka Solusi Visual Studio ModelExplorer.

(Jika Anda sudah membuat/menyebarkan proyek ini di Visual Studio selama pengaturan, maka Anda dapat membuka instans VS tersebut dan mengklik 'Muat Ulang Semua' saat diminta).

  • Di Visual Studio, klik Debug -> Mulai Tanpa penelusuran kesalahan atau tekan Ctrl + F5.
  • Setelah aplikasi disebarkan ke HoloLens, tutup kotak pas menggunakan gerakan ketukan udara .
  • Tatap watch astronot.
  • Saat watch memiliki fokus, verifikasi bahwa kursor berubah menjadi mikrofon. Ini memberikan umpan balik bahwa aplikasi mendengarkan perintah suara.
  • Verifikasi bahwa tipsalat muncul di watch. Ini membantu pengguna menemukan perintah "Open Communicator" .
  • Sambil menatap watch, ucapkan "Open Communicator" untuk membuka panel communicator.

Bab 2 - Pengakuan

Tujuan

  • Rekam pesan menggunakan input Mikrofon.
  • Berikan umpan balik kepada pengguna bahwa aplikasi mendengarkan suara mereka.

Catatan

Kemampuan Mikrofon harus dideklarasikan agar aplikasi merekam dari mikrofon. Ini dilakukan untuk Anda sudah di MR Input 212, tetapi ingatlah hal ini untuk proyek Anda sendiri.

  1. Di Editor Unity, buka pengaturan pemutar dengan menavigasi ke "Edit > Pemutar Pengaturan > Proyek"
  2. Klik tab "Platform Windows Universal"
  3. Di bagian "Kemampuan Pengaturan > Penerbitan", periksa kemampuan Mikrofon

Petunjuk

  • Di panel Hierarki Unity , verifikasi bahwa objek holoComm_screen_mesh dipilih.
  • Di panel Inspektur, temukan komponen Astronaut Watch (Script).
  • Klik kubus biru kecil yang ditetapkan sebagai nilai properti Prefab Communicator .
  • Di panel Proyek , prefab Communicator sekarang harus memiliki fokus.
  • Klik prefab Communicator di panel Proyek untuk melihat komponennya di Inspektur.
  • Lihat komponen Microphone Manager (Script), ini akan memungkinkan kita untuk merekam suara pengguna.
  • Perhatikan bahwa objek Communicator memiliki komponen Speech Input Handler (Script) untuk merespons perintah Kirim Pesan .
  • Lihat komponen Communicator (Skrip) dan klik dua kali pada skrip untuk membukanya di Visual Studio.

Communicator.cs bertanggung jawab untuk mengatur status tombol yang tepat pada perangkat communicator. Ini akan memungkinkan pengguna kami untuk merekam pesan, memutarnya kembali, dan mengirim pesan ke astronaut. Ini juga akan memulai dan menghentikan bentuk gelombang animasi, untuk mengakui kepada pengguna bahwa suara mereka didengar.

  • Di Communicator.cs, hapus baris berikut (81 dan 82) dari metode Mulai . Ini akan mengaktifkan tombol 'Rekam' pada communicator.
// TODO: 2.a Delete the following two lines:
RecordButton.SetActive(false);
MessageUIRenderer.gameObject.SetActive(false);

Membangun dan Menyebarkan

  • Di Visual Studio, bangun ulang aplikasi Anda dan sebarkan ke perangkat.
  • Tatap watch astronot dan ucapkan "Open Communicator" untuk menunjukkan kepada komunikator.
  • Tekan tombol Rekam (mikrofon) untuk mulai merekam pesan verbal untuk astronaut.
  • Mulailah berbicara, dan verifikasi bahwa animasi gelombang diputar pada komunikator, yang memberikan umpan balik kepada pengguna bahwa suara mereka didengar.
  • Tekan tombol Hentikan (persegi kiri), dan verifikasi bahwa animasi gelombang berhenti berjalan.
  • Tekan tombol Putar (segitiga kanan) untuk memutar kembali pesan yang direkam dan mendengarnya di perangkat.
  • Tekan tombol Hentikan (persegi kanan) untuk menghentikan pemutaran pesan yang direkam.
  • Ucapkan "Kirim Pesan" untuk menutup komunikator dan menerima respons 'Pesan Diterima' dari astronaut.

Bab 3 - Pemahaman dan Pengenal Dikte

Tujuan

  • Gunakan Dictation Recognizer untuk mengonversi ucapan pengguna menjadi teks.
  • Tampilkan hasil akhir dan hipotesis Dictation Recognizer dalam komunikator.

Dalam bab ini, kita akan menggunakan Dictation Recognizer untuk membuat pesan untuk astronaut. Saat menggunakan Dictation Recognizer, perlu diingat bahwa:

  • Anda harus terhubung ke WiFi agar Dictation Recognizer berfungsi.
  • Batas waktu terjadi setelah periode waktu yang ditetapkan. Ada dua batas waktu yang perlu diperhatikan:
    • Jika pengenal dimulai dan tidak mendengar audio apa pun selama lima detik pertama, waktunya akan habis.
    • Jika pengenal telah memberikan hasil tetapi kemudian mendengar keheningan selama dua puluh detik, waktunya akan habis.
  • Hanya satu jenis pengenal (Kata Kunci atau Dikte) yang dapat berjalan pada satu waktu.

Catatan

Kemampuan Mikrofon harus dideklarasikan agar aplikasi merekam dari mikrofon. Ini dilakukan untuk Anda sudah di MR Input 212, tetapi ingatlah hal ini untuk proyek Anda sendiri.

  1. Di Editor Unity, buka pengaturan pemutar dengan menavigasi ke "Edit > Pemutar Pengaturan > Proyek"
  2. Klik tab "Platform Windows Universal"
  3. Di bagian "Kemampuan Pengaturan > Penerbitan", periksa kemampuan Mikrofon

Petunjuk

Kita akan mengedit MicrophoneManager.cs untuk menggunakan Dictation Recognizer. Inilah yang akan kami tambahkan:

  1. Saat tombol Rekam ditekan, kita akan memulai DictationRecognizer.
  2. Tunjukkan hipotesis apa yang dipahami DictationRecognizer.
  3. Kunci hasil yang dipahami DictationRecognizer.
  4. Periksa batas waktu dari DictationRecognizer.
  5. Saat tombol Berhenti ditekan, atau waktu sesi mikrofon habis, hentikan DictationRecognizer.
  6. Mulai ulang KeywordRecognizer, yang akan mendengarkan perintah Kirim Pesan .

Mari kita mulai. Selesaikan semua latihan pengodean untuk 3.a di MicrophoneManager.cs, atau salin dan tempel kode jadi yang ditemukan di bawah ini:

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using System.Collections;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Windows.Speech;

namespace Academy
{
    public class MicrophoneManager : MonoBehaviour
    {
        [Tooltip("A text area for the recognizer to display the recognized strings.")]
        [SerializeField]
        private Text dictationDisplay;

        private DictationRecognizer dictationRecognizer;

        // Use this string to cache the text currently displayed in the text box.
        private StringBuilder textSoFar;

        // Using an empty string specifies the default microphone.
        private static string deviceName = string.Empty;
        private int samplingRate;
        private const int messageLength = 10;

        // Use this to reset the UI once the Microphone is done recording after it was started.
        private bool hasRecordingStarted;

        void Awake()
        {
            /* TODO: DEVELOPER CODING EXERCISE 3.a */

            // 3.a: Create a new DictationRecognizer and assign it to dictationRecognizer variable.
            dictationRecognizer = new DictationRecognizer();

            // 3.a: Register for dictationRecognizer.DictationHypothesis and implement DictationHypothesis below
            // This event is fired while the user is talking. As the recognizer listens, it provides text of what it's heard so far.
            dictationRecognizer.DictationHypothesis += DictationRecognizer_DictationHypothesis;

            // 3.a: Register for dictationRecognizer.DictationResult and implement DictationResult below
            // This event is fired after the user pauses, typically at the end of a sentence. The full recognized string is returned here.
            dictationRecognizer.DictationResult += DictationRecognizer_DictationResult;

            // 3.a: Register for dictationRecognizer.DictationComplete and implement DictationComplete below
            // This event is fired when the recognizer stops, whether from Stop() being called, a timeout occurring, or some other error.
            dictationRecognizer.DictationComplete += DictationRecognizer_DictationComplete;

            // 3.a: Register for dictationRecognizer.DictationError and implement DictationError below
            // This event is fired when an error occurs.
            dictationRecognizer.DictationError += DictationRecognizer_DictationError;

            // Query the maximum frequency of the default microphone. Use 'unused' to ignore the minimum frequency.
            int unused;
            Microphone.GetDeviceCaps(deviceName, out unused, out samplingRate);

            // Use this string to cache the text currently displayed in the text box.
            textSoFar = new StringBuilder();

            // Use this to reset the UI once the Microphone is done recording after it was started.
            hasRecordingStarted = false;
        }

        void Update()
        {
            // 3.a: Add condition to check if dictationRecognizer.Status is Running
            if (hasRecordingStarted && !Microphone.IsRecording(deviceName) && dictationRecognizer.Status == SpeechSystemStatus.Running)
            {
                // Reset the flag now that we're cleaning up the UI.
                hasRecordingStarted = false;

                // This acts like pressing the Stop button and sends the message to the Communicator.
                // If the microphone stops as a result of timing out, make sure to manually stop the dictation recognizer.
                // Look at the StopRecording function.
                SendMessage("RecordStop");
            }
        }

        /// <summary>
        /// Turns on the dictation recognizer and begins recording audio from the default microphone.
        /// </summary>
        /// <returns>The audio clip recorded from the microphone.</returns>
        public AudioClip StartRecording()
        {
            // 3.a Shutdown the PhraseRecognitionSystem. This controls the KeywordRecognizers
            PhraseRecognitionSystem.Shutdown();

            // 3.a: Start dictationRecognizer
            dictationRecognizer.Start();

            // 3.a Uncomment this line
            dictationDisplay.text = "Dictation is starting. It may take time to display your text the first time, but begin speaking now...";

            // Set the flag that we've started recording.
            hasRecordingStarted = true;

            // Start recording from the microphone for 10 seconds.
            return Microphone.Start(deviceName, false, messageLength, samplingRate);
        }

        /// <summary>
        /// Ends the recording session.
        /// </summary>
        public void StopRecording()
        {
            // 3.a: Check if dictationRecognizer.Status is Running and stop it if so
            if (dictationRecognizer.Status == SpeechSystemStatus.Running)
            {
                dictationRecognizer.Stop();
            }

            Microphone.End(deviceName);
        }

        /// <summary>
        /// This event is fired while the user is talking. As the recognizer listens, it provides text of what it's heard so far.
        /// </summary>
        /// <param name="text">The currently hypothesized recognition.</param>
        private void DictationRecognizer_DictationHypothesis(string text)
        {
            // 3.a: Set DictationDisplay text to be textSoFar and new hypothesized text
            // We don't want to append to textSoFar yet, because the hypothesis may have changed on the next event
            dictationDisplay.text = textSoFar.ToString() + " " + text + "...";
        }

        /// <summary>
        /// This event is fired after the user pauses, typically at the end of a sentence. The full recognized string is returned here.
        /// </summary>
        /// <param name="text">The text that was heard by the recognizer.</param>
        /// <param name="confidence">A representation of how confident (rejected, low, medium, high) the recognizer is of this recognition.</param>
        private void DictationRecognizer_DictationResult(string text, ConfidenceLevel confidence)
        {
            // 3.a: Append textSoFar with latest text
            textSoFar.Append(text + ". ");

            // 3.a: Set DictationDisplay text to be textSoFar
            dictationDisplay.text = textSoFar.ToString();
        }

        /// <summary>
        /// This event is fired when the recognizer stops, whether from Stop() being called, a timeout occurring, or some other error.
        /// Typically, this will simply return "Complete". In this case, we check to see if the recognizer timed out.
        /// </summary>
        /// <param name="cause">An enumerated reason for the session completing.</param>
        private void DictationRecognizer_DictationComplete(DictationCompletionCause cause)
        {
            // If Timeout occurs, the user has been silent for too long.
            // With dictation, the default timeout after a recognition is 20 seconds.
            // The default timeout with initial silence is 5 seconds.
            if (cause == DictationCompletionCause.TimeoutExceeded)
            {
                Microphone.End(deviceName);

                dictationDisplay.text = "Dictation has timed out. Please press the record button again.";
                SendMessage("ResetAfterTimeout");
            }
        }

        /// <summary>
        /// This event is fired when an error occurs.
        /// </summary>
        /// <param name="error">The string representation of the error reason.</param>
        /// <param name="hresult">The int representation of the hresult.</param>
        private void DictationRecognizer_DictationError(string error, int hresult)
        {
            // 3.a: Set DictationDisplay text to be the error string
            dictationDisplay.text = error + "\nHRESULT: " + hresult;
        }

        /// <summary>
        /// The dictation recognizer may not turn off immediately, so this call blocks on
        /// the recognizer reporting that it has actually stopped.
        /// </summary>
        public IEnumerator WaitForDictationToStop()
        {
            while (dictationRecognizer != null && dictationRecognizer.Status == SpeechSystemStatus.Running)
            {
                yield return null;
            }
        }
    }
}

Membangun dan Menyebarkan

  • Bangun kembali di Visual Studio dan sebarkan ke perangkat Anda.
  • Tutup kotak pas dengan gerakan ketukan udara.
  • Tatap watch astronot dan ucapkan "Open Communicator".
  • Pilih tombol Rekam (mikrofon) untuk merekam pesan Anda.
  • Mulailah bicara. Dictation Recognizer akan menginterpretasikan ucapan Anda dan menunjukkan teks yang dihipotesiskan dalam komunikator.
  • Coba ucapkan "Kirim Pesan" saat Anda merekam pesan. Perhatikan bahwa Pengenal Kata Kunci tidak merespons karena Dictation Recognizer masih aktif.
  • Berhenti berbicara selama beberapa detik. Tonton saat Dictation Recognizer menyelesaikan hipotesisnya dan menunjukkan hasil akhirnya.
  • Mulai berbicara lalu jeda selama 20 detik. Ini akan menyebabkan Dictation Recognizer ke waktu habis.
  • Perhatikan bahwa Pengenal Kata Kunci diaktifkan kembali setelah batas waktu di atas. Komunikator sekarang akan menanggapi perintah suara.
  • Ucapkan "Kirim Pesan" untuk mengirim pesan ke astronaut.

Bab 4 - Grammar Recognizer

Tujuan

  • Gunakan Grammar Recognizer untuk mengenali ucapan pengguna sesuai dengan SRGS, atau Spesifikasi Tata Bahasa Pengenalan Ucapan, file.

Catatan

Kemampuan Mikrofon harus dideklarasikan agar aplikasi merekam dari mikrofon. Ini dilakukan untuk Anda sudah di MR Input 212, tetapi ingatlah hal ini untuk proyek Anda sendiri.

  1. Di Editor Unity, buka pengaturan pemutar dengan menavigasi ke "Edit > Pemutar Pengaturan > Proyek"
  2. Klik tab "Platform Windows Universal"
  3. Di bagian "Kemampuan Pengaturan > Penerbitan", periksa kemampuan Mikrofon

Petunjuk

  1. Di panel Hierarki , cari Jetpack_Center dan pilih.
  2. Cari skrip Tindakan Tagalong di panel Inspektur .
  3. Klik lingkaran kecil di sebelah kanan bidang Objek Ke Tag Sepanjang .
  4. Di jendela yang muncul, cari SRGSToolbox dan pilih dari daftar.
  5. Lihat file SRGSColor.xml di folder StreamingAssets .
    1. Spesifikasi desain SRGS dapat ditemukan di situs web W3C di sini.

Dalam file SRGS kami, kami memiliki tiga jenis aturan:

  • Aturan yang memungkinkan Anda mengatakan satu warna dari daftar dua belas warna.
  • Tiga aturan yang mendengarkan kombinasi aturan warna dan salah satu dari tiga bentuk.
  • Aturan akar, colorChooser, yang mendengarkan kombinasi apa pun dari tiga aturan "warna + bentuk". Bentuknya dapat dikatakan dalam urutan apa pun dan dalam jumlah apa pun hanya dari satu hingga ketiganya. Ini adalah satu-satunya aturan yang didengarkan, karena ditentukan sebagai aturan akar di bagian atas file dalam tag tata> bahasa awal<.

Membangun dan Menyebarkan

  • Bangun kembali aplikasi di Unity, lalu buat dan sebarkan dari Visual Studio untuk merasakan aplikasi di HoloLens.
  • Tutup kotak pas dengan gerakan ketukan udara.
  • Tatap jetpack astronot dan lakukan gerakan ketukan udara.
  • Mulailah bicara. Grammar Recognizer akan menginterpretasikan ucapan Anda dan mengubah warna bentuk berdasarkan pengenalan. Contoh perintah adalah "lingkaran biru, persegi kuning".
  • Lakukan gerakan ketukan udara lain untuk menutup kotak alat.

Akhir

Selamat! Anda sekarang telah menyelesaikan MR Input 212: Voice.

  • Kau tahu perintah suara Dos and Don'ts.
  • Anda melihat bagaimana tipsalat digunakan untuk membuat pengguna mengetahui perintah suara.
  • Anda melihat beberapa jenis umpan balik yang digunakan untuk mengakui bahwa suara pengguna didengar.
  • Anda tahu cara beralih antara Pengenal Kata Kunci dan Dictation Recognizer, dan bagaimana kedua fitur ini memahami dan menginterpretasikan suara Anda.
  • Anda mempelajari cara menggunakan file SRGS dan Grammar Recognizer untuk pengenalan ucapan di aplikasi Anda.