.NET开发语音报警初探(Speech SDK)

[摘要]本文介绍.NET使用Speech SDK开发简单的语音报警程序,并提供简单的示例代码供参考。

最近在做安监局安全联网系统,在系统中有会根据一定的条件报警(比如,瓦斯浓度超标),除了在系统中提示之外,客户还提出需要语音报警。本篇文章主要是针对语音开发的一个前奏。

语音方面的以前没有接触过,上网这方面的资料并不多。并且很多资料都是Speech SDK相关的,Windows平台下的SAPI 5.1开发。后来查资料,这个主要是针对vc等com组建开发,如果在dotnet平台下开发,直接使用“System.Speech 命名空间”。这个命名空间提供了足够的类和方法,做语音方面的开发。

命名空间
说明
System.Speech.AudioFormat 命名空间包含一个类, SpeechAudioFormatInfo,它包含有关格式的音频输入语音识别引擎,或从语音合成引擎被输出的信息。
System.Speech.Recognition 命名空间包含用于实现语音识别的 Windows 桌面语音技术类型。
成员的System.Speech.Recogntion.SRGSGrammar命名空间,您可以以编程方式创建语法符合 W3C 语音识别语法规范版本 1.0 (SRGS)。
N:System.Speech.Synthesis命名空间包含用于初始化和配置语音合成引擎,用于创建提示,用于生成响应的事件,以及修改声音特性的语音。
支持语音合成标记语言 (SSML) 创建基于自定义呈现文本到语音转换 (TTS) 引擎。

下面简单介绍一下:

1using System.Speech.Synthesis;

即:N:System.Speech.Synthesis命名空间包含用于初始化和配置语音合成引擎,用于创建提示,用于生成响应的事件,以及修改声音特性的语音。说明白点就是,可以完成文本和语音之间的转化,并且可以设置转化过程中的事件,修改转化语音的音量、声音缓急等声音的特性。

SpeechSynthesizer 类可以用来声明声音对象,该对象可以设置音量声音缓急等等声音属性。

SpeakAsync(String) :异步使用字符串内容的语言。即:将字符串转化成语音读出。看下面这个例子:在文本中输入字符(中文、英文、字母、数字都可) ,点击一个按钮将文本中的内容读出。

1SpeechSynthesizer reader;
2public Form1()
3{
4InitializeComponent();
5
6}
7private void Form1_Load(object sender, EventArgs e)
8{
9reader = new SpeechSynthesizer();
10button2.Enabled = false;
11button3.Enabled = false;
12button4.Enabled = false;
13textBox1.ScrollBars = ScrollBars.Both;
14}
15
16/// <summary>
17/// 从文本中读取信息,并阅读
18/// </summary>
19/// <param name="sender"></param>
20/// <param name="e"></param>
21private void button1_Click(object sender, EventArgs e)
22{
23//在读取文本前,先释放之前的资源
24reader.Dispose();
25if (textBox1.Text != "")
26{
27
28reader = new SpeechSynthesizer();
29reader.SpeakAsync(textBox1.Text);
30label2.Text = "正在说话";
31button2.Enabled = true;
32button4.Enabled = true;
33//当 SpeechSynthesizer 完成提示的讲话的时候引发。 讲话完成时,将状态改为完成
34reader.SpeakCompleted += new EventHandler<SpeakCompletedEventArgs>(reader_SpeakCompleted);
35}
36else
37{
38MessageBox.Show("请在文本中输入将要读取的信息!", "Message", MessageBoxButtons.OK);
39}
40}
41
42void reader_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
43{
44label2.Text = "完成";
45}

最终效果如下:


这个是MSDN代码库中的例子,源码在这里:http://code.msdn.microsoft.com/Text-to-Speech-Converter-0ed77dd5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值