易语言调用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.内容)
.子程序 _按钮_刷新_被单击
枚举语音库 ()
默认语音库 = 到整数 (读取_语音库 ())
组合框_语音库.现行选中项 = 默认语音库

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 易语言制作语音聊天机器人的代码

    常量数据表 .版本 2 .常量 对话前, "<文本长度: 7>", , text":" .常量 对话后, "<文本长度: 2>", , "} .常量 token前, "<文本长度: 16>", , "access_token":" .常量 双撇号, "<文本长度: 1>", , " .常量 apikey, &q

  • 易语言识别语音的方法

    可以调用调用百度语音识别API来识别语音,具体步骤如下 1.首先要去百度开发者中心去申请这个服务 2.进去后找到百度语音识别服务,然后下面有个立即使用,然后如果说你没有创建过应用的话那就先去创建个应用. 3.具体内容自己填写,填写完毕后点击下一步. 4.会发现直接性就申请好了.这时候点击应用管理就可以看到你开通的语音识别服务. 5.这时候,请你拿起笔记下你的AID和APIKey和SecretKey,这个在源码中是需要修改的. 6.然后去这个网站把源码下载下来.http://pan.baidu.c

  • 易语言做语音朗读工具方法

    怎么自己动手做一个语音朗读的小工具呢 1.打开易语言,新建一个易语言窗口程序 2.在右边添加一个媒体播放组件和一个编辑框组件,一个按钮组件. 3.在左边模块菜单添加精易模块 4.在左边属性改下如下属性内容 5.双击启动窗口,写入如下代码 6.双击按钮组件,写入如下代码 7.点击运行,并静态编译成可执行程序.好了,一个小的语音朗读工具做好了 总结:以上就是关于易语言做语音朗读工具方法教学,感谢大家的阅读和对我们的支持.

  • 易语言调用百度语音平台实现文字转换语音功能的代码

    调用百度语音平台实现文字转换语音功能 此功能需要加载精易模块5.6 .版本 2 .支持库 wmp9 .程序集 窗口程序集1 .子程序 _试听按钮_被单击 播放器1.地址 = "http://tts.baidu.com/text2audio?lan=zh&pid=101&ie=UTF-8&text=" + 编码_URL编码 (内容编辑框.内容, , 真) + "&spd=5&per=4" ' 参数 可需 描述 ' tex 必填

  • 易语言制作方言版语音合成工具

    麦霸传说语音合成专家 此功能需要加载讯飞云语音模块 .版本 2 .支持库 exui .支持库 iext .程序集 窗口程序集_启动窗口 .程序集变量 音乐, 文本型 .子程序 __启动窗口_创建完毕 云语音_初始化 ("dev.voicecloud.cn:80/index.htm", "5476b55d", "10000", "speex.dll", "2048") 时钟1.时钟周期 = 100 组合框_语

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

    DLL命令表 .版本 2 .DLL命令 CoInitialize, 整数型, "ole32.dll", "CoInitialize" .参数 pvReserved, 整数型 .DLL命令 CoUninitialize, , "Ole32.dll", "CoUninitialize", , 在当前线程,关闭COM库,卸载所有加载的DLL的线程,释放线程保持的任何其他资源,并强制关闭所有的线程上的RPC连接. 利用系统自带的TTS

  • 易语言调用墨迹天气实现自动定位获取天气情况的代码

    常量数据表 .版本 2 .常量 实况头, "<文本长度: 9>" .常量 实况尾, "<文本长度: 2>" .常量 更新时间头, "<文本长度: 28>" .常量 更新时间尾, "<文本长度: 9>" .常量 温度头, "<文本长度: 28>" .常量 温度尾, "<文本长度: 5>" .常量 空气质量头, &quo

  • 易语言调用百度api识别是否为色情图片的代码

    调用百度云色情图片识别的代码 此功能需要加载精易模块5.6 .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 _识别按钮_被单击 百度云色情识别 () .子程序 百度云色情识别 .局部变量 类_XMLHTTP, 类_XMLHTTP .局部变量 Accesss_token, 文本型 .局部变量 str, 文本型 Accesss_token = GetAccesss_token () 类_XMLHTTP.打开 ("POST", "https://aip.b

  • 易语言调用api枚举网卡名称并且获取信息的代码

    DLL命令表 .版本 2 .DLL命令 GetProcAddress, 整数型, "kernel32", "GetProcAddress", , 返回函数地址 .参数 hModule, 整数型 .参数 lpProcName, 文本型 .DLL命令 GetModuleHandle, 整数型, "kernel32", "GetModuleHandleA", , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄

  • 易语言调用whois实现域名批量查询与注册的代码

    域名批量查询注册与whois查询的代码 此功能需要加载精易模块5.6 .版本 2 .支持库 EThread .程序集 窗口程序集_启动窗口 .子程序 _批量查询_被单击 启动线程 (&查询是否可以注册, , ) .子程序 查询是否可以注册 .局部变量 xml, 文本型 .局部变量 域名数组, 文本型, , "0" .局部变量 计次, 整数型 批量查询.禁止 = 真 批量查询.标题 = "正在查询..." 域名数组 = 分割文本 (删首尾空 (批量域名.内容)

  • 易语言调用接口来实现机器人聊天的功能

    常量数据表 .版本 2 .常量 常量1, "<文本长度: 41>", , AI [现行时间]: Hi俺寂寞空虚冷 陪陪俺吧 .常量 常量2, "<文本长度: 25>", , 我 [现行时间]: [内容] .常量 常量3, "<文本长度: 24>", , AI [现行时间]: [内容] .常量 常量4, "<文本长度: 8>", , "text":"

  • C++ 编写DLL文件给易语言调用方法

    摸索了两天了,终于解决了所有问题,在此跟大家分享. 需要三个文件,dll_demo.h.dll_demo.cpp.dll_dome.def 直接上代码: 头文件如下: #ifndef _DLL_DEMO_H_ #define _DLL_DEMO_H_ #ifdef DLLDEMO_EXPORTS #define DLL_DEMO extern "C" __declspec(dllexport) #else #define DLL_DEMO extern "C" __

  • 易语言调用JS取随机数

    易语言自带的取随机数,取小范围的数字还行,大了就不行了,后面的根本取不到,所以我们需要借且JS来取随机数 1.启动易语言新建一个空白的程序或者模块都可以 2.双击界面,进入代码编辑,在代码界面新建一个子程序,修改为子程序_取随机数_JS 3.让鼠标指针放在上面,按回车添加2个整数型参数,分别命名为[起始值][终止值] 4.可以把公开勾上,这样可以复制到模块里面进行调用.第一个参数[起始值]设置为可空,如果没有传入参数,默认就是为0 5.添加其他JS代码,完成编写,纯代码在最后,直接复制到易语言界

  • 易语言调用JS代码方法总结

    以下是我们易语言调用JS代码的步骤 步骤1: 步骤2: 步骤3: 步骤4: 以上就是四个详细步骤,感谢大家对我们的支持.

随机推荐