Example #1
0
        /// <summary>
        /// 執行文字轉語音
        /// </summary>
        /// <param name="recognizeBM">語音辨識設定</param>
        /// <param name="keyWord">切換 手動/語音模式 關鍵字</param>
        /// <param name="modeStatus">模式狀態</param>
        /// <returns></returns>
        private async static Task <bool> StartTextToSpeak(
            RecognizeBM recognizeBM, string keyWord, bool modeStatus)
        {
            // 輸入關閉或結束,結束應用程式
            if (recognizeBM.Text.Contains("關閉") || recognizeBM.Text.Contains("結束"))
            {
                Console.WriteLine("應用程式結束,請輸入任意鍵繼續...");
                Console.ReadLine();
                Environment.Exit(0);
            }

            // 執行文字轉語音
            await speechService.TextToSpeak(recognizeBM);

            if (recognizeBM.Text.Contains(keyWord) || recognizeBM.Text == "切換")
            {
                return(!modeStatus);
            }

            return(modeStatus);
        }
Example #2
0
        static async Task Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("模式切換方式如下:");
            Console.WriteLine("語音輸入模式下,說出 手動輸入 或 切換,即切換為手動輸入模式");
            Console.WriteLine("手動輸入模式下,輸入 語音輸入 或 切換,即切換為語音輸入模式");
            Console.WriteLine("任一模式下,輸入 關閉 或 結束,即結束應用程式");
            Console.ForegroundColor = ConsoleColor.White;

            // 實體化 語音辨識 服務
            speechService = new SpeechService();

            // 實體化 語音辨識基本設定用 BM
            var recognizeBM = new RecognizeBM();

            // 要辨識的語言
            recognizeBM.Language = "zh-TW";

            Console.WriteLine("輸入帳戶金鑰:");

            // 取得金鑰
            recognizeBM.Subkey = Console.ReadLine();

            // 取得服務端點位置,免費試用帳戶都為 westus
            recognizeBM.Region = "westus";

            // 預設程式啟動提示訊息
            recognizeBM.Text = "語音服務啟動";

            try
            {
                // 執行文字轉語音
                await speechService.TextToSpeak(recognizeBM);

                // 用來切換模式的 flag
                var isTextMode = false;

                while (true)
                {
                    if (isTextMode)
                    {
                        Console.WriteLine("手動輸入:");

                        // 取得輸入文字
                        recognizeBM.Text = Console.ReadLine();

                        // 執行文字轉語音
                        isTextMode = await StartTextToSpeak(recognizeBM, "語音輸入", isTextMode);
                    }
                    else
                    {
                        Console.WriteLine("語音輸入:");

                        // 取得輸入文字
                        recognizeBM.Text = await speechService.SpeakToText(recognizeBM);

                        // 執行文字轉語音
                        isTextMode = await StartTextToSpeak(recognizeBM, "手動輸入", isTextMode);
                    }
                }
            }
            catch
            {
                Console.WriteLine("應用程式執行失敗,請重新執行");
                Console.ReadLine();
            }
        }