ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 16223|回复: 24

[分享] 关于发音的自动化对象

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-5-31 09:56 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:其他编程应用
我查了一下,建议这个
1。用SAPI.SPVOICE对象
  这个是MS的TTS引擎,似乎在WIN XP 就自带了,至少我试装的一个WIN XP SP2祼机便自带
  WINXP初装祼机虽然没有中文语音,不过SAPI.SPVOICE已经有了,所以推荐这个,如果你是2000和98,另找MS的TTS装一个,或当我没说
    至于EXCEL的那个APPLICATIP.SPEECH.SPEAK,我还是建议当成鸡肋,垃圾什么的。因为这玩意在2003之前就没有,在2003之后只有EXCEL才有,也就是说要跟着EXCEL APPLICATION一起玩,同学们,不带这么玩的,我们搞TTS的话,就算用XP,用WIN 7,也没说过要带着EXCEL APP啊。
2。中文语音
  当然,要有中文。
OFFICE中文会带一个中文版的语音,不过呢XP的同学建议自已另找一个中文语音,因为那个也是垃圾中的战斗机,你做开发听多了会结巴的,教育对象的拼音和英文一定会退步。WIN7自带的就不用了,声音还可以。我在XP下就找一个NEO的LILY语单。
3。SAPI的用法
下面是VBA代码的演示用法,其中主要是发音、速率以及同步的问题,默认是异步,在SPEAK方法发音后同时执行后面的代码,
然后我用了两次MSGBOX停止代码,发音时间比较长,演示PAUSE方法,如果你在SPEAK发音未完之前按下第1个MSGBOX,执行了SPEAK.PAUSE方法,它就停下了。第2次继续
Set sapiX = CreateObject("SAPI.SpVoice")
sapiX.Volume = 100 '音量
sapiX.Rate = 0 '语音速率 越大越快
FlagsAsync=1  '同步或异步,1是异步
'下面这段是选系统已安装的语音,可以不运行,用控制面板人工手选好的
'set colVoice=sapiX.getVoices() '安装有多少个语音集合可选
'set sapiX.Voice=colVoice(0) '选第1种语音

strText="I asked God for a bike, but I know God doesn't work that way."
strText=strText & "So I stole a bike and asked for forgiveness."
strText=strText & "开始我直接求上帝赐辆自行车。后来我琢磨上帝办事儿不是这个路数。 于是老子偷了一辆然后求上帝宽恕。"

sapiX.Speak strtext,FlagsAsync  '同步或异步
msgbox "调试窗口,注意同步和异步效果"
sapiX.Pause '暂停SPEAK,异步有效,如果MSGBOX按下去,还在扯的一段就卡察
MSGBOX "PAUSE,继续发音"
sapiX.Resume

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-5-31 10:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
太感谢了,能够暂停,不过不能继续发音。
这句好似没起到作用:sapiX.Resume

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-31 10:56 | 显示全部楼层
耸肩,为了区分我特意在E文和中文中间停下了调试过有效果的,要不你找个长的段子试试。
具体怎么回事就不管了,兄弟你这个我也是心情好才会玩一下,上两个月有朋友的小孩要学习,要我给他做随机加汉字,还要学笔划我给找拆笔划的,加音调(所以我有这个感想,XP烂得不行的中文发音)
建议对照那个API有空对照学习一下吧,鸟语克服一下,我找不到MS的中文文档,有AUTOMATION自动化的就不错了
http://msdn.microsoft.com/en-us/library/ms723602(v=VS.85).aspx

