Mulai cepat: Kenali niat dengan layanan Azure Cognitive Service untuk Ucapan dan LUIS

Penting

LUIS akan dihentikan pada 1 Oktober 2025. Mulai 1 April 2023 Anda tidak dapat membuat sumber daya LUIS baru. Sebaiknya migrasikan aplikasi LUIS Anda ke pemahaman bahasa percakapan untuk mendapatkan manfaat dari dukungan produk berkelanjutan dan kemampuan multibahasa.

Pemahaman Bahasa Percakapan (CLU) tersedia untuk C# dan C++ dengan Speech SDK versi 1.25 atau yang lebih baru. Lihat mulai cepat untuk mengenali niat dengan Speech SDK dan CLU.

Dokumentasi referensi | Paket (NuGet) | Sampel Tambahan pada GitHub

Dalam mulai cepat ini, Anda akan menggunakan layanan Speech SDK dan Language Understanding (LUIS) untuk mengenali maksud dari data audio yang diambil dari mikrofon. Secara khusus, Anda akan menggunakan Speech SDK untuk menangkap ucapan, dan domain bawaan dari LUIS untuk mengidentifikasi niat untuk otomatisasi rumah, seperti menyalakan dan mematikan lampu.

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Buat sumber daya Bahasa di portal Azure. Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi. Anda tidak memerlukan sumber daya Azure Cognitive Service untuk Ucapan kali ini.
  • Dapatkan kunci dan wilayah sumber daya Bahasa. Setelah sumber daya Bahasa Anda disebarkan, pilih Buka sumber daya untuk melihat dan mengelola kunci. Untuk informasi selengkapnya tentang sumber daya layanan Azure AI, lihat Mendapatkan kunci untuk sumber daya Anda.

Membuat aplikasi LUIS untuk pengenalan niat

Untuk menyelesaikan mulai cepat pengenalan niat, Anda harus membuat akun LUIS dan proyek menggunakan portal pratinjau LUIS. Panduan mulai cepat ini memerlukan langganan LUIS di wilayah tempat pengenalan yang dimaksud tersedia. Langganan layanan Speech tidak diperlukan.

Hal pertama yang perlu Anda lakukan adalah membuat akun dan aplikasi LUIS menggunakan portal pratinjau LUIS. Aplikasi LUIS yang Anda buat akan menggunakan domain bawaan untuk otomatisasi rumah, yang menyediakan niat, entitas, dan contoh ucapan. Setelah selesai, Anda harus memiliki titik akhir LUIS yang berjalan di cloud yang dapat Anda panggil menggunakan Speech SDK.

Ikuti petunjuk berikut untuk membuat aplikasi LUIS Anda:

Setelah selesai, Anda akan membutuhkan empat hal:

  • Menerbitkan kembali dengan Penyiapan ucapan yang diaktifkan
  • Kunci primer LUIS Anda
  • Lokasi LUIS Anda
  • ID Aplikasi LUIS Anda

Di sini Anda dapat menemukan informasi ini di portal pratinjau LUIS:

  1. Dari portal pratinjau LUIS, pilih aplikasi Anda lalu pilih tombol Terbitkan.

  2. Pilih slot Produksi, jika Anda menggunakan en-US, pilih pengaturan perubahan, dan atur Penyiapan ucapan ke posisi Aktif. Lalu pilih tombol Terbitkan.

    Penting

    Penyiapan ucapan sangat direkomendasikan karena akan meningkatkan akurasi pengenalan ucapan.

    Publish LUIS to endpoint

  3. Dari portal pratinjau LUIS, pilih Kelola, lalu pilih Sumber Daya Azure. Di halaman ini, Anda akan menemukan kunci dan lokasi LUIS (biasanya disebut sebagai wilayah)untuk sumber daya prediksi LUIS.

    LUIS key and location

  4. Setelah mendapatkan kunci dan lokasi, Anda memerlukan ID aplikasi. Pilih pengaturan. ID aplikasi tersedia di halaman ini.

    LUIS app ID

Membuka proyek Anda di Visual Studio

Selanjutnya, buka proyek Anda di Visual Studio.

  1. Meluncurkan Visual Studio 2019.
  2. Muat proyek Anda dan buka Program.cs.

Memulai dengan beberapa kode boilerplate

Mari menambahkan beberapa kode yang berfungsi sebagai kerangka untuk proyek. Catat bahwa Anda telah membuat metode asinkron bernama RecognizeIntentAsync().

using System;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Intent;

namespace helloworld
{
    class Program
    {
        public static async Task RecognizeIntentAsync()
        {
        }

        static async Task Main()
        {
            await RecognizeIntentAsync();
            Console.WriteLine("Please press <Return> to continue.");
            Console.ReadLine();
        }
    }
}

Membuat konfigurasi Ucapan

Sebelum dapat menginisialisasi objek IntentRecognizer, Anda perlu membuat konfigurasi yang menggunakan kunci dan lokasi untuk sumber daya prediksi LUIS Anda.

Penting

Kunci starter dan kunci penulisan Anda tidak akan berfungsi. Anda harus menggunakan kunci prediksi dan lokasi yang Anda buat sebelumnya. Untuk mengetahui informasi selengkapnya, lihat Membuat aplikasi LUIS untuk pengenalan niat.

Masukkan kode ini dalam metode RecognizeIntentAsync(). Pastikan Anda memperbarui nilai-nilai ini:

  • Ganti "YourLanguageUnderstandingSubscriptionKey" dengan kunci prediksi LUIS Anda.
  • Ganti "YourLanguageUnderstandingServiceRegion" dengan lokasi LUIS Anda. Gunakan Pengidentifikasi Wilayah dari wilayah.

Tip

Jika Anda memerlukan bantuan untuk menemukan nilai-nilai ini, lihat Membuat aplikasi LUIS untuk pengenalan niat.

Penting

Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.

var config = SpeechConfig.FromSubscription(
    "YourLanguageUnderstandingSubscriptionKey",
    "YourLanguageUnderstandingServiceRegion");

Sampel ini menggunakan metode FromSubscription() untuk membuat SpeechConfig. Untuk daftar lengkap metode yang tersedia, lihat Kelas SpeechConfig.

SDK Speech secara default akan mengenali menggunakan bahasa en-us, lihat Cara mengenali ucapan untuk mendapatkan informasi terkait pemilihan bahasa sumber.

Menginisialisasi IntentRecognizer

Sekarang, mari kita membuat sebuah IntentRecognizer. Objek ini dibuat di dalam pernyataan penggunaan untuk memastikan rilis yang tepat untuk sumber daya yang tidak terkelola. Masukkan kode ini dalam metode RecognizeIntentAsync(), tepat di bawah konfigurasi Ucapan Anda.

// Creates an intent recognizer using microphone as audio input.
using (var recognizer = new IntentRecognizer(config))
{
}

Menambahkan LanguageUnderstandingModel dan niat

Anda perlu mengaitkan LanguageUnderstandingModel dengan pengenal niat, dan menambahkan niat yang ingin Anda kenali. Kita akan menggunakan niat dari domain bawaan untuk otomatisasi rumah. Masukkan kode ini dalam pernyataan penggunaan dari bagian sebelumnya. Pastikan Anda mengganti "YourLanguageUnderstandingAppId" dengan ID aplikasi LUIS Anda.

Tip

Jika Anda memerlukan bantuan untuk menemukan nilai ini, lihat Membuat aplikasi LUIS untuk pengenalan niat.

// Creates a Language Understanding model using the app id, and adds specific intents from your model
var model = LanguageUnderstandingModel.FromAppId("YourLanguageUnderstandingAppId");
recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");

Contoh ini menggunakan fungsi AddIntent() untuk menambahkan niat satu per satu. Jika Anda ingin menambahkan semua niat dari model, gunakan AddAllIntents(model) dan lewati model.

Mengenali niat

Dari objek IntentRecognizer, Anda akan memanggil metode RecognizeOnceAsync(). Metode ini memungkinkan layanan Speech mengetahui bahwa Anda mengirim satu frasa untuk dikenali, dan begitu frasa telah teridentifikasi untuk berhenti mengenali ucapan.

Di dalam pernyataan penggunaan, tambahkan kode ini di bawah model Anda.

// Starts recognizing.
Console.WriteLine("Say something...");

// Starts intent recognition, and returns after a single utterance is recognized. The end of a
// single utterance is determined by listening for silence at the end or until a maximum of 15
// seconds of audio is processed.  The task returns the recognition text as result. 
// Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
// shot recognition like command or query. 
// For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
var result = await recognizer.RecognizeOnceAsync();

Menampilkan hasil pengenalan (atau kesalahan)

Saat hasil pengenalan ditampilkan oleh layanan Ucapan, Anda mungkin ingin melakukan sesuatu dengan hasil tersebut. Kita akan membuatnya tetap sederhana dan mencetak hasilnya ke konsol.

Di dalam pernyataan penggunaan, di bawah RecognizeOnceAsync(), tambahkan kode ini:

// Checks result.
switch (result.Reason)
{
    case ResultReason.RecognizedIntent:
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
        Console.WriteLine($"    Intent Id: {result.IntentId}.");
        var json = result.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult);
        Console.WriteLine($"    Language Understanding JSON: {json}.");
        break;
    case ResultReason.RecognizedSpeech:
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
        Console.WriteLine($"    Intent not recognized.");
        break;
    case ResultReason.NoMatch:
        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled:
        var cancellation = CancellationDetails.FromResult(result);
        Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");

        if (cancellation.Reason == CancellationReason.Error)
        {
            Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
            Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}");
            Console.WriteLine($"CANCELED: Did you update the subscription info?");
        }
        break;
}

