为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

编程实现快速语音阅读数据库

2011-04-10 2页 pdf 100KB 16阅读

用户头像

is_221943

暂无简介

举报
编程实现快速语音阅读数据库 DATABASE AND INFORMATION MANAGEMENT 数据库和信息管理 编程实现快速语音阅读数据库 梁海珍 (武警指挥学院模拟中心,天津 300350) 摘 要: 利用 VC++调用 Excel的语音阅读功能,实现快速语言阅读并显示数据库内容。 关键字: VC++;Excel;语音阅读 1 前言 很多程序都可以进行语音阅读,进一步方便用户,典型 的就是金山词霸,可以对指定词汇阅读。使用 VC++开发的语 音阅读应用程序大多数都是基于 API将文本转换为语音输出, 文中利用 VC++调用办公软件 E...
编程实现快速语音阅读数据库
DATABASE AND INFORMATION MANAGEMENT 数据库和信息管理 编程实现快速语音阅读数据库 梁海珍 (武警指挥学院模拟中心,天津 300350) 摘 要: 利用 VC++调用 Excel的语音阅读功能,实现快速语言阅读并显示数据库内容。 关键字: VC++;Excel;语音阅读 1 前言 很多程序都可以进行语音阅读,进一步方便用户,典型 的就是金山词霸,可以对指定词汇阅读。使用 VC++开发的语 音阅读应用程序大多数都是基于 API将文本转换为语音输出, 文中利用 VC++调用办公软件 Excel可以方便快速实现语音阅 读,简便易行。Excel是常用的办公软件,将它运用到 VC++ 应用程序中,在不需要附加成本的情况下可以充分利用其各 种功能为办公带来便利,使功能实现起来更加便捷。 2 编程实例 常用办公软件 Excel具有语音朗读功能,可以朗读所选单 元格内容。以 Excel2003为例,菜单“工具”->“语音”,显 示“文本到语音工具栏”,选中需阅读的单元格,点击工具栏 的“朗读单元格”按钮,即阅读单元格内容。在 VC++编程 中,通过调用这一语音功能,在不显示 Excel程序界面的情况 下将指定内容写入 Excel单元格中实现语音朗读。 使用自动化功能从 Visual C++应用程序中控制 Microsoft Office组件,自动化建立在组件对象模型(COM) 的基础上。 COM是一种基于接口的标准软件结构,可将代码分离为独立 的对象,每个对象都公开一组接口,到对象的所有通信(如 初始化、通知和数据传输) 都是通过这些接口进行的。VC++ 可以用 3 种方法实现自动化来控制 Microsoft Office 组件: COM库函数、MFC 的 ClassWizard、#import指令。 本例选用第二种方法,并在 2.3实现步骤中体现应用: (1) 创建工程,初始化 COM。在应用程序类的 InitIn- stance中添加 AfxOleInit ()。 (2) 创建组件包装类:通过" AddClass",选择 From a Type Library (来自类型库)。 (3) 释放组件对象:ReleaseDispatch ()。 2.1 实例运行 本例建立名为“yuyin”的 Access数据库,程序运行界面 如图 1所示。按钮“读取数据库”将数据库中的内容显示于 上方列表中,当用户选中某一行记录时,当前该条记录的书 名字段和出版社字段内容显示在下方相应的编辑框中,并完 成对所选行内容进行语音朗读。 2.2 编程原理 程序运行时,读出数据库中记录显示在列表中。当用户 选定数据库中的某条记录时,启动 Excel。如果启动 Excel失 败则给出提示信息,否则成功启动 Excel并使其应用程序不可 见。同时利用空模板建立新的 Excel文档,将所选中的记录内 容写入 Excel文档的单元格中,调用语音朗读功能朗读单元格 内容,朗读完毕后释放程序中用到的有关指针,并退出 Excel 应用程序。 由于本例中数据记录为两个字段,所以分别写入单元格 A1,A2中,朗读单元格内容即可。朗读完毕后释放指针,并 退出 Excel应用程序。 2.3 实现步骤 (1) 建立数据库 Access程序中建立数据库 yuyin,表中设计两个字段,书 名与出版社。 (2) 创建工程 yu VC++建立基于 Dialog-Base MFC AppWizard Exe 工程 yu, The Fast Realization of Speech Reading Database by Programming LIANG Haizhen (Simulating Center, Command College of Armed Police Forces, Tianjin 300350) Abstract: The speech function of Excel is used VC++ in programming. The context of database is displayed. Key Words: VC++; Excel; speech reading 本文收稿日期:2009-2-16 图 1 例程运行界面 yu 读取数据库 信息管理系统→电子工业出版社 数据结构→清华大学出版社 程序设计基础→机械工业出版社 信息管理系统 电子工业出版社 89- - 电脑编程技巧与维护 在 yu.cpp中添加代码利用 ADO连接数据库 yuyin.mdb。 //初始化 COM AfxOleInit () ; //创建 ADO连接 m_pConnection.CreateInstance (__uuidof (Connection)) ; //打开 Access库 yuyin.mdb m_pConnection->Open (" Provider=Microsoft.Jet.OLEDB. 4.0;Data Source=yuyin.mdb" ,"" ,"" ,adModeUnknown) ; (3) 添加头文件 在 yuDlg.cpp中添加如下头文件: #include " excel.h" //本例调用 excel2003 (4) 添加类并声明类对象 进入“ClassWizard”,点击“Add Class”,选择“From A Type Library”,找到 office目录下的“excel.exe”,选中本例中 用到的类 _Application、Workbooks、_Workbook、Worksheets、 _Worksheet、Range 并进行添加,在 yuDlg.cpp 中声明每个类 相应的对象 ExcelApp、books、book、sheets、sheet、range,如 下: _Application ExcelApp; Workbooks books; _Workbook book; Worksheets sheets; _Worksheet sheet; Range range; (4) “读取数据库”按钮代码实现功能 列表控件 m_AccessList显示数据库内容,当选中列表中某 一行记录时,对应内容显示于下面的两个编辑框中,其中 IDC_EDIT2显示书名内容,IDC_EDIT3显示对应出版社内容。 有关列表控件操作在此不做详解,语音朗读是在 On- SelchangeList1() 函数中,函数中主要代码如下: void CYuDlg::OnSelchangeList1 () { //记录指针移动,显示内容 int curSel = m_AccessList.GetCurSel () ; … m_pRecordset->MoveFirst () ; m_pRecordset->Move (long (curSel)) ; … //启动 Excel ::CoInitialize (NULL) ; if (! ExcelApp.CreateDispatch (" Excel.Application" , NULL)) { AfxMessageBox (" 启动 Excel失败!") ; exit (1) ; //启动失败则退出 } //启动成功,设 excel应用程序界面不可见 ExcelApp.SetVisible (false) ; books=ExcelApp.GetWorkbooks () ; //利用空模板文件建立新文档 book=books.Add (COleVariant ("")) ; sheets=book.GetWorksheets () ; sheet=sheets.GetItem (COleVariant ((short) 1)) ; //第一字段显示在 A1单元格中并朗读 range =sheet.GetRange (COleVariant ( " A1" ) , COle- Variant (" A1")) ; CString str; GetDlgItemText (IDC_EDIT2,str) ; range.SetValue2 (COleVariant (str)) ; range.Speak ( COleVariant ( ( short) 0) ,COleVariant ((short) 1)) ; //第二字段显示于 A2单元格中并朗读 range =sheet.GetRange (COleVariant ( " A2" ) , COle- Variant (" A2")) ; str="" ; GetDlgItemText (IDC_EDIT3,str) ; range.SetValue2 (COleVariant (str)) ; range.Speak ( COleVariant ( ( short) 0) ,COleVariant ((short) 1)) ; //释放指针 range.ReleaseDispatch () ; sheet.ReleaseDispatch () ; sheets.ReleaseDispatch () ; book.ReleaseDispatch () ; books.ReleaseDispatch () ; ExcelApp.ReleaseDispatch () ; //退出 Excel ExcelApp.Quit () ; … } 本例中朗读内容为汉字,所以选择的语言为 Simplified Chinese,这样对英文单词则是逐个字母识别。如果需要识别 英文则可以通过“控制面板”,单击“声音、语音和音频设 备”,选择“语音”中的“文字-语音转换”选项卡,在“语 言选择”下,选择其他语言。 3 结语 在 Window XP中安装 Excel2003的情况下,利用 VC++编 程实现语音朗读,在 Visual C++6.0中编译通过。此外,根据 用户要求也可以单独设置按钮,在需要的情况下对指定内容 朗读,实现起来快捷方便,而且丰富了系统功能,更加直观 贴近用户。 参考文献 [1]汪令江,周学文等. 奇思异想编程序 VC篇. 国防工业出 版社,2004. [2]云舟工作室. 中文版Word2000 VBA 一册通. 人民邮电出 版社,2000. 作者简介 梁海珍,武警指挥学院,主要从事计算机教学与软件编程。 90- -
/
本文档为【编程实现快速语音阅读数据库】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索