易语言调用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

回到顶部