用c#实现语音技术

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

   下面的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

   输入要要朗读的文字,程序就可朗读了啦.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用前,必须保证smartread7.dll文件在与程序相同的目录下 注意点 由于从2.1版本中加入了初始化认证函数, 不同的注册用户的smartread7.dll文件是不相同的, 如果你将smartread7.dll文件复制到系统文件夹下, 如果其他注册用户也将其注册的smartread7.dll文件复制到系统文件夹下, 就会覆盖掉你的注册smartread7.dll文件, 引起你的程序调用会出现未注册信息. 所以如果你调用初始化认证函数, 最好将smartread7.dll文件复制到你的程序相同的文件夹下. SmartRead_Initial 从语音朗读开发包2.4开始,不支持 SmartRead_Initial函数 SmartRead_InitialAuth 用于初始化语音并认证功能,必须在最初调用,进行认证 SmartRead_Close 用于关闭语音功能,在程序退出前调用,释放资源 SmartRead_Speak 朗读函数,分别有阻塞调用,非阻塞调用,并且在朗读每一句可以定义所朗读的每一句的 语音(中文或者英文),语速,音量,也可以采用缺省的参数(详见程例) SmartRead_Stop 停止朗读函数 SmartRead_SetDialog 用于打开语音设置对话框,改变语音,音量,语速等,并且可以连接到自定义的语音下载站点 SmartRead_Version 显示开发包版本信息 SmartRead_SpeakToWave 朗读文本到WAVE文件,可以自己设置所输出的WAVE文件,并且朗读时可以设置语音,语速,音量和格式 SmartRead_GetLocationInfo 获得当前朗读到的位置,以百分数表示 SmartRead_SetVolume 在朗读中改变音量 SmartRead_SetSpeed 在朗读中改变语速 SmartRead_PauseORContinue 在朗读中实现暂停/继续功能 SmartRead_GetVoiceDeviceNum 获得声卡数目信息 SmartRead_GetVolume 在朗读中获得音量 SmartRead_GetSpeed 在朗读中获得语速 SmartRead_HideMessageBox 隐藏信息提示框函数 SmartRead_SetMode 设置播放模式函数 SmartRead_SetParameter 设置参数 SmartRead_QueueNext 队列朗读播放下一条 SmartRead_QueueStatistics 统计目前队列已经朗读个数和总的个数 SmartRead_GetErrCode 获得错误代码 SmartRead_GetErrMsg 获得错误信息,英文表示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值