Memeriksa kode Anda

Pada titik ini, kode Anda akan terlihat seperti ini:

Catatan

Kami telah menambahkan beberapa komentar ke versi ini.

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

// <skeleton_1>
using System;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Intent;

namespace helloworld
{
    class Program
    {
        public static async Task RecognizeIntentAsync()
        {
            // </skeleton_1>
            // Creates an instance of a speech config with specified subscription key
            // and service region. Note that in contrast to other services supported by
            // the Cognitive Services Speech SDK, the Language Understanding service
            // requires a specific subscription key from https://www.luis.ai/.
            // The Language Understanding service calls the required key 'endpoint key'.
            // Once you've obtained it, replace with below with your own Language Understanding subscription key
            // and service region (e.g., "westus").
            // The default language is "en-us".
            // <create_speech_configuration>
            var config = SpeechConfig.FromSubscription(
                "YourLanguageUnderstandingSubscriptionKey",
                "YourLanguageUnderstandingServiceRegion");
            // </create_speech_configuration>

            // <create_intent_recognizer_1>
            // Creates an intent recognizer using microphone as audio input.
            using (var recognizer = new IntentRecognizer(config))
            {
                // </create_intent_recognizer_1>

                // <add_intents>
                // Creates a Language Understanding model using the app id, and adds specific intents from your model
                var model = LanguageUnderstandingModel.FromAppId("YourLanguageUnderstandingAppId");
                recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
                recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
                recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");
                // </add_intents>

                // To add all of the possible intents from a LUIS model to the recognizer, uncomment the line below:
                // recognizer.AddAllIntents(model);

                // <recognize_intent>
                // Starts recognizing.
                Console.WriteLine("Say something...");

                // Starts intent recognition, and returns after a single utterance is recognized. The end of a
                // single utterance is determined by listening for silence at the end or until a maximum of 15
                // seconds of audio is processed.  The task returns the recognition text as result. 
                // Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
                // shot recognition like command or query. 
                // For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
                var result = await recognizer.RecognizeOnceAsync();
                // </recognize_intent>

                // <print_results>
                // Checks result.
                switch (result.Reason)
                {
                    case ResultReason.RecognizedIntent:
                        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
                        Console.WriteLine($"    Intent Id: {result.IntentId}.");
                        var json = result.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult);
                        Console.WriteLine($"    Language Understanding JSON: {json}.");
                        break;
                    case ResultReason.RecognizedSpeech:
                        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
                        Console.WriteLine($"    Intent not recognized.");
                        break;
                    case ResultReason.NoMatch:
                        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
                        break;
                    case ResultReason.Canceled:
                        var cancellation = CancellationDetails.FromResult(result);
                        Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");

                        if (cancellation.Reason == CancellationReason.Error)
                        {
                            Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
                            Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}");
                            Console.WriteLine($"CANCELED: Did you update the subscription info?");
                        }
                        break;
                }
                // </print_results>
            // <create_intent_recognizer_2>
            }
            // </create_intent_recognizer_2>
        // <skeleton_2>
        }

        static async Task Main()
        {
            await RecognizeIntentAsync();
            Console.WriteLine("Please press <Return> to continue.");
            Console.ReadLine();
        }
    }
}
// </skeleton_2>

Membuat dan menjalankan aplikasi Anda

Sekarang, Anda siap untuk membuat aplikasi Anda dan menguji pengenalan ucapan kami menggunakan layanan Ucapan.

  1. Mengompilasi kode - Dari bilah menu Visual Studio, pilih Buat>Buat Solusi.
  2. Memulai aplikasi Anda - Dari bilah menu, pilih Debug>Mulai Menelusuri Kesalahan atau tekan F5.
  3. Memulai pengenalan - Ini akan meminta Anda untuk mengucapkan frasa dalam bahasa Inggris. Ucapan Anda dikirim ke layanan Ucapan, ditranskripsikan sebagai teks, dan dirender di konsol.

Dokumentasi referensi | Paket (NuGet) | Sampel Tambahan pada GitHub

Dalam mulai cepat ini, Anda akan menggunakan layanan Speech SDK dan Language Understanding (LUIS) untuk mengenali maksud dari data audio yang diambil dari mikrofon. Secara khusus, Anda akan menggunakan Speech SDK untuk menangkap ucapan, dan domain bawaan dari LUIS untuk mengidentifikasi niat untuk otomatisasi rumah, seperti menyalakan dan mematikan lampu.

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Buat sumber daya Bahasa di portal Azure. Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi. Anda tidak memerlukan sumber daya Azure Cognitive Service untuk Ucapan kali ini.
  • Dapatkan kunci dan wilayah sumber daya Bahasa. Setelah sumber daya Bahasa Anda disebarkan, pilih Buka sumber daya untuk melihat dan mengelola kunci. Untuk informasi selengkapnya tentang sumber daya layanan Azure AI, lihat Mendapatkan kunci untuk sumber daya Anda.

Membuat aplikasi LUIS untuk pengenalan niat

Untuk menyelesaikan mulai cepat pengenalan niat, Anda harus membuat akun LUIS dan proyek menggunakan portal pratinjau LUIS. Panduan mulai cepat ini memerlukan langganan LUIS di wilayah tempat pengenalan yang dimaksud tersedia. Langganan layanan Speech tidak diperlukan.

Hal pertama yang perlu Anda lakukan adalah membuat akun dan aplikasi LUIS menggunakan portal pratinjau LUIS. Aplikasi LUIS yang Anda buat akan menggunakan domain bawaan untuk otomatisasi rumah, yang menyediakan niat, entitas, dan contoh ucapan. Setelah selesai, Anda harus memiliki titik akhir LUIS yang berjalan di cloud yang dapat Anda panggil menggunakan Speech SDK.

Ikuti petunjuk berikut untuk membuat aplikasi LUIS Anda:

Setelah selesai, Anda akan membutuhkan empat hal:

  • Menerbitkan kembali dengan Penyiapan ucapan yang diaktifkan
  • Kunci primer LUIS Anda
  • Lokasi LUIS Anda
  • ID Aplikasi LUIS Anda

Di sini Anda dapat menemukan informasi ini di portal pratinjau LUIS:

  1. Dari portal pratinjau LUIS, pilih aplikasi Anda lalu pilih tombol Terbitkan.

  2. Pilih slot Produksi, jika Anda menggunakan en-US, pilih pengaturan perubahan, dan atur Penyiapan ucapan ke posisi Aktif. Lalu pilih tombol Terbitkan.

    Penting

    Penyiapan ucapan sangat direkomendasikan karena akan meningkatkan akurasi pengenalan ucapan.

    Publish LUIS to endpoint

  3. Dari portal pratinjau LUIS, pilih Kelola, lalu pilih Sumber Daya Azure. Di halaman ini, Anda akan menemukan kunci dan lokasi LUIS (biasanya disebut sebagai wilayah)untuk sumber daya prediksi LUIS.

    LUIS key and location

  4. Setelah mendapatkan kunci dan lokasi, Anda memerlukan ID aplikasi. Pilih pengaturan. ID aplikasi tersedia di halaman ini.

    LUIS app ID

Membuka proyek Anda di Visual Studio

Selanjutnya, buka proyek Anda di Visual Studio.

  1. Meluncurkan Visual Studio 2019.
  2. Muat proyek Anda dan buka helloworld.cpp.

Memulai dengan beberapa kode boilerplate

Mari menambahkan beberapa kode yang berfungsi sebagai kerangka untuk proyek. Catat bahwa Anda telah membuat metode asinkron bernama recognizeIntent().

#include "stdafx.h"
#include <iostream>
#include <speechapi_cxx.h>

using namespace std;
using namespace Microsoft::CognitiveServices::Speech;
using namespace Microsoft::CognitiveServices::Speech::Intent;

void recognizeIntent()
{
}

int wmain()
{
    try
    {
        recognizeIntent();
    }
    catch (exception e)
    {
        cout << e.what();
    }
    cout << "Please press a key to continue.\n";
    cin.get();
    return 0;
}

Membuat konfigurasi Ucapan

Sebelum dapat menginisialisasi objek IntentRecognizer, Anda perlu membuat konfigurasi yang menggunakan kunci dan lokasi untuk sumber daya prediksi LUIS Anda.

Penting

Kunci starter dan kunci penulisan Anda tidak akan berfungsi. Anda harus menggunakan kunci prediksi dan lokasi yang Anda buat sebelumnya. Untuk mengetahui informasi selengkapnya, lihat Membuat aplikasi LUIS untuk pengenalan niat.

Masukkan kode ini dalam metode recognizeIntent(). Pastikan Anda memperbarui nilai-nilai ini:

  • Ganti "YourLanguageUnderstandingSubscriptionKey" dengan kunci prediksi LUIS Anda.
  • Ganti "YourLanguageUnderstandingServiceRegion" dengan lokasi LUIS Anda. Gunakan Pengidentifikasi Wilayah dari wilayah.

Tip