[ 本帖最后由 hiyou 于 2011-5-31 10:58 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-5-31 11:44 | 显示全部楼层

回复 3楼 hiyou 的帖子

非常感谢,暂时可以解决我的问题
  1. Set sapiX = CreateObject("SAPI.SpVoice")
  2. sapiX.Volume = 100 '音量
  3. sapiX.Rate = 0 '语音速率 越大越快
  4. FlagsAsync=1  '同步或异步,1是异步
  5. strText="I asked God for a bike, but I know God doesn't work that way."
  6. strText=strText & "So I stole a bike and asked for forgiveness."
  7. strText="开始我直接求上帝赐辆自行车。后来我琢磨上帝办事儿不是这个路数。 于是老子偷了一辆然后求上帝宽恕。开始我直接求上帝赐辆自行车。后来我琢磨上帝办事儿不是这个路数。 于是老子偷了一辆然后求上帝宽恕。开始我直接求上帝赐辆自行车。后来我琢磨上帝办事儿不是这个路数。 于是老子偷了一辆然后求上帝宽恕。开始我直接求上帝赐辆自行车。后来我琢磨上帝办事儿不是这个路数。 于是老子偷了一辆然后求上帝宽恕。开始我直接求上帝赐辆自行车。后来我琢磨上帝办事儿不是这个路数。 于是老子偷了一辆然后求上帝宽恕。开始我直接求上帝赐辆自行车。后来我琢磨上帝办事儿不是这个路数。 于是老子偷了一辆然后求上帝宽恕。开始我直接求上帝赐辆自行车。后来我琢磨上帝办事儿不是这个路数。 于是老子偷了一辆然后求上帝宽恕。开始我直接求上帝赐辆自行车。后来我琢磨上帝办事儿不是这个路数。 于是老子偷了一辆然后求上帝宽恕。开始我直接求上帝赐辆自行车。后来我琢磨上帝办事儿不是这个路数。 于是老子偷了一辆然后求上帝宽恕。"
  8. sapiX.Speak strtext,FlagsAsync  '同步或异步
  9. msgbox "调试窗口,注意同步和异步效果"
  10. sapiX.Pause '暂停SPEAK,异步有效,如果MSGBOX按下去,还在扯的一段就卡察
  11. MSGBOX "PAUSE,继续发音"
  12. sapiX.Resume
复制代码
我用的是这段代码,文本可是够长了。直接存成了vbs文件,执行后点继续发音确实无效。
不过能打到返回ppt放映状态的目的。

再有如果那个对话窗出现的位置可以控制就好了,弹出默认在屏幕的中间,我希望右上角

[ 本帖最后由 书生春秋 于 2011-5-31 11:47 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-31 11:46 | 显示全部楼层
再试了一下,XP2的SAPI所带PAUSE之后RESUME不能恢复。SAPI 5.3似乎可以。
是我这段代码有问题还是SAPI版本问题,没有时间再仔细调试了,建议就下个5.3还是5.4,我记得你开始的问题,是想要个独立的TTS引擎做开发么。

TA的精华主题

TA的得分主题

发表于 2011-5-31 11:53 | 显示全部楼层

回复 5楼 hiyou 的帖子

明白了,谢谢。
那可能是我tts引擎的问题。
我是想给ppt添加自动旁白功能。

最初的方案是利用ppt调用excel的文本到语音功能来实现。不过那个一单播放起来,无法停止。试了试您的这个方法,总算可以停来了。

我是装了一个ScanSoft_MeiLing中英文混读的语音引擎,那个版本的就不清楚。当时office不全,没有文本到语音功能。
原来的方案发不了声,重装了office2003后才勉强能用,结果又停不下来。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-31 12:21 | 显示全部楼层
原帖由 书生春秋 于 2011-5-31 11:44 发表
非常感谢,暂时可以解决我的问题Set sapiX = CreateObject("SAPI.SpVoice")
sapiX.Volume = 100 '音量
sapiX.Rate = 0 '语音速率 越大越快
FlagsAsync=1  '同步或异步,1是异步
strText="I asked God for a bike ...
我用的是这段代码,文本可是够长了。直接存成了vbs文件,执行后点继续发音确实无效。
不过能打到返回ppt放映状态的目的。
再有如果那个对话窗出现的位置可以控制就好了,弹出默认在屏幕的中间,我希望右上角

呃,对话窗无所谓了,只是个MSGBOX,我是顺手拿来停代码调试用。你要是PPT或一般的FORM,直接嵌一个控件啦,小BUTTON啦在画面上,位置喜欢上下左右都OK,CLICK事件里面放一个SPEAK.PAUSE,不就完了

TA的精华主题

TA的得分主题

发表于 2011-5-31 12:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 7楼 hiyou 的帖子

想到一起了,我正打算这么弄。
最后再请教下您,怎么看系统是否安装sapi及版本。
我的是xp2系统,能装sapi5.3吗?如果可以就给个链接吧。
刚百度搜了找到Speech SDK 5.1

TA的精华主题

TA的得分主题

发表于 2011-6-23 10:52 | 显示全部楼层
常见的设置基本上都有了,但还缺一个,就是音调设置:
Img269329422.jpg
请问如何实现呢?

TA的精华主题

TA的得分主题

发表于 2011-6-23 18:21 | 显示全部楼层
我以前做了一个,不过不是Excel做的

请下载后自行杀毒,不知某些杀软是否误杀,

[ 本帖最后由 ZHYZ 于 2011-6-23 18:38 编辑 ]

TXT文件阅览朗读工具.rar

43.94 KB, 下载次数: 363

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 21:02 , Processed in 0.051638 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表