教學課程:透過聲音啟用 Bot
您可以使用 Azure AI 語音,透過聲音啟用聊天機器人。
在本教學課程中,您將使用 Microsoft Bot Framework,建立可回應您所說內容的 Bot。 您會將 Bot 部署到 Azure,並向 Bot Framework Direct Line Speech 頻道註冊。 然後,您將設定範例 Windows 用戶端應用程式,讓您對 Bot 說話並聽到其回應。
若要完成教學課程,您不需要廣泛的體驗或熟悉 Azure、Bot Framework Bot 或 Direct Line Speech。
您在本教學課程中所建立透過聲音啟用的聊天機器人會執行下列步驟:
- 範例用戶端應用程式已設定為連線到 Direct Line Speech 通道和 Echo Bot。
- 當使用者按下按鈕時,會從麥克風串流語音音訊。 或者,當使用自訂關鍵字時,會持續錄製音訊。
- 如果使用自訂關鍵字,則會在本機裝置上進行關鍵字偵測,以控制音訊串流到雲端。
- 範例用戶端應用程式使用語音 SDK 連線到 Direct Line Speech 頻道並串流音訊。
- (選擇性) 在服務上進行更高準確度的關鍵字驗證。
- 音訊會傳遞給語音辨識服務並轉譯為文字。
- 已辨識的文字會以 Bot Framework 活動的形式傳遞給 Echo Bot。
- 文字轉換語音服務會將回應文字轉換成音訊,並串流回到用戶端應用程式以進行播放。
注意
本教學課程中的步驟不需要付費服務。 如果您是新的 Azure 使用者,您可以使用免費 Azure 試用訂閱中的點數和語音服務的免費層來完成本教學課程。
本教學課程涵蓋下列內容:
- 建立新的 Azure 資源。
- 建置 Echo Bot 範例、進行測試,並部署到 Azure App Service。
- 向 Direct Line Speech 通道註冊您的 Bot。
- 建置並執行 Windows 語音助理用戶端,以與您的 Echo Bot 互動。
- 新增自訂關鍵字啟用。
- 了解如何變更已辨識和口語語音的語言。
必要條件
以下是完成本教學課程的必要條件:
- 配備運作正常之麥克風和喇叭 (或耳機) 的 Windows 10 電腦。
- Visual Studio 2017 或更新版本,並已安裝 [ASP.NET 與網頁程式開發] 工作負載。
- .NET Framework Runtime 4.6.1 或更新版本。
- Azure 帳戶。 免費註冊。
- GitHub 帳戶。
- 適用於 Windows 的 Git。
建立資源群組
您將在本教學課程中建立的用戶端應用程式會使用幾項 Azure 服務。 若要縮短從 Bot 收到回應的往返時間,您需要確定這些服務位於相同的 Azure 區域中。
本節將逐步引導您在美國西部區域中建立資源群組。 當為 Bot Framework、Direct Line Speech 頻道和語音服務建立個別資源時,您會使用此資源群組。
- 前往 Azure 入口網站頁面以建立資源群組。
- 請提供下列資訊:
- 將 [訂閱] 設定為 [免費試用] (您也可以使用現有的訂閱)。
- 針對 [資源群組] 輸入名稱。 建議使用 SpeechEchoBotTutorial-ResourceGroup。
- 從 [區域] 下拉式功能表,選取 [美國西部]。
- 選取 [檢閱和建立]。 您應該會看到一個橫幅,指出 [通過驗證]。
- 選取 建立。 建立資源群組可能需要幾分鐘的時間。
- 如同您稍後在本教學課程中建立的資源,建議將此資源群組釘選到儀表板以方便存取。 如果您想要釘選此資源群組,請選取名稱旁的圖釘圖示。
選擇 Azure 區域
確定您使用支援的 Azure 區域。 Direct Line Speech 通道使用具有神經和標準語音的文字轉換語音服務。 在這些 Azure 區域中會使用神經語音,而在這些 Azure 區域中則會使用標準語音 (即將淘汰)。
如需這些區域的詳細資訊,請參閱 Azure 位置。
建立資源
現在您已在支援的區域中有資源群組,下一步是為您將在本教學課程中使用的每項服務建立個別資源。
建立語音服務資源
- 前往 Azure 入口網站頁面以建立語音服務資源。
- 請提供下列資訊:
- 針對 [名稱],建議使用 SpeechEchoBotTutorial-Speech 作為資源的名稱。
- 針對 [訂閱],確定已選取 [免費試用]。
- 針對 [位置],選取 [美國西部]。
- 針對 [定價層],選取 [F0]。 這是免費層。
- 針對 [資源群組],選取 [SpeechEchoBotTutorial-ResourceGroup]。
- 輸入所有必要的資訊之後,請選取 [建立]。 建立資源可能需要幾分鐘的時間。
- 稍後在本教學課程中,您將需要此服務的訂閱金鑰。 您可以隨時從資源的 [概觀] 區域 (在 [管理金鑰] 下) 或 [金鑰] 區域存取這些金鑰。
此時,請確認您的資源群組 (SpeechEchoBotTutorial-ResourceGroup) 具有語音服務資源:
名稱 | 類型 | Location |
---|---|---|
SpeechEchoBotTutorial-Speech | Speech | 美國西部 |
建立 Azure App Service 方案
App Service 方案會定義一組計算資源,供要執行的 Web 應用程式使用。
- 前往 Azure 入口網站頁面以建立 Azure App Service 方案。
- 請提供下列資訊:
- 將 [訂閱] 設定為 [免費試用] (您也可以使用現有的訂閱)。
- 針對 [資源群組],選取 [SpeechEchoBotTutorial-ResourceGroup]。
- 針對 [名稱],建議使用 SpeechEchoBotTutorial-AppServicePlan 作為方案的名稱。
- 針對 [作業系統],選取 [Windows]。
- 針對 [區域],選取 [美國西部]。
- 針對 [定價層],確定選取 [標準 S1]。 這應該是預設值。 如果不是,請將 [作業系統] 設定為 [Windows]。
- 選取 [檢閱和建立]。 您應該會看到一個橫幅,指出 [通過驗證]。
- 選取 建立。 建立資源可能需要幾分鐘的時間。
此時,請確認您的資源群組 (SpeechEchoBotTutorial-ResourceGroup) 具有兩個資源:
名稱 | 類型 | Location |
---|---|---|
SpeechEchoBotTutorial-AppServicePlan | App Service 方案 | 美國西部 |
SpeechEchoBotTutorial-Speech | Azure AI 服務 | 美國西部 |
建置 Echo Bot
既然您已建立資源,就從 Echo Bot 範例開始,這會回應您已輸入的文字做為其回覆。 範例程式碼已設定為搭配 Direct Line Speech 頻道運作。將 Bot 部署到 Azure 之後,您會連線到此頻道。
注意
GitHub 的範例讀我檔案中有提供下列指示,以及 Echo Bot 的詳細資訊。
在電腦上執行 Bot 範例
複製範例存放庫:
git clone https://github.com/Microsoft/botbuilder-samples.git
開啟 Visual Studio。
從工具列,選取 [檔案]>[開啟]>[專案/解決方案]。 然後開啟專案解決方案:
samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
載入專案之後,請選取 [F5] 鍵以建置並執行專案。
在開啟的瀏覽器中,您會看到類似如下的畫面:
使用 Bot Framework Emulator 測試 Bot 範例
Bot Framework Emulator 是一項桌面應用程式,可讓 Bot 開發人員在本機 (或透過通道從遠端) 對其 Bot 進行測試和偵錯。 模擬器會接受鍵入的文字作為輸入 (而非語音)。 聊天機器人也會以文字回應。
請遵循下列步驟使用 Bot Framework Emulator 測試您在本機執行的 Echo Bot,並提供文字輸入和文字輸出。 當將 Bot 部署到 Azure 之後,您會使用語音輸入和語音輸出進行測試。
安裝 Bot Framework Emulator 4.3.0 版或更新版本。
開啟 Bot Framework Emulator,然後選取 [檔案]>[開啟 Bot]。
輸入 Bot 的 URL。 例如:
http://localhost:3978/api/messages
選取 Connect。
Bot 應該會以「您好,歡迎使用!」訊息歡迎您。 鍵入任何文字訊息,並確認您從 Bot 收到回應。
將 Bot 部署到 Azure App Service
下一步是將 Echo Bot 部署到 Azure。 有幾種方式可以部署 Bot,包括 Azure CLI 和部署範本。 本教學課程著重於直接從 Visual Studio 發佈。
注意
如果在執行下列步驟時未顯示 [發佈],請使用 Visual Studio 安裝程式新增 [ASP.NET 與網頁程式開發] 工作負載。
從 Visual Studio,開啟已設定為與 Direct Line Speech 通道搭配使用的 Echo Bot:
samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
在 [方案總管] 中,以滑鼠右鍵按一下 [EchoBot] 專案,然後選取 [發佈]。
在開啟的 [發佈] 視窗中:
- 選取 [Azure]>[下一步]。
- 選取 [Azure App Service (Windows)]>[下一步]。
- 透過綠色加號選取 [建立新的 Azure App Service]。
當 [App Service (Windows)] 視窗出現時:
選取 [新增帳戶],然後使用您的 Azure 帳戶認證進行登入。 如果您已登入,請從下拉式清單選取您的帳戶。
針對 [名稱],輸入 Bot 的全域唯一名稱。 此名稱會用來建立唯一的 Bot URL。
包含日期和時間的預設名稱會出現在方塊中 (例如 EchoBot20190805125647)。 針對本教學課程,您可以使用預設名稱。
針對 [訂閱],選取 [免費試用]。
針對 [資源群組],選取 [SpeechEchoBotTutorial-ResourceGroup]。
針對 [主控方案],選取 [SpeechEchoBotTutorial-AppServicePlan]。
選取 建立。 在最終精靈畫面上,選取 [完成]。
選取發行。 Visual Studio 會將 Bot 部署到 Azure。
您應該會在 Visual Studio 輸出視窗中看到成功訊息,如下所示:
Publish Succeeded. Web App was published successfully https://EchoBot20190805125647.azurewebsites.net/
您的預設瀏覽器應該會開啟並顯示一個頁面,指出:「您的 Bot 已準備就緒!」
此時,請確認 Azure 入口網站中的資源群組 (SpeechEchoBotTutorial-ResourceGroup)。 確認其中包含下列三個資源:
名稱 | 類型 | Location |
---|---|---|
EchoBot20190805125647 | 應用程式服務 | 美國西部 |
SpeechEchoBotTutorial-AppServicePlan | App Service 方案 | 美國西部 |
SpeechEchoBotTutorial-Speech | Azure AI 服務 | 美國西部 |
啟用 Web 通訊端
您需要稍微變更設定,以便 Bot 能夠使用 Web 通訊端與 Direct Line Speech 通道進行通訊。 請遵循下列步驟啟用 Web 通訊端:
- 前往 Azure 入口網站,然後選取您的 App Service 資源。 資源名稱應該類似於 EchoBot20190805125647 (您的唯一應用程式名稱)。
- 在左窗格的 [設定] 下,選取 [設定]。
- 選取一般設定索引標籤。
- 找到 [Web 通訊端] 的切換,並將其設定為 [開啟]。
- 選取 [儲存]。
提示
您可以使用 Azure App Service 頁面頂端的控制項來停止或重新啟動服務。 當進行疑難排解時,這項功能會很有用。
建立通道註冊
您建立 Azure App Service 資源來裝載 Bot 後,下一步是建立頻道註冊。 建立通道註冊是使用 Bot Framework 通道註冊 Bot 的必要條件,包括 Direct Line Speech 通道。 如果您想要深入了解 Bot 如何使用通道,請參閱將 Bot 連線到通道。
- 前往 Azure 入口網站頁面以建立 Azure Bot。
- 請提供下列資訊:
針對 [Bot 控制代碼],輸入 SpeechEchoBotTutorial-BotRegistration-####。 將 #### 取代為您選擇的許多選項。
注意
Bot 控制代碼必須為全域唯一。 如果您輸入一個號碼並收到錯誤訊息「無法使用要求的 Bot 識別碼」,請選擇不同的號碼。 下列範例使用 8726。
針對 [訂閱],選取 [免費試用]。
針對 [資源群組],選取 [SpeechEchoBotTutorial-ResourceGroup]。
針對 [位置],選取 [美國西部]。
針對 [定價層],選取 [F0]。
略過 [自動建立應用程式識別碼和密碼]。
- 在 [Azure Bot] 窗格底部,選取 [建立]。
- 建立資源之後,請在 Azure 入口網站中開啟您的 SpeechEchoBotTutorial-BotRegistration-#### 資源。
- 從 [設定] 區域,選取 [設定]。
- 針對 [訊息端點],輸入 Web 應用程式的 URL,並附加 /api/messages 路徑。 例如,如果您的全域唯一應用程式名稱是 EchoBot20190805125647,則您的訊息端點會是
https://EchoBot20190805125647.azurewebsites.net/api/messages/
。
此時,請確認 Azure 入口網站中的資源群組 (SpeechEchoBotTutorial-ResourceGroup)。 現在應該會顯示至少四個資源:
名稱 | 類型 | Location |
---|---|---|
EchoBot20190805125647 | 應用程式服務 | 美國西部 |
SpeechEchoBotTutorial-AppServicePlan | App Service 方案 | 美國西部 |
SpeechEchoBotTutorial-BotRegistration-8726 | 機器人服務 | 全球 |
SpeechEchoBotTutorial-Speech | Azure AI 服務 | 美國西部 |
重要
Azure AI Bot Service 資源會顯示 [全球] 區域,即使您選取 [美國西部] 也是一樣。 這是預期行為。
選擇性:在網路聊天中測試
[Azure Bot] 頁面在 [設定] 下有 [在網路聊天中測試] 選項。 因為網路聊天必須對您的 Bot 進行驗證,所以預設不會搭配您的 Bot 運作。
如果您想要使用文字輸入來測試已部署的 Bot,請使用下列步驟。 這些步驟是選擇性的,對於繼續進行本教學課程非為必要。
在 Azure 入口網站中,找到並開啟您的 EchoBotTutorial-BotRegistration-#### 資源。
從 [設定] 區域,選取 [設定]。 複製 [Microsoft 應用程式識別碼] 下的值。
開啟 Visual Studio EchoBot 方案。 在方案總管中,找到並雙擊 appsettings.json。
將 JSON 檔案中 MicrosoftAppId 旁的空字串取代為複製的識別碼值。
回到 Azure 入口網站。 在 [設定] 區域中,選取 [設定]。 然後選取 [Microsoft 應用程式識別碼] 旁的 [管理]。
選取 [新用戶端密碼]。 新增描述 (例如網路聊天),然後選取 [新增]。 複製新的祕密。
將 JSON 檔案中 MicrosoftAppPassword 旁的空字串取代為複製的祕密值。
儲存 JSON 檔案。 其看起來應該如這段程式碼所示:
{ "MicrosoftAppId": "YourAppId", "MicrosoftAppPassword": "YourAppPassword" }
重新發佈應用程式:在 Visual Studio 的 [方案總管] 中,以滑鼠右鍵按一下 [EchoBot] 專案,選取 [發佈],然後選取 [發佈] 按鈕。
註冊 Direct Line Speech 通道
現在可以向 Direct Line Speech 通道註冊您的 Bot。 此通道會在您的 Bot 與使用語音 SDK 編譯的用戶端應用程式之間建立連線。
在 Azure 入口網站中,找到並開啟您的 SpeechEchoBotTutorial-BotRegistration-#### 資源。
從 [設定] 區域,選取 [通道],然後執行下列步驟:
- 在 [更多通道] 下,選取 [Direct Line Speech]。
- 檢閱 [設定 Direct Line Speech] 頁面上的文字,然後展開 [認知服務帳戶] 下拉式功能表。
- 從功能表選取您稍早建立的語音服務資源 (例如 SpeechEchoBotTutorial-Speech),以將您的 Bot 與訂閱金鑰建立關聯。
- 略過其餘選擇性欄位。
- 選取 [儲存]。
從 [設定] 區域,選取 [設定],然後執行下列步驟:
- 選取 [啟用串流端點] 核取方塊。 您必須執行此步驟,才能建立以 Bot 與 Direct Line Speech 通道間 Web 通訊端為基礎的通訊協定。
- 選取 [儲存]。
如果您想要深入了解,請參閱將 Bot 連線到 Direct Line Speech。
執行 Windows 語音助理用戶端
Windows 語音助理用戶端是 C# 中的 Windows Presentation Foundation (WPF) 應用程式,其使用語音 SDK 透過 Direct Line Speech 通道來管理與 Bot 的通訊。 您可以使用它來與 Bot 互動並測試,然後撰寫自訂用戶端應用程式。 這是開放原始碼,因此您能夠下載可執行檔並加以執行,或自行建置。
Windows 語音助理用戶端有一個簡單的 UI,可讓您設定與 Bot 的連線、檢視文字交談、以 JSON 格式檢視 Bot Framework 活動,並顯示調適型卡片。 此外,還支援使用自訂關鍵字。 您將使用此用戶端與 Bot 交談並接收語音回應。
注意
此時,請確認您的麥克風和喇叭已啟用且正常運作。
遵循提供的指示執行下列其中一項:
- 下載並執行 .zip 套件中預先建置的可執行檔
- 複製存放庫並建置專案來自行建置可執行檔
遵循 GitHub 存放庫中的指示來開啟 VoiceAssistantClient.exe 用戶端應用程式,並將其設定為連線到 Bot。
選取 [重新連線],並確定您看到「新的交談已開始 - 請鍵入或按下麥克風按鈕」訊息。
讓我們測試一下。選取麥克風按鈕,並以英文說出幾個字。 當您說話時,會顯示已辨識的文字。 當您說完話時,Bot 會以自己的語音回覆,說出 "echo" 並接著已辨識的單字。
您也可以使用文字與 Bot 進行通訊。 只要在底部列中鍵入文字即可。
針對 Windows 語音助理用戶端中的錯誤進行疑難排解
如果您在主要應用程式視窗中收到錯誤訊息,請使用下表來找出問題並進行疑難排解:
訊息 | 您應該怎麼做? |
---|---|
錯誤 (AuthenticationFailure):WebSocket 升級失敗,發生驗證錯誤 (401)。 檢查是否有正確的資源金鑰 (或授權權杖) 和區域名稱 | 在應用程式的 [設定] 頁面上,確定您已正確輸入金鑰及其區域。 |
錯誤 (ConnectionFailure):遠端主機已關閉連線。 錯誤碼:1011。 錯誤詳細資料:在傳送訊息之前無法連線到 Bot | 確定您已選取 [啟用串流端點] 核取方塊及/或開啟 Web 通訊端。 確定 Azure App Service 正在執行。 如果是,請嘗試重新加以啟動。 |
錯誤 (ConnectionFailure):遠端主機已關閉連線。 錯誤碼:1002。 錯誤詳細資料:伺服器傳回狀態碼 '503',但應該傳回狀態碼 '101' | 確定您已選取 [啟用串流端點] 核取方塊及/或開啟 Web 通訊端。 確定 Azure App Service 正在執行。 如果是,請嘗試重新加以啟動。 |
錯誤 (ConnectionFailure):遠端主機已關閉連線。 錯誤碼:1011。 錯誤詳細資料:回應狀態碼未表示成功:500 (InternalServerError) | 您的 Bot 在其輸出活動的 speak 欄位中指定了神經語音,但與您資源金鑰相關聯的 Azure 區域不支援神經語音。 請參閱神經語音和標準語音。 |
如果表格中的動作無法解決您的問題,請參閱語音助理:常見問題集。 如果您在執行本教學課程中的所有步驟之後仍無法解決問題,請在語音助理 GitHub 頁面上輸入新的問題。
連線逾時的注意事項
如果您已連線到 Bot 且過去五分鐘內未發生任何活動,則服務會自動關閉與用戶端和 Bot 的 Web 通訊端連線。 這是原廠設定。 底部列上會出現一則訊息:「使用中連線已逾時,但可依需求重新連線」。
您不需要選取 [重新連線] 按鈕。 按下麥克風按鈕並開始交談,輸入文字訊息,或說關鍵字 (如果已啟用)。 系統會自動重新建立連線。
檢視 Bot 活動
每個 Bot 都會傳送和接收活動訊息。 在 Windows 語音助理用戶端的 [活動記錄] 視窗中,加上時間戳記的記錄會顯示用戶端從 Bot 收到的每個活動。 您也可以使用 DialogServiceConnector.SendActivityAsync 方法,查看用戶端傳送到 Bot 的活動。 當選取記錄項目時,會將相關聯活動的詳細資料顯示為 JSON。
以下是用戶端所收到活動的範例 JSON:
{
"attachments":[],
"channelData":{
"conversationalAiData":{
"requestInfo":{
"interactionId":"8d5cb416-73c3-476b-95fd-9358cbfaebfa",
"version":"0.2"
}
}
},
"channelId":"directlinespeech",
"conversation":{
"id":"129ebffe-772b-47f0-9812-7c5bfd4aca79",
"isGroup":false
},
"entities":[],
"from":{
"id":"SpeechEchoBotTutorial-BotRegistration-8726"
},
"id":"89841b4d-46ce-42de-9960-4fe4070c70cc",
"inputHint":"acceptingInput",
"recipient":{
"id":"129ebffe-772b-47f0-9812-7c5bfd4aca79|0000"
},
"replyToId":"67c823b4-4c7a-4828-9d6e-0b84fd052869",
"serviceUrl":"urn:botframework:websocket:directlinespeech",
"speak":"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='en-US'><voice name='en-US-JennyNeural'>Echo: Hello and welcome.</voice></speak>",
"text":"Echo: Hello and welcome.",
"timestamp":"2019-07-19T20:03:51.1939097Z",
"type":"message"
}
若要深入了解 JSON 輸出中傳回的內容,請參閱活動中的欄位 (英文)。 對於本教學課程,您可以將焦點放在 text 和 speak 欄位。
檢視語音 SDK 呼叫的用戶端原始程式碼
Windows 語音助理用戶端使用 NuGet 套件 Microsoft.CognitiveServices.Speech,其中包含語音 SDK。 開始檢閱範例程式碼的一個好位置是檔案 VoiceAssistantClient\MainWindow.xaml.cs 中的方法 InitSpeechConnector()
,這會建立下列兩個語音 SDK 物件:
- DialogServiceConfig:適用於如資源金鑰及其區域的組態設定。
- DialogServiceConnector:用來管理通道連線和用戶端訂閱事件,以處理辨識的語音和 Bot 回應。
新增自訂關鍵字啟用
語音 SDK 支援自訂關鍵字啟用。 類似於 Microsoft 助理的「嗨 Cortana 」,您可以撰寫應用程式來持續接聽您所選擇的關鍵字。 請記住,關鍵字可以是單字或多字片語。
注意
「關鍵字」一詞通常會與「喚醒字」一詞交替使用。 您可能會在 Microsoft 文件中同時看到使用了這兩個字。
關鍵字偵測會發生在用戶端應用程式上。 如果您正在使用關鍵字,則只有在偵測到關鍵字時,才會將音訊串流到 Direct Line Speech 通道。 Direct Line Speech 頻道包含稱為「關鍵字驗證」的元件,其會在雲端中執行更複雜的處理,以確認您選擇的關鍵字位於音訊資料流的開頭。 如果關鍵字驗證成功,則通道會與 Bot 進行通訊。
請遵循下列步驟建立關鍵字模型,設定 Windows 語音助理用戶端來使用此模型,然後使用 Bot 加以測試:
- 使用語音服務來建立自訂關鍵字.
- 解壓縮您在上一個步驟中下載的模型檔案。 它應該針對您的關鍵字命名。 您想要尋找名為 kws.table 的檔案。
- 在 Windows 語音助理用戶端中,尋找 [設定] 功能表 (右上方齒輪圖示)。 針對 [模型檔案路徑],輸入步驟 2 中 kws.table 檔案的完整路徑名稱。
- 選取 [啟用] 核取方塊。 您應該會在複選框旁看到此訊息:「將在下一個連線時接聽關鍵詞」。如果您已提供錯誤的檔案或無效的路徑,您應該會看到錯誤訊息。
- 輸入 [訂閱金鑰] 和 [訂閱金鑰區域] 的值,然後選取 [確定] 以關閉 [設定] 功能表。
- 選取 [重新連線]。 您應該會看到一則訊息,指出:「新的交談已開始 - 請鍵入、按下麥克風按鈕,或說出關鍵字」。應用程式現在會持續接聽。
- 說出以關鍵字開頭的任何片語。 例如:「{your keyword},現在時間幾點?」在語句關鍵詞之後,您不需要暫停。 當您完成時,會發生兩件事:
- 您會看到自己說出的內容謄寫。
- 您會聽到 Bot 的回應。
- 繼續試驗 Bot 支援的三種輸入類型:
- 在底部列輸入文字
- 按下麥克風圖示並說話
- 說出以關鍵字開頭的片語
檢視啟用關鍵字偵測的原始程式碼
在 Windows 語音助理用戶端的原始程式碼中,使用這些檔案來檢閱啟用關鍵字偵測的程式碼:
- VoiceAssistantClient\Models.cs 包含語音 SDK 方法 KeywordRecognitionModel.fromFile() 的呼叫。 此方法會用來將磁碟上本機檔案中的模型具現化。
- VoiceAssistantClient\MainWindow.xaml.cs 包含語音 SDK 方法 DialogServiceConnector.StartKeywordRecognitionAsync() 的呼叫。 此方法會啟用持續關鍵字偵測。
選擇性:變更語言和 Bot 語音
您所建立的 Bot 會接聽英文且以該語言回應,並以美式英文做為文字轉換語音的預設語音。 不過,您不一定要使用英文或預設語音。
在本節中,您將瞭解如何變更 Bot 所接聽和回應的語言。 您也將瞭解如何針對該語言選取不同的語音。
變更語言
您可以從語音轉換文字表格所述的任何語言中進行選擇。 下列範例會將語言變更為德文。
開啟 Windows 語音助理用戶端應用程式,選取 [設定] 按鈕 (右上方齒輪圖示),然後在 [語言] 欄位中輸入 de-de。 這是語音轉換文字表格中所述的地區設定值。
此步驟會設定要辨識的口語語言,並覆寫預設的 en-us。 其也會指示 Direct Line Speech 通道使用預設德文語音進行 Bot 回覆。
關閉 [設定] 頁面,然後選取 [重新連線] 按鈕以建立與您 Echo Bot 的新連線。
選取麥克風按鈕,然後以德文說出片語。 已辨識的文字會隨即出現,而且 Echo Bot 會以預設的德文語音回覆。
變更預設的 Bot 語音
如果 Bot 以語音合成標記語言 (SSML) 的形式指定回覆,而非簡單的文字,您可以選取文字轉換語音的語音並控制發音。 Echo Bot 不會使用 SSML,但您可以輕鬆地修改程式碼來這麼做。
下列範例會將 SSML 新增至 Echo Bot 回覆,以使用德文語音 de-DE-RalfNeural
(男性語音),而非預設的女性語音。 請參閱您語言支援的標準語音清單和神經語音清單。
開啟 samples\csharp_dotnetcore\02.echo-bot\echo-bot.cs。
尋找這幾行:
var replyText = $"Echo: {turnContext.Activity.Text}"; await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
將其取代為這段程式碼:
var replyText = $"Echo: {turnContext.Activity.Text}"; var replySpeak = @"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='de-DE'> <voice name='de-DE-RalfNeural'>" + $"{replyText}" + "</voice></speak>"; await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replySpeak), cancellationToken);
在 Visual Studio 中建置您的解決方案,並修正任何建置錯誤。
方法 MessageFactory.Text
中的第二個引數會設定 Bot 回覆中的活動 speak 欄位。 在先前的變更中,這已從簡單文字取代為 SSML,以便指定非預設的德文語音。
重新部署 Bot
現在您已對 Bot 進行必要的變更,下一步是將其重新發佈到 Azure App Service 並試看看:
在 [方案總管] 視窗中,以滑鼠右鍵按一下 [EchoBot] 專案,然後選取 [發佈]。
您先前的部署設定已載入為預設值。 選取 EchoBot20190805125647 - Web Deploy 旁的 [發佈]。
[發佈成功] 訊息會出現在 Visual Studio 的 [輸出] 視窗中,而且網頁會開啟並顯示訊息「您的 Bot 已準備就緒!」
開啟 Windows 語音助理用戶端應用程式。 選取 [設定] 按鈕 (右上方齒輪圖示),並確定 [語言] 欄位中仍然顯示 de-de。
遵循執行 Windows 語音助理用戶端中的指示與您新部署的 Bot 重新連線,以新的語言說話,並聽到您的 Bot 以該語言的新語音回覆。
清除資源
如果您不想要繼續使用在本教學課程中部署的 Echo Bot,您可以刪除 Azure 資源群組來將它及其所有相關聯的 Azure 資源移除:
- 在 Azure 入口網站中,選取 [Azure 服務] 下的 [資源群組]。
- 找到 SpeechEchoBotTutorial-ResourceGroup 資源群組。 選取三個點 (...)。
- 選取 [刪除資源群組]。
探索文件
- 部署到您附近的 Azure 區域,以查看 Bot 回應時間的改善。
- 部署到支援高品質文字轉換語音神經語音的 Azure 區域。
- 取得與 Direct Line Speech 通道建立關聯的定價:
- Bot 服務定價
- 語音服務
- 建置並部署您自己透過聲音啟用的 Bot: