ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:541.79KB ,
资源ID:5195947      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5195947.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Wincc语音报警及C#实现文字转语音.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Wincc语音报警及C#实现文字转语音.docx

1、Wincc语音报警及C#实现文字转语音Wincc语音报警及C#实现文字转语音Wincc语音报警Wincc本身可以利用C脚本,VBS及HORN来做语音报警,但是上述本质上是调用的已存在的音频文件,想实现播放实时更新的信息是不行的,本文主要介绍通过C脚本,VBS及HORN来实现语音报警,并最后介绍一种文字转语音-TTS的实现方法。1. C脚本实现语音报警利用C脚本实现语音报警,只能是播放WAV文件。在C脚本中添加如下代码:#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName, char* lpszPrope

2、rtyName)void WINAPI PlaySoundA(char *pszSound,char*hmode,DWORD dwflay);#pragma code() if (GetTagBit(testsound)=1) PlaySoundA(c:wav1.wav,NULL, 1); return 0; 另外需设置触发器,如下:2. VBS实现语音报警利用VBS,实际是在调用媒体播放器,可以播放视频,代码如下:Function BackColor_Trigger(ByVal Item)Dim soundDim objWshShellsound= c:wav1.aviSet objWshS

3、hell=CreateObject(Wscript.Shell)objWshShell.Run mplay32.exe/play/close & sound,0End Function3. 利用HORN实现语音报警a.首先打开报警器b.变量设置,此处和报警记录的设置一样,如下报警记录中设置: 当testbool为1时,报警控件显示如下:4. 以上可以看出,不管哪一种方式,本质上都是在播放已经存在的文件,那比如像钢卷号什么的每次都不一样,想要实现语音播放就不可能。那么我们可以利用TTS来实现,就是翻译词典的语音功能一样。a. 首先把需要语音播放的文件存在txt文檔中,以CAL上下线带钢准备焊接为

4、例,代码如下:#include apdefap.hlong_main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)/-上线-/if(GetTagBit(OBI_Welder_Ready)&GetTagBit(B_UpPL_NextSelect)FILE* fp=fopen(D:testtest.txt,w+); /打开文档,按以下格式写入fprintf(fp,%s,%.f,%.3f,GetTagChar(IL_PL1_ID),GetTagFloat(IR_PL1_Width),GetTagFloat(I

5、R_PL1_Thick);/txt文档写入内容格式:钢卷号,宽度保留0位小数,厚度保留3位小数fclose(fp);/关闭文档/-下线-/else if(GetTagBit(OBI_Welder_Ready)&GetTagBit(B_LwPL_NextSelect)FILE* fp=fopen(D:testtest.txt,w+);fprintf(fp,%s,%.f,%.3f,GetTagChar(IL_PL2_ID),GetTagFloat(IR_PL2_Width),GetTagFloat(IR_PL2_Thick);fclose(fp);Return 0;同样的,如第一节所讲,另外需设置

6、触发器,设置完后当事件触发时txt会生成如下内容:b. 由于Wincc本身不支持TTS功能,但是计算机本身是带有TTS引擎的,因此我们可以利用微软的TTS语音引擎来实现,把txt文文件里的文字通过语音读出来,以C#实现为例,原理是通过检测txt文档的变化,当文档内容发生变化时,比如钢卷号改变就播放txt文档里面的内容,代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;usin

7、g System.Text;using System.Windows.Forms;using System.Threading;using System.IO;using System.Speech.Synthesis;using System.Speech; namespace YPC_TTS public partial class YPC_TTS : Form public YPC_TTS() InitializeComponent(); WatcherStrat(); string splite1; string s1, s2, s3; char c1; char c2; string

8、 s_all1; string s_all2; string s_all; Thread th;/定义线程 FileSystemWatcher watcher = new FileSystemWatcher();/文本监视 void WatcherStrat() watcher.Path = D:test; watcher.Filter = *.txt; watcher.IncludeSubdirectories = true;/允许侦测此目录下的子目录 watcher.NotifyFilter = NotifyFilters.LastWrite; watcher.Changed += new

9、 FileSystemEventHandler(OnChanged); watcher.EnableRaisingEvents = true;/开启提交事件 void OnChanged(object source, FileSystemEventArgs e) Thread.Sleep(330); watcher.EnableRaisingEvents = false; th = new Thread(calculate); th.IsBackground = true; th.Start(); Control.CheckForIllegalCrossThreadCalls = false;

10、 watcher.EnableRaisingEvents = true; private void calculate() StreamReader objReader = new StreamReader(D:testtest.txt); SpeechSynthesizer synth = new SpeechSynthesizer(); string strLine = objReader.ReadLine(); if (strLine != ) splite1 = strLine.Split(,); s1 = splite10; s2 = splite11; s3 = 钢卷厚度 + sp

11、lite12; c1 = s1.ToCharArray();/转成字符数组 if (c1.Length != 9) s_all = 入口准备焊接; else s_all1 = 钢卷号 + c10 + + c11 + + c12 + + c13 + + c14 + + c15 + + c16 + + c17 + + c18 + ,; c2 = s2.ToCharArray(); if (c2.Length = 3) s_all2 = 钢卷宽度 + c20 + + c21 + + c22 + ,; else s_all2 = 钢卷宽度 + c20 + + c21 + + c22 + + c23 + ,; s_all = 入口准备焊接 + , + s_all1 + s_all2 + s3; objReader.Close(); objReader.Dispose(); GC.Collect(); synth.Speak(s_all); synth.Dispose(); Thread.Sleep(1100); 以上完成后,就会把txt里面的内容读出来,暂时微软默认的语音引擎说中文有点难听,可以自己安装语音库,此处安装的是nerospeech,安装完后可以在以下路径选择语音:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1