Hızlı Başlangıç: Konuşma Language Understanding ile amaçları tanıma

Başvuru belgeleri | Paket (NuGet) | GitHub'da Ek Örnekler

Bu hızlı başlangıçta, mikrofondan yakalanan ses verilerinden amaçları tanımak için Konuşma ve Dil hizmetlerini kullanacaksınız. Özellikle konuşmayı tanımak için Konuşma hizmetini ve amaçları tanımlamak için konuşma Language Understanding (CLU) modelini kullanacaksınız.

Önemli

Konuşma Language Understanding (CLU), Konuşma SDK'sı sürüm 1.25 veya üzeri ile C# ve C++ için kullanılabilir.

Önkoşullar

Ortamı ayarlama

Konuşma SDK'sı bir NuGet paketi olarak kullanılabilir ve .NET Standard 2.0'ı uygular. Konuşma SDK'sını bu kılavuzun ilerleyen bölümlerinde yüklersiniz, ancak daha fazla gereksinim için önce SDK yükleme kılavuzunu gözden geçirin.

Ortam değişkenlerini belirleme

Bu örnekte , , LANGUAGE_ENDPOINTSPEECH_KEYve SPEECH_REGIONadlı LANGUAGE_KEYortam değişkenleri gerekir.

Azure AI hizmetleri kaynaklarına erişmek için uygulamanızın kimliğinin doğrulanması gerekir. Üretim için kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanın. Örneğin Konuşma kaynağınızınanahtarını aldıktan sonra uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın.

İpucu

Anahtarı doğrudan kodunuza eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi diğer kimlik doğrulama seçenekleri için Azure AI hizmetleri güvenlik makalesine bakın.

Ortam değişkenlerini ayarlamak için bir konsol penceresi açın ve işletim sisteminizin ve geliştirme ortamınızın yönergelerini izleyin.

  • Ortam değişkenini LANGUAGE_KEY ayarlamak için değerini kaynağınızın anahtarlarından biriyle değiştirin your-language-key .
  • Ortam değişkenini LANGUAGE_ENDPOINT ayarlamak için değerini kaynağınızın bölgelerinden biriyle değiştirin your-language-endpoint .
  • Ortam değişkenini SPEECH_KEY ayarlamak için değerini kaynağınızın anahtarlarından biriyle değiştirin your-speech-key .
  • Ortam değişkenini SPEECH_REGION ayarlamak için değerini kaynağınızın bölgelerinden biriyle değiştirin your-speech-region .
setx LANGUAGE_KEY your-language-key
setx LANGUAGE_ENDPOINT your-language-endpoint
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region

Not

Ortam değişkenine yalnızca geçerli çalışan konsolda erişmeniz gerekiyorsa ortam değişkenini yerine setxile set ayarlayabilirsiniz.

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okuması gereken tüm çalışan programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.

Konuşma Language Understanding projesi oluşturma

Bir Dil kaynağı oluşturduktan sonra Language Studio'da bir konuşma dili anlama projesi oluşturun. Proje, verilerinize göre özel ML modellerinizi oluşturmaya yönelik bir çalışma alanıdır. Projenize yalnızca siz ve kullanılmakta olan Dil kaynağına erişimi olan diğer kişiler erişebilir.

Language Studio'ya gidin ve Azure hesabınızla oturum açın.

Konuşma dili anlama projesi oluşturma

Bu hızlı başlangıç için bu örnek ev otomasyonu projesini indirebilir ve içeri aktarabilirsiniz. Bu proje, ışık açma ve kapatma gibi kullanıcı girişlerinden istenen komutları tahmin edebilir.

  1. Language Studio'nun Soruları ve konuşma dilini anlama bölümünde Konuşma dili anlama'yı seçin.

    Language Studio giriş sayfasındaki Özel Language Understanding konumunu gösteren ekran görüntüsü.

  2. Bu sizi Konuşma dili anlama projeleri sayfasına götürür. Yeni proje oluştur düğmesinin yanındaki İçeri Aktar'ı seçin.

    Language Studio'da konuşma projesi sayfasını gösteren ekran görüntüsü.

  3. Görüntülenen pencerede, içeri aktarmak istediğiniz JSON dosyasını karşıya yükleyin. Dosyanızın desteklenen JSON biçimine uyduğunu doğrulayın.

Karşıya yükleme tamamlandıktan sonra Şema tanımı sayfasına geleceksiniz. Bu hızlı başlangıçta şema zaten oluşturulmuş ve konuşmalar zaten amaçlar ve varlıklarla etiketlenmiştir.

