風雲論壇脚本中心 → 浏览:帖子主题
* 帖子主题:Windows 语音阅读引擎 SAPI.SpVoice
Rimifon (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:227
发帖:11
来自:保密
注册:2022/3/30 11:18:46
造访:2022/12/3 22:51:48
[ 第 1 楼 ] 回复
SpVoice类是支持语音合成(TTS)的核心类。通过SpVoice对象调用TTS引擎,从而实现朗读功能。 SpVoice类有以下主要属性:
    Voice:JS不可访问此对象。表示发音类型,相当于进行朗读的人。
    Rate:语音朗读速度,取值范围为-10到+10。数值越大,速度越快。
    Volume:音量,取值范围为0到100。数值越大,音量越大。
    SpVoice有以下主要方法:
    Speak:完成将文本信息转换为语音并按照指定的参数进行朗读,该方法有Text和Flags两个参数,分别指定要朗读的文本和朗读方式(同步或异步等)。
    Pause:暂停使用该对象的所有朗读进程。该方法没有参数。
    Resume:恢复该对象所对应的被暂停的朗读进程。该方法没有参数。
2022/4/11 21:12:42 IP:已设置保密
Rimifon (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:227
发帖:11
来自:保密
注册:2022/3/30 11:18:46
造访:2022/12/3 22:51:48
[ 第 2 楼 ] 回复
JS 调用示例(非 Web 环境):

var sp = new ActiveXObject("SAPI.SpVoice");
sp.speak("请周杰伦到2号窗口办理业务,请周杰伦到2号窗口办理业务", 1);

speak 的第二个参数为1,表示异步朗读,朗读过程中线程不会卡住。
2022/4/11 21:24:27 IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:光明使者
积分:449
发帖:29
来自:保密
注册:2022/3/30 15:28:53
造访:2022/12/6 10:24:37
[ 第 3 楼 ] 回复
利用 SAPI 生成语音文件:

var st = new ActiveXObject("SAPI.SpFileStream");
st.open("test.wav", 3, false);
var sp = new ActiveXObject("SAPI.SpVoice");
sp.audioOutputStream = st;
sp.speak("您有一个新订单");
st.close();
2022/4/11 21:33:15 IP:已设置保密
pojin (ID: 2)
等级:精灵
积分:117
发帖:1
来自:保密
注册:2022/3/30 11:42:27
造访:2022/12/5 23:24:22
[ 第 4 楼 ] 回复
这是个好功能!
2022/4/12 8:17:40 IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:光明使者
积分:449
发帖:29
来自:保密
注册:2022/3/30 15:28:53
造访:2022/12/6 10:24:37
[ 第 5 楼 ] 回复
利用 SAPI 生成语音流(不生成文件):

var st = new ActiveXObject("SAPI.SpMemoryStream");
var sp = new ActiveXObject("SAPI.SpVoice");
sp.audioOutputStream = st;
sp.speak("您有一个新订单");
var bin = st.getData();

原打算用此功能做一个 ASP 版在线文本转语音的接口,结果发现 ASP 端不支持 speak 方法,提示“没有权限”。在 IIS 中将身份验证连接为管理员账号,仍然出错且无法捕捉到错误信息。
2022/4/12 9:01:27 IP:已设置保密
分页: 1, 共 1 页
快速回复主题
账号/密码
用户: 没有注册? 密码:
评论内容