LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#通过添加System.Speech库引用实现Winform窗体报警语音播报

admin
2025年6月23日 23:39 本文热度 64

我们在开发C#程序时,有时候会需要将报警信息通过语音进行播报,今天跟大家分享一下具体的实现过程。

组件安装

首先我们创建好一个Windows窗体项目,然后添加System.Speech库引用。

点击引用,右击添加引用,在程序集中,找到System.Speech,这个库是Windows系统自带的,所以直接点击确定即可。

当然,我们也可以通过Nuget下载安装:

组件封装

接下来我们对System.Speech这个库进行封装,核心围绕SpeechSynthesizer这个类。
1、创建一个SpeechHelper类,初始化SpeechSynthesizer对象。
 private SpeechSynthesizer synthesizer; public int Rate; public int Volume; public SpeechHelper() {     synthesizer = new SpeechSynthesizer();     synthesizer.SpeakStarted += Synthesizer_SpeakStarted;     synthesizer.SpeakCompleted += Synthesizer_SpeakCompleted;     synthesizer.Volume = 100;     synthesizer.Rate = 0; }
2、通过事件判断是否正在播报。
 //是否正在播报 public bool IsSpeeking { getset; } = false; private void Synthesizer_SpeakStarted(object sender, SpeakStartedEventArgs e) {     IsSpeeking = true; } private void Synthesizer_SpeakCompleted(object sender, SpeakCompletedEventArgs e) {     IsSpeeking = false; }
3、开始播报和停止播报方法,这里建议使用异步SpeekAsync。
public void Speak(string text){    if (!string.IsNullOrWhiteSpace(text))    {        synthesizer.SpeakAsync(text);    }}public void Stop(){    synthesizer.SpeakAsyncCancelAll();}
4、编写调节语速和音量的方法。
 public void SetVolume(int volume) {     if (volume >= 0 && volume <= 100)     {         synthesizer.Volume = volume;         Volume = volume;     } } public void SetRate(int rate) {     if (rate >= -10 && rate <= 10)     {         synthesizer.Rate = rate;         Rate = rate;     } }
5、获取和选择播放的音色类型。
 public void SelectVoice(string voiceName) {     try     {         synthesizer.SelectVoice(voiceName);     }     catch (Exception ex)     {         throw new Exception("无法选择语音 " + voiceName + ": " + ex.Message);     } } public string[] GetInstalledVoices() {     List<string> list = new List<string>();     foreach (InstalledVoice installedVoice in synthesizer.GetInstalledVoices())     {         list.Add(installedVoice.VoiceInfo.Name);     }     return list.ToArray(); }

案例应用

我们对SpeechHelper进行案例应用。

1、我们先创建一个简单的窗体:


  1. 2、核心代码就是创建SpeechHelper对象,调用Speek进行播报,调用Stop停止播报:

 //创建对象 private SpeechHelper speechHelper = new SpeechHelper(); //开始播报 private void btn_Start_Click(object sender, EventArgs e) {     if (!this.speechHelper.IsSpeeking)     {         this.speechHelper.Speak(this.txt_Content.Text);     } }  //停止播报 private void btn_Stop_Click(object sender, EventArgs e) {     this.speechHelper.Stop(); }

3、然后可以选择朗读者或者调节音量和语速:

private void FrmMain_Load(object sender, EventArgs e){    //获取朗读者列表    this.cmb_Voice.Items.AddRange(speechHelper.GetInstalledVoices());}//选择朗读者private void cmb_Voice_SelectedIndexChanged(object sender, EventArgs e){    this.speechHelper.SelectVoice(this.cmb_Voice.Text);}//音量设置private void track_Volumn_Scroll(object sender, EventArgs e){    this.speechHelper.SetVolume(this.track_Volumn.Value);}//语速设置private void track_Rate_Scroll(object sender, EventArgs e){    this.speechHelper.SetRate(this.track_Rate.Value);}

4、运行程序,结果如下所示:

选择朗读者,输入播报内容,点击开始播报即可。


阅读原文:原文链接


该文章在 2025/6/24 10:47:21 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved