c# 实现文本读取,语音报警功能

C#文字转语音 需要引用DotNetSpeech.dll /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private 阅读详情

c# 实现文本读取,语音报警功能

在测试软件功能过程中,由于需要操作硬件进行变位,但是操作完成后在去看监控软件有时间延迟,除非2个人配合,就想实现告警进行语音播报功能
实现方法1
[DllImport(“winmm.dll”)]
public static extern bool PlaySound(string pszSound, int hmod, int fdwSound);
public const int SND_FILENAME = 0x00020000;
public const int SND_ASYNC = 0x0001;

然后在需要报警的地方调用PlaySound,就可以发出声音;
缺点:必须提前录取好wav文件,且必须是wav文件,不灵活
实现方法2
网上下载文件 DotNetSpeech.dll
在引用中增加这个动态库的引用
using DotNetSpeech;//语音报警的引擎
阅读函数
private void Read(string text)
{
SpVoice sp = new SpVoice();
sp.Rate = 0;//阅读的速度,可自行调整
SpeechVoiceSpeakFlags sFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
sp.Speak(text, sFlags);
}

在需要进行报警的地方调用Read函数即可播放参数的内容;
优点,不用录制文件,直接读取文字内容;

优化:由于播放文件比文字显示要慢很多,可能出现丢语音,或者播放大量文字时对程序或系统有延迟的影响,采用线程模式
threadplaysound = new Thread(read);
threadplaysound.IsBackground = true;
threadplaysound.Start();

在需要告警的地方增加文字
llsound.Add(要增加的文字); //llsound = list

/// <summary>
  /// 语音播报 llsount的内容,由于可能未播报完成,有新soe进入引起混乱,由线程调用
  /// </summary>
  public void read()
  {
      while(true)
      {
          while(llsound.Count>0)
          {
              Read(llsound[0]);
              Thread.Sleep(500);
              llsound.RemoveAt(0);
          }
          Thread.Sleep(500);                
      }            
  }    

实验结果有效,做标记。

c# 之TTS发音程序 c#的功能十分强大,也非常方便。这里,我和大家分享下发音程序的制作。首先,你要准备两样东西:1.TTS发音类库:DotNetSpeech.dll2.TTS发音引擎:微软TTS5.1语音引擎(中文).msi 这里附录下载地址:TTS发音引擎(微软TTS5.1语音引擎(中文).msi):http://download.youkuaiyun.com/source/2127563T 阅读详情

相关推荐

C#调用EmotiVoice情感语音合成:服务化部署与集成实践

语音合成(TTS)技术旨在将文本转换为自然流畅的语音,其核心原理基于声学模型和声码器对语音参数进行建模与重建。随着深度学习的发展,神经语音合成在音质和自然度上取得了显著突破,其技术价值在于为各类应用提供高度拟人化的语音交互能力,广泛应用于智能助手、有声阅读、游戏对话等场景。本文聚焦于情感化语音合成这一细分领域,通过整合网易开源的EmotiVoice项目,详细阐述了如何利用C#进行服务化调用与集成,为开发者提供了一套完整的工程实践方案,其中涉及HTTP API设计、音频流处理以及性能优化等关键环节。

weixin_34357887的博客 397

基于c#.net的中文语音实时告警

基于 c#.net 的中文语音报警,与数据库动态相连

C#中实现简单的预警提示功能(语音提示与弹窗提示)

场景 在储液罐液位偏低时会进行语音播报提示与弹窗提示。 注: 博客主页:https://blog.youkuaiyun.com/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载 实现 首先在监控程序中循环读取是否低液位的信号,如果低液位时预警 WarningHelper.LowerLevelWarn("储液罐", KillPool.WaterTank); 调用预警的方法,因为这里有三个部件需要预警,所以设置了两个参数,一个是预警时提示的文本,一个是

BADAO_LIUMANG_QIZHI的博客 4430

winform 调用声音文件

[DllImport("winmm.dll")] public static extern bool PlaySound(string pszSound, int hmod, int fdwSound); public const int SND_FILENAME = 0x00020000; public const int SND_ASYNC =

沉虚苑的博客 630

WinCC语音报警与C# TTS集成:实现报警文本实时朗读

