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
- Azure aboneliği. Ücretsiz bir tane oluşturabilirsiniz.
- Azure portalında bir Dil kaynağı oluşturun.
- Dil kaynak anahtarını ve uç noktasını alın. Dil kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin.
- Azure portalında konuşma kaynağı oluşturun.
- Konuşma kaynak anahtarını ve bölgesini alın. Konuşma kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin.
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_ENDPOINT
SPEECH_KEY
ve SPEECH_REGION
adlı LANGUAGE_KEY
ortam 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ştirinyour-language-key
. - Ortam değişkenini
LANGUAGE_ENDPOINT
ayarlamak için değerini kaynağınızın bölgelerinden biriyle değiştirinyour-language-endpoint
. - Ortam değişkenini
SPEECH_KEY
ayarlamak için değerini kaynağınızın anahtarlarından biriyle değiştirinyour-speech-key
. - Ortam değişkenini
SPEECH_REGION
ayarlamak için değerini kaynağınızın bölgelerinden biriyle değiştirinyour-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 setx
ile 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.
Language Studio'nun Soruları ve konuşma dilini anlama bölümünde Konuşma dili anlama'yı seçin.
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.
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:
Sol taraftaki menüden Modeli eğit'i seçin.
Üstteki menüden Eğitim işi başlat'ı seçin.
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.
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.
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.
Eğit düğmesini seçin.
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:
Sol taraftaki menüden Model dağıtma'ya tıklayın.
Dağıtım ekle sihirbazını başlatmak için Dağıtım ekle'yi seçin.
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.
Model açılan listesinden eğitilmiş bir model seçin.
Dağıtım işini başlatmak için Dağıt'ı seçin.
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.
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
.NET CLI ile yeni projenize Konuşma SDK'sını yükleyin.
dotnet add package Microsoft.CognitiveServices.Speech
öğ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?"); } } } } }
içinde
Program.cs
vecluDeploymentName
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.Konuşma tanıma dilini değiştirmek için öğesini desteklenen başka bir dille değiştirin
en-US
. Örneğin,es-ES
İspanyolca (İspanya) için. Varsayılan dil, bir dil belirtmezseniz oluren-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_KEY
LANGUAGE_ENDPOINT
ve SPEECH_REGION
ortam değişkenlerini yukarıda açıklandığı gibi ayarladığınızdan LANGUAGE_KEY
emin 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
FromDefaultMicrophoneInput
kullanınFromWavFileInput
:using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
- MP4 gibi sıkıştırılmış ses dosyaları için GStreamer'ı yükleyin ve veya
PushAudioInputStream
kullanı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
- Azure aboneliği. Ücretsiz bir tane oluşturabilirsiniz.
- Azure portalında bir Dil kaynağı oluşturun.
- Dil kaynak anahtarını ve uç noktasını alın. Dil kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin.
- Azure portalında konuşma kaynağı oluşturun.
- Konuşma kaynak anahtarını ve bölgesini alın. Konuşma kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin.
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_ENDPOINT
SPEECH_KEY
ve SPEECH_REGION
adlı LANGUAGE_KEY
ortam 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ştirinyour-language-key
. - Ortam değişkenini
LANGUAGE_ENDPOINT
ayarlamak için değerini kaynağınızın bölgelerinden biriyle değiştirinyour-language-endpoint
. - Ortam değişkenini
SPEECH_KEY
ayarlamak için değerini kaynağınızın anahtarlarından biriyle değiştirinyour-speech-key
. - Ortam değişkenini
SPEECH_REGION
ayarlamak için değerini kaynağınızın bölgelerinden biriyle değiştirinyour-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 setx
ile 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.
Language Studio'nun Soruları ve konuşma dilini anlama bölümünde Konuşma dili anlama'yı seçin.
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.
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:
Sol taraftaki menüden Modeli eğit'i seçin.
Üstteki menüden Eğitim işi başlat'ı seçin.
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.
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.
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.
Eğit düğmesini seçin.
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:
Sol taraftaki menüden Model dağıtma'ya tıklayın.
Dağıtım ekle sihirbazını başlatmak için Dağıtım ekle'yi seçin.
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.
Model açılan listesinden eğitilmiş bir model seçin.
Dağıtım işini başlatmak için Dağıt'ı seçin.
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.
Visual Studio Community 2022'de adlı
SpeechRecognition
yeni bir C++ konsol projesi oluşturun.NuGet paket yöneticisiyle yeni projenize Konuşma SDK'sını yükleyin.
Install-Package Microsoft.CognitiveServices.Speech
öğ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 }
içinde
SpeechRecognition.cpp
vecluDeploymentName
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.Konuşma tanıma dilini değiştirmek için öğesini desteklenen başka bir dille değiştirin
en-US
. Örneğin,es-ES
İspanyolca (İspanya) için. Varsayılan dil, bir dil belirtmezseniz oluren-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_KEY
LANGUAGE_ENDPOINT
ve SPEECH_REGION
ortam değişkenlerini yukarıda açıklandığı gibi ayarladığınızdan LANGUAGE_KEY
emin 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
FromDefaultMicrophoneInput
kullanınFromWavFileInput
:auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
- MP4 gibi sıkıştırılmış ses dosyaları için GStreamer'ı yükleyin ve veya
PushAudioInputStream
kullanı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.