中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 脚本是好玩的——让XP语音阅读你的文本文件
« [1] [2] [3] [4] [5] »
作者:
标题: 脚本是好玩的——让XP语音阅读你的文本文件 上一主题 | 下一主题
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『楼 主』:  脚本是好玩的——让XP语音阅读你的文本文件

想听听电脑是怎样发音的吗?
保存下面一句话为 Say.vbs
CreateObject("SAPI.SpVoice").Speak CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll
拖一个含有英文的文本文件(*.txt)到这个vbs图标上,你的Windows XP就会自动帮你读这个文件。

要结束阅读,请 Ctrl+Alt+Del 打开任务管理器结束 wscript.exe 进程

要调节语音、音色、语速、中文阅读等,请到 控制面板 --> 语音 设置。(如果安装了 Office 则可能读中文哦)

兼容: Windows XP/2003/Vista ,以及安装了 Speech 组件的 Windows 98/2000 等。其中Vista的发音效果要比其他的好一个档次,很流畅,很自然。

代码拆解及分析:
set oSpeech = CreateObject("SAPI.SpVoice") '连接到系统的语音功能
set oFSO = CreateObject("Scripting.FileSystemObject") '打开FSO以阅读文件
set oFile = oFSO.OpenTextFile(WScript.Arguments(0)) '打开拖放到本vbs的txt文件,也就是打开脚本第一个参数
strContent = oFile.ReadAll '读取文本所有内容到一个字符串 strContent
oSpeech.Speak strContent '让系统读出字符串里的内容
set oSpeech = nothing
set oFSO = nothing
set oFile = nothing '释放资源,闪人
常见问题及解答
FAQ Updated 2006-12-21
1. 为什么我的XP阅读英文的效果是一个字母一个字母的,我记得可以阅读单词的呀?
  这是因为你错误的设置了默认发音角色为中文的缘故。在 控制面板 语音 里把 默认发音设置成英文的,例如Microsoft Sam即可

2. 为什么阅读语句之间没有停顿呢?
  请在每一个英文标点符号后面打一个英文的半角空格,这是英文书写习惯

3. 我这里运行怎么会出错啊,提示:下标越界
  请 拖 一个txt 的图标到 这个 vbs 的图标上,不要直接点这个vbs文件的图标

4. 除了txt还可以阅读网页之类的不
  可以。要修改代码,或者参照 这个帖子 把网页下载/转换成txt格式的然后朗读

5. 可以读中文不?
  可以。安装了 Office 的中文发音引擎就能读中文了。具体在控制面板里设置。其实SAPI4+阅读中文的效果不好。在Vista上的Speech Server效果很好。

6. 在哪里调节语速?
  我的电脑 控制面板 语音

7. 可以发音读一个单词不?我不想读文件
  可以的,在批处理中用这句话:
  mshta vbscript:CreateObject("SAPI.SpVoice").Speak("hello, Batch fans!")(Window.close)

[ Last edited by electronixtar on 2006-12-22 at 09:12 AM ]

   此帖被 +51 点积分          点击查看详情   
评分人:【 redtek 分数: +10  时间:2006-10-22 05:08
评分人:【 utem999 分数: +4  时间:2006-10-25 01:21
评分人:【 jmz573515 分数: +2  时间:2006-12-22 10:58
评分人:【 tghksj 分数: +2  时间:2006-12-22 22:48
评分人:【 lxmxn 分数: +20  时间:2006-12-25 03:53
评分人:【 hsting 分数: +1  时间:2007-1-9 09:14
评分人:【 Eblis 分数: +2  时间:2007-1-15 08:52
评分人:【 hyb198351 分数: +1  时间:2007-6-25 10:17
评分人:【 joyn 分数: +1  时间:2008-6-1 19:54
评分人:【 bigfaint 分数: +2  时间:2008-7-3 13:51
评分人:【 tinlin 分数: +2  时间:2008-7-11 18:06
评分人:【 driver1998 分数: +2  时间:2008-7-12 10:37
评分人:【 313885174 分数: +2  时间:2009-1-13 00:12





C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-10-22 04:20
查看资料  发送邮件  发短消息 网志   编辑帖子
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 2 楼』:  

建议标题改为:  脚本是好玩的——让XP语音阅读你的文本文件
加入“语音”一词,别让明显让为这是在用声音读文件,而不是TYPE一样的显示文件:)

给你加10分~:)
超级顶!!!这好的内容不加分简直不是人!:)))



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-10-22 05:09
查看资料  发送邮件  发短消息 网志   编辑帖子
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 3 楼』:  

改了。谢谢提醒




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-10-22 05:44
查看资料  发送邮件  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  


  呵呵,redtek比较豪放哈。

  好帖,继续……支持中…………顶!


2006-10-22 05:46
查看资料  发送邮件  发短消息 网志   编辑帖子
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 5 楼』:  