Modelinizi eğitme

Genellikle, bir proje oluşturduktan sonra bir şema ve etiket konuşmaları oluşturmanız gerekir. Bu hızlı başlangıçta, önceden derlenmiş şema ve etiketli konuşmalar içeren hazır bir projeyi içeri aktardık.

Modeli eğitmek için bir eğitim işi başlatmanız gerekir. Başarılı bir eğitim işinin çıktısı, eğitilen modelinizdir.

Modelinizi Language Studio'dan eğitmeye başlamak için:

  1. Sol taraftaki menüden Modeli eğit'i seçin.

  2. Üstteki menüden Eğitim işi başlat'ı seçin.

  3. Yeni model eğit'i seçin ve metin kutusuna yeni bir model adı girin. Aksi takdirde mevcut modeli yeni veriler üzerinde eğitilen bir modelle değiştirmek için Var olan modelin üzerine yaz'ı ve ardından mevcut bir modeli seçin. Eğitilen modelin üzerine yazmak geri alınamaz, ancak yeni modeli dağıtana kadar dağıtılan modellerinizi etkilemez.

  4. Eğitim modunu seçin. Daha hızlı eğitim için Standart eğitim'i seçebilirsiniz, ancak yalnızca İngilizce kullanılabilir. Alternatif olarak, diğer diller ve çok dilli projeler için desteklenen gelişmiş eğitim'i seçebilirsiniz, ancak daha uzun eğitim süreleri içerir. Eğitim modları hakkında daha fazla bilgi edinin.

  5. Bir veri bölme yöntemi seçin. Test kümesini eğitim verilerinden otomatik olarak bölmeyi seçebilirsiniz; burada sistem konuşmalarınızı belirtilen yüzdelere göre eğitim ve test kümeleri arasında böler. Ya da eğitim ve test verilerinin el ile bölünmesini kullanabilirsiniz. Bu seçenek yalnızca konuşmalarınızı etiketlediğinizde test kümenize konuşma eklediyseniz etkinleştirilir.

  6. Eğit düğmesini seçin.

    Language Studio'daki eğitim sayfasını gösteren ekran görüntüsü.

  7. Listeden eğitim işi kimliğini seçin. Bu iş için eğitim ilerleme durumunu, iş durumunu ve diğer ayrıntıları denetleyebileceğiniz bir panel görüntülenir.

    Not

    • Yalnızca başarıyla tamamlanan eğitim işleri model oluşturur.
    • Konuşma sayısına bağlı olarak eğitim birkaç dakika ile birkaç saat arasında sürebilir.
    • Aynı anda yalnızca bir eğitim işi çalıştırabilirsiniz. Çalışan iş tamamlanana kadar aynı proje içindeki diğer eğitim işlerini başlatamazsınız.
    • Modelleri eğitmek için kullanılan makine öğrenmesi düzenli olarak güncelleştirilir. Önceki bir yapılandırma sürümünde eğitmek için Eğitim işi başlat sayfasında değiştirmek için Burayı seçin'i seçin ve önceki bir sürümü seçin.

Modelinizi dağıtma

Bir modeli eğitdikten sonra genellikle değerlendirme ayrıntılarını gözden geçirirsiniz. Bu hızlı başlangıçta modelinizi dağıtacak ve Language Studio'da denemenizi sağlayacak veya tahmin API'sini çağırabilirsiniz.

Modelinizi Language Studio'dan dağıtmak için:

  1. Sol taraftaki menüden Model dağıtma'ya tıklayın.

  2. Dağıtım ekle'yi seçerek Dağıtım ekleme sihirbazını başlatın.

    Language Studio'da model dağıtım düğmesini gösteren ekran görüntüsü.

  3. Yeni bir dağıtım oluşturmak ve aşağıdaki açılan listeden eğitilmiş bir model atamak için Yeni dağıtım adı oluştur'u seçin. Aksi takdirde, var olan bir dağıtım tarafından kullanılan modeli etkili bir şekilde değiştirmek için Var olan bir dağıtım adının üzerine yaz'ı seçebilirsiniz.

    Not

    Mevcut bir dağıtımın üzerine yazmak Için Tahmin API'niz çağrısında değişiklik yapılması gerekmez, ancak elde ettiğiniz sonuçlar yeni atanan modeli temel alır.

    Language Studio'da yeni dağıtım ekleme ekranını gösteren ekran görüntüsü.

  4. Model açılan listesinden eğitilmiş bir model seçin.

  5. Dağıtım işini başlatmak için Dağıt'ı seçin.

  6. Dağıtım başarılı olduktan sonra yanında bir sona erme tarihi görünür. Dağıtım süre sonu , dağıtılan modelinizin tahmin için kullanılamayacağı zamandır ve bu durum genellikle eğitim yapılandırmasının süresi dolduktan on iki ay sonra gerçekleşir.

