NET 语言辨认,语音控制操纵、语音播报

[复制链接]
发表于 2026-2-19 11:43:00 | 显示全部楼层 |阅读模式
System.Speech.

》》System.Speech.Synthesis;  语音播报
》》System.Speech.Recognition 语音辨认
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Speech.Recognition;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using System.Speech;
  12. using System.Speech.Synthesis;
  13. namespace WindowsFormsApp1
  14. {
  15.     public partial class Form2 : Form
  16.     {
  17.         SpeechRecognitionEngine recognitionEngine;
  18.         public Form2()
  19.         {
  20.             recognitionEngine = new SpeechRecognitionEngine();
  21.             Choices choices = new Choices();
  22.             choices.Add(new string[] { "开始", "Start", "Go", "停止", "Stop", "Over" });
  23.             GrammarBuilder gb = new GrammarBuilder(choices);
  24.             Grammar grm = new Grammar(gb);
  25.             recognitionEngine.LoadGrammarAsync(grm);
  26.             //音频输入
  27.             recognitionEngine.SetInputToDefaultAudioDevice();
  28.             recognitionEngine.SpeechRecognized += RecognitionEngine_SpeechRecognized;
  29.             InitializeComponent();
  30.         }
  31.         private void RecognitionEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
  32.         {
  33.             string info = e.Result.Text;           
  34.             switch (info)
  35.             {
  36.                 case "开始":
  37.                 case "Start":
  38.                 case "Go":
  39.                     richTextBox1.Text += info;
  40.                     break;
  41.                 case "停止":
  42.                 case "Stop":
  43.                 case "Over":
  44.                     richTextBox1.Text += info;
  45.                     break;
  46.             }
  47.         }
  48.         private void Form2_Load(object sender, EventArgs e)
  49.         {
  50.             this.btn_StopSpeek.Enabled = false;
  51.         }
  52.         private void btn_startSpeek_Click(object sender, EventArgs e)
  53.         {
  54.             this.btn_StopSpeek.Enabled = true;
  55.             recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
  56.             this.btn_startSpeek.Enabled = false;
  57.         }
  58.         private void btn_StopSpeek_Click(object sender, EventArgs e)
  59.         {
  60.             this.btn_StopSpeek.Enabled = false;
  61.             recognitionEngine.RecognizeAsyncStop();
  62.             this.btn_startSpeek.Enabled = true;
  63.         }
  64.         private void button1_Click(object sender, EventArgs e)
  65.         {
  66.             SpeechSynthesizer sp = new SpeechSynthesizer();
  67.             PromptBuilder pb = new PromptBuilder();
  68.             pb.AppendText("123");
  69.             sp.Speak(pb);
  70.         }
  71.     }
  72. }
复制代码
语言播报
  1.             SpeechSynthesizer sp = new SpeechSynthesizer();            
  2.             sp.Rate = 1;//语速  -10 到 10 之间
  3.             sp.Volume = 50;//音量 (0 到 100)
  4.             PromptBuilder pb = new PromptBuilder();
  5.             pb.AppendText("123");
  6.             sp.Speak(pb);
复制代码
获取语言包、异步播报、停息、克制、继承语言播报、生存音频

》》异步播报,就是不壅闭别的操纵
  1.             SpeechSynthesizer sp = new SpeechSynthesizer();            
  2.             sp.Rate = 1;//语速  -10 到 10 之间
  3.             sp.Volume = 50;//音量 (0 到 100)
  4.             PromptBuilder pb = new PromptBuilder();
  5.             pb.AppendText("1234564878564135415648145");
  6.             //同步播报
  7.             //sp.Speak(pb);
  8.             //异步播报
  9.             sp.SpeakAsync(pb);
复制代码
》》获取语言包
  1.            SpeechSynthesizer sp = new SpeechSynthesizer();
  2.             foreach (var item in sp.GetInstalledVoices())
  3.             {
  4.                 this.comboBox1.Items.Add(item.VoiceInfo.Name);
  5.             }
复制代码
》》 异步播报  停息、继承
  1. if (sp.State == SynthesizerState.Speaking)
  2.             {
  3.                 // 正在播报 暂停
  4.                 sp.Pause();
  5.             }
  6.             else if (sp.State == SynthesizerState.Paused)
  7.             {
  8.                 // 已经 暂停,继续播放
  9.                 sp.Resume();
  10.             }
复制代码
》》克制
  1.        if (sp.State == SynthesizerState.Speaking)
  2.             {
  3.                 //取消所有排队、异步、语音合成操作。
  4.                 sp.SpeakAsyncCancelAll();
  5.             }
复制代码
》》生存音频
  1.           //使用using才能在结束后自动保存语音文件
  2.             using (SpeechSynthesizer sp = new SpeechSynthesizer())
  3.             {
  4.                 string path = @"D:\\zenvideo";
  5.                 sp.SetOutputToWaveFile(path + "1.wav");
  6.                 //这句不会播报的,会把声音生成到1.wav
  7.                 sp.Speak("13213213213213");
  8.             }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表