快速入門:使用交談式Language Understanding辨識意圖
參考文件 | 套件 (NuGet) | GitHub 上的其他範例
在本快速入門中,您將使用語音和語言服務從麥克風擷取的音訊資料辨識意圖。 具體而言,您將使用語音服務來辨識語音,並使用交談式Language Understanding (CLU) 模型來識別意圖。
重要
具有語音 SDK 1.25 版或更新版本的 C# 和 C++ 可使用交談式Language Understanding (CLU) 。
必要條件
設定 Azure 環境
語音 SDK 可以 NuGet 套件的形式取得,並且實作 .NET Standard 2.0。 您會在本指南的後續部分中安裝語音 SDK,但請先參閱 SDK 安裝指南,了解其他需求。
設定環境變數
此範例需要名為 LANGUAGE_KEY
、 LANGUAGE_ENDPOINT
、 SPEECH_KEY
和 的 SPEECH_REGION
環境變數。
您的應用程式必須經過驗證,才能存取 Azure AI 服務資源。 在生產環境中,請運用安全的方式來儲存和存取您的登入資訊。 例如,取得語音資源的索引碼後,在執行應用程式的本機電腦上,將索引碼寫入新的環境變數。
提示
請勿在程式碼中直接包含索引碼,且切勿公開張貼索引碼。 如需更多驗證選項,請參閱 Azure AI 服務安全性文章,例如Azure 金鑰保存庫。
若要設定環境變數,請開啟主控台視窗,並遵循作業系統和開發環境的指示。
- 若要設定
LANGUAGE_KEY
環境變數,請以您其中一個資源索引碼取代your-language-key
。 - 若要設定
LANGUAGE_ENDPOINT
環境變數,請將 取代your-language-endpoint
為您資源的其中一個區域。 - 若要設定
SPEECH_KEY
環境變數,請以您其中一個資源索引碼取代your-speech-key
。 - 若要設定
SPEECH_REGION
環境變數,請將 取代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
注意
如果您只需存取目前執行主控台的環境變數,您可以使用 set
設定環境變數,而不是 setx
。
新增環境變數之後,您可能需要重新開機任何需要讀取環境變數的執行中程式,包括主控台視窗。 例如,如果您使用 Visual Studio 做為編輯器,請在執行範例前重新啟動 Visual Studio。
建立交談式Language Understanding專案
建立 Language 資源之後,請在 Language Studio中建立交談語言理解專案。 專案是一個工作區域,可根據您的資料建置自訂 ML 模型。 專案只能由您和其他具有所使用語言資源存取權的人員存取。
移至 Language Studio,並以您的 Azure 帳戶登入。
建立交談語言理解專案
在本快速入門中,您可以下載 此範例家用自動化專案 並加以匯入。 此專案可以從使用者輸入預測預期的命令,例如開啟和關閉光線。
在 Language Studio 的 [理解問題和交談語言] 區段下,選取 [交談語言理解]。
這會帶您前往 [交談語言理解專案] 頁面。 在 [ 建立新專案] 按鈕旁,選取 [ 匯入]。
在出現的視窗中,上傳您想要匯入的 JSON 檔案。 確定您的檔案遵循支援的 JSON 格式。
一旦上傳完成,您就會登陸 [結構描述定義] 頁面。 針對本快速入門,已建置結構描述,且語句已加上意圖和實體的標籤。
定型模型
一般而言,在建立專案之後,您應該建置結構描述和標記語句。 針對本快速入門,我們已匯入備妥專案,其中具有已建置的結構描述和已標記的語句。
若要定型模型,則須啟動定型作業。 成功定型作業的輸出即是定型的模型。
若要從 Language Studio 內開始定型模型:
從左側功能表中選取 [定型模型]。
從頂端功能表中選取 [開始定型作業]。
選取 [定型新模型 ],然後在文字方塊中輸入新的模型名稱。 否則,若要以在新資料上定型的模型取代現有的模型,請選取 [覆寫現有的模型 ],然後選取現有的模型。 覆寫定型的模型是無法復原的,但在您部署新模型之前,不會影響已部署的模型。
選取定型模式。 您可以選擇 [標準定型] 來加快定型速度,但僅適用於英文。 或者,您可以選擇支援其他語言和多語系專案的 [進階定型],但需要較長的定型時間。 深入瞭解模型定型。
選取資料分割方法。 您可以選擇 [從定型資料自動分割測試集],使用此方法時,系統會根據指定的百分比,將您的表達分割為定型集與測試集。 或者,您可以選擇 [使用手動分割定型和測試資料],但只有在表達已新增至測試集,且您標記表達時,才會啟用此選項。
選取 [定型] 按鈕。
從清單中選取訓練作業識別碼。 隨即會出現一個面板,您可以在其中檢查此作業的訓練進度、作業狀態和其他詳細資料。
注意
- 只有成功完成的定型作業才會產生模型。
- 根據表達的計數,定型可能需要幾分鐘到幾小時的時間。
- 您一次只能執行一個定型作業。 在完成執行中作業之前,您無法在同一個專案內啟動其他定型工作。
- 用來定型模型的機器學習會定期更新。 若要在先前的 組態版本上定型,請選取 [ 選取這裡] 以 從 [ 開始訓練作業 ] 頁面變更,然後選擇舊版。
部署模型
定型模型後,您通常可檢閱其評估詳細資料。 在本快速入門中,您只需部署模型,並讓其可供您在 Language Studio 中試用,或者您可以呼叫預測 API。
若要從 Language Studio 內部署您的模型:
從左側功能表中,選取 [部署模型]。
選取 [新增部署 ] 以啟動 [新增部署 精靈]。
選取 [建立新的部署名稱 ] 以建立新的部署,並從下方的下拉式清單中指派定型的模型。 否則,您可以選取 [ 覆寫現有的部署名稱 ],以有效地取代現有部署所使用的模型。
注意
覆寫現有的部署不需要變更預測 API 呼叫,但您取得的結果將會以新指派的模型為基礎。
從 [模型] 下拉式清單中選取定型的 模型 。
選取 [部署 ] 以啟動部署作業。
部署成功之後,在其旁邊會出現到期日。 部署到期是已部署模型無法用於預測的時間,這通常會在定型設定到期的十二個月後發生。
您將在下一節中使用專案名稱和部署名稱。
從麥克風辨識意圖
請遵循下列步驟來建立新的主控台應用程式並安裝語音 SDK。
在您想要新專案的位置開啟命令提示字元,並使用 .NET CLI 建立主控台應用程式。 建議您在專案目錄中建立
Program.cs
檔案。dotnet new console
使用 .NET CLI 在新專案中安裝語音 SDK。
dotnet add package Microsoft.CognitiveServices.Speech
以下列程式碼取代
Program.cs
的內容。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?"); } } } } }
在 中
Program.cs
,將cluProjectName
和cluDeploymentName
變數設定為專案和部署的名稱。 如需如何建立 CLU 專案和部署的資訊,請參閱建立對話式Language Understanding專案。若要變更語音辨識語言,請以另一種支援的語言取代
en-US
。 例如,es-ES
代表西班牙文 (西班牙)。 如果您未指定語言,則預設語言為en-US
。 如需詳細了解如何識別所可能說出的多種語言之一,請參閱語言識別。
執行新的主控台應用程式,以從麥克風啟動語音辨識:
dotnet run
重要
請確定您已如上所述設定 LANGUAGE_KEY
、 LANGUAGE_ENDPOINT
、 SPEECH_KEY
和 SPEECH_REGION
環境變數。 如果您未設定這些變數,則範例將會失敗,並顯示錯誤訊息。
出現提示時,請用麥克風說話。 您說話的內容應該會以文字的形式輸出:
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"}]}]}}}.
注意
語音 SDK 1.26 版已新增透過 LanguageUnderstandingServiceResponse_JsonResult 屬性對 CLU 的 JSON 回應支援。
意圖會以最有可能的機率順序傳回。 以下是 JSON 輸出的格式化版本,其 topIntent
HomeAutomation.TurnOn
信賴分數為 0.97712576 (97.71%) 。 第二個最有可能的意圖可能是 HomeAutomation.TurnOff
信賴分數為 0.8985081 (84.31%) 。
{
"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"
}
]
}
]
}
}
}
備註
您現在已完成快速入門,以下是一些其他考量:
- 此範例使用
RecognizeOnceAsync
作業來轉換最長 30 秒的語句,或直到偵測到無聲為止。 如需較長音訊的連續辨識相關資訊 (包括多語系交談),請參閱如何辨識語音。 - 若要從音訊檔案辨識語音,請使用
FromWavFileInput
,而不是FromDefaultMicrophoneInput
:using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
- 針對 MP4 之類的壓縮音訊檔案,請安裝 GStreamer 並使用
PullAudioInputStream
或PushAudioInputStream
。 如需詳細資訊,請參閱如何使用壓縮的輸入音訊。
清除資源
您可以使用Azure 入口網站或Azure 命令列介面 (CLI) 來移除您所建立的語言和語音資源。
參考文件 | 套件 (NuGet) | GitHub 上的其他範例
在本快速入門中,您將使用語音和語言服務,從從麥克風擷取的音訊資料辨識意圖。 具體而言,您將使用語音服務來辨識語音,並使用交談式Language Understanding (CLU) 模型來識別意圖。
重要
使用語音 SDK 1.25 版或更新版本,C# 和 C++ 可以使用交談Language Understanding (CLU) 。
必要條件
設定 Azure 環境
語音 SDK 可以 NuGet 套件的形式取得,並且實作 .NET Standard 2.0。 您會在本指南的後續部分中安裝語音 SDK,但請先參閱 SDK 安裝指南,了解其他需求。
設定環境變數
此範例需要名為 LANGUAGE_KEY
、 LANGUAGE_ENDPOINT
、 SPEECH_KEY
和 的 SPEECH_REGION
環境變數。
您的應用程式必須經過驗證,才能存取 Azure AI 服務資源。 在生產環境中,請運用安全的方式來儲存和存取您的登入資訊。 例如,取得語音資源的索引碼後,在執行應用程式的本機電腦上,將索引碼寫入新的環境變數。
提示
請勿在程式碼中直接包含索引碼,且切勿公開張貼索引碼。 如需更多驗證選項,請參閱 Azure AI 服務安全性文章,例如Azure 金鑰保存庫。
若要設定環境變數,請開啟主控台視窗,並遵循作業系統和開發環境的指示。
- 若要設定
LANGUAGE_KEY
環境變數,請以您其中一個資源索引碼取代your-language-key
。 - 若要設定
LANGUAGE_ENDPOINT
環境變數,請將 取代your-language-endpoint
為您資源的其中一個區域。 - 若要設定
SPEECH_KEY
環境變數,請以您其中一個資源索引碼取代your-speech-key
。 - 若要設定
SPEECH_REGION
環境變數,請將 取代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
注意
如果您只需存取目前執行主控台的環境變數,您可以使用 set
設定環境變數,而不是 setx
。
新增環境變數之後,您可能需要重新開機任何需要讀取環境變數的執行中程式,包括主控台視窗。 例如,如果您使用 Visual Studio 做為編輯器,請在執行範例前重新啟動 Visual Studio。
建立交談式Language Understanding專案
建立 Language 資源之後,請在 Language Studio中建立交談語言理解專案。 專案是一個工作區域,可根據您的資料建置自訂 ML 模型。 專案只能由您和其他具有所使用語言資源存取權的人員存取。
移至 Language Studio,並以您的 Azure 帳戶登入。
建立交談語言理解專案
在本快速入門中,您可以下載 此範例家用自動化專案 並加以匯入。 此專案可以從使用者輸入預測預期的命令,例如開啟和關閉光線。
在 Language Studio 的 [理解問題和交談語言] 區段下,選取 [交談語言理解]。
這會帶您前往 [交談語言理解專案] 頁面。 在 [ 建立新專案] 按鈕旁,選取 [ 匯入]。
在出現的視窗中,上傳您想要匯入的 JSON 檔案。 確定您的檔案遵循支援的 JSON 格式。
一旦上傳完成,您就會登陸 [結構描述定義] 頁面。 針對本快速入門,已建置結構描述,且語句已加上意圖和實體的標籤。
定型模型
一般而言,在建立專案之後,您應該建置結構描述和標記語句。 針對本快速入門,我們已匯入備妥專案,其中具有已建置的結構描述和已標記的語句。
若要定型模型,則須啟動定型作業。 成功定型作業的輸出即是定型的模型。
若要從 Language Studio 內開始定型模型:
從左側功能表中選取 [定型模型]。
從頂端功能表中選取 [開始定型作業]。
選取 [定型新模型 ],然後在文字方塊中輸入新的模型名稱。 否則,若要以在新資料上定型的模型取代現有的模型,請選取 [覆寫現有的模型 ],然後選取現有的模型。 覆寫定型的模型是無法復原的,但在您部署新模型之前,不會影響已部署的模型。
選取定型模式。 您可以選擇 [標準定型] 來加快定型速度,但僅適用於英文。 或者,您可以選擇支援其他語言和多語系專案的 [進階定型],但需要較長的定型時間。 深入瞭解模型定型。
選取資料分割方法。 您可以選擇 [從定型資料自動分割測試集],使用此方法時,系統會根據指定的百分比,將您的表達分割為定型集與測試集。 或者,您可以選擇 [使用手動分割定型和測試資料],但只有在表達已新增至測試集,且您標記表達時,才會啟用此選項。
選取 [定型] 按鈕。
從清單中選取訓練作業識別碼。 隨即會出現一個面板,您可以在其中檢查此作業的訓練進度、作業狀態和其他詳細資料。
注意
- 只有成功完成的定型作業才會產生模型。
- 根據表達的計數,定型可能需要幾分鐘到幾小時的時間。
- 您一次只能執行一個定型作業。 在完成執行中作業之前,您無法在同一個專案內啟動其他定型工作。
- 用來定型模型的機器學習會定期更新。 若要在先前的 組態版本上定型,請選取 [選取這裡] 以 從 [ 開始定型作業 ] 頁面變更,然後選擇舊版。
部署模型
定型模型後,您通常可檢閱其評估詳細資料。 在本快速入門中,您只需部署模型,並讓其可供您在 Language Studio 中試用,或者您可以呼叫預測 API。
若要從 Language Studio 內部署您的模型:
從左側功能表中,選取 [部署模型]。
選取 [新增部署 ] 以啟動 [ 新增部署 精靈]。
選取 [建立新的部署名稱 ] 以建立新的部署,並從下列下拉式清單中指派定型的模型。 否則,您可以選取 [覆寫現有的部署名稱 ],以有效地取代現有部署所使用的模型。
注意
覆寫現有的部署不需要變更預測 API 呼叫,但您取得的結果將會以新指派的模型為基礎。
從 [ 模型 ] 下拉式清單中選取定型的模型。
選取 [部署 ] 以啟動部署作業。
部署成功之後,在其旁邊會出現到期日。 部署到期是已部署模型無法用於預測的時間,這通常會在定型設定到期的十二個月後發生。
您將在下一節中使用專案名稱和部署名稱。
從麥克風辨識意圖
請遵循下列步驟來建立新的主控台應用程式並安裝語音 SDK。
在名為
SpeechRecognition
的 Visual Studio Community 2022 中建立新的 C++ 主控台專案。使用 NuGet 套件管理員在新專案中安裝語音 SDK。
Install-Package Microsoft.CognitiveServices.Speech
以下列程式碼取代
SpeechRecognition.cpp
的內容:#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 }
在 中
SpeechRecognition.cpp
,將cluProjectName
和cluDeploymentName
變數設定為專案和部署的名稱。 如需如何建立 CLU 專案和部署的資訊,請參閱建立交談式Language Understanding專案。若要變更語音辨識語言,請以另一種支援的語言取代
en-US
。 例如,es-ES
代表西班牙文 (西班牙)。 如果您未指定語言,則預設語言為en-US
。 如需詳細了解如何識別所可能說出的多種語言之一,請參閱語言識別。
組建並執行新的主控台應用程式,以從麥克風啟動語音辨識。
重要
請確定您已設定 LANGUAGE_KEY
、 LANGUAGE_ENDPOINT
、 SPEECH_KEY
和 SPEECH_REGION
環境變數, 如上所述。 如果您未設定這些變數,則範例將會失敗,並顯示錯誤訊息。
出現提示時,請用麥克風說話。 您說話的內容應該會以文字的形式輸出:
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"}]}]}}}.
注意
語音 SDK 1.26 版已新增透過 LanguageUnderstandingServiceResponse_JsonResult 屬性對 CLU 的 JSON 回應支援。
意圖會以最有可能的機率順序傳回。 以下是 JSON 輸出的格式版本,其 topIntent
HomeAutomation.TurnOn
信賴分數為 0.97712576 (97.71%) 。 第二個最有可能的意圖可能是 HomeAutomation.TurnOff
信賴分數為 0.8985081 (84.31%) 。
{
"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"
}
]
}
]
}
}
}
備註
您現在已完成快速入門,以下是一些其他考量:
- 此範例使用
RecognizeOnceAsync
作業來轉換最長 30 秒的語句,或直到偵測到無聲為止。 如需較長音訊的連續辨識相關資訊 (包括多語系交談),請參閱如何辨識語音。 - 若要從音訊檔案辨識語音,請使用
FromWavFileInput
,而不是FromDefaultMicrophoneInput
:auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
- 針對 MP4 之類的壓縮音訊檔案,請安裝 GStreamer 並使用
PullAudioInputStream
或PushAudioInputStream
。 如需詳細資訊,請參閱如何使用壓縮的輸入音訊。
清除資源
您可以使用Azure 入口網站或Azure 命令列介面 (CLI) 來移除您所建立的語言和語音資源。
適用于 JAVA 的語音 SDK 不支援使用交談語言理解 (CLU) 的意圖辨識。 請從本文開頭選取另一種程式設計語言或 JAVA 參考和範例連結。