您的位置:首页 > 编程语言 > C#

用c#实现语音技术

2009-11-04 09:37 302 查看
  “电脑朗读”(英文)一个很好的触发点,通过它可以实现电子小说阅读、英文听力测试、英文单词学习...

   下面的speech已对mstts作了简单封装。

   1.安装好mstts(如果你有装金山词霸,系统就已经安装了),可以在winnt/speech中打到vtxtauto.tlb文件;

   2.用.net sdk自带的tlbimp工具把vtxtauto.tlb转换成.dll格式:

   tlbimp vtxtauto.tlb /silent /namespace:mstts /out:mstts.dll
   这时的mstts.dll已成为.net framework运行库的一个类。

   3.编写一个封装vtxtauto的简单类:speech .

/========================speech.cs======================
using system;
using mstts; /mstts名称空间
namespace bedlang{ /定义名称空间
public class speech{
private vtxtauto vtxtautoex;
public speech(){
vtxtautoex = new vtxtauto();
vtxtautoex.register(" "," "); /注册com组件
}
public void speak(string text){
vtxtautoex.speak(text, 0); /发音
}
}
}
/========================speech.cs======================
  4.编译bedlang.speech

   csc /target:library /out:bedlang.dll speech.cs /r:mstts.dll
   如果用vs.net开发,可直接生成项目就可以了。

   5.发音实现

/========================demo.cs======================
分别加入label,textbox,button控件各一个到windows form中,修改它们的属性,源代码如下:
using system;
using system.drawing;
using system.collections;
using system.componentmodel;
using system.windows.forms;
using system.data;
namespace bedlang
{
//
// form1 的摘要说明。
//
public class demo : system.windows.forms.form
{
private system.windows.forms.label label1;
private system.windows.forms.textbox textbox1;
private system.windows.forms.button button1;
//
// 必需的设计器变量。
//
private system.componentmodel.container components = null;
public demo()
{
/
/ windows 窗体设计器支持所必需的
/
initializecomponent();
/
/ todo: 在 initializecomponent 调用后添加任何构造函数代码
/
}
//
// 清理所有正在使用的资源。
//
protected override void dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.dispose();
}
}
base.dispose( disposing );
}
#region windows form designer generated code
//
// 设计器支持所需的方法 - 不要使用代码编辑器修改
// 此方法的内容。
//
private void initializecomponent()
{
this.label1 = new system.windows.forms.label();
this.textbox1 = new system.windows.forms.textbox();
this.button1 = new system.windows.forms.button();
this.suspendlayout();
/
/ label1
/
this.label1.location = new system.drawing.point(24, 16);
this.label1.name = "label1";
this.label1.size = new system.drawing.size(120, 23);
this.label1.tabindex = 0;
this.label1.text = "输入要朗读的文字:";
/
/ textbox1
/
this.textbox1.location = new system.drawing.point(24, 48);
this.textbox1.name = "textbox1";
this.textbox1.size = new system.drawing.size(248, 21);
this.textbox1.tabindex = 1;
this.textbox1.text = "";
/
/ button1
/
this.button1.location = new system.drawing.point(112, 112);
this.button1.name = "button1";
this.button1.tabindex = 2;
this.button1.text = "朗读";
this.button1.click += new system.eventhandler(this.button1_click);
/
/ demo
/
this.autoscalebasesize = new system.drawing.size(6, 14);
this.clientsize = new system.drawing.size(292, 197);
this.controls.addrange(new system.windows.forms.control[] {
this.button1,
this.textbox1,
this.label1});
this.name = "demo";
this.text = "demo";
this.resumelayout(false);
}
#endregion
//
// 应用程序的主入口点。
//
[stathread]
static void main()
{
application.run(new demo());
}
private void button1_click(object sender, system.eventargs e)
{
speech s=new speech(); /创建一个speech对象
if(textbox1.text.length==0)
s.speak("please input letter."); /发音
else
s.speak(textbox1.text);
}
}
}
/========================demo.cs======================
  6.编译demo.cs

   csc demo.cs /r:bedlang.dll

   vs.net环境下可直接编译成exe文件。

   7.运行demo.exe

   输入要要朗读的文字,程序就可朗读了啦.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息