Aracılığıyla paylaş


Hızlı Başlangıç: Konuşma Dili Anlama ile amaçları tanıma

Başvuru belgeleri | Paketi (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 Dili Anlama (CLU) modelini kullanacaksınız.

Önemli

Konuşma SDK'sı sürüm 1.25 veya üzeri ile C# ve C++ için Conversational Language Understanding (CLU) 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. Bu makalede, kimlik bilgilerinizi depolamak için ortam değişkenlerini nasıl kullanacağınız gösterilmektedir. Ardından uygulamanızın kimliğini doğrulamak için kodunuzdan ortam değişkenlerine erişebilirsiniz. Üretim için kimlik bilgilerinizi depolamak ve erişmek için daha güvenli bir yol kullanın.

Önemli

Kimlik bilgilerini bulutta çalışan uygulamalarınızla depolamaktan kaçınmak için Azure kaynakları için yönetilen kimliklerle Microsoft Entra Id kimlik doğrulaması yapmanızı öneririz.

API anahtarı kullanıyorsanız, bunu Azure Key Vault gibi başka bir yerde güvenli bir şekilde depolayın. API anahtarını doğrudan kodunuzla eklemeyin ve hiçbir zaman herkese açık olarak göndermeyin.

Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz . Azure AI hizmetlerine yönelik isteklerin kimliğini doğrulama.

Ortam değişkenlerini ayarlamak için bir konsol penceresi açın ve işletim sisteminizle 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 Dili Anlama projesi oluşturma

Bir Dil kaynağı oluşturduktan sonra Language Studio'da 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ılan 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ında Özel Language Understanding'in 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ı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 uydığından emin olun.

Karşıya yükleme tamamlandıktan sonra Şema tanımı sayfasına geleceksiniz. Bu hızlı başlangıçta şema zaten oluşturulmuş ve ifadeler zaten 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ğitilmiş bir modelle değiştirmek için Var olan modelin üzerine yaz'ı seçin 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. Veya 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, sistemin konuşmalarınızı eğitim ve test kümeleri arasında belirtilen yüzdelere göre böleceği eğitim verilerinden otomatik olarak bölme'yi seçebilirsiniz. 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ı 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ından değiştirmek için Buradan seç'i seçin ve önceki bir sürümü seçin.

Modelinizi dağıtma

Genellikle bir modeli eğitdikten sonra 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ılabilir hale getirecek 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 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'si ç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üntülenir. 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. Yeni projeyi istediğiniz 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 Dili Anlama projesi oluşturma.

  5. Konuşma tanıma dilini değiştirmek için öğesini 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ı çalıştırın:

dotnet run

Ö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 topIntent ve 0,97712576 (%97,71) güvenilirlik puanına sahip 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 örnek, 30 saniyeye kadar veya sessizlik algılanana kadar konuşmaların dökümünü almak için işlemini kullanı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:
    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ını veya Azure Komut Satırı Arabirimi'ni (CLI) kullanabilirsiniz.

Başvuru belgeleri | Paketi (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 Dili Anlama (CLU) modelini kullanacaksınız.

Önemli

Konuşma SDK'sı sürüm 1.25 veya üzeri ile C# ve C++ için Conversational Language Understanding (CLU) 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. Bu makalede, kimlik bilgilerinizi depolamak için ortam değişkenlerini nasıl kullanacağınız gösterilmektedir. Ardından uygulamanızın kimliğini doğrulamak için kodunuzdan ortam değişkenlerine erişebilirsiniz. Üretim için kimlik bilgilerinizi depolamak ve erişmek için daha güvenli bir yol kullanın.

Önemli

Kimlik bilgilerini bulutta çalışan uygulamalarınızla depolamaktan kaçınmak için Azure kaynakları için yönetilen kimliklerle Microsoft Entra Id kimlik doğrulaması yapmanızı öneririz.

API anahtarı kullanıyorsanız, bunu Azure Key Vault gibi başka bir yerde güvenli bir şekilde depolayın. API anahtarını doğrudan kodunuzla eklemeyin ve hiçbir zaman herkese açık olarak göndermeyin.

Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz . Azure AI hizmetlerine yönelik isteklerin kimliğini doğrulama.

Ortam değişkenlerini ayarlamak için bir konsol penceresi açın ve işletim sisteminizle 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 Dili Anlama projesi oluşturma

Bir Dil kaynağı oluşturduktan sonra Language Studio'da 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ılan 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ında Özel Language Understanding'in 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ı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 uydığından emin olun.

Karşıya yükleme tamamlandıktan sonra Şema tanımı sayfasına geleceksiniz. Bu hızlı başlangıçta şema zaten oluşturulmuş ve ifadeler zaten 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ğitilmiş bir modelle değiştirmek için Var olan modelin üzerine yaz'ı seçin 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. Veya 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, sistemin konuşmalarınızı eğitim ve test kümeleri arasında belirtilen yüzdelere göre böleceği eğitim verilerinden otomatik olarak bölme'yi seçebilirsiniz. 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ı 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ından değiştirmek için Buradan seç'i seçin ve önceki bir sürümü seçin.

Modelinizi dağıtma

Genellikle bir modeli eğitdikten sonra 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ılabilir hale getirecek 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 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'si ç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üntülenir. 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 Dili Anlama projesi oluşturma.

  5. Konuşma tanıma dilini değiştirmek için öğesini 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 topIntent ve 0,97712576 (%97,71) güvenilirlik puanına sahip 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 örnek, 30 saniyeye kadar veya sessizlik algılanana kadar konuşmaların dökümünü almak için işlemini kullanı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ını 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 itibaren başka bir programlama dili veya Java başvurusu ve bağlantılı örnekler seçin.

Sonraki adımlar