Board logo

标题: 脚本是好玩的——让XP语音阅读你的文本文件 [打印本页]

作者: electronixtar     时间: 2006-10-22 04:20    标题: 脚本是好玩的——让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 ]
作者: redtek     时间: 2006-10-22 05:09
建议标题改为:  脚本是好玩的——让XP语音阅读你的文本文件
加入“语音”一词,别让明显让为这是在用声音读文件,而不是TYPE一样的显示文件:)

给你加10分~:)
超级顶!!!这好的内容不加分简直不是人!:)))
作者: electronixtar     时间: 2006-10-22 05:44
改了。谢谢提醒
作者: lxmxn     时间: 2006-10-22 05:46

  呵呵,redtek比较豪放哈。

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

作者: redtek     时间: 2006-10-22 05:49
接着顶~~好贴会吸引越来越多的爱好者关注、还会带来越来越多的人气~:)
作者: zhwvip     时间: 2006-10-24 05:23
第一次处女顶......(给你了)
作者: electronixtar     时间: 2006-10-24 05:50
谢谢!
作者: fastslz     时间: 2006-10-24 11:04
顶一下...
@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

作者: maya0su     时间: 2006-10-24 11:24
我倒
念的那是什么啊
一个停顿都没有
一个,念的人,真笨
哈哈—……
作者: lxmxn     时间: 2006-10-24 11:40

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

作者: fastslz     时间: 2006-10-24 12:15
阅读单词效果还行~
@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 ]
作者: electronixtar     时间: 2006-10-24 22:55


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

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

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

作者: vkill     时间: 2006-10-25 00:50


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


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

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

绝了
作者: lxmxn     时间: 2006-10-25 00:54

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

作者: 9527     时间: 2006-10-25 01:47
第一次处男顶给你了,真是TMD绝了去了..........永远支持est为VBS脚本做出的贡献.......

[ Last edited by 9527 on 2006-10-25 at 01:48 AM ]
作者: redtek     时间: 2006-10-25 01:49
收藏!!!
作者: fastslz     时间: 2006-10-25 07:32


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


Re fastslz :
在批处理中使用,一句就够了:

谢谢~ 11楼的代码改过了
作者: 47258369     时间: 2006-10-28 23:35
楼主,我这里运行怎么会出错啊,提示:
脚本: X:\say.vbs
行:    1
字符: 1
错误: 下标越界
代码: 800A0009
源:    Microsoft VBScript 运行时错误
作者: 47258369     时间: 2006-10-28 23:49
不好意思楼主,终于试出来怎么玩了,把文本拖进去以后就能发声了,一开始我一直以为要先打开这个脚本来以后,把文本文件拖进去~~~顺便再问下其他文件能朗读吗,比如:ini、html、bat等
作者: electronixtar     时间: 2006-10-28 23:59
其他的ini bat 可以。HTML的需要稍微修改下才可以。我现在做的是,每天早上打开电脑自动为我读 cnbeta 的 RSS 新闻
作者: newaifi     时间: 2006-11-1 04:00
如何把自动让它阅读一个特定文件里的内容呢?
比如阅读 .\a.txt 文件中的内容?
作者: electronixtar     时间: 2006-11-1 05:15
修改原代码里的  WScript.Arguments(0) 为 "C:\MyText.txt"

