隐藏

C#实现语音播报

发布:2024/2/19 9:52:21作者:管理员 来源:本站 浏览次数:537

方法一


1、首先要安装语音包Microsoft Speech SDK 5.1


2、引用 Interop.SpeechLib.dll


3、然后以下代码即可


SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;

SpVoice voice = new SpVoice();

voice.Rate = 1;//语速

voice.Volume = 100;//音量

voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(0);//Item(0)中文、Item(3)英文

voice.Speak("语音播报", flag);


    



方法二


List<string> ls_speack = new List<string>();



  public void Speaking()

   {

       Task task = new Task(() =>

       {

           while (true)

           {

               Thread.Sleep(100);

               if (ls_speack.Count == 0)

               {

                   continue;

               }

               SpeechSynthesizer speech = new SpeechSynthesizer();

               speech.Volume = 100; //音量

               CultureInfo keyboardCulture = System.Windows.Forms.InputLanguage.CurrentInputLanguage.Culture;

               InstalledVoice neededVoice = speech.GetInstalledVoices(keyboardCulture).FirstOrDefault();

               if (neededVoice == null)

               {

                   //say = "未知的操作";

               }

               else

               {

                   speech.SelectVoice(neededVoice.VoiceInfo.Name);

               }

               for (int k = 0; k < ls_speack.Count; k++)

               {

                   Thread.Sleep(100);

                   speech.Speak(ls_speack[k]);

               }

               ls_speack = new List<string>();

           }


       });

       task.Start();

   }



   public static void Speaking(string saying)

   {

       string say = saying;

       Task task = new Task(() =>

       {

           SpeechSynthesizer speech = new SpeechSynthesizer();

           speech.Volume = 100; //音量

           CultureInfo keyboardCulture = System.Windows.Forms.InputLanguage.CurrentInputLanguage.Culture;

           InstalledVoice neededVoice = speech.GetInstalledVoices(keyboardCulture).FirstOrDefault();

           if (neededVoice == null)

           {

               say = "未知的操作";

           }

           else

           {

               speech.SelectVoice(neededVoice.VoiceInfo.Name);

           }


           speech.Speak(say);

       });

       task.Start();

   }