Sonraki bölümde proje adını ve dağıtım adını kullanacaksınız.

Mikrofondan amaçları tanıma

Yeni bir konsol uygulaması oluşturmak ve Konuşma SDK'sını yüklemek için bu adımları izleyin.

  1. Yeni projeyi istediğiniz yerde bir komut istemi açın ve .NET CLI ile bir konsol uygulaması oluşturun. Dosya Program.cs proje dizininde oluşturulmalıdır.

    dotnet new console
    
  2. .NET CLI ile yeni projenize Konuşma SDK'sını yükleyin.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. öğesinin içeriğini Program.cs aşağıdaki kodla değiştirin.

    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    using Microsoft.CognitiveServices.Speech.Intent;
    
    class Program 
    {
        // This example requires environment variables named:
        // "LANGUAGE_KEY", "LANGUAGE_ENDPOINT", "SPEECH_KEY", and "SPEECH_REGION"
        static string languageKey = Environment.GetEnvironmentVariable("LANGUAGE_KEY");
        static string languageEndpoint = Environment.GetEnvironmentVariable("LANGUAGE_ENDPOINT");
        static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY");
        static string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION");
    
        // Your CLU project name and deployment name.
        static string cluProjectName = "YourProjectNameGoesHere";
        static string cluDeploymentName = "YourDeploymentNameGoesHere";
    
        async static Task Main(string[] args)
        {
            var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion);        
            speechConfig.SpeechRecognitionLanguage = "en-US";
    
            using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
    
            // Creates an intent recognizer in the specified language using microphone as audio input.
            using (var intentRecognizer = new IntentRecognizer(speechConfig, audioConfig))
            {
                var cluModel = new ConversationalLanguageUnderstandingModel(
                    languageKey,
                    languageEndpoint,
                    cluProjectName, 
                    cluDeploymentName);
                var collection = new LanguageUnderstandingModelCollection();
                collection.Add(cluModel);
                intentRecognizer.ApplyLanguageModels(collection);
    
                Console.WriteLine("Speak into your microphone.");
                var recognitionResult = await intentRecognizer.RecognizeOnceAsync().ConfigureAwait(false);
    
                // Checks result.
                if (recognitionResult.Reason == ResultReason.RecognizedIntent)
                {
                    Console.WriteLine($"RECOGNIZED: Text={recognitionResult.Text}");
                    Console.WriteLine($"    Intent Id: {recognitionResult.IntentId}.");
                    Console.WriteLine($"    Language Understanding JSON: {recognitionResult.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult)}.");
                }
                else if (recognitionResult.Reason == ResultReason.RecognizedSpeech)
                {
                    Console.WriteLine($"RECOGNIZED: Text={recognitionResult.Text}");
                    Console.WriteLine($"    Intent not recognized.");
                }
                else if (recognitionResult.Reason == ResultReason.NoMatch)
                {
                    Console.WriteLine($"NOMATCH: Speech could not be recognized.");
                }
                else if (recognitionResult.Reason == ResultReason.Canceled)
                {
                    var cancellation = CancellationDetails.FromResult(recognitionResult);
                    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?");
                    }
                }
            }
        }
    }
    
  4. içinde Program.cs ve cluDeploymentName değişkenlerini projenizin ve dağıtımınızın adlarına ayarlayıncluProjectName. CLU projesi ve dağıtımı oluşturma hakkında bilgi için bkz. Konuşma Language Understanding projesi oluşturma.

  5. Konuşma tanıma dilini değiştirmek için değerini desteklenen başka bir dille değiştirinen-US. Örneğin, es-ES İspanyolca (İspanya). Varsayılan dil, en-US bir dil belirtmezseniz olur. Konuşulabilecek birden çok dilden birini belirleme hakkında ayrıntılı bilgi için bkz. dil tanımlama.

Mikrofondan konuşma tanımayı başlatmak için yeni konsol uygulamanızı çalıştırın:

dotnet run

Önemli

