首页 > 编程 > 易语言 > 正文

易语言调用TTS语音模块实现文字转换语音功能的代码

2024-07-21 23:02:57
字体:
来源:转载
供稿:网友

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,文字,转换

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对VeVb武林网的支持。


注:相关教程知识阅读请移步到易语言教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表