Jika Anda memerlukan bantuan untuk menemukan nilai-nilai ini, lihat Membuat aplikasi LUIS untuk pengenalan niat.

Penting

Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.

auto config = SpeechConfig::FromSubscription(
    "YourLanguageUnderstandingSubscriptionKey",
    "YourLanguageUnderstandingServiceRegion");

Sampel ini menggunakan metode FromSubscription() untuk membuat SpeechConfig. Untuk daftar lengkap metode yang tersedia, lihat Kelas SpeechConfig.

SDK Speech secara default akan mengenali menggunakan bahasa en-us, lihat Cara mengenali ucapan untuk mendapatkan informasi terkait pemilihan bahasa sumber.

Menginisialisasi IntentRecognizer

Sekarang, mari kita membuat sebuah IntentRecognizer. Masukkan kode ini dalam metode recognizeIntent(), tepat di bawah konfigurasi Ucapan Anda.

// Creates an intent recognizer using microphone as audio input.
auto recognizer = IntentRecognizer::FromConfig(config);

Menambahkan LanguageUnderstandingModel dan niat

Anda perlu mengaitkan LanguageUnderstandingModel dengan pengenal niat, dan menambahkan niat yang ingin Anda kenali. Kita akan menggunakan niat dari domain bawaan untuk otomatisasi rumah.

Masukkan kode ini di bawah IntentRecognizer. Pastikan Anda mengganti "YourLanguageUnderstandingAppId" dengan ID aplikasi LUIS Anda.

Tip

Jika Anda memerlukan bantuan untuk menemukan nilai ini, lihat Membuat aplikasi LUIS untuk pengenalan niat.

// Creates a Language Understanding model using the app id, and adds specific intents from your model
auto model = LanguageUnderstandingModel::FromAppId("YourLanguageUnderstandingAppId");
recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");

Contoh ini menggunakan fungsi AddIntent() untuk menambahkan niat satu per satu. Jika Anda ingin menambahkan semua niat dari model, gunakan AddAllIntents(model) dan lewati model.

Mengenali niat

Dari objek IntentRecognizer, Anda akan memanggil metode RecognizeOnceAsync(). Metode ini memungkinkan layanan Speech mengetahui bahwa Anda mengirim satu frasa untuk dikenali, dan begitu frasa telah teridentifikasi untuk berhenti mengenali ucapan. Untuk mempermudah, mari menunggu ke depannya kembali selesai.

Masukkan kode ini di bawah model Anda:

cout << "Say something...\n";

// Starts intent recognition, and returns after a single utterance is recognized. The end of a
// single utterance is determined by listening for silence at the end or until a maximum of 15
// seconds of audio is processed.  The task returns the recognition text as result. 
// Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
// shot recognition like command or query. 
// For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
auto result = recognizer->RecognizeOnceAsync().get();

Menampilkan hasil pengenalan (atau kesalahan)

Saat hasil pengenalan ditampilkan oleh layanan Ucapan, Anda mungkin ingin melakukan sesuatu dengan hasil tersebut. Kami akan tetap menyederhanakanya dan mencetak hasilnya ke konsol.

Masukkan kode ini di bawah auto result = recognizer->RecognizeOnceAsync().get();:

// Checks result.
if (result->Reason == ResultReason::RecognizedIntent)
{
    cout << "RECOGNIZED: Text=" << result->Text << std::endl;
    cout << "  Intent Id: " << result->IntentId << std::endl;
    cout << "  Intent Service JSON: " << result->Properties.GetProperty(PropertyId::LanguageUnderstandingServiceResponse_JsonResult) << std::endl;
}
else if (result->Reason == ResultReason::RecognizedSpeech)
{
    cout << "RECOGNIZED: Text=" << result->Text << " (intent could not be recognized)" << std::endl;
}
else if (result->Reason == ResultReason::NoMatch)
{
    cout << "NOMATCH: Speech could not be recognized." << std::endl;
}
else if (result->Reason == ResultReason::Canceled)
{
    auto cancellation = CancellationDetails::FromResult(result);
    cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;

    if (cancellation->Reason == CancellationReason::Error)
    {
        cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
        cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
        cout << "CANCELED: Did you update the subscription info?" << std::endl;
    }
}

Memeriksa kode Anda

Pada titik ini, kode Anda akan terlihat seperti ini:

Catatan

Kami telah menambahkan beberapa komentar ke versi ini.

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

// <skeleton_1>
#include "stdafx.h"
#include <iostream>
#include <speechapi_cxx.h>

using namespace std;
using namespace Microsoft::CognitiveServices::Speech;
using namespace Microsoft::CognitiveServices::Speech::Intent;

void recognizeIntent()
{
    // </skeleton_1>
    // Creates an instance of a speech config with specified subscription key
    // and service region. Note that in contrast to other services supported by
    // the Cognitive Services Speech SDK, the Language Understanding service
    // requires a specific subscription key from https://www.luis.ai/.
    // The Language Understanding service calls the required key 'endpoint key'.
    // Once you've obtained it, replace with below with your own Language Understanding subscription key
    // and service region (e.g., "westus").
    // The default recognition language is "en-us".
    // <create_speech_configuration>
    auto config = SpeechConfig::FromSubscription(
        "YourLanguageUnderstandingSubscriptionKey",
        "YourLanguageUnderstandingServiceRegion");
    // </create_speech_configuration>

    // <create_intent_recognizer>
    // Creates an intent recognizer using microphone as audio input.
    auto recognizer = IntentRecognizer::FromConfig(config);
    // </create_intent_recognizer>

    // <add_intents>
    // Creates a Language Understanding model using the app id, and adds specific intents from your model
    auto model = LanguageUnderstandingModel::FromAppId("YourLanguageUnderstandingAppId");
    recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
    recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
    recognizer->AddIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");
    // </add_intents>

    // To add all of the possible intents from a LUIS model to the recognizer, uncomment the line below:
    // recognizer->AddAllIntents(model);

    // <recognize_intent>
    cout << "Say something...\n";

    // Starts intent recognition, and returns after a single utterance is recognized. The end of a
    // single utterance is determined by listening for silence at the end or until a maximum of 15
    // seconds of audio is processed.  The task returns the recognition text as result. 
    // Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
    // shot recognition like command or query. 
    // For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
    auto result = recognizer->RecognizeOnceAsync().get();
    // </recognize_intent>

    // <print_results>
    // Checks result.
    if (result->Reason == ResultReason::RecognizedIntent)
    {
        cout << "RECOGNIZED: Text=" << result->Text << std::endl;
        cout << "  Intent Id: " << result->IntentId << std::endl;
        cout << "  Intent Service JSON: " << result->Properties.GetProperty(PropertyId::LanguageUnderstandingServiceResponse_JsonResult) << std::endl;
    }
    else if (result->Reason == ResultReason::RecognizedSpeech)
    {
        cout << "RECOGNIZED: Text=" << result->Text << " (intent could not be recognized)" << std::endl;
    }
    else if (result->Reason == ResultReason::NoMatch)
    {
        cout << "NOMATCH: Speech could not be recognized." << std::endl;
    }
    else if (result->Reason == ResultReason::Canceled)
    {
        auto cancellation = CancellationDetails::FromResult(result);
        cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;

        if (cancellation->Reason == CancellationReason::Error)
        {
            cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
            cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
            cout << "CANCELED: Did you update the subscription info?" << std::endl;
        }
    }
    // </print_results>
    // <skeleton_2>
}

int wmain()
{
    try
    {
        recognizeIntent();
    }
    catch (exception e)
    {
        cout << e.what();
    }
    cout << "Please press a key to continue.\n";
    cin.get();
    return 0;
}
// </skeleton_2>

Membuat dan menjalankan aplikasi Anda

Sekarang, Anda siap untuk membuat aplikasi Anda dan menguji pengenalan ucapan kami menggunakan layanan Ucapan.

  1. Mengompilasi kode - Dari bilah menu Visual Studio, pilih Buat>Buat Solusi.
  2. Memulai aplikasi Anda - Dari bilah menu, pilih Debug>Mulai Menelusuri Kesalahan atau tekan F5.
  3. Memulai pengenalan - Ini akan meminta Anda untuk mengucapkan frasa dalam bahasa Inggris. Ucapan Anda dikirim ke layanan Ucapan, ditranskripsikan sebagai teks, dan dirender di konsol.

Dokumentasi referensi | Sampel Tambahan pada GitHub

Dalam mulai cepat ini, Anda akan menggunakan layanan Speech SDK dan Language Understanding (LUIS) untuk mengenali maksud dari data audio yang diambil dari mikrofon. Secara khusus, Anda akan menggunakan Speech SDK untuk menangkap ucapan, dan domain bawaan dari LUIS untuk mengidentifikasi niat untuk otomatisasi rumah, seperti menyalakan dan mematikan lampu.

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Buat sumber daya Bahasa di portal Azure. Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi. Anda tidak memerlukan sumber daya Azure Cognitive Service untuk Ucapan kali ini.
  • Dapatkan kunci dan wilayah sumber daya Bahasa. Setelah sumber daya Bahasa Anda disebarkan, pilih Buka sumber daya untuk melihat dan mengelola kunci. Untuk informasi selengkapnya tentang sumber daya layanan Azure AI, lihat Mendapatkan kunci untuk sumber daya Anda.