Yukarıda açıklandığı gibi , LANGUAGE_ENDPOINT, SPEECH_KEYve SPEECH_REGION ortam değişkenlerini ayarladığınızdan LANGUAGE_KEYemin olun. Bu değişkenleri ayarlamazsanız örnek bir hata iletisiyle başarısız olur.

İstendiğinde mikrofonunuza konuşun. Konuştuğunuz şeyin metin olarak çıkışı olmalıdır:

Speak into your microphone.
RECOGNIZED: Text=Turn on the lights.
    Intent Id: HomeAutomation.TurnOn.
    Language Understanding JSON: {"kind":"ConversationResult","result":{"query":"turn on the lights","prediction":{"topIntent":"HomeAutomation.TurnOn","projectKind":"Conversation","intents":[{"category":"HomeAutomation.TurnOn","confidenceScore":0.97712576},{"category":"HomeAutomation.TurnOff","confidenceScore":0.8431633},{"category":"None","confidenceScore":0.782861}],"entities":[{"category":"HomeAutomation.DeviceType","text":"lights","offset":12,"length":6,"confidenceScore":1,"extraInformation":[{"extraInformationKind":"ListKey","key":"light"}]}]}}}.

Not

konuşma SDK'sı sürüm 1.26'da LanguageUnderstandingServiceResponse_JsonResult özelliği aracılığıyla CLU için JSON yanıtı desteği eklendi.

Amaçlar, büyük olasılıkla en az olasılıkla olasılık sırasına göre döndürülür. JSON çıkışının biçimlendirilmiş bir sürümü aşağıdadır ve topIntent güvenilirlik puanı 0,97712576 (%97,71) olur HomeAutomation.TurnOn . en olası ikinci amaç 0,8985081 (%84,31) güvenilirlik puanıyla olabilir HomeAutomation.TurnOff .

{
  "kind": "ConversationResult",
  "result": {
    "query": "turn on the lights",
    "prediction": {
      "topIntent": "HomeAutomation.TurnOn",
      "projectKind": "Conversation",
      "intents": [
        {
          "category": "HomeAutomation.TurnOn",
          "confidenceScore": 0.97712576
        },
        {
          "category": "HomeAutomation.TurnOff",
          "confidenceScore": 0.8431633
        },
        {
          "category": "None",
          "confidenceScore": 0.782861
        }
      ],
      "entities": [
        {
          "category": "HomeAutomation.DeviceType",
          "text": "lights",
          "offset": 12,
          "length": 6,
          "confidenceScore": 1,
          "extraInformation": [
            {
              "extraInformationKind": "ListKey",
              "key": "light"
            }
          ]
        }
      ]
    }
  }
}

Açıklamalar

Hızlı başlangıcı tamamladığınıza göre dikkat edilmesi gereken bazı ek noktalar şunlardır:

  • Bu örnekte, 30 saniyeye kadar veya sessizlik algılanana kadar konuşmaların dökümünü almak için işlemi kullanılır RecognizeOnceAsync . Çok dilli konuşmalar da dahil olmak üzere daha uzun ses için sürekli tanıma hakkında bilgi için bkz. Konuşmayı tanıma.
  • Ses dosyasından konuşma tanımak için yerine FromDefaultMicrophoneInputkullanınFromWavFileInput:
    using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
    
  • MP4 gibi sıkıştırılmış ses dosyaları için GStreamer'ı yükleyin ve veya PushAudioInputStreamkullanınPullAudioInputStream. Daha fazla bilgi için bkz. Sıkıştırılmış giriş sesini kullanma.

Kaynakları temizleme

Oluşturduğunuz Dil ve Konuşma kaynaklarını kaldırmak için Azure portal veya Azure Komut Satırı Arabirimi'ni (CLI) kullanabilirsiniz.

Başvuru belgeleri | Paket (NuGet) | GitHub'da Ek Örnekler

Bu hızlı başlangıçta, mikrofondan yakalanan ses verilerinden amaçları tanımak için Konuşma ve Dil hizmetlerini kullanacaksınız. Özellikle konuşmayı tanımak için Konuşma hizmetini ve amaçları tanımlamak için konuşma Language Understanding (CLU) modelini kullanacaksınız.

Önemli

Konuşma Language Understanding (CLU), Konuşma SDK'sı sürüm 1.25 veya üzeri ile C# ve C++ için kullanılabilir.

Önkoşullar

Ortamı ayarlama

