教學課程:啟用 Bot 語音功能

您可以使用 Azure AI 語音,透過聲音啟用聊天機器人。

在本教學課程中,您會使用 Microsoft Bot Framework 來建立回應您所說的 Bot。 您可以將 Bot 部署至 Azure,並將其註冊至 Bot Framework Direct Line Speech 通道。 然後,您可以設定適用於 Windows 的範例用戶端應用程式,讓您與 Bot 交談,並聽到其與您說話。

若要完成本教學課程,您不需要豐富的體驗或熟悉 Azure、Bot Framework Bot 或 Direct Line Speech。

您在本教學課程中建立的啟用語音聊天機器人會遵循下列步驟:

  1. 範例用戶端應用程式已設定為連線到 Direct Line Speech 通道和回應 Bot。
  2. 當使用者按下按鈕時,語音音訊會從麥克風串流。 或者,使用自定義關鍵詞時,會持續錄製音訊。
  3. 如果使用自定義關鍵詞,則會在本機裝置上偵測關鍵詞,將音訊串流處理至雲端。
  4. 範例用戶端應用程式會使用語音 SDK 來連線到 Direct Line Speech 通道和串流音訊。
  5. 您可以選擇性地在服務上執行較高精確度的關鍵詞驗證。
  6. 音訊會傳遞至語音辨識服務,並轉譯為文字。
  7. 辨識的文字會以 Bot Framework 活動的形式傳遞至回應 Bot。
  8. 文字轉換語音服務會將回應文字轉換成音訊,並串流回到用戶端應用程式以進行播放。

Diagram that illustrates the flow of the Direct Line Speech channel.

注意

本教學課程中的步驟不需要付費服務。 身為新的 Azure 使用者,您可以使用免費的 Azure 試用版訂用帳戶和語音服務的免費層點數來完成本教學課程。

以下是本教學課程涵蓋的內容:

  • 建立新的 Azure 資源。
  • 建置、測試及部署echo Bot範例以 Azure App 服務。
  • 使用 Direct Line Speech 通道註冊 Bot。
  • 建置並執行 Windows 語音助理用戶端,以與您的回應 Bot 互動。
  • 新增自訂關鍵詞啟用。
  • 瞭解如何變更已辨識和口語語音的語言。

必要條件

以下是完成本教學課程所需的專案:

建立資源群組

您在本教學課程中建立的用戶端應用程式會使用少數 Azure 服務。 若要減少 Bot 回應的來回時間,您想要確定這些服務位於相同的 Azure 區域中。