Anda juga perlu memasang Speech SDK untuk lingkungan pengembangan Anda dan membuat proyek sampel kosong.

Membuat aplikasi LUIS untuk pengenalan niat

Untuk menyelesaikan mulai cepat pengenalan niat, Anda harus membuat akun LUIS dan proyek menggunakan portal pratinjau LUIS. Panduan mulai cepat ini memerlukan langganan LUIS di wilayah tempat pengenalan yang dimaksud tersedia. Langganan layanan Speech tidak diperlukan.

Hal pertama yang perlu Anda lakukan adalah membuat akun dan aplikasi LUIS menggunakan portal pratinjau LUIS. Aplikasi LUIS yang Anda buat akan menggunakan domain bawaan untuk otomatisasi rumah, yang menyediakan niat, entitas, dan contoh ucapan. Setelah selesai, Anda harus memiliki titik akhir LUIS yang berjalan di cloud yang dapat Anda panggil menggunakan Speech SDK.

Ikuti petunjuk berikut untuk membuat aplikasi LUIS Anda:

Setelah selesai, Anda akan membutuhkan empat hal:

  • Menerbitkan kembali dengan Penyiapan ucapan yang diaktifkan
  • Kunci primer LUIS Anda
  • Lokasi LUIS Anda
  • ID Aplikasi LUIS Anda

Di sini Anda dapat menemukan informasi ini di portal pratinjau LUIS:

  1. Dari portal pratinjau LUIS, pilih aplikasi Anda lalu pilih tombol Terbitkan.

  2. Pilih slot Produksi, jika Anda menggunakan en-US, pilih pengaturan perubahan, dan atur Penyiapan ucapan ke posisi Aktif. Lalu pilih tombol Terbitkan.

    Penting

    Penyiapan ucapan sangat direkomendasikan karena akan meningkatkan akurasi pengenalan ucapan.

    Publish LUIS to endpoint

  3. Dari portal pratinjau LUIS, pilih Kelola, lalu pilih Sumber Daya Azure. Di halaman ini, Anda akan menemukan kunci dan lokasi LUIS (biasanya disebut sebagai wilayah)untuk sumber daya prediksi LUIS.

    LUIS key and location

  4. Setelah mendapatkan kunci dan lokasi, Anda memerlukan ID aplikasi. Pilih pengaturan. ID aplikasi tersedia di halaman ini.

    LUIS app ID

Buka proyek Anda

  1. Buka IDE pilihan Anda.
  2. Muat proyek Anda dan buka Main.java.

Memulai dengan beberapa kode boilerplate

Mari menambahkan beberapa kode yang berfungsi sebagai kerangka untuk proyek.

package speechsdk.quickstart;

import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.intent.*;

/**
 * Quickstart: recognize speech using the Speech SDK for Java.
 */
public class Main {

    /**
     * @param args Arguments are ignored in this sample.
     */
    public static void main(String[] args) {
        } catch (Exception ex) {
            System.out.println("Unexpected exception: " + ex.getMessage());

            assert(false);
            System.exit(1);
        }
    }
}

Membuat konfigurasi Ucapan

Sebelum dapat menginisialisasi objek IntentRecognizer, Anda perlu membuat konfigurasi yang menggunakan kunci dan lokasi untuk sumber daya prediksi LUIS Anda.

Masukkan kode ini di blok coba/tangkap di main(). Pastikan Anda memperbarui nilai-nilai ini:

  • Ganti "YourLanguageUnderstandingSubscriptionKey" dengan kunci prediksi LUIS Anda.
  • Ganti "YourLanguageUnderstandingServiceRegion" dengan lokasi LUIS Anda. Menggunakan Pengidentifikasi Wilayah dari wilayah

Tip

Jika Anda memerlukan bantuan untuk menemukan nilai-nilai ini, lihat Membuat aplikasi LUIS untuk pengenalan niat.

Penting

Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.

// Replace below with with specified subscription key (called 'endpoint key' by the Language Understanding service)
String languageUnderstandingSubscriptionKey = "YourLanguageUnderstandingSubscriptionKey";
// Replace below with your own service region (e.g., "westus").
String languageUnderstandingServiceRegion = "YourLanguageUnderstandingServiceRegion";

// Creates an instance of intent recognizer with a given speech configuration.
// Recognizer is created with the default microphone audio input and default language "en-us".
try (SpeechConfig config = SpeechConfig.fromSubscription(languageUnderstandingSubscriptionKey, languageUnderstandingServiceRegion);

Sampel ini menggunakan metode FromSubscription() untuk membuat SpeechConfig. Untuk daftar lengkap metode yang tersedia, lihat Kelas SpeechConfig.

SDK Speech secara default akan mengenali menggunakan bahasa en-us, lihat Cara mengenali ucapan untuk mendapatkan informasi terkait pemilihan bahasa sumber.

Menginisialisasi IntentRecognizer

Sekarang, mari kita membuat sebuah IntentRecognizer. Masukkan kode ini tepat di bawah konfigurasi Ucapan Anda.

IntentRecognizer recognizer = new IntentRecognizer(config)) {

Menambahkan LanguageUnderstandingModel dan niat

Anda perlu mengaitkan LanguageUnderstandingModel dengan pengenal niat, dan menambahkan niat yang ingin Anda kenali. Kita akan menggunakan niat dari domain bawaan untuk otomatisasi rumah.

Masukkan kode ini di bawah IntentRecognizer. Pastikan Anda mengganti "YourLanguageUnderstandingAppId" dengan ID aplikasi LUIS Anda.

Tip

Jika Anda memerlukan bantuan untuk menemukan nilai ini, lihat Membuat aplikasi LUIS untuk pengenalan niat.

// Creates a language understanding model using the app id, and adds specific intents from your model
LanguageUnderstandingModel model = LanguageUnderstandingModel.fromAppId("YourLanguageUnderstandingAppId");
recognizer.addIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
recognizer.addIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
recognizer.addIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");

Contoh ini menggunakan fungsi addIntent() untuk menambahkan niat satu per satu. Jika Anda ingin menambahkan semua niat dari model, gunakan addAllIntents(model) dan lewati model.

Mengenali niat

Dari objek IntentRecognizer, Anda akan memanggil metode recognizeOnceAsync(). Metode ini memungkinkan layanan Speech mengetahui bahwa Anda mengirim satu frasa untuk dikenali, dan begitu frasa telah teridentifikasi untuk berhenti mengenali ucapan.

Masukkan kode ini di bawah model Anda:

System.out.println("Say something...");

// Starts recognition. It returns when the first utterance has been recognized.
IntentRecognitionResult result = recognizer.recognizeOnceAsync().get();

Menampilkan hasil pengenalan (atau kesalahan)

Saat hasil pengenalan ditampilkan oleh layanan Ucapan, Anda mungkin ingin melakukan sesuatu dengan hasil tersebut. Kami akan tetap menyederhanakanya dan mencetak hasilnya ke konsol.

Masukkan kode ini di bawah panggilan Anda ke recognizeOnceAsync().

// Checks result.
if (result.getReason() == ResultReason.RecognizedIntent) {
    System.out.println("RECOGNIZED: Text=" + result.getText());
    System.out.println("    Intent Id: " + result.getIntentId());
    System.out.println("    Intent Service JSON: " + result.getProperties().getProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult));
}
else if (result.getReason() == ResultReason.RecognizedSpeech) {
    System.out.println("RECOGNIZED: Text=" + result.getText());
    System.out.println("    Intent not recognized.");
}
else if (result.getReason() == ResultReason.NoMatch) {
    System.out.println("NOMATCH: Speech could not be recognized.");
}
else if (result.getReason() == ResultReason.Canceled) {
    CancellationDetails cancellation = CancellationDetails.fromResult(result);
    System.out.println("CANCELED: Reason=" + cancellation.getReason());

    if (cancellation.getReason() == CancellationReason.Error) {
        System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode());
        System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails());
        System.out.println("CANCELED: Did you update the subscription info?");
    }
}

Memeriksa kode Anda

Pada titik ini, kode Anda akan terlihat seperti ini:

Catatan

Kami telah menambahkan beberapa komentar ke versi ini.

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

// <skeleton_1>
package speechsdk.quickstart;

import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.intent.*;

/**
 * Quickstart: recognize speech using the Speech SDK for Java.
 */
public class Main {

    /**
     * @param args Arguments are ignored in this sample.
     */
    public static void main(String[] args) {
    // </skeleton_1>
        // <create_speech_configuration>
        // Replace below with with specified subscription key (called 'endpoint key' by the Language Understanding service)
        String languageUnderstandingSubscriptionKey = "YourLanguageUnderstandingSubscriptionKey";
        // Replace below with your own service region (e.g., "westus").
        String languageUnderstandingServiceRegion = "YourLanguageUnderstandingServiceRegion";

        // Creates an instance of intent recognizer with a given speech configuration.
        // Recognizer is created with the default microphone audio input and default language "en-us".
        try (SpeechConfig config = SpeechConfig.fromSubscription(languageUnderstandingSubscriptionKey, languageUnderstandingServiceRegion);
        // </create_speech_configuration>
            // <create_intent_recognizer>
            IntentRecognizer recognizer = new IntentRecognizer(config)) {
            // </create_intent_recognizer>

            // <add_intents>
            // Creates a language understanding model using the app id, and adds specific intents from your model
            LanguageUnderstandingModel model = LanguageUnderstandingModel.fromAppId("YourLanguageUnderstandingAppId");
            recognizer.addIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
            recognizer.addIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
            recognizer.addIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");
            // </add_intents>

            // To add all of the possible intents from a LUIS model to the recognizer, uncomment the line below:
            // recognizer.addAllIntents(model);

            // <recognize_intent>
            System.out.println("Say something...");

            // Starts recognition. It returns when the first utterance has been recognized.
            IntentRecognitionResult result = recognizer.recognizeOnceAsync().get();
            // </recognize_intent>

            // <print_result>
            // Checks result.
            if (result.getReason() == ResultReason.RecognizedIntent) {
                System.out.println("RECOGNIZED: Text=" + result.getText());
                System.out.println("    Intent Id: " + result.getIntentId());
                System.out.println("    Intent Service JSON: " + result.getProperties().getProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult));
            }
            else if (result.getReason() == ResultReason.RecognizedSpeech) {
                System.out.println("RECOGNIZED: Text=" + result.getText());
                System.out.println("    Intent not recognized.");
            }
            else if (result.getReason() == ResultReason.NoMatch) {
                System.out.println("NOMATCH: Speech could not be recognized.");
            }
            else if (result.getReason() == ResultReason.Canceled) {
                CancellationDetails cancellation = CancellationDetails.fromResult(result);
                System.out.println("CANCELED: Reason=" + cancellation.getReason());

                if (cancellation.getReason() == CancellationReason.Error) {
                    System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode());
                    System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails());
                    System.out.println("CANCELED: Did you update the subscription info?");
                }
            }
            // </print_result>
        // <skeleton_2>
        } catch (Exception ex) {
            System.out.println("Unexpected exception: " + ex.getMessage());

            assert(false);
            System.exit(1);
        }
    }
}
// </skeleton_2>

Membuat dan menjalankan aplikasi Anda

Tekan F11, atau pilih Jalankan>Debug. Input ucapan selama 15 detik berikutnya dari mikrofon Anda akan dikenali dan dicatat di jendela konsol.

Dokumentasi referensi | Paket (npm) | Sampel Tambahan pada kode sumber GitHub | Library

Dalam mulai cepat ini, Anda akan menggunakan layanan Speech SDK dan Language Understanding (LUIS) untuk mengenali maksud dari data audio yang diambil dari mikrofon. Secara khusus, Anda akan menggunakan Speech SDK untuk menangkap ucapan, dan domain bawaan dari LUIS untuk mengidentifikasi niat untuk otomatisasi rumah, seperti menyalakan dan mematikan lampu.

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Buat sumber daya Bahasa di portal Azure. Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi. Anda tidak memerlukan sumber daya Azure Cognitive Service untuk Ucapan kali ini.
  • Dapatkan kunci dan wilayah sumber daya Bahasa. Setelah sumber daya Bahasa Anda disebarkan, pilih Buka sumber daya untuk melihat dan mengelola kunci. Untuk informasi selengkapnya tentang sumber daya layanan Azure AI, lihat Mendapatkan kunci untuk sumber daya Anda.

Anda juga perlu memasang Speech SDK untuk lingkungan pengembangan Anda dan membuat proyek sampel kosong.

Membuat aplikasi LUIS untuk pengenalan niat

Untuk menyelesaikan mulai cepat pengenalan niat, Anda harus membuat akun LUIS dan proyek menggunakan portal pratinjau LUIS. Panduan mulai cepat ini memerlukan langganan LUIS di wilayah tempat pengenalan yang dimaksud tersedia. Langganan layanan Speech tidak diperlukan.

Hal pertama yang perlu Anda lakukan adalah membuat akun dan aplikasi LUIS menggunakan portal pratinjau LUIS. Aplikasi LUIS yang Anda buat akan menggunakan domain bawaan untuk otomatisasi rumah, yang menyediakan niat, entitas, dan contoh ucapan. Setelah selesai, Anda harus memiliki titik akhir LUIS yang berjalan di cloud yang dapat Anda panggil menggunakan Speech SDK.

Ikuti petunjuk berikut untuk membuat aplikasi LUIS Anda:

Setelah selesai, Anda akan membutuhkan empat hal:

  • Menerbitkan kembali dengan Penyiapan ucapan yang diaktifkan
  • Kunci primer LUIS Anda
  • Lokasi LUIS Anda
  • ID Aplikasi LUIS Anda

Di sini Anda dapat menemukan informasi ini di portal pratinjau LUIS:

  1. Dari portal pratinjau LUIS, pilih aplikasi Anda lalu pilih tombol Terbitkan.

  2. Pilih slot Produksi, jika Anda menggunakan en-US, pilih pengaturan perubahan, dan atur Penyiapan ucapan ke posisi Aktif. Lalu pilih tombol Terbitkan.

    Penting

    Penyiapan ucapan sangat direkomendasikan karena akan meningkatkan akurasi pengenalan ucapan.

    Publish LUIS to endpoint

  3. Dari portal pratinjau LUIS, pilih Kelola, lalu pilih Sumber Daya Azure. Di halaman ini, Anda akan menemukan kunci dan lokasi LUIS (biasanya disebut sebagai wilayah)untuk sumber daya prediksi LUIS.

    LUIS key and location

  4. Setelah mendapatkan kunci dan lokasi, Anda memerlukan ID aplikasi. Pilih pengaturan. ID aplikasi tersedia di halaman ini.

    LUIS app ID

Memulai dengan beberapa kode boilerplate

Mari menambahkan beberapa kode yang berfungsi sebagai kerangka untuk proyek.

    <!DOCTYPE html>
    <html>
    <head>
    <title>Microsoft Azure AI Speech SDK JavaScript Quickstart</title>
    <meta charset="utf-8" />
    </head>
    <body style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif; font-size:13px;">
    </body>
    </html>

Menambahkan Elemen Antarmuka Pengguna

Sekarang, kami akan menambahkan beberapa antarmuka pengguna dasar untuk kotak input, mereferensikan JavaScript Speech SDK, dan mengambil token otorisasi jika tersedia.

Penting

Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.

<body style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif; font-size:13px;">
  <div id="content" style="display:none">
    <table width="100%">
      <tr>
        <td></td>
        <td><h1 style="font-weight:500;">Microsoft Azure AI Speech SDK JavaScript Quickstart</h1></td>
      </tr>
      <tr>
        <td align="right"><a href="https://learn.microsoft.com/azure/ai-services/speech-service/overview" target="_blank">Subscription</a>:</td>
        <td><input id="subscriptionKey" type="text" size="40" value="subscription"></td>
      </tr>
      <tr>
        <td align="right">Region</td>
        <td><input id="serviceRegion" type="text" size="40" value="YourServiceRegion"></td>
      </tr>
      <tr>
        <td align="right">Application ID:</td>
        <td><input id="appId" type="text" size="60" value="YOUR_LANGUAGE_UNDERSTANDING_APP_ID"></td>
      </tr>
      <tr>
        <td></td>
        <td><button id="startIntentRecognizeAsyncButton">Start Intent Recognition</button></td>
      </tr>
      <tr>
        <td align="right" valign="top">Input Text</td>
        <td><textarea id="phraseDiv" style="display: inline-block;width:500px;height:200px"></textarea></td>
      </tr>
      <tr>
        <td align="right" valign="top">Result</td>
        <td><textarea id="statusDiv" style="display: inline-block;width:500px;height:100px"></textarea></td>
      </tr>
    </table>
  </div>

  <script src="microsoft.cognitiveservices.speech.sdk.bundle.js"></script>

  <script>
  // Note: Replace the URL with a valid endpoint to retrieve
  //       authorization tokens for your subscription.
  var authorizationEndpoint = "token.php";

  function RequestAuthorizationToken() {
    if (authorizationEndpoint) {
      var a = new XMLHttpRequest();
      a.open("GET", authorizationEndpoint);
      a.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      a.send("");
      a.onload = function() {
				var token = JSON.parse(atob(this.responseText.split(".")[1]));
				serviceRegion.value = token.region;
				authorizationToken = this.responseText;
				subscriptionKey.disabled = true;
				subscriptionKey.value = "using authorization token (hit F5 to refresh)";
				console.log("Got an authorization token: " + token);
      }
    }
  }
  </script>

  <script>
    // status fields and start button in UI
    var phraseDiv;
    var statusDiv;
    var startIntentRecognizeAsyncButton;

    // subscription key, region, and appId for LUIS services.
    var subscriptionKey, serviceRegion, appId;
    var authorizationToken;
    var SpeechSDK;
    var recognizer;

    document.addEventListener("DOMContentLoaded", function () {
      startIntentRecognizeAsyncButton = document.getElementById("startIntentRecognizeAsyncButton");
      subscriptionKey = document.getElementById("subscriptionKey");
      serviceRegion = document.getElementById("serviceRegion");
      appId = document.getElementById("appId");
      phraseDiv = document.getElementById("phraseDiv");
      statusDiv = document.getElementById("statusDiv");

      startIntentRecognizeAsyncButton.addEventListener("click", function () {
        startIntentRecognizeAsyncButton.disabled = true;
        phraseDiv.innerHTML = "";
        statusDiv.innerHTML = "";
      });

      if (!!window.SpeechSDK) {
        SpeechSDK = window.SpeechSDK;
        startIntentRecognizeAsyncButton.disabled = false;

        document.getElementById('content').style.display = 'block';
        document.getElementById('warning').style.display = 'none';

        // in case we have a function for getting an authorization token, call it.
        if (typeof RequestAuthorizationToken === "function") {
          RequestAuthorizationToken();
        }
      }
    });
  </script>