Konuşma SDK'sı bir NuGet paketi olarak kullanılabilir ve .NET Standard 2.0'ı uygular. Konuşma SDK'sını bu kılavuzun ilerleyen bölümlerinde yüklersiniz, ancak daha fazla gereksinim için önce SDK yükleme kılavuzunu gözden geçirin.

Ortam değişkenlerini belirleme

Bu örnekte , , LANGUAGE_ENDPOINTSPEECH_KEYve SPEECH_REGIONadlı LANGUAGE_KEYortam değişkenleri gerekir.

Azure AI hizmetleri kaynaklarına erişmek için uygulamanızın kimliğinin doğrulanması gerekir. Üretim için kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanın. Örneğin Konuşma kaynağınızınanahtarını aldıktan sonra uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın.

İpucu

Anahtarı doğrudan kodunuza eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi diğer kimlik doğrulama seçenekleri için Azure AI hizmetleri güvenlik makalesine bakın.

Ortam değişkenlerini ayarlamak için bir konsol penceresi açın ve işletim sisteminizin ve geliştirme ortamınızın yönergelerini izleyin.

  • Ortam değişkenini LANGUAGE_KEY ayarlamak için değerini kaynağınızın anahtarlarından biriyle değiştirin your-language-key .
  • Ortam değişkenini LANGUAGE_ENDPOINT ayarlamak için değerini kaynağınızın bölgelerinden biriyle değiştirin your-language-endpoint .
  • Ortam değişkenini SPEECH_KEY ayarlamak için değerini kaynağınızın anahtarlarından biriyle değiştirin your-speech-key .
  • Ortam değişkenini SPEECH_REGION ayarlamak için değerini kaynağınızın bölgelerinden biriyle değiştirin your-speech-region .
setx LANGUAGE_KEY your-language-key
setx LANGUAGE_ENDPOINT your-language-endpoint
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region

Not

Ortam değişkenine yalnızca geçerli çalışan konsolda erişmeniz gerekiyorsa ortam değişkenini yerine setxile set ayarlayabilirsiniz.

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okuması gereken tüm çalışan programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.

Konuşma Language Understanding projesi oluşturma

Bir Dil kaynağı oluşturduktan sonra Language Studio'da bir konuşma dili anlama projesi oluşturun. Proje, verilerinize göre özel ML modellerinizi oluşturmaya yönelik bir çalışma alanıdır. Projenize yalnızca siz ve kullanılmakta olan Dil kaynağına erişimi olan diğer kişiler erişebilir.

Language Studio'ya gidin ve Azure hesabınızla oturum açın.

Konuşma dili anlama projesi oluşturma

Bu hızlı başlangıç için bu örnek ev otomasyonu projesini indirebilir ve içeri aktarabilirsiniz. Bu proje, ışık açma ve kapatma gibi kullanıcı girişlerinden istenen komutları tahmin edebilir.

  1. Language Studio'nun Soruları ve konuşma dilini anlama bölümünde Konuşma dili anlama'yı seçin.

    Language Studio giriş sayfasındaki Özel Language Understanding konumunu gösteren ekran görüntüsü.

  2. Bu sizi Konuşma dilini anlama projeleri sayfasına götürür. Yeni proje oluştur düğmesinin yanında İçeri Aktar'ı seçin.

    Language Studio'da konuşma projesi sayfasını gösteren ekran görüntüsü.

  3. Görüntülenen pencerede içeri aktarmak istediğiniz JSON dosyasını karşıya yükleyin. Dosyanızın desteklenen JSON biçimine uyduğunu doğrulayın.

Karşıya yükleme tamamlandıktan sonra Şema tanımı sayfasına inersiniz. Bu hızlı başlangıçta şema zaten oluşturulmuş ve ifadeler amaçlar ve varlıklarla etiketlenmiştir.

Modelinizi eğitme

Genellikle, bir proje oluşturduktan sonra bir şema oluşturmanız ve konuşmaları etiketlemeniz gerekir. Bu hızlı başlangıçta, derlenmiş şema ve etiketli konuşmalar içeren hazır bir projeyi zaten içeri aktardık.

Modeli eğitmek için bir eğitim işi başlatmanız gerekir. Başarılı bir eğitim işinin çıktısı, eğitilen modelinizdir.

