当前位置: 网学 > 编程文档 > VB > 正文

混合编程实现英文文章的语音输出

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
512; 默认,加入播放队列末尾。}
end;
  
procedure Pause;
begin
TTS.AudioPause; {暂停朗读}
end;
  
procedure Stop;
begin
TTS.StopSpeaking;{终止朗读}
end;
  
procedure Resume;
begin
TTS.AudioResume;{恢复朗读}
end;
  
function IsSpeaking:Boolean;
var
Check:Boolean;
begin
if TTS.IsSpeaking then {判断当前状态}
begin
Check:=TRUE;{当前正在朗读}
end
else
begin
Check:=FALSE;{当前没有朗读}
end;
Result:=Check;{返回状态值}
end;  
  
procedure Destory;
begin
TTS:=nil;{释放对象}
end;
end.
5、在Project1.dpr的begin前面添加如下待导出过程函数列表:
exports
Create index 1,
Read index 2,
Pause index 3,
Resume index 4,
Stop index 5,
IsSpeaking index 6,
Destory index 7;
编译通过后即可得到封装有TTS语音接口的动态链接库: Project1.dll。
  
四、在VC 中调用TTS动态链接库
1、选"File","New…"新建一MFC AppWizard(exe)工程TTSCall。最后一步选择基类为CformView。其余可取缺省设置。
2、在Form上添加四个按钮,分别为:IDC_BUTTON1"朗读";IDC_BUTTON2"暂停";IDC_BUTTON4"恢复";IDC_BUTTON3"停止",以及一编辑框IDC_EDIT1。并添加四个按钮的处理函数:OnRead、OnPause、OnResume、OnStop和编辑框EN_CHANGE事件的响应函数:OnChangeEdit。通过ClassWizard为编辑框同一变量m_Text绑定。
3、为CTTSCallView类添加两个变量: BOOL m_bCreated; HINSTANCE m_DLL;并在构造函数中初始化之。
CTTSCallView::CTTSCallView() : CFormView(CTTSCallView::IDD)
{
//{{AFX_DATA_INIT(CTTSCallView)
m_Text = _T("Hello! Welcome to use this software developed by LangRui.");
//}}AFX_DATA_INIT
m_DLL = NULL;
m_bCreated=FALSE;
}
4、在视类中的初始化函数中添加代码:
void CTTSCallView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
}
5、实现朗读功能:
void CTTSCallView::OnRead()  
{
m_DLL=LoadLibrary("Project1.dll"); //动态加载动态连接库
void (*Create)(void);
//取得DLL中的Create函数
Create=(void(*)(void))::GetProcAddress(m_DLL,"Create");  
Create();
m_bCreated=TRUE;
void (*Read)(char*);
//取得DLL 中的Read函数
Read=(void(*)(char*))::GetProcAddress(m_DLL,"Read");
//获取编辑框内容
UpdateData(TRUE);
char buf[10000];
::strcpy(buf,m_Text);
Read(buf);//朗读编辑框的内容。
GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);//"朗读"按钮不可用
GetDlgItem(IDC_BUTTON2)->EnableWindow(TRUE); //"暂停"按钮可用
GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);//"恢复"按钮不可用
GetDlgItem(IDC_BUTTON3)->EnableWindow(TRUE); //"停止"按钮可用
}
6、实现暂停功能:
void CTTSCallView::OnPause()  
{
m_DLL=LoadLibrary("Project1.dll");
void (*Pause)();
Pause=(void(*)())::GetProcAddress(m_DLL,"Pause");
BOOL (*IsSpeaking)();
//判断是否正在朗读
IsSpeaking=(BOOL(*)())::GetPro

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号