Membuat konfigurasi Ucapan

Sebelum dapat menginisialisasi objek SpeechRecognizer, Anda perlu membuat konfigurasi yang menggunakan kunci langganan dan wilayah langganan Anda. Masukkan kode ini dalam metode startRecognizeOnceAsyncButton.addEventListener().

Catatan

SDK Speech secara default akan mengenali menggunakan bahasa en-us, lihat Cara mengenali ucapan untuk mendapatkan informasi terkait pemilihan bahasa sumber.

        // if we got an authorization token, use the token. Otherwise use the provided subscription key
        var speechConfig;
        if (authorizationToken) {
          speechConfig = SpeechSDK.SpeechConfig.fromAuthorizationToken(authorizationToken, serviceRegion.value);
        } else {
          if (subscriptionKey.value === "" || subscriptionKey.value === "subscription") {
            alert("Please enter your Microsoft Azure AI Speech subscription key!");
            return;
          }
          startIntentRecognizeAsyncButton.disabled = false;
          speechConfig = SpeechSDK.SpeechConfig.fromSubscription(subscriptionKey.value, serviceRegion.value);
        }

        speechConfig.speechRecognitionLanguage = "en-US";

Membuat konfigurasi Audio

Sekarang, Anda perlu membuat objek AudioConfig yang menunjuk ke perangkat input Anda. Masukkan kode ini dalam metode startIntentRecognizeAsyncButton.addEventListener(), tepat di bawah konfigurasi Ucapan Anda.

        var audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();

Menginisialisasi IntentRecognizer

Sekarang, mari membuat objek IntentRecognizer menggunakan SpeechConfig dan AudioConfig yang dibuat sebelumnya. Masukkan kode ini dalam metode startIntentRecognizeAsyncButton.addEventListener().

        recognizer = new SpeechSDK.IntentRecognizer(speechConfig, audioConfig);

Menambahkan LanguageUnderstandingModel dan niat

Anda perlu mengaitkan LanguageUnderstandingModel dengan pengenal niat, dan menambahkan niat yang ingin Anda kenali. Kita akan menggunakan niat dari domain bawaan untuk otomatisasi rumah.

Masukkan kode ini di bawah IntentRecognizer. Pastikan Anda mengganti "YourLanguageUnderstandingAppId" dengan ID aplikasi LUIS Anda.

        if (appId.value !== "" && appId.value !== "YOUR_LANGUAGE_UNDERSTANDING_APP_ID") {
          var lm = SpeechSDK.LanguageUnderstandingModel.fromAppId(appId.value);

          recognizer.addAllIntents(lm);
        }

Catatan

SDK Ucapan hanya mendukung titik akhir LUIS v2.0. Anda harus mengubah secara manual URL titik akhir v3.0 yang ditemukan di bidang kueri contoh untuk menggunakan pola URL v2.0. Titik akhir LUIS v2.0 selalu mengikuti salah satu dari dua pola ini:

  • https://{AzureResourceName}.cognitiveservices.azure.com/luis/v2.0/apps/{app-id}?subscription-key={subkey}&verbose=true&q=
  • https://{Region}.api.cognitive.microsoft.com/luis/v2.0/apps/{app-id}?subscription-key={subkey}&verbose=true&q=

Mengenali niat

Dari objek IntentRecognizer, Anda akan memanggil metode recognizeOnceAsync(). Metode ini memungkinkan layanan Speech mengetahui bahwa Anda mengirim satu frasa untuk dikenali, dan begitu frasa telah teridentifikasi untuk berhenti mengenali ucapan.

Masukkan kode ini di bawah penambahan model:

        recognizer.recognizeOnceAsync(
          function (result) {
            window.console.log(result);

            phraseDiv.innerHTML = result.text + "\r\n";

            statusDiv.innerHTML += "(continuation) Reason: " + SpeechSDK.ResultReason[result.reason];
            switch (result.reason) {
              case SpeechSDK.ResultReason.RecognizedSpeech:
                statusDiv.innerHTML += " Text: " + result.text;
                break;
              case SpeechSDK.ResultReason.RecognizedIntent:
                statusDiv.innerHTML += " Text: " + result.text + " IntentId: " + result.intentId;

                // The actual JSON returned from Language Understanding is a bit more complex to get to, but it is available for things like
                // the entity name and type if part of the intent.
                statusDiv.innerHTML += " Intent JSON: " + result.properties.getProperty(SpeechSDK.PropertyId.LanguageUnderstandingServiceResponse_JsonResult);
                phraseDiv.innerHTML += result.properties.getProperty(SpeechSDK.PropertyId.LanguageUnderstandingServiceResponse_JsonResult) + "\r\n";
                break;
              case SpeechSDK.ResultReason.NoMatch:
                var noMatchDetail = SpeechSDK.NoMatchDetails.fromResult(result);
                statusDiv.innerHTML += " NoMatchReason: " + SpeechSDK.NoMatchReason[noMatchDetail.reason];
                break;
              case SpeechSDK.ResultReason.Canceled:
                var cancelDetails = SpeechSDK.CancellationDetails.fromResult(result);
                statusDiv.innerHTML += " CancellationReason: " + SpeechSDK.CancellationReason[cancelDetails.reason];

              if (cancelDetails.reason === SpeechSDK.CancellationReason.Error) {
                statusDiv.innerHTML += ": " + cancelDetails.errorDetails;
              }
            break;
            }
            statusDiv.innerHTML += "\r\n";
            startIntentRecognizeAsyncButton.disabled = false;
          },
          function (err) {
            window.console.log(err);

            phraseDiv.innerHTML += "ERROR: " + err;
            startIntentRecognizeAsyncButton.disabled = false;
          });

Memeriksa kode Anda

<!DOCTYPE html>
<html>
<head>
  <title>Microsoft Cognitive Services Speech SDK JavaScript Quickstart</title>
  <meta charset="utf-8" />
</head>
<body style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif; font-size:13px;">
  <div id="warning">
    <h1 style="font-weight:500;">Speech Recognition Speech SDK not found (microsoft.cognitiveservices.speech.sdk.bundle.js missing).</h1>
  </div>
  
  <div id="content" style="display:none">
    <table width="100%">
      <tr>
        <td></td>
        <td><h1 style="font-weight:500;">Microsoft Cognitive Services Speech SDK JavaScript Quickstart</h1></td>
      </tr>
      <tr>
        <td align="right"><a href="https://docs.microsoft.com/azure/cognitive-services/speech-service/quickstarts/intent-recognition?pivots=programming-language-csharp#create-a-luis-app-for-intent-recognition" target="_blank">LUIS Primary Key</a>:</td>
        <td><input id="subscriptionKey" type="text" size="40" value="subscription"></td>
      </tr>
      <tr>
        <td align="right">LUIS Location</td>
        <td><input id="serviceRegion" type="text" size="40" value="YourServiceRegion"></td>
      </tr>
      <tr>
        <td align="right">LUIS App ID:</td>
        <td><input id="appId" type="text" size="60" value="YOUR_LANGUAGE_UNDERSTANDING_APP_ID"></td>
      </tr>
      <tr>
        <td></td>
        <td><button id="startIntentRecognizeAsyncButton">Start Intent Recognition</button></td>
      </tr>
      <tr>
        <td align="right" valign="top">Input Text</td>
        <td><textarea id="phraseDiv" style="display: inline-block;width:500px;height:200px"></textarea></td>
      </tr>
      <tr>
        <td align="right" valign="top">Result</td>
        <td><textarea id="statusDiv" style="display: inline-block;width:500px;height:100px"></textarea></td>
      </tr>
    </table>
  </div>

  <!-- Speech SDK reference sdk. -->
  <script src="https://aka.ms/csspeech/jsbrowserpackageraw"></script>

  <!-- Speech SDK USAGE -->
  <script>
    // status fields and start button in UI
    var phraseDiv;
    var statusDiv;
    var startIntentRecognizeAsyncButton;

    // subscription key and region for speech services.
    var subscriptionKey, serviceRegion, appId;
    var SpeechSDK;
    var recognizer;

    document.addEventListener("DOMContentLoaded", function () {

      startIntentRecognizeAsyncButton = document.getElementById("startIntentRecognizeAsyncButton");
      subscriptionKey = document.getElementById("subscriptionKey");
      serviceRegion = document.getElementById("serviceRegion");
      appId = document.getElementById("appId");
      phraseDiv = document.getElementById("phraseDiv");
      statusDiv = document.getElementById("statusDiv");

      startIntentRecognizeAsyncButton.addEventListener("click", function () {
        startIntentRecognizeAsyncButton.disabled = true;
        phraseDiv.innerHTML = "";
        statusDiv.innerHTML = "";

        let audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();
        if (subscriptionKey.value === "" || subscriptionKey.value === "subscription") {
          alert("Please enter your Microsoft Cognitive Services Speech subscription key!");
          startIntentRecognizeAsyncButton.disabled = false;
          return;
        }
        var speechConfig = SpeechSDK.SpeechConfig.fromSubscription(subscriptionKey.value, serviceRegion.value);

        speechConfig.speechRecognitionLanguage = "en-US";
        recognizer = new SpeechSDK.IntentRecognizer(speechConfig, audioConfig);

        // Set up a Language Understanding Model from Language Understanding Intelligent Service (LUIS).
        // See https://www.luis.ai/home for more information on LUIS.
        if (appId.value !== "" && appId.value !== "YOUR_LANGUAGE_UNDERSTANDING_APP_ID") {
          var lm = SpeechSDK.LanguageUnderstandingModel.fromAppId(appId.value);

          recognizer.addAllIntents(lm);
        }

        recognizer.recognizeOnceAsync(
          function (result) {
            window.console.log(result);
            phraseDiv.innerHTML = result.text + "\r\n";

            statusDiv.innerHTML += "(continuation) Reason: " + SpeechSDK.ResultReason[result.reason];
            switch (result.reason) {

              case SpeechSDK.ResultReason.RecognizedSpeech:
                statusDiv.innerHTML += " Text: " + result.text;
                break;

              case SpeechSDK.ResultReason.RecognizedIntent:
                statusDiv.innerHTML += " Text: " + result.text + " IntentId: " + result.intentId;

                // The actual JSON returned from Language Understanding is a bit more complex to get to, but it is available for things like
                // the entity name and type if part of the intent.
                statusDiv.innerHTML += " Intent JSON: " + result.properties.getProperty(SpeechSDK.PropertyId.LanguageUnderstandingServiceResponse_JsonResult);
                phraseDiv.innerHTML += result.properties.getProperty(SpeechSDK.PropertyId.LanguageUnderstandingServiceResponse_JsonResult) + "\r\n";
                break;

              case SpeechSDK.ResultReason.NoMatch:
                var noMatchDetail = SpeechSDK.NoMatchDetails.fromResult(result);
                statusDiv.innerHTML += " NoMatchReason: " + SpeechSDK.NoMatchReason[noMatchDetail.reason];
                break;
                
              case SpeechSDK.ResultReason.Canceled:
                var cancelDetails = SpeechSDK.CancellationDetails.fromResult(result);
                statusDiv.innerHTML += " CancellationReason: " + SpeechSDK.CancellationReason[cancelDetails.reason];

                if (cancelDetails.reason === SpeechSDK.CancellationReason.Error) {
                  statusDiv.innerHTML += ": " + cancelDetails.errorDetails;
                }
                break;
            }
            statusDiv.innerHTML += "\r\n";
            startIntentRecognizeAsyncButton.disabled = false;
          },
          function (err) {
            window.console.log(err);

            phraseDiv.innerHTML += "ERROR: " + err;
            startIntentRecognizeAsyncButton.disabled = false;
        });
      });

      if (!!window.SpeechSDK) {
        SpeechSDK = window.SpeechSDK;
        startIntentRecognizeAsyncButton.disabled = false;

        document.getElementById('content').style.display = 'block';
        document.getElementById('warning').style.display = 'none';
      }
    });

  </script>