Modelinizi Language Studio'dan eğitmeye başlamak için:

  1. Sol taraftaki menüden Modeli eğit'i seçin.

  2. Üstteki menüden Eğitim işi başlat'ı seçin.

  3. Yeni model eğit'i seçin ve metin kutusuna yeni bir model adı girin. Aksi takdirde mevcut modeli yeni veriler üzerinde eğitilen bir modelle değiştirmek için Var olan modelin üzerine yaz'ı ve ardından mevcut bir modeli seçin. Eğitilen modelin üzerine yazmak geri alınamaz, ancak yeni modeli dağıtana kadar dağıtılan modellerinizi etkilemez.

  4. Eğitim modunu seçin. Daha hızlı eğitim için Standart eğitim'i seçebilirsiniz, ancak yalnızca İngilizce kullanılabilir. Alternatif olarak, diğer diller ve çok dilli projeler için desteklenen gelişmiş eğitim'i seçebilirsiniz, ancak daha uzun eğitim süreleri içerir. Eğitim modları hakkında daha fazla bilgi edinin.

  5. Bir veri bölme yöntemi seçin. Test kümesini eğitim verilerinden otomatik olarak bölme'yi seçebilirsiniz. Burada sistem konuşmalarınızı belirtilen yüzdelere göre eğitim ve test kümeleri arasında böler. Ya da eğitim ve test verilerinin el ile bölünmesini kullanabilirsiniz. Bu seçenek yalnızca konuşmalarınızı etiketlediğinizde test kümenize konuşma eklediyseniz etkinleştirilir.

  6. Eğit düğmesini seçin.

    Language Studio'daki eğitim sayfasını gösteren ekran görüntüsü.

  7. Listeden eğitim işi kimliğini seçin. Bu işin eğitim ilerleme durumunu, iş durumunu ve diğer ayrıntılarını denetleyebileceğiniz bir panel görüntülenir.

    Not

    • Yalnızca başarıyla tamamlanan eğitim işleri model oluşturur.
    • Konuşma sayısına göre eğitim birkaç dakika ile birkaç saat arasında sürebilir.
    • Aynı anda yalnızca bir eğitim işi çalıştırabilirsiniz. Çalışan iş tamamlanana kadar aynı proje içinde diğer eğitim işlerini başlatamazsınız.
    • Modelleri eğitmek için kullanılan makine öğrenmesi düzenli olarak güncelleştirilir. Önceki bir yapılandırma sürümünde eğitmek için Eğitim işi başlatsayfasından değiştirmek için Buradan seç'i seçin ve önceki bir sürümü seçin.

Modelinizi dağıtma

Bir modeli eğittikten sonra genellikle değerlendirme ayrıntılarını gözden geçirirsiniz. Bu hızlı başlangıçta modelinizi dağıtacak ve Language Studio'da denemeniz için kullanıma sunacaksınız veya tahmin API'sini çağırabilirsiniz.

Modelinizi Language Studio'dan dağıtmak için:

  1. Sol taraftaki menüden Model dağıtma'ya tıklayın.

  2. Dağıtım ekle sihirbazını başlatmak için Dağıtım ekle'yi seçin.

    Language Studio'da model dağıtım düğmesini gösteren ekran görüntüsü.

  3. Yeni dağıtım oluşturmak ve aşağıdaki açılan listeden eğitilmiş bir model atamak için Yeni dağıtım adı oluştur'u seçin. Aksi takdirde var olan bir dağıtım tarafından kullanılan modeli etkili bir şekilde değiştirmek için Var olan bir dağıtım adının üzerine yaz'ı seçebilirsiniz.

    Not

    Mevcut dağıtımın üzerine yazmak Için Tahmin API çağrınızda değişiklik yapılması gerekmez, ancak elde ettiğiniz sonuçlar yeni atanan modeli temel alır.

    Language Studio'da yeni dağıtım ekleme ekranını gösteren ekran görüntüsü.

  4. Model açılan listesinden eğitilmiş bir model seçin.

  5. Dağıtım işini başlatmak için Dağıt'ı seçin.

  6. Dağıtım başarılı olduktan sonra yanında bir sona erme tarihi görünür. Dağıtım süre sonu , dağıtılan modelinizin tahmin için kullanılamadığı zamandır ve bu durum genellikle eğitim yapılandırmasının süresi dolduktan on iki ay sonra gerçekleşir.

Sonraki bölümde proje adını ve dağıtım adını kullanacaksınız.

Mikrofondan amaçları tanıma