工业现场中,视觉报警往往因为操作员不在画面前面而失效,语音报警成为更可靠的提醒方式。WinCC作为主流上位机组态软件,原生报警声音仅支持固定wav文件,无法实时播报报警文本。借助C#调用System.Speech文字转语音引擎,可将报警消息和变量值实时合成语音,并通过队列与优先级机制避免多条报警同时播报时的混乱。该方案不依赖WinCC画面运行,支持独立服务、自动重启与循环播报,适用于中控室以外的巡检、夜班等场景。文章从选型、核心代码到WinCC联动逐一拆解,为工程师提供一套可落地的WinCC语音报警实施方案

weixin_29303701的博客 170

WinCC语音报警实现指南:C#+TTS让报警开口说话

在工业自动化与SCADA系统中,报警机制是保障生产安全的核心环节。传统WinCC报警以灯光、蜂鸣和弹窗呈现,依赖操作员持续视觉注意,在多报警并发时易漏报。语音合成(TTS)技术将报警文本转为自然语音,实现主动播报。通过C#与系统语音引擎结合,可构建低成本、离线可用的语音报警方案。其典型应用覆盖化工、电力等需要24小时值守的中控室场景,尤其适合WinCC上位机项目。文章从WinCC报警文本推送、文件监听、TTS参数调优到队列防重,完整阐述一条工程实践链路。

weixin_33858336的博客 379

c#语音读取文字

最近在看到公司里面用到了实现语音报警的控件,实在找不到是怎么写的,今天特意查了下资料。原来是调用了com组件。 具体看下面操作贴图 1、界面 2、首先我们要引用该组件“Microsoft Speech object library”,在win7系统中是自带的(我是win7旗舰版,这个组件好像是5.4版本) 3、接下来是按钮事件,看源码 View Code ...

CoderYang 401

Wincc动态语音报警:C# TTS与C脚本实现钢卷号实时播报

文字转语音(TTS)技术通过将文本实时转换为自然语音,解决了工业自动化中动态数据播报的难题。其原理是借助语音合成引擎,将变量数据转化为可听内容,提升信息传递效率与操作安全性。在Wincc等SCADA系统中,结合C脚本写入实时数据与C#的FileSystemWatcher监听,可实现报警内容的动态播报。该方案尤其适用于轧钢、焊接等需播报钢卷号、宽度、厚度的产线场景,通过C# TTS与Wincc C脚本的协同,让语音报警紧跟生产数据变化,避免固定音频的局限。

weixin_30444111的博客 214

C#实现文本转语音与多WAV音频合并完整指南

文本转语音(TTS)技术能够将书面文字转换为可听的语音信号,广泛应用于自动化播报、有声内容生成和辅助工具开发等场景。其核心原理涉及语音合成引擎对文本的解析与音频流生成,而实际工程中常需处理多段音频的拼接问题。WAV作为无损音频格式,因其结构简单、易于编辑,成为音频合并的首选中间格式。在.NET生态中,System.Speech提供便捷的本地语音合成能力,NAudio则提供强大的音频处理支持,两者结合可高效实现批量语音生成与片段合并。从基础的语音参数调节到WAV文件头的底层解析,再到并发控制与格式校验,这一技

weixin_29231027的博客 273

C#实现WinCC语音报警:SpeechSynthesizer与文件监听实战

在工业自动化与上位机监控领域,报警信息的有效传达直接影响现场响应效率。传统WinCC声音报警依赖固定音频文件,难以动态播报实时变量值,而语音合成(TTS)技术为此提供了更灵活的解决方案。Windows系统自带的SAPI接口,通过.NET的SpeechSynthesizer组件,开发者仅需几行代码即可将文本转换为自然语音,无需第三方插件。结合WinCC的C脚本或VBS脚本,可将报警文本写入文件或通过OPC UA通道传输,再由C#程序监听并异步播报。针对多报警并发场景,引入队列机制与优先级打断策略,避免语音重叠

weixin_32325225的博客 259

WinCC动态语音报警升级:TTS+FileSystemWatcher替换WAV方案

工业HMI系统中的语音报警长期依赖固定WAV文件,一旦报警内容包含钢卷号、批次号等运行时变量,静态音频便难以满足生产节拍。文本转语音(TTS)技术为解决这一痛点提供了新思路:通过将WinCC变量写入TXT文件,再借助C#程序监听文件变化并实时合成语音,即可实现动态内容的自动播报。这一方案将语音生成与HMI解耦,既避免了频繁制作录音文件的维护成本,又保留了报警信息的完整性与准确性。本文将深入解析WinCC侧C脚本写入、C#侧FileSystemWatcher监听、SpeechSynthesizer朗读的完整技