</body>
</html>

Membuat sumber token (opsional)

Jika ingin menghosting halaman web di server web, Anda dapat secara opsional menyediakan sumber token untuk aplikasi demo Anda. Dengan begitu, kunci langganan Anda tidak akan pernah meninggalkan server sambil memungkinkan pengguna untuk menggunakan kemampuan ucapan tanpa memasukkan kode otorisasi sendiri.

Buat file baru bernama token.php. Dalam contoh ini, kami menganggap server web Anda mendukung bahasa skrip PHP dengan curl diaktifkan. Masukkan kode berikut:

<?php
header('Access-Control-Allow-Origin: ' . $_SERVER['SERVER_NAME']);

// Replace with your own subscription key and service region (e.g., "westus").
$subscriptionKey = 'YourSubscriptionKey';
$region = 'YourServiceRegion';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://' . $region . '.api.cognitive.microsoft.com/sts/v1.0/issueToken');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{}');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Ocp-Apim-Subscription-Key: ' . $subscriptionKey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
echo curl_exec($ch);
?>

Catatan

Token otorisasi hanya memiliki masa pakai yang terbatas. Contoh yang disederhanakan ini tidak menunjukkan cara menyegarkan token otorisasi secara otomatis. Sebagai pengguna, Anda dapat memuat ulang halaman secara manual atau menekan F5 untuk merefresh.

Membuat dan menjalankan sampel secara lokal

Untuk meluncurkan aplikasi, klik dua kali file index.html atau buka index.html dengan browser web favorit Anda. Ini akan menyajikan GUI sederhana yang memungkinkan Anda memasukkan kunci LUIS, wilayah LUIS, dan ID Aplikasi LUIS. Setelah bidang tersebut dimasukkan, Anda dapat mengklik tombol yang sesuai untuk memicu pengenalan menggunakan mikrofon.

Catatan

Metode ini tidak berfungsi di browser Safari. Di Safari, sampel halaman web perlu dihosting di server web; Safari tidak mengizinkan situs web dimuat dari file lokal untuk menggunakan mikrofon.

Membuat dan menjalankan sampel melalui server web

Untuk meluncurkan aplikasi, buka browser web favorit Anda dan arahkan ke URL publik tempat Anda menghosting folder, masukkan wilayah LUIS serta ID Aplikasi LUIS Anda, dan picu pengenalan menggunakan mikrofon. Jika dikonfigurasi, ini akan memperoleh token dari sumber token Anda dan mulai mengenali perintah lisan.

Dokumentasi referensi | Paket (PyPi) | Sampel Tambahan pada GitHub

Dalam mulai cepat ini, Anda akan menggunakan layanan Speech SDK dan Language Understanding (LUIS) untuk mengenali maksud dari data audio yang diambil dari mikrofon. Secara khusus, Anda akan menggunakan Speech SDK untuk menangkap ucapan, dan domain bawaan dari LUIS untuk mengidentifikasi niat untuk otomatisasi rumah, seperti menyalakan dan mematikan lampu.

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Buat sumber daya Bahasa di portal Azure. Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi. Anda tidak memerlukan sumber daya Azure Cognitive Service untuk Ucapan kali ini.
  • Dapatkan kunci dan wilayah sumber daya Bahasa. Setelah sumber daya Bahasa Anda disebarkan, pilih Buka sumber daya untuk melihat dan mengelola kunci. Untuk informasi selengkapnya tentang sumber daya layanan Azure AI, lihat Mendapatkan kunci untuk sumber daya Anda.

Anda juga perlu memasang Speech SDK untuk lingkungan pengembangan Anda dan membuat proyek sampel kosong.

Membuat aplikasi LUIS untuk pengenalan niat

Untuk menyelesaikan mulai cepat pengenalan niat, Anda harus membuat akun LUIS dan proyek menggunakan portal pratinjau LUIS. Panduan mulai cepat ini memerlukan langganan LUIS di wilayah tempat pengenalan yang dimaksud tersedia. Langganan layanan Speech tidak diperlukan.

Hal pertama yang perlu Anda lakukan adalah membuat akun dan aplikasi LUIS menggunakan portal pratinjau LUIS. Aplikasi LUIS yang Anda buat akan menggunakan domain bawaan untuk otomatisasi rumah, yang menyediakan niat, entitas, dan contoh ucapan. Setelah selesai, Anda harus memiliki titik akhir LUIS yang berjalan di cloud yang dapat Anda panggil menggunakan Speech SDK.

Ikuti petunjuk berikut untuk membuat aplikasi LUIS Anda:

Setelah selesai, Anda akan membutuhkan empat hal:

  • Menerbitkan kembali dengan Penyiapan ucapan yang diaktifkan
  • Kunci primer LUIS Anda
  • Lokasi LUIS Anda
  • ID Aplikasi LUIS Anda

Di sini Anda dapat menemukan informasi ini di portal pratinjau LUIS:

  1. Dari portal pratinjau LUIS, pilih aplikasi Anda lalu pilih tombol Terbitkan.

  2. Pilih slot Produksi, jika Anda menggunakan en-US, pilih pengaturan perubahan, dan atur Penyiapan ucapan ke posisi Aktif. Lalu pilih tombol Terbitkan.

    Penting

    Penyiapan ucapan sangat direkomendasikan karena akan meningkatkan akurasi pengenalan ucapan.

    Publish LUIS to endpoint

  3. Dari portal pratinjau LUIS, pilih Kelola, lalu pilih Sumber Daya Azure. Di halaman ini, Anda akan menemukan kunci dan lokasi LUIS (biasanya disebut sebagai wilayah)untuk sumber daya prediksi LUIS.

    LUIS key and location

  4. Setelah mendapatkan kunci dan lokasi, Anda memerlukan ID aplikasi. Pilih pengaturan. ID aplikasi tersedia di halaman ini.

    LUIS app ID

Buka proyek Anda

  1. Buka IDE pilihan Anda.
  2. Buat proyek baru dan buat file yang disebut quickstart.py, lalu buka.

Memulai dengan beberapa kode boilerplate

Mari menambahkan beberapa kode yang berfungsi sebagai kerangka untuk proyek.

import azure.cognitiveservices.speech as speechsdk

print("Say something...")

Membuat konfigurasi Ucapan