Yeni bir konsol uygulaması oluşturmak ve Konuşma SDK'sını yüklemek için bu adımları izleyin.

  1. Visual Studio Community 2022'de adlı SpeechRecognitionyeni bir C++ konsol projesi oluşturun.

  2. NuGet paket yöneticisiyle yeni projenize Konuşma SDK'sını yükleyin.

    Install-Package Microsoft.CognitiveServices.Speech
    
  3. öğesinin içeriğini SpeechRecognition.cpp aşağıdaki kodla değiştirin:

    #include <iostream> 
    #include <stdlib.h>
    #include <speechapi_cxx.h>
    
    using namespace Microsoft::CognitiveServices::Speech;
    using namespace Microsoft::CognitiveServices::Speech::Audio;
    using namespace Microsoft::CognitiveServices::Speech::Intent;
    
    std::string GetEnvironmentVariable(const char* name);
    
    int main()
    {
        // This example requires environment variables named:
        // "LANGUAGE_KEY", "LANGUAGE_ENDPOINT", "SPEECH_KEY", and "SPEECH_REGION"
        auto languageKey = GetEnvironmentVariable("LANGUAGE_KEY");
        auto languageEndpoint = GetEnvironmentVariable("LANGUAGE_ENDPOINT");
        auto speechKey = GetEnvironmentVariable("SPEECH_KEY");
        auto speechRegion = GetEnvironmentVariable("SPEECH_REGION");
    
        auto cluProjectName = "YourProjectNameGoesHere";
        auto cluDeploymentName = "YourDeploymentNameGoesHere";
    
        if ((size(languageKey) == 0) || (size(languageEndpoint) == 0) || (size(speechKey) == 0) || (size(speechRegion) == 0)) {
            std::cout << "Please set LANGUAGE_KEY, LANGUAGE_ENDPOINT, SPEECH_KEY, and SPEECH_REGION environment variables." << std::endl;
            return -1;
        }
    
        auto speechConfig = SpeechConfig::FromSubscription(speechKey, speechRegion);
    
        speechConfig->SetSpeechRecognitionLanguage("en-US");
    
        auto audioConfig = AudioConfig::FromDefaultMicrophoneInput();
        auto intentRecognizer = IntentRecognizer::FromConfig(speechConfig, audioConfig);
    
        std::vector<std::shared_ptr<LanguageUnderstandingModel>> models;
    
        auto cluModel = ConversationalLanguageUnderstandingModel::FromResource(
            languageKey,
            languageEndpoint,
            cluProjectName,
            cluDeploymentName);
    
        models.push_back(cluModel);
        intentRecognizer->ApplyLanguageModels(models);
    
        std::cout << "Speak into your microphone.\n";
        auto result = intentRecognizer->RecognizeOnceAsync().get();
    
        if (result->Reason == ResultReason::RecognizedIntent)
        {
            std::cout << "RECOGNIZED: Text=" << result->Text << std::endl;
            std::cout << "  Intent Id: " << result->IntentId << std::endl;
            std::cout << "  Intent Service JSON: " << result->Properties.GetProperty(PropertyId::LanguageUnderstandingServiceResponse_JsonResult) << std::endl;
        }
        else if (result->Reason == ResultReason::RecognizedSpeech)
        {
            std::cout << "RECOGNIZED: Text=" << result->Text << " (intent could not be recognized)" << std::endl;
        }
        else if (result->Reason == ResultReason::NoMatch)
        {
            std::cout << "NOMATCH: Speech could not be recognized." << std::endl;
        }
        else if (result->Reason == ResultReason::Canceled)
        {
            auto cancellation = CancellationDetails::FromResult(result);
            std::cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
    
            if (cancellation->Reason == CancellationReason::Error)
            {
                std::cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
                std::cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
                std::cout << "CANCELED: Did you update the subscription info?" << std::endl;
            }
        }
    }
    
    std::string GetEnvironmentVariable(const char* name)
    {
    #if defined(_MSC_VER)
        size_t requiredSize = 0;
        (void)getenv_s(&requiredSize, nullptr, 0, name);
        if (requiredSize == 0)
        {
            return "";
        }
        auto buffer = std::make_unique<char[]>(requiredSize);
        (void)getenv_s(&requiredSize, buffer.get(), requiredSize, name);
        return buffer.get();
    #else
        auto value = getenv(name);
        return value ? value : "";
    #endif
    }
    
  4. içinde SpeechRecognition.cpp ve cluDeploymentName değişkenlerini projenizin ve dağıtımınızın adlarına ayarlayıncluProjectName. CLU projesi ve dağıtımı oluşturma hakkında bilgi için bkz. Konuşma Language Understanding projesi oluşturma.

  5. Konuşma tanıma dilini değiştirmek için değerini desteklenen başka bir dille değiştirinen-US. Örneğin, es-ES İspanyolca (İspanya) için. Varsayılan dil, bir dil belirtmezseniz olur en-US . Konuşulabilecek birden çok dilden birini belirleme hakkında ayrıntılı bilgi için bkz. Dil belirleme.