举个例子而已。注意要有引号
作者: yszy     时间: 2006-11-1 16:14
呵呵`有意思
作者: qq82015930     时间: 2006-11-1 23:34
,我 为什么 不能 读中文的啊?你能嘛?
作者: electronixtar     时间: 2006-11-2 02:12


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

安装了 Office 的中文发音引擎就能读中文了。具体在控制面板里设置。其实SAPI4+阅读中文的效果不好。在Vista上的Speech Server效果很好。
作者: eech     时间: 2006-11-9 23:24
我拷.真是神奇.帮你顶!!!
作者: hellomop     时间: 2006-11-27 22:30
顶上去,实在是好贴!!!
作者: redtek     时间: 2006-12-22 09:35
这么精彩的好贴又欣赏了一遍~~~
作者: jmz573515     时间: 2006-12-22 10:59
好东西,收藏了。
作者: sunya     时间: 2006-12-22 22:49
不错的脚本,蛮实用的,收了

  Quote:
Originally posted by electronixtar at 2006-10-28 10:59 AM:
其他的ini bat 可以。HTML的需要稍微修改下才可以。我现在做的是,每天早上打开电脑自动为我读 cnbeta 的 RSS 新闻

dos阅读RSS如何做的?
作者: tghksj     时间: 2006-12-22 22:49
脚本收下了,
能力所在只能加2分.
作者: leoson88     时间: 2006-12-22 23:04
真的是不错的好帖子,能阅读文本文件,可惜我自己没能弄出中文的~~
作者: liuwushu     时间: 2006-12-23 06:30
我的是D版WINXP,没有wscript组件。呵呵!
作者: liuwushu     时间: 2006-12-23 06:47
我装了Office,但是没有中文发音引擎。。。
作者: redtek     时间: 2006-12-23 06:51
我试着挺好玩,你还可以让它读 “……Oooa,,,,,Aaaaoooooo……” 等很滑稽的怪音~:D
作者: liuwushu     时间: 2006-12-23 07:01
我去下载了一个TTS发音组件,现在就可以中文发音,但是读出来不是很流利。
作者: liuwushu     时间: 2006-12-23 07:04
楼上的你-_-!
作者: leoson88     时间: 2006-12-23 07:10
我安装了OFFICE还是不能读中文,要下载个TTS发音组件就能发中文音了吗?
作者: liuwushu     时间: 2006-12-23 12:53
TTS5.1 很多网站都有你去百度找找!
作者: lxmxn     时间: 2006-12-25 03:49

  今天又用到你的这个帖子的脚本了,再顶一个~

作者: ksuday     时间: 2007-1-9 00:29
我真的要晕了,真原能发音啊,但没有发出中文来
作者: qasa     时间: 2007-1-9 02:59
强,这么好的东西,不能沉了
作者: yyqkcb     时间: 2007-1-9 03:04
不是一般的牛B啊~~
作者: qpmgljf     时间: 2007-1-9 03:31
顶顶...真是牛B啊....这也行...哈哈...挖到宝啦..~~~
作者: xiaohacker     时间: 2007-1-15 06:10    标题: yuhaomiao

我晕,天下还有这等强的东西!
作者: PPdos     时间: 2007-1-15 06:53    标题: 晕哪 此帖作者竟然是我们论坛的阿。。。

昨天还看了篇类似文章 把那小子崇拜的跟云彩一样 没想到是克隆来得阿。。。也不标注引用 给他一棒锤 楼主+++
作者: Eblis     时间: 2007-1-15 08:49
厉害啊...我也是第一次顶``````
作者: electronixtar     时间: 2007-1-15 09:25


  Quote:
昨天还看了篇类似文章 把那小子崇拜的跟云彩一样 没想到是克隆来得阿。。。也不标注引用 给他一棒锤 楼主+++

这种没素质的淫啊,习惯了
作者: boluor     时间: 2007-1-16 05:36
高,实在是高啊
作者: redtek     时间: 2007-1-31 06:58
欣赏~~
好帖子顶起来~:)))
作者: flykiss8     时间: 2007-2-7 03:46
学习了...
作者: bza2006     时间: 2007-3-21 10:27
不错,不得不顶
作者: jackyggt     时间: 2007-3-30 13:40

作者: lp1129     时间: 2007-3-31 14:11
强贴,在CMD中就可以运行下面的代码!

mshta vbscript:CreateObject("SAPI.SpVoice").Speak("楼主好人")(Window.close)
作者: lp1129     时间: 2007-3-31 14:14
一个批处理运行完毕,在后面加上一句,不能不让人惊叹!

mshta vbscript:CreateObject("SAPI.SpVoice").Speak("报告主人执行完毕")(Window.close)
作者: xroot     时间: 2007-4-5 05:55
太牛了。顶
作者: fenglingluan     时间: 2007-5-30 12:38
只有想不到,没有做不到,

真牛人也!
作者: weapfe     时间: 2007-6-24 19:41    标题: 好帖就是不能让它沉了啊

我现在在想,无奈何版主不是有个看天气预报的bat了吗?
作者: weapfe     时间: 2007-6-24 19:44    标题: 晕,还没有打完就发出去了-_-!

要是能从网上抓下新闻来读,就很8错了。。楼上有人说过了,他就在用,可我想了好半天也没有想出来-_-!
作者: vssun     时间: 2007-10-30 11:32
真的很爽.谢谢
作者: vssun     时间: 2007-10-30 12:00
能带上翻译工能吗?
作者: hackway     时间: 2007-10-31 10:27
好好玩  呵呵  高人啊
作者: 40szb     时间: 2007-11-10 22:17
牛人到处有,这里特别多
我大头小头一起顶你
作者: zhengruijian     时间: 2008-5-31 19:33
我试了下11楼的程序,不小心把程序本身粘贴到运行的程序里了,还能读出=这样的字符,只是到后面就读不了了,脚本出错.
作者: liminghack     时间: 2008-6-1 10:16    标题:

大哥真是功力深厚
作者: andison625     时间: 2008-6-1 11:25
太强了..顶起

再想想,如何从网页下载那些新闻报导,存成文本让他每天都读新闻.
又或者加个多种语言版+翻译.......应该可以的.
作者: andison625     时间: 2008-6-1 11:25
可不可以搞成收音机啊?
作者: fzp070     时间: 2008-6-1 15:32
强人不少呀,顶一个先
作者: feixingzt     时间: 2008-6-1 23:25    标题:

非常好
作者: radem     时间: 2008-6-2 00:39
怎么我的不成功????
作者: module     时间: 2008-7-2 16:54
强人啊,不的不佩服
作者: module     时间: 2008-7-2 16:55
强人啊,不的不佩服
作者: hisplay     时间: 2008-8-22 02:38
我顶。。。。。。。我也给你加分。。可我不能。。。要不,一定给你一万分