接着顶~~好贴会吸引越来越多的爱好者关注、还会带来越来越多的人气~:)



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-10-22 05:49
查看资料  发送邮件  发短消息 网志   编辑帖子
zhwvip
初级用户





积分 29
发帖 14
注册 2006-8-2
状态 离线
『第 6 楼』:  

第一次处女顶......(给你了)

2006-10-24 05:23
查看资料  发短消息 网志   编辑帖子
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 7 楼』:  

谢谢!




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-10-24 05:50
查看资料  发送邮件  发短消息 网志   编辑帖子
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 8 楼』:  

顶一下...
@echo off
if "%1"=="" color 0e && echo 文本语音阅读脚本帮助! && echo. && echo 使用方法: 将目标文件托拽到文件Say.bat中 && PING/n 4 127.1>NUL && exit
if "%1"=="/?" color 0e && echo 文本语音阅读脚本帮助! && echo. && echo 使用方法: 将目标文件托拽到文件Say.bat中 && PING/n 4 127.1>NUL && exit
echo set oSpeech = CreateObject("SAPI.SpVoice")>%TEMP%\Say.vbs
echo set oFSO = CreateObject("Scripting.FileSystemObject")>>%TEMP%\Say.vbs
echo set oFile = oFSO.OpenTextFile(WScript.Arguments(0))>>%TEMP%\Say.vbs
echo strContent = oFile.ReadAll>>%TEMP%\Say.vbs
echo oSpeech.Speak strContent>>%TEMP%\Say.vbs
echo set oSpeech = nothing>>%TEMP%\Say.vbs
echo set oFSO = nothing>>%TEMP%\Say.vbs
echo set oFile = nothing>>%TEMP%\Say.vbs
path=%path%;%TEMP%
if exist %~fs1 start Say.vbs %~fs1
cls && color 0a && echo. && echo  按任意键停止阅读 . . . && echo. && echo      要调节语音、音色、语速、中文阅读等,请到控制面板→语音→设置。&&echo      如果安装了 Office 则可能读中文哦 && pause >nul
taskkill /f /t /im WScript.exe >nul 2>nul
del %TEMP%\Say.vbs




第一高手    第二高手

2006-10-24 11:04
查看资料  发送邮件  发短消息 网志   编辑帖子
maya0su
中级用户




积分 241
发帖 131
注册 2005-9-28
状态 离线
『第 9 楼』:  

我倒
念的那是什么啊
一个停顿都没有
一个,念的人,真笨
哈哈—……



房东说:这娃是个好孩子!
2006-10-24 11:24
查看资料  发送邮件  发短消息 网志  OICQ (55115315)  编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 10 楼』:  


  嘿嘿,而且速度还蛮快的,英语不好的人可听不出来哈~


2006-10-24 11:40
查看资料  发送邮件  发短消息 网志   编辑帖子
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 11 楼』:  

阅读单词效果还行~
@echo off
mode con cols=58 lines=10
:开始
color 0a
cls
Set 按键=
echo.
echo  (按C退出)
Set /p 按键=  请输入你想要阅读的单词:
If /I "%按键%"=="" goto 开始
If /I "%按键%"=="c" exit
mshta vbscript:CreateObject("SAPI.SpVoice").Speak("%按键%")(Window.close)
goto 开始
[ Last edited by fastslz on 2006-10-25 at 07:20 AM ]



第一高手    第二高手

2006-10-24 12:15
查看资料  发送邮件  发短消息 网志   编辑帖子
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 12 楼』:  



  Quote:
一个停顿都没有
一个,念的人,真笨
哈哈—……

那是你比较笨,英文的标点符号后面要打空格的。比如:  Hello, world. 要比 Hello,world 效果好。好就好在 , 后面那个空格

Re fastslz :
在批处理中使用,一句就够了:
mshta vbscript:CreateObject("SAPI.SpVoice").Speak("hello, Batch fans!")(Window.close)





C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-10-24 22:55
查看资料  发送邮件  发短消息 网志   编辑帖子
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by electronixtar at 2006-10-24 22:55:


那是你比较笨,英文的标点符号后面要打空格的。比如:  Hello, world. 要比 Hello,world 效果好。好就好在 , 后面那个空格

Re fastslz :
在批处理中使 ...

绝了

2006-10-25 00:50
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 14 楼』:  


  恩,真是绝了,继续顶上来~~


2006-10-25 00:54
查看资料  发送邮件  发短消息 网志   编辑帖子
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 15 楼』:  

第一次处男顶给你了,真是TMD绝了去了..........永远支持est为VBS脚本做出的贡献.......

[ Last edited by 9527 on 2006-10-25 at 01:48 AM ]



我今后在论坛的目标就是做个超级坏人!!!
2006-10-25 01:47
查看资料  发短消息 网志  OICQ (329429)  编辑帖子
« [1] [2] [3] [4] [5] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: