中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 19:19
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 脚本是好玩的——让XP语音阅读你的文本文件
楼 主 脚本是好玩的——让XP语音阅读你的文本文件 发表于 2006-10-22 04:20 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线
想听听电脑是怎样发音的吗?
保存下面一句话为 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 ]
本帖最近评分记录 (共 13 条) 点击查看详情
评分人分数时间
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-01-09 09:14
Eblis +2 2007-01-15 08:52
hyb198351 +1 2007-06-25 10:17
joyn +1 2008-06-01 19:54
bigfaint +2 2008-07-03 13:51
tinlin +2 2008-07-11 18:06
driver1998 +2 2008-07-12 10:37
313885174 +2 2009-01-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'>"
2 发表于 2006-10-22 05:09 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
建议标题改为:  脚本是好玩的——让XP语音阅读你的文本文件
加入“语音”一词,别让明显让为这是在用声音读文件,而不是TYPE一样的显示文件:)

给你加10分~:)
超级顶!!!这好的内容不加分简直不是人!:)))
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
3 发表于 2006-10-22 05:44 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线
改了。谢谢提醒

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'>"
4 发表于 2006-10-22 05:46 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  呵呵,redtek比较豪放哈。

  好帖,继续……支持中…………顶!
5 发表于 2006-10-22 05:49 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
接着顶~~好贴会吸引越来越多的爱好者关注、还会带来越来越多的人气~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
6 发表于 2006-10-24 05:23 ·  中国 北京 鹏博士BGP
初级用户
积分 29
发帖 14
注册 2006-08-02 15:19
UID 59683
状态 离线
第一次处女顶......(给你了)
7 发表于 2006-10-24 05:50 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线
谢谢!

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'>"
8 发表于 2006-10-24 11:04 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
顶一下...
@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
第一高手 第二高手

9 发表于 2006-10-24 11:24 ·  中国 山西 运城 移动
中级用户
★★
积分 241
发帖 131
注册 2005-09-28 19:01
UID 42920
性别 男
状态 离线
我倒
念的那是什么啊
一个停顿都没有
一个,念的人,真笨
哈哈—……
房东说:这娃是个好孩子!
10 发表于 2006-10-24 11:40 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  嘿嘿,而且速度还蛮快的,英语不好的人可听不出来哈~
11 发表于 2006-10-24 12:15 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
阅读单词效果还行~

@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 ]
第一高手 第二高手

12 发表于 2006-10-24 22:55 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线

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


那是你比较笨,英文的标点符号后面要打空格的。比如: 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'>"
13 发表于 2006-10-25 00:50 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
Originally posted by electronixtar at 2006-10-24 22:55:


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

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

绝了
14 发表于 2006-10-25 00:54 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  恩,真是绝了,继续顶上来~~
15 发表于 2006-10-25 01:47 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
UID 61449
来自 北京
状态 离线
第一次处男顶给你了,真是TMD绝了去了..........永远支持est为VBS脚本做出的贡献.......

[ Last edited by 9527 on 2006-10-25 at 01:48 AM ]
我今后在论坛的目标就是做个超级坏人!!!
1 2 3 5 下一页 ›
论坛跳转: