易语言调用TTS语音模块实现文字转换语音功能的代码
DLL命令表
.版本 2
.DLL命令 CoInitialize, 整数型, "ole32.dll", "CoInitialize"
.参数 pvReserved, 整数型
.DLL命令 CoUninitialize, , "Ole32.dll", "CoUninitialize", , 在当前线程,关闭COM库,卸载所有加载的DLL的线程,释放线程保持的任何其他资源,并强制关闭所有的线程上的RPC连接。
利用系统自带的TTS语音系统调用来实现播放
此功能需要加载系统自带TTS语音库模块,如果不能调用下载TTS语音修复工具试试
.版本 2
.支持库 iext
.支持库 iext2
.支持库 EThread
.程序集 窗口程序集1
.程序集变量 位置解析, 超级编辑框_回调函数使用
.程序集变量 朗读, 语音支持库
.程序集变量 是否已暂停, 逻辑型
.程序集变量 程序目录, 文本型
.程序集变量 默认语音库, 整数型
.程序集变量 文本长度, 整数型
.子程序 __启动窗口_尺寸被改变
选择夹1.左边 = 0
选择夹1.顶边 = 工具条1.高度
选择夹1.宽度 = 取用户区宽度 ()
选择夹1.高度 = 取用户区高度 () - 选择夹1.顶边
超级编辑框1.左边 = 0
超级编辑框1.顶边 = 20
超级编辑框1.宽度 = 选择夹1.宽度
超级编辑框1.高度 = 选择夹1.高度 - 35
.子程序 __启动窗口_创建完毕
.如果真 (朗读.初始化 () = 假)
信息框 (“初始化失败!请检查您的系统里面是否安装了TTS”, 0, )
返回 ()
.如果真结束
程序目录 = 取运行目录 ()
滑块条_音量.位置 = 到整数 (读取_当前音量 ())
透明标签_音量.标题 = 到文本 (滑块条_音量.位置)
滑块条_语速.位置 = 到整数 (读取_当前语速 ())
透明标签_语速.标题 = 到文本 (滑块条_语速.位置 - 10)
朗读.置_朗读速度 (滑块条_语速.位置 - 10)
枚举语音库 ()
默认语音库 = 到整数 (读取_语音库 ())
组合框_语音库.现行选中项 = 默认语音库
ISpeechVoice_挂接事件 ()
.子程序 ISpeechVoice_挂接事件
朗读.挂接事件 (1, &ISpeechVoice_StartStream)
朗读.挂接事件 (2, &ISpeechVoice_EndStream)
朗读.挂接事件 (3, &ISpeechVoice_VoiceChange)
朗读.挂接事件 (4, &ISpeechVoice_Bookmark)
朗读.挂接事件 (5, &ISpeechVoice_Word)
朗读.挂接事件 (7, &ISpeechVoice_Sentence)
朗读.挂接事件 (6, &ISpeechVoice_Phoneme)
朗读.挂接事件 (8, &ISpeechVoice_Viseme)
朗读.挂接事件 (9, &ISpeechVoice_AudioLevel)
朗读.挂接事件 (10, &ISpeechVoice_EnginePrivate)
.子程序 ISpeechVoice_StartStream, , , 事件编号: 1
.参数 用户数据, 整数型
.参数 StreamNumber, 整数型
.参数 StreamPosition, 整数型
.子程序 ISpeechVoice_EndStream, , , 事件编号: 2
.参数 用户数据, 整数型
.参数 StreamNumber, 整数型
.参数 StreamPosition, 整数型
.子程序 ISpeechVoice_VoiceChange, , , 事件编号: 3
.参数 用户数据, 整数型
.参数 StreamNumber, 整数型
.参数 StreamPosition, 整数型
.参数 VoiceObjectToken, 整数型, 参考
.子程序 ISpeechVoice_Bookmark, , , 事件编号: 4
.参数 用户数据, 整数型
.参数 StreamNumber, 整数型
.参数 StreamPosition, 整数型
.参数 Bookmark, 文本型
.参数 BookmarkId, 整数型
.子程序 ISpeechVoice_Word, , , 事件编号: 5
.参数 用户数据, 整数型
.参数 StreamNumber, 整数型
.参数 StreamPosition, 整数型
.参数 CharacterPosition, 整数型
.参数 Length, 整数型
.子程序 ISpeechVoice_Sentence, , , 事件编号: 7
.参数 用户数据, 整数型
.参数 StreamNumber, 整数型
.参数 StreamPosition, 整数型
.参数 CharacterPosition, 整数型
.参数 Length, 整数型
超级编辑框1.起始选择位置 = CharacterPosition
超级编辑框1.被选择字符数 = Length
状态条1.置文本 (1, “当前位置 ” + 到文本 (CharacterPosition) + “ / 总长度” + 到文本 (文本长度))
.子程序 ISpeechVoice_Phoneme, , , 事件编号: 6
.参数 用户数据, 整数型
.参数 StreamNumber, 整数型
.参数 StreamPosition, 整数型
.参数 Duration, 整数型
.参数 NextPhoneId, 短整数型
.参数 Feature, 整数型
.参数 CurrentPhoneId, 短整数型
.子程序 ISpeechVoice_Viseme, , , 事件编号: 8
.参数 用户数据, 整数型
.参数 StreamNumber, 整数型
.参数 StreamPosition, 整数型
.参数 Duration, 整数型
.参数 NextVisemeId, 整数型
.参数 Feature, 整数型
.参数 CurrentVisemeId, 整数型
.子程序 ISpeechVoice_AudioLevel, , , 事件编号: 9
.参数 用户数据, 整数型
.参数 StreamNumber, 整数型
.参数 StreamPosition, 整数型
.参数 AudioLevel, 整数型
.子程序 ISpeechVoice_EnginePrivate, , , 事件编号: 10
.参数 用户数据, 整数型
.参数 StreamNumber, 整数型
.参数 StreamPosition, 整数型
.参数 EngineData, 整数型
.子程序 _工具条1_被单击
.参数 按钮索引, 整数型
.判断开始 (按钮索引 = 0)
朗读.置_语音库 (默认语音库)
.如果 (是否已暂停 = 真)
朗读.方法_继续 ()
.否则
启动线程 (&朗读线程, , )
.如果结束
返回 ()
.默认
.判断结束
.判断开始 (按钮索引 = 1)
.如果 (是否已暂停 = 假)
朗读.方法_暂停 ()
是否已暂停 = 真
.否则
朗读.方法_继续 ()
.如果结束
返回 ()
.默认
.判断结束
.判断开始 (按钮索引 = 2)
朗读.方法_朗读 (“”, #SVSFPurgeBeforeSpeak)
返回 ()
.默认
.判断结束
.判断开始 (按钮索引 = 3)
通用对话框1.打开 ()
.如果真 (通用对话框1.文件名 = “”)
返回 ()
.如果真结束
启动线程 (&输出WAV线程, , )
.默认
.判断结束
.子程序 输出WAV线程
CoInitialize (0)
状态条1.置文本 (1, “正在转换,请耐心等待........”)
朗读.置_语音库 (默认语音库)
朗读.置_朗读速度 (滑块条_语速.位置 - 10)
朗读.方法_输出WAV (通用对话框1.文件名 + “.wav”, 超级编辑框1.内容)
朗读.方法_等待朗读完毕 (100)
状态条1.置文本 (1, “转换完成!”)
CoUninitialize ()
.子程序 朗读线程
位置解析.重置 ()
CoInitialize (0)
朗读.方法_朗读 (超级编辑框1.内容, 1, )
CoUninitialize ()
.子程序 回调函数
.参数 参数_是否结束, 逻辑型
.参数 参数_朗读位置, 整数型
.参数 参数_朗读长度, 整数型
.局部变量 换行符位置, 整数型
.局部变量 编辑框内容, 文本型
.如果 (参数_是否结束 = 假)
位置解析.解析正确的位置 (参数_朗读位置, 参数_朗读长度)
超级编辑框1.起始选择位置 = 参数_朗读位置
超级编辑框1.被选择字符数 = 参数_朗读长度
.否则
.如果结束
.子程序 枚举语音库
.局部变量 语音库数量, 整数型
.局部变量 临时计次, 整数型
组合框_语音库.清空 ()
语音库数量 = 朗读.取_语音库数量 ()
.计次循环首 (语音库数量, 临时计次)
组合框_语音库.加入项目 (朗读.取_语音库名称 (临时计次), )
.计次循环尾 ()
.子程序 _滑块条_音量_位置被改变
透明标签_音量.标题 = 到文本 (滑块条_音量.位置)
.子程序 _滑块条_语速_位置被改变
透明标签_语速.标题 = 到文本 (滑块条_语速.位置 - 10)
.子程序 保存_当前音量
.参数 音量, 文本型
写配置项 (程序目录 + “\set.ini”, “音量”, “value”, 音量)
.子程序 保存_当前语速
.参数 语速, 文本型
写配置项 (程序目录 + “\set.ini”, “语速”, “value”, 语速)
.子程序 保存_语音库
.参数 参数_默认语音库, 文本型
写配置项 (程序目录 + “\set.ini”, “语音库”, “value”, 参数_默认语音库)
.子程序 读取_当前音量, 文本型
返回 (读配置项 (程序目录 + “\set.ini”, “音量”, “value”, “100”))
.子程序 读取_当前语速, 文本型
返回 (读配置项 (程序目录 + “\set.ini”, “语速”, “value”, “10”))
.子程序 读取_语音库, 文本型
返回 (读配置项 (程序目录 + “\set.ini”, “语音库”, “value”, “0”))
.子程序 _组合框_语音库_列表项被选择
保存_语音库 (到文本 (组合框_语音库.现行选中项))
朗读.置_语音库 (组合框_语音库.现行选中项)
默认语音库 = 组合框_语音库.现行选中项
.子程序 _滑块条_语速_鼠标左键被放开, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
透明标签_语速.标题 = 到文本 (滑块条_语速.位置)
保存_当前语速 (透明标签_语速.标题)
朗读.置_朗读速度 (滑块条_语速.位置 - 10)
.子程序 _滑块条_音量_鼠标左键被放开, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
透明标签_音量.标题 = 到文本 (滑块条_音量.位置)
保存_当前音量 (透明标签_音量.标题)
朗读.置_音量 (滑块条_音量.位置)
.子程序 _超级编辑框1_内容被改变
超级编辑框1.内容 = 子文本替换 (超级编辑框1.内容, #换行符, “ ”, , , 真)
文本长度 = 取文本长度 (超级编辑框1.内容)
.子程序 _按钮_刷新_被单击
枚举语音库 ()
默认语音库 = 到整数 (读取_语音库 ())
组合框_语音库.现行选中项 = 默认语音库
运行结果:
总结
以上是 易语言调用TTS语音模块实现文字转换语音功能的代码 的全部内容, 来源链接: utcz.com/z/344459.html