服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 易语言 - 易语言调用TTS语音模块实现文字转换语音功能的代码

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

2022-02-23 15:38易语言源码教程 易语言

今天小编就为大家分享一篇关于易语言调用TTS语音模块实现文字转换语音功能的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

DLL命令表

?
1
2
3
4
.版本 2
.DLL命令 CoInitialize, 整数型, "ole32.dll", "CoInitialize"
  .参数 pvReserved, 整数型
.DLL命令 CoUninitialize, , "Ole32.dll", "CoUninitialize", , 在当前线程,关闭COM库,卸载所有加载的DLL的线程,释放线程保持的任何其他资源,并强制关闭所有的线程上的RPC连接。

利用系统自带的TTS语音系统调用来实现播放

此功能需要加载系统自带TTS语音库模块,如果不能调用下载TTS语音修复工具试试

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
.版本 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语音模块实现文字转换语音功能的代码

总结

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

延伸 · 阅读

精彩推荐
  • 易语言易语言在画板中写出指定文本当画板中已满会自动滚屏

    易语言在画板中写出指定文本当画板中已满会自动滚屏

    今天小编就为大家分享一篇关于易语言在画板中写出指定文本当画板中已满会自动滚屏,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,...

    易语言帮助手册9092022-01-12
  • 易语言易语言设置进度条边框样式的方法

    易语言设置进度条边框样式的方法

    今天小编就为大家分享一篇关于易语言设置进度条边框样式的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册4422022-01-20
  • 易语言实例操作易语言载入窗口

    实例操作易语言载入窗口

    在本文中小编给大家整理的是关于易语言载入窗口的教程和步骤内容,需要的可以跟着学习下...

    易语言教程网19162022-03-02
  • 易语言易语言获取指定磁盘的名称

    易语言获取指定磁盘的名称

    今天小编就为大家分享一篇关于易语言获取指定磁盘的名称,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    易语言帮助手册12662022-01-04
  • 易语言一步一步跟我学易语言之关于变量

    一步一步跟我学易语言之关于变量

    今天小编就为大家分享一篇关于一步一步跟我学易语言之关于变量,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册10822021-06-17
  • 易语言易语言关于程序进程和线程的基础知识

    易语言关于程序进程和线程的基础知识

    今天小编就为大家分享一篇关于易语言关于程序进程和线程的基础知识,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    三叶资源网6662022-02-24
  • 易语言易语言生成exe文件的方法

    易语言生成exe文件的方法

    在本篇内容中小编给大家分享的是关于易语言生成exe文件的方法知识点,需要的朋友们参考下。...

    易语言教程网14792022-03-01
  • 易语言一步一步跟我学易语言之第二个易程序菜单设计

    一步一步跟我学易语言之第二个易程序菜单设计

    今天小编就为大家分享一篇关于的一步一步跟我学易语言之第二个易程序菜单设计,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要...

    易语言帮助手册7092021-06-17