Mikrofondan konuşma tanımayı başlatmak için yeni konsol uygulamanızı derleyin ve çalıştırın.

Önemli

, , SPEECH_KEYLANGUAGE_ENDPOINTve SPEECH_REGION ortam değişkenlerini yukarıda açıklandığı gibi ayarladığınızdan LANGUAGE_KEYemin olun. Bu değişkenleri ayarlamazsanız örnek bir hata iletisiyle başarısız olur.

İstendiğinde mikrofonunuza konuşun. Konuştuğunuz şey metin olarak çıkış olmalıdır:

Speak into your microphone.
RECOGNIZED: Text=Turn on the lights.
    Intent Id: HomeAutomation.TurnOn.
    Language Understanding JSON: {"kind":"ConversationResult","result":{"query":"turn on the lights","prediction":{"topIntent":"HomeAutomation.TurnOn","projectKind":"Conversation","intents":[{"category":"HomeAutomation.TurnOn","confidenceScore":0.97712576},{"category":"HomeAutomation.TurnOff","confidenceScore":0.8431633},{"category":"None","confidenceScore":0.782861}],"entities":[{"category":"HomeAutomation.DeviceType","text":"lights","offset":12,"length":6,"confidenceScore":1,"extraInformation":[{"extraInformationKind":"ListKey","key":"light"}]}]}}}.

Not

konuşma SDK'sı sürüm 1.26'da LanguageUnderstandingServiceResponse_JsonResult özelliği aracılığıyla CLU için JSON yanıtı desteği eklendi.

Amaçlar, büyük olasılıkla en az olasılıkla olasılık sırasına göre döndürülür. JSON çıkışının biçimlendirilmiş bir sürümü aşağıdadır ve topIntent güvenilirlik puanı 0,97712576 (%97,71) olur HomeAutomation.TurnOn . İkinci en olası amaç 0,8985081 (%84,31) güvenilirlik puanıyla olabilir HomeAutomation.TurnOff .

{
  "kind": "ConversationResult",
  "result": {
    "query": "turn on the lights",
    "prediction": {
      "topIntent": "HomeAutomation.TurnOn",
      "projectKind": "Conversation",
      "intents": [
        {
          "category": "HomeAutomation.TurnOn",
          "confidenceScore": 0.97712576
        },
        {
          "category": "HomeAutomation.TurnOff",
          "confidenceScore": 0.8431633
        },
        {
          "category": "None",
          "confidenceScore": 0.782861
        }
      ],
      "entities": [
        {
          "category": "HomeAutomation.DeviceType",
          "text": "lights",
          "offset": 12,
          "length": 6,
          "confidenceScore": 1,
          "extraInformation": [
            {
              "extraInformationKind": "ListKey",
              "key": "light"
            }
          ]
        }
      ]
    }
  }
}

Açıklamalar

Hızlı başlangıcı tamamladığınıza göre dikkat edilmesi gereken bazı ek noktalar şunlardır:

  • Bu örnekte, 30 saniyeye kadar veya sessizlik algılanana kadar konuşmaların dökümünü almak için işlemi kullanılır RecognizeOnceAsync . Çok dilli konuşmalar da dahil olmak üzere daha uzun ses için sürekli tanıma hakkında bilgi için bkz. Konuşmayı tanıma.
  • Ses dosyasından konuşmayı tanımak için yerine FromDefaultMicrophoneInputkullanınFromWavFileInput:
    auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
    
  • MP4 gibi sıkıştırılmış ses dosyaları için GStreamer'ı yükleyin ve veya PushAudioInputStreamkullanınPullAudioInputStream. Daha fazla bilgi için bkz. Sıkıştırılmış giriş sesini kullanma.

Kaynakları temizleme

Oluşturduğunuz Dil ve Konuşma kaynaklarını kaldırmak için Azure portal veya Azure Komut Satırı Arabirimi'ni (CLI) kullanabilirsiniz.

Başvuru belgeleri | GitHub'da Ek Örnekler

Java için Konuşma SDK'sı, konuşma dili anlama (CLU) ile amaç tanımayı desteklemez. Lütfen bu makalenin başından başka bir programlama dili veya Java başvurusu ve bağlantılı örnekler seçin.

Sonraki adımlar