Sebelum dapat menginisialisasi objek IntentRecognizer, Anda perlu membuat konfigurasi yang menggunakan kunci dan lokasi untuk sumber daya prediksi LUIS Anda.

Masukkan kode ini ke dalam quickstart.py. Pastikan Anda memperbarui nilai-nilai ini:

  • Ganti "YourLanguageUnderstandingSubscriptionKey" dengan kunci prediksi LUIS Anda.
  • Ganti "YourLanguageUnderstandingServiceRegion" dengan lokasi LUIS Anda. Menggunakan Pengidentifikasi Wilayah dari wilayah

Tip

Jika Anda memerlukan bantuan untuk menemukan nilai-nilai ini, lihat Membuat aplikasi LUIS untuk pengenalan niat.

Penting

Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.

# Set up the config for the intent recognizer (remember that this uses the Language Understanding key, not the Speech Services key)!
intent_config = speechsdk.SpeechConfig(
    subscription="YourLanguageUnderstandingSubscriptionKey",
    region="YourLanguageUnderstandingServiceRegion")

Sampel ini membangun objek SpeechConfig menggunakan kunci dan wilayah LUIS. Untuk daftar lengkap metode yang tersedia, lihat Kelas SpeechConfig.

SDK Speech secara default akan mengenali menggunakan bahasa en-us, lihat Cara mengenali ucapan untuk mendapatkan informasi terkait pemilihan bahasa sumber.

Menginisialisasi IntentRecognizer

Sekarang, mari kita membuat sebuah IntentRecognizer. Masukkan kode ini tepat di bawah konfigurasi Ucapan Anda.

# Set up the intent recognizer
intent_recognizer = speechsdk.intent.IntentRecognizer(speech_config=intent_config)

Menambahkan LanguageUnderstandingModel dan niat

Anda perlu mengaitkan LanguageUnderstandingModel dengan pengenal niat, dan menambahkan niat yang ingin Anda kenali. Kita akan menggunakan niat dari domain bawaan untuk otomatisasi rumah.

Masukkan kode ini di bawah IntentRecognizer. Pastikan Anda mengganti "YourLanguageUnderstandingAppId" dengan ID aplikasi LUIS Anda.

Tip

Jika Anda memerlukan bantuan untuk menemukan nilai ini, lihat Membuat aplikasi LUIS untuk pengenalan niat.

# set up the intents that are to be recognized. These can be a mix of simple phrases and
# intents specified through a LanguageUnderstanding Model.
model = speechsdk.intent.LanguageUnderstandingModel(app_id="YourLanguageUnderstandingAppId")
intents = [
    (model, "HomeAutomation.TurnOn"),
    (model, "HomeAutomation.TurnOff"),
    ("This is a test.", "test"),
    ("Switch to channel 34.", "34"),
    ("what's the weather like", "weather"),
]
intent_recognizer.add_intents(intents)

Contoh ini menggunakan fungsi add_intents() untuk menambahkan daftar niat yang ditentukan secara eksplisit. Jika Anda ingin menambahkan semua niat dari model, gunakan add_all_intents(model) dan lewati model.

Mengenali niat

Dari objek IntentRecognizer, Anda akan memanggil metode recognize_once(). Metode ini memungkinkan layanan Speech mengetahui bahwa Anda mengirim satu frasa untuk dikenali, dan begitu frasa telah teridentifikasi untuk berhenti mengenali ucapan.

Masukkan kode ini di bawah model Anda.

intent_result = intent_recognizer.recognize_once()

Menampilkan hasil pengenalan (atau kesalahan)

Saat hasil pengenalan ditampilkan oleh layanan Ucapan, Anda mungkin ingin melakukan sesuatu dengan hasil tersebut. Kami akan tetap menyederhanakanya dan mencetak hasilnya ke konsol.

Di bawah panggilan Anda recognize_once() ke, tambahkan kode ini.

# Check the results
if intent_result.reason == speechsdk.ResultReason.RecognizedIntent:
    print("Recognized: \"{}\" with intent id `{}`".format(intent_result.text, intent_result.intent_id))
elif intent_result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Recognized: {}".format(intent_result.text))
elif intent_result.reason == speechsdk.ResultReason.NoMatch:
    print("No speech could be recognized: {}".format(intent_result.no_match_details))
elif intent_result.reason == speechsdk.ResultReason.Canceled:
    print("Intent recognition canceled: {}".format(intent_result.cancellation_details.reason))
    if intent_result.cancellation_details.reason == speechsdk.CancellationReason.Error:
        print("Error details: {}".format(intent_result.cancellation_details.error_details))

Memeriksa kode Anda

Pada titik ini, kode Anda akan terlihat seperti ini.

Catatan

Kami telah menambahkan beberapa komentar ke versi ini.

# Copyright (c) Microsoft. All rights reserved.
# Licensed under the MIT license. See LICENSE.md file in the project root for full license information.

# <skeleton>
import azure.cognitiveservices.speech as speechsdk

print("Say something...")
# </skeleton>

"""performs one-shot intent recognition from input from the default microphone"""

# <create_speech_configuration>
# Set up the config for the intent recognizer (remember that this uses the Language Understanding key, not the Speech Services key)!
intent_config = speechsdk.SpeechConfig(
    subscription="YourLanguageUnderstandingSubscriptionKey",
    region="YourLanguageUnderstandingServiceRegion")
# </create_speech_configuration>

# <create_intent_recognizer>
# Set up the intent recognizer
intent_recognizer = speechsdk.intent.IntentRecognizer(speech_config=intent_config)
# </create_intent_recognizer>

# <add_intents>
# set up the intents that are to be recognized. These can be a mix of simple phrases and
# intents specified through a LanguageUnderstanding Model.
model = speechsdk.intent.LanguageUnderstandingModel(app_id="YourLanguageUnderstandingAppId")
intents = [
    (model, "HomeAutomation.TurnOn"),
    (model, "HomeAutomation.TurnOff"),
    ("This is a test.", "test"),
    ("Switch to channel 34.", "34"),
    ("what's the weather like", "weather"),
]
intent_recognizer.add_intents(intents)
# </add_intents>

# To add all of the possible intents from a LUIS model to the recognizer, uncomment the line below:
# intent_recognizer.add_all_intents(model)

# Starts intent recognition, and returns after a single utterance is recognized. The end of a
# single utterance is determined by listening for silence at the end or until a maximum of 15
# seconds of audio is processed. It returns the recognition text as result.
# Note: Since recognize_once() returns only a single utterance, it is suitable only for single
# shot recognition like command or query.
# For long-running multi-utterance recognition, use start_continuous_recognition() instead.
# <recognize_intent>
intent_result = intent_recognizer.recognize_once()
# </recognize_intent>

# <print_results>
# Check the results
if intent_result.reason == speechsdk.ResultReason.RecognizedIntent:
    print("Recognized: \"{}\" with intent id `{}`".format(intent_result.text, intent_result.intent_id))
elif intent_result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Recognized: {}".format(intent_result.text))
elif intent_result.reason == speechsdk.ResultReason.NoMatch:
    print("No speech could be recognized: {}".format(intent_result.no_match_details))
elif intent_result.reason == speechsdk.ResultReason.Canceled:
    print("Intent recognition canceled: {}".format(intent_result.cancellation_details.reason))
    if intent_result.cancellation_details.reason == speechsdk.CancellationReason.Error:
        print("Error details: {}".format(intent_result.cancellation_details.error_details))
# </print_results>

Membuat dan menjalankan aplikasi Anda

Jalankan sampel dari konsol atau di IDE Anda:

python quickstart.py

Input ucapan selama 15 detik berikutnya dari mikrofon Anda akan dikenali dan dicatat di jendela konsol.

Dokumentasi referensi | Paket (Go) | Sampel Tambahan pada GitHub

Speech SDK for Go tidak mendukung pengenalan niat. Silakan pilih bahasa pemrograman lain atau referensi Go dan sampel yang ditautkan dari awal artikel ini.

Dokumentasi referensi | Paket (Unduh) | Sampel Tambahan pada GitHub

Speech SDK untuk Objective-C memang mendukung pengenalan niat, tetapi kami belum menyertakan panduan di sini. Silakan pilih bahasa pemrograman lain untuk memulai dan belajar tentang konsep, atau lihat referensi Objective-C dan sampel yang ditautkan dari awal artikel ini.

Dokumentasi referensi | Paket (Unduh) | Sampel Tambahan pada GitHub

Speech SDK untuk Swift memang mendukung pengenalan niat, tetapi kami belum menyertakan panduan di sini. Silakan pilih bahasa pemrograman lain untuk memulai dan mempelajari tentang konsep, atau lihat referensi Swift dan sampel yang ditautkan dari awal artikel ini.

Ucapan ke teks REST API referensi | Ucapan ke teks REST API untuk referensi | audio singkat Sampel Tambahan di GitHub

Anda dapat menggunakan REST API untuk pengenalan niat, tetapi kami belum menyertakan panduan di sini. Silakan pilih bahasa pemrograman lain untuk memulai dan belajar tentang konsep.

Antarmuka baris perintah Ucapan (CLI) memang mendukung pengenalan niat, tetapi kami belum menyertakan panduan di sini. Silakan pilih bahasa pemrograman lain untuk memulai dan mempelajari konsep, atau lihat gambaran umum Speech CLI untuk informasi lebih lanjut tentang CLI.

Langkah berikutnya