weixin_30219613的博客 63

[转]语音报警.NET开发初探

本文转自:http://www.cnblogs.com/xiajf/archive/2012/10/10/2718711.html 最近在做安监局安全联网系统,在系统中有会根据一定的条件报警(比如,瓦斯浓度超标),除了在系统中提示之外,客户还提出需要语音报警。本篇文章主要是针对语音开发的一个前奏。     语音方面的以前没有接触过,上网这方面的资料并不多。并且很多资料都是Speech SDK...

weixin_34204722的博客 102

WinCC语音报警方案:C#TTS从选型到队列限流的完整指南

工业监控系统中,视觉报警和画面闪烁已很普遍,但听觉告警在WinCC等上位机平台上仍是明显短板。WinCC自带的报警功能只能播放预录音频,无法根据点位状态动态拼读“当前温度88.5度”这类关键内容。C#文字转语音(TTS)利用System.Speech调用Windows本地SAPI 5语音引擎,实现了完全离线的语音合成,既适合封闭OT网段,又无需额外授权。在工业上位机场景中,工程师可以通过OPC DA、文件中间层等方式建立WinCC与语音服务的联动,再配合队列串行消费、报警限流与优先级调度,避免报警风暴和重复

weixin_29758911的博客 283

老上位机零侵入改造:旁路网关+TCP字节帧驱动声光语音报警

工业设备联网改造中,如何在不触碰存量系统源码的前提下实现数据联动,是现场工程师的常见难题。理解TCP字节流通信与CRC16校验原理,是解析设备帧协议的基础;而基于数据库轮询的旁路网关模式,则提供了一种低风险的系统集成思路。通过只读方式获取业务数据、按标准字节帧封装指令并发送给终端,既能实现声光告警、语音播报等实时联动,又可保证原有系统稳定运行。这类方法适用于老上位机对接新硬件、旧系统数据上云等场景。本文围绕旁路网关与SQL Server增量读取、协议转换、TCP粘包半包处理等工程细节,完整呈现一套可落地的工

weixin_32612263的博客 41

Wincc语音报警与C# TTS动态播报:从固定wav到实时文本合成

工业HMI报警功能普遍停留在弹窗与蜂鸣阶段,当报警信息需要携带卷号、宽度等动态参数时,传统预录wav方案便无能为力。TTS(文本转语音)技术将动态文本即时合成语音,为现场语音报警提供了更灵活的实现路径。Wincc可通过C脚本将工艺变量格式化写入txt文件,再由C#端的FileSystemWatcher监控文件变化,并调用SpeechSynthesizer完成语音播报。这一Wincc与C#协同的架构,不仅免去了反复录音的维护成本,还能让操作员在嘈杂产线上实时听清每一卷钢的准确参数,尤其适合冷轧、焊接等以Win

weixin_34342207的博客 332

c# TTS语音实例 附带 DotNetSpeech.dll语音类库

c#实现发音功能,同时附带语音类库DotNetSpeech.dll,很容易实现电脑程序发音 c#实现发音功能,同时附带语音类库DotNetSpeech.dll,很容易实现电脑程序发音

C#把汉字转换成16进制(HEX)并向串口发送数据

报警器实例:(有发送,无返回获取) 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO.Ports; 6 using System.Text.RegularExpressions; 7 ...

a706769817的博客 1263

android OTA升级之后,apk崩溃无法启动

也就是说,我们这个高低版本是fingerprint相同的情况,这个问题追述到jenkins编译,启动job时会初始化一个BUILD_NUMBER值,这个值正好跟Android的build系统的名称重复,这就导致Android build系统那一套拼接时间戳的值不会走,因为jenkins一启动就会定义该值,而我们jenkins服务器迁移过,这个值又会从1开始累计,导致前后版本都是16,从而导致fingerprint一致。问题背景:系统版本从低版本升级到高版本后,apk崩溃启动失败。硬件平台:QCS6125。

kevin's cache的专栏 1342
上一篇: dbgridview内操作粘贴,复制,等量复制,增量复制
下一篇: TestStack.White安装详解
six2me
博客等级 码龄23年 1万+粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

six2me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值