本節將逐步引導您在美國西部區域建立資源群組。 當您為 Bot Framework、Direct Line Speech 通道和語音服務建立個別資源時,請使用此資源群組。

  1. 移至建立資源群組的 [Azure 入口網站] 頁面。
  2. 提供下列資訊:
    • 將 [訂用帳戶] 設定[免費試用]。 (您也可以使用現有的訂用帳戶。
    • 輸入資源組。 我們建議 使用 SpeechEchoBotTutorial-ResourceGroup
    • 從 [ 區域] 下拉功能表中,選取 [美國西部]。
  3. 選取 [檢閱和建立]。 您應該會看到一個橫幅,上面寫著通過的驗證。
  4. 選取 建立。 建立資源群組可能需要幾分鐘的時間。
  5. 如同您稍後在本教學課程中建立的資源,最好將此資源群組釘選到您的儀錶板,以便輕鬆存取。 如果您想要釘選此資源群組,請選取名稱旁的釘選圖示。

選擇 Azure 區域

請確定您使用 支援的 Azure 區域。 Direct Line Speech 通道使用具有神經和標準語音的文字轉換語音服務。 神經語音會用於 這些 Azure 區域,而標準語音(淘汰)則用於 這些 Azure 區域

如需區域的詳細資訊,請參閱 Azure 位置

建立資源

既然您已在支持區域中有資源群組,下一個步驟是為每個您將在本教學課程中使用的服務建立個別資源。

建立語音服務資源

  1. 移至建立語音服務資源的 Azure 入口網站 頁面。
  2. 提供下列資訊:
    • 針對 [名稱],建議 使用SpeechEchoBotTutorial-Speech 作為資源的名稱。
    • 針對 [ 訂用帳戶],請確定 已選取 [免費試用 ]。
    • 針對 [ 位置],選取 [美國西部]。
    • 針對 [ 定價層],選取 [F0]。 這是免費層。
    • 針對 [ 資源群組],選取 [SpeechEchoBotTutorial-ResourceGroup]。
  3. 輸入所有必要的信息之後,請選取 [ 建立]。 建立資源可能需要幾分鐘的時間。
  4. 在本教學課程稍後,您需要此服務的訂用帳戶密鑰。 您可以隨時從資源的 [概觀] 區域或 [金鑰] 區域存取這些密鑰

此時,請檢查您的資源群組 (SpeechEchoBotTutorial-ResourceGroup) 是否有語音服務資源:

名稱 類型 Location
SpeechEchoBotTutorial-Speech Speech 美國西部

建立 Azure App Service 方案

App Service 方案會定義一組計算資源,供要執行的 Web 應用程式使用。

  1. 移至 [Azure 入口網站] 頁面,以建立 Azure App 服務 方案
  2. 提供下列資訊:
    • 將 [訂用帳戶] 設定[免費試用]。 (您也可以使用現有的訂用帳戶。
    • 針對 [ 資源群組],選取 [SpeechEchoBotTutorial-ResourceGroup]。
    • 針對 [名稱],建議 使用SpeechEchoBotTutorial-AppServicePlan 作為方案的名稱。
    • 針對 [操作系統],選取 [Windows]。
    • 針對 [ 區域],選取 [美國西部]。
    • 針對 [定價層],請確定 已選取 [標準 S1 ]。 這應該是預設值。 如果不是,請將 [操作系統] 設定[Windows]。
  3. 選取 [檢閱和建立]。 您應該會看到一個橫幅,上面寫著通過的驗證。
  4. 選取 建立。 建立資源可能需要幾分鐘的時間。

此時,請檢查您的資源群組 (SpeechEchoBotTutorial-ResourceGroup) 有兩個資源:

名稱 類型 Location
SpeechEchoBotTutorial-AppServicePlan App Service 方案 美國西部
SpeechEchoBotTutorial-Speech Azure AI 服務 美國西部

建置回應 Bot

現在您已建立資源,請從回應 Bot 範例開始,其會回應您輸入作為回應的文字。 範例程式代碼已設定為使用 Direct Line Speech 通道,您可以在將 Bot 部署至 Azure 之後連線。

注意

下列指示以及有關回應 Bot 的詳細資訊,可在 GitHub 上的範例自述檔取得。

在您的電腦上執行 Bot 範例

  1. 複製範例存放庫:

    git clone https://github.com/Microsoft/botbuilder-samples.git
    
  2. 開啟 Visual Studio。

  3. 從工具列中,選取 [檔案>開啟>專案/方案]。 然後開啟專案方案:

    samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
    
  4. 載入項目之後,請選取 F5 鍵來建置並執行專案。

    在開啟的瀏覽器中,您會看到類似以下畫面:

    Screenshot that shows the EchoBot page with the message that your bot is ready.

使用 Bot Framework 模擬器測試 Bot 範例

Bot Framework 模擬器 是桌面應用程式,可讓 Bot 開發人員在本機測試及偵錯其 Bot(或透過通道遠端)。 模擬器接受輸入的文字作為輸入(而非語音)。 Bot 也會以文字回應。

請遵循下列步驟,使用 Bot Framework 模擬器來測試在本機執行的回應 Bot,以及文字輸入和文字輸出。 將 Bot 部署至 Azure 之後,您將使用語音輸入和語音輸出來測試它。

  1. 安裝 Bot Framework Emulator 4.3.0 版或更新版本。

  2. 開啟 Bot Framework 模擬器,然後選取 [檔案>開啟 Bot]。

  3. 輸入 Bot 的 URL。 例如:

    http://localhost:3978/api/messages
    
  4. 選取 Connect

  5. Bot 應該會使用 「Hello and welcome!“ 訊息來迎接您。 輸入任何簡訊,並確認您從 Bot 取得回應。

    這是與回應 Bot 的通訊交換可能看起來像這樣: Screenshot shows the Bot Framework Emulator.

將 Bot 部署至 Azure App 服務

下一個步驟是將回應 Bot 部署至 Azure。 有幾種方式可以部署 Bot,包括 Azure CLI部署範本。 本教學課程著重於直接從 Visual Studio 發佈。

注意

如果您執行下列步驟時未出現 Publish,請使用 Visual Studio 安裝程式 來新增 ASP.NET 和 Web 開發工作負載。

  1. 從 Visual Studio 開啟已設定以搭配 Direct Line Speech 通道使用的回應 Bot:

    samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
    
  2. 在 [方案總管] 中,以滑鼠右鍵按兩下 EchoBot 專案,然後選取 [發佈]。

  3. 開啟的 [ 發佈] 視窗中:

    1. 選取 [Azure>下一步]。
    2. 選取 [Azure App 服務 [Windows][>下一步]。
    3. 選取 [以綠色加號建立新的 Azure App 服務
  4. 當 App Service (Windows) 視窗出現時:

    • 選取 [新增帳戶],然後使用您的 Azure 帳戶認證登入。 如果您已經登入,請從下拉式清單中選取您的帳戶。

    • 針對 [ 名稱],輸入 Bot 的全域唯一名稱。 此名稱是用來建立唯一的 Bot URL。

      包含日期和時間的預設名稱會出現在方塊中(例如 EchoBot20190805125647)。 您可以使用本教學課程的預設名稱。

    • 針對 [ 訂用帳戶],選取 [ 免費試用]。

    • 針對 [ 資源群組],選取 [SpeechEchoBotTutorial-ResourceGroup]。

    • 針對 [ 主控方案],選取 [SpeechEchoBotTutorial-AppServicePlan]。

  5. 選取 建立。 在最後一個精靈畫面上,選取 [ 完成]。

  6. 選取發行。 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 套接字:

  1. 移至 Azure 入口網站,然後選取您的 App Service 資源。 資源名稱應該類似於 EchoBot20190805125647 (您的唯一應用程式名稱)。
  2. 在左窗格的 [設定] 底下,選取 [組態]。
  3. 選取一般設定索引標籤。
  4. 尋找 Web 套接字的切換,並將其設定為 [開啟]。
  5. 選取 [儲存]。

提示

您可以使用 Azure App 服務 頁面頂端的控制項來停止或重新啟動服務。 當您進行疑難解答時,這項功能可能會派上用場。

建立通道註冊

建立 Azure App 服務 資源來裝載 Bot 之後,下一個步驟是建立通道註冊。 建立通道註冊是向 Bot Framework 通道註冊 Bot 的必要條件,包括 Direct Line Speech 通道。 如果您想要深入瞭解 Bot 如何使用通道,請參閱將 Bot 連線 至通道

  1. 移至建立 Azure Bot 的 [Azure 入口網站] 頁面。
  2. 提供下列資訊:
    • 針對 Bot 句柄,輸入 SpeechEchoBotTutorial-BotRegistration-### 。 將取代 #### 為您選擇的許多選項。

      注意

      Bot 句柄必須是全域唯一的。 如果您輸入一個 ,並收到錯誤訊息「要求的 Bot 識別碼無法使用」,請挑選不同的號碼。 下列範例使用 8726

    • 針對 [ 訂用帳戶],選取 [ 免費試用]。

    • 針對 [ 資源群組],選取 [SpeechEchoBotTutorial-ResourceGroup]。

    • 針對 [ 位置],選取 [美國西部]。

    • 針對 [ 定價層],選取 [F0]。

    • 忽略 自動建立應用程式識別碼和密碼

  3. 在 [Azure Bot] 窗格底部,選取 [建立]。
  4. 建立資源之後,請在 Azure 入口網站 中開啟 SpeechEchoBotTutorial-BotRegistration-## 資源
  5. 從 [設定] 區域中,選取 [組態]。
  6. 針對 [ 傳訊端點],輸入 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,請使用下列步驟。 這些步驟是選擇性的,您不需要繼續進行本教學課程。

  1. 在 Azure 入口網站,尋找並開啟 EchoBotTutorial-BotRegistration-## 資源。

  2. 從 [設定] 區域中,選取 [組態]。 複製 Microsoft 應用程式識別子底下的值。

  3. 開啟 Visual Studio EchoBot 解決方案。 在方案總管中,找到並雙擊 appsettings.json

  4. 將 JSON 檔案中 MicrosoftAppId的空字串取代為複製的識別碼值。

  5. 回到 Azure 入口網站。 在 [設定] 區域中,選取 [設定]。 然後選取 [Microsoft 應用程式識別符] 旁的 [管理]。

  6. 選取 [新用戶端密碼]。 新增描述(例如 網路聊天),然後選取 [ 新增]。 複製新的秘密。

  7. 將 JSON 檔案中 MicrosoftAppPassword的空字串取代為複製的秘密值。

  8. 儲存 JSON 檔案。 它看起來應該像下列程式代碼:

    {
      "MicrosoftAppId": "YourAppId",
      "MicrosoftAppPassword": "YourAppPassword"
    }
    
  9. 重新發佈應用程式:以滑鼠右鍵按兩下Visual Studio中的 EchoBot 專案 方案總管,選取 [發佈],然後選取 [發佈] 按鈕。

註冊 Direct Line Speech 通道

現在是時候向 Direct Line Speech 通道註冊 Bot 了。 此通道會建立 Bot 與使用語音 SDK 編譯的用戶端應用程式之間的連線。

  1. 在 Azure 入口網站,尋找並開啟 SpeechEchoBotTutorial-BotRegistration-#### 資源。

  2. 從 [設定] 區域中,選取 [通道],然後採取下列步驟:

    1. 在 [更多頻道] 下,選取 [直接線路語音]。
    2. 檢閱 [ 設定直接線路語音 ] 頁面上的文字,然後展開 [認知服務帳戶] 下拉功能表。
    3. 從功能表中選取您稍早建立的語音服務資源(例如 SpeechEchoBotTutorial-Speech),將您的 Bot 與您的訂用帳戶密鑰產生關聯。
    4. 忽略其餘的選擇性欄位。
    5. 選取 [儲存]。
  3. 從 [設定] 區域中,選取 [設定],然後採取下列步驟:

    1. 選取 [ 啟用串流端點] 複選框。 若要建立以 Bot 與 Direct Line Speech 通道之間的 Web 套接字為基礎的通訊協定,必須執行此步驟。
    2. 選取 [儲存]。

如果您想要深入瞭解,請參閱將 Bot 連線 至 Direct Line Speech

執行 Windows 語音助理用戶端

Windows 語音助理用戶端是 C# 中的 Windows Presentation Foundation (WPF) 應用程式,會使用 語音 SDK 透過 Direct Line Speech 通道管理與 Bot 的通訊。 在撰寫自定義用戶端應用程式之前,請先使用它來與 Bot 互動並測試。 開放原始碼,因此您可以下載可執行檔並加以執行,或自行建置。

Windows 語音助理用戶端具有簡單的 UI,可讓您設定 Bot 的連線、檢視文字交談、以 JSON 格式檢視 Bot Framework 活動,以及顯示調適型卡片。 它也支援使用自定義關鍵詞。 您可以使用此用戶端與 Bot 交談,並接收語音回應。

注意

此時,請確認您的麥克風和喇叭已啟用且可運作。

  1. 移至 Windows 語音助理用戶端的 GitHub 存放庫。

  2. 請依照所提供的指示操作下列其中一項:

    • 下載.zip套件中預先建置的可執行檔以執行
    • 藉由複製存放庫並建置專案,自行建置可執行檔
  3. 依照 GitHub 存放庫中的指示,開啟VoiceAssistantClient.exe客戶端應用程式,並將其設定為連線到 Bot。

  4. 選取 [ 重新連線 ],並確定您看到「已啟動新對話 - 輸入或按下麥克風按鈕」訊息。

  5. 讓我們測試一下。選取麥克風按鈕,並以英文說幾句話。 辨識的文字會顯示在您說話時。 當您完成說話時,Bot 會以自己的聲音回復,並說「回聲」,後面接著辨識的字組。

    您也可以使用文字與 Bot 通訊。 只要在底部列輸入文字即可。

針對 Windows 語音助理用戶端中的錯誤進行疑難解答

如果您在主應用程式視窗中收到錯誤訊息,請使用下表來識別並針對問題進行疑難解答:

訊息 您應該怎麼做?
錯誤 (AuthenticationFailure) :WebSocket 升級失敗,發生驗證錯誤 (401)。 檢查正確的資源金鑰(或授權令牌)和區域名稱 應用程式的 [設定] 頁面上,確定您已正確輸入密鑰及其區域。
錯誤 (連線 ionFailure) :遠端主機已關閉 連線 ion。 錯誤碼:1011。 錯誤詳細數據:在傳送訊息之前,我們無法連線到 Bot 請確定您已 選取 [啟用串流端點] 複選框 和/或 開啟 Web 套接字
請確定 Azure App 服務 正在執行。 如果是,請嘗試重新啟動它。
錯誤 (連線 ionFailure) :遠端主機已關閉 連線 ion。 錯誤碼:1002。 錯誤詳細數據:預期狀態代碼 '101' 時,伺服器傳回狀態代碼 '503' 請確定您已 選取 [啟用串流端點] 複選框 ,並/或 開啟 Web 套接字
請確定 Azure App 服務 正在執行。 如果是,請嘗試重新啟動它。
錯誤 (連線 ionFailure) :遠端主機已關閉 連線 ion。 錯誤碼:1011。 錯誤詳細資料:回應狀態代碼未指出成功:500 (InternalServerError) 您的 Bot 在其 輸出活動的說話 欄位中指定了類神經語音,但與您的資源密鑰相關聯的 Azure 區域不支援類神經語音。 請參閱 神經語音標準語音

如果表格中的動作無法解決您的問題,請參閱 語音助理:常見問題。 如果您在遵循本教學課程中的所有步驟之後仍無法解決問題,請在語音助理 GitHub 頁面上輸入新問題

線上逾時時的附註

如果您已連線到 Bot,且過去五分鐘內沒有任何活動發生,服務會自動關閉與用戶端和 Bot 的 Web 套接字連線。 這是原廠設定。 底部列中會出現一則訊息:「作用中連線已逾時,但已準備好視需要重新連線」。

您不需要選取 [ 重新連線 ] 按鈕。 按麥克風按鈕並開始交談、輸入簡訊或說關鍵詞(如果已啟用的話)。 系統會自動重新建立連線。

檢視 Bot 活動

每個 Bot 都會傳送和接收活動訊息。 在 Windows 語音助理客戶端的活動記錄 視窗中,時間戳記錄會顯示用戶端已從 Bot 接收的每個活動。 您也可以使用 DialogService 連線 or,查看用戶端傳送至 Bot 的活動。SendActivityAsync 方法。 當您選取記錄專案時,它會將相關聯活動的詳細數據顯示為 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 輸出中傳回的內容,請參閱 活動中的欄位。 在本教學課程中,您可以專注於 文字說話 欄位。

檢視用戶端原始碼以呼叫語音 SDK

Windows 語音助理用戶端會使用 NuGet 套件 Microsoft.CognitiveServices.Speech,其中包含語音 SDK。 開始檢閱範例程序代碼的好位置是 VoiceAssistantClient\MainWindow.xaml.cs 檔案中的 方法InitSpeechConnector(),它會建立這兩個語音 SDK 物件:

新增自訂關鍵字啟用

語音 SDK 支援自訂關鍵字啟用。 類似於 Microsoft 小幫手的 “Hey Cortana”,您可以撰寫會持續接聽您選擇的關鍵詞的應用程式。 請記住,關鍵詞可以是單一單字或多字片語。

注意

字詞關鍵詞通常會與字詞喚醒字交替使用。 您可能會看到這兩者都用於 Microsoft 檔。

關鍵詞偵測發生在用戶端應用程式上。 如果您使用 關鍵詞,只有在偵測到關鍵詞時,音訊才會串流至 Direct Line Speech 通道。 Direct Line Speech 通道包含稱為 關鍵詞驗證的元件,其會在雲端中執行更複雜的處理,以確認您選擇的關鍵詞是在音訊串流開頭。 如果關鍵詞驗證成功,則通道會與 Bot 通訊。

請遵循下列步驟來建立關鍵詞模型、設定 Windows 語音助理用戶端以使用此模型,並使用您的 Bot 進行測試:

  1. 使用語音服務建立自定義關鍵詞。
  2. 解壓縮您在上一個步驟中下載的模型檔案。 它應該為您的關鍵詞命名。 您要尋找名為 kws.table 的檔案。
  3. 在 Windows 語音助理用戶端中,尋找 設定 功能表(右上方的齒輪圖示)。 針對 [模型檔案路徑],輸入步驟 2 中 kws.table 檔案的完整路徑名稱。
  4. 選取 [ 已啟用] 複選框。 您應該會在複選框旁看到此訊息:「將在下一個連線時接聽 關鍵詞」。如果您提供錯誤的檔案或無效的路徑,您應該會看到錯誤訊息。
  5. 輸入訂用帳戶金鑰和訂用帳戶金鑰區域的值,然後選取 [確定] 關閉 [設定] 功能表。
  6. 選取 [ 重新連線]。 您應該會看到一則訊息,上面寫著:「新交談已啟動 - 輸入、按下麥克風按鈕,或說出 關鍵詞。」應用程式現在會持續接聽。
  7. 說出任何以關鍵詞開頭的詞組。 例如:「{your keyword},其時間為何?在語句 關鍵詞之後,您不需要暫停。 當您完成時,會發生兩件事:
    • 您會看到您說話的內容轉譯。
    • 您聽到 Bot 的回應。
  8. 繼續試驗 Bot 支援的三種輸入類型:
    • 在底端列輸入文字
    • 按下麥克風圖示並說話
    • 說一個以關鍵詞開頭的詞組

檢視啟用關鍵詞偵測的原始程式碼

在 Windows 語音助理用戶端的原始程式碼中,使用這些檔案來檢閱可啟用關鍵詞偵測的程式代碼:

選擇性:變更語言和 Bot 語音

您建立的 Bot 會以英文接聽並回應,預設為美式英文文字語音。 不過,您不限於使用英文或默認語音。

在本節中,您將瞭解如何變更 Bot 所接聽和響應的語言。 您也會瞭解如何為該語言選取不同的語音。

變更語言

您可以從語音轉換文字表格所述的任何語言中進行選擇。 下列範例會將語言變更為德文。

  1. 開啟 Windows 語音助理用戶端應用程式,選取 [設定] 按鈕(右上方齒輪圖示),然後在 [語言] 字段中輸入 de-de。 這是語音轉換文字表格中所述的地區設定值。

    此步驟會設定要辨識的口語,並覆寫預設 en-us。 它也會指示 Direct Line Speech 通道使用 Bot 回復的預設德文語音。

  2. 關閉 [設定] 頁面,然後選取 [重新連線] 按鈕,以建立與回應 Bot 的新連線。

  3. 選取麥克風按鈕,然後在德文中說出片語。 辨識的文字隨即出現,而回應 Bot 會以預設的德文語音回復。

變更預設 Bot 語音

如果 Bot 以語音合成標記語言 (SSML) 的形式指定回覆,而非簡單的文字,您可以選取文字轉換語音的語音並控制發音。 回應 Bot 不會使用 SSML,但您可以輕鬆地修改程式代碼來執行此動作。

下列範例會將 SSML 新增至 Echo Bot 回覆,以使用德文語音 de-DE-RalfNeural (男性語音),而非預設的女性語音。 請參閱標準語音清單,以及支援您語言的類神經語音清單。

  1. 開啟 samples\csharp_dotnetcore\02.echo-bot\echo-bot.cs

  2. 尋找下列幾行:

    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);
    
  3. 在 Visual Studio 中建置您的解決方案,並修正任何建置錯誤。

方法 MessageFactory.Text 中的第二個自變數會設定 Bot 回復中的活動說話欄位 。 使用上述變更,它會從簡單的文字取代為 SSML,以指定非預設德文語音。

重新部署 Bot

現在您已對 Bot 進行必要的變更,下一個步驟是將它重新發佈至 Azure App 服務 並試用:

  1. 在 [方案總管] 視窗中,以滑鼠右鍵按兩下 EchoBot 專案,然後選取 [發佈]。

  2. 先前的部署組態已載入為預設值。 選取 EchoBot20190805125647 - Web Deploy 旁的 [發佈]。

    [ 發佈成功 ] 訊息會出現在 Visual Studio 輸出視窗中,而網頁隨即開啟,訊息為「您的 Bot 已就緒!

  3. 開啟 Windows Voice Assistant 用戶端應用程式。 選取 [設定] 按鈕(右上方齒輪圖示),並確定您在 [語言] 欄位中仍有 de-de

  4. 請遵循執行 Windows 語音助理用戶端中的指示,以新部署的 Bot 重新連線、以新語言說話,並使用新語音聆聽 Bot 回復。

清除資源

如果您不打算繼續使用本教學課程中部署的回應 Bot,您可以藉由刪除 Azure 資源群組來移除它及其所有相關聯的 Azure 資源:

  1. Azure 入口網站 中,選取 [Azure 服務] 底下的 [資源群組]。
  2. 尋找 SpeechEchoBotTutorial-ResourceGroup 資源群組。 選取三個點 (...)。
  3. 選取 [刪除資源群組]

探索文件

下一步