易语言调用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.内容) .子程序 _按钮_刷新_被单击 枚举语音库 () 默认语音库 = 到整数 (读取_语音库 ()) 组合框_语音库.现行选中项 = 默认语音库
运行结果:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对亿速云的支持。如果你想了解更多相关内容请查看下面相关链接