会说话的Web应用--语音合成API介绍
yuyutoo 2024-12-26 17:33 2 浏览 0 评论
会说话的Web应用——语音合成API介绍
寸志· 5 个月前
Web Speech API为JavaScript加入了语音识别(语音转文本)和语音合成(文本转语音)两项功能。本文着重介绍后者,即最近加入到Chrome 33(桌面版和移动版)的API。如果你对语音识别感兴趣,Glen Shires已经撰写一篇文章介绍语音识别的功能,Voice Driven Web Apps: Introduction to the Web Speech API。
基础
语音合成API的最简单的使用方式就是传递一个表述给speechSynthesis.speak:
var msg = new SpeechSynthesisUtterance('Hello World');
window.speechSynthesis.speak(msg);
试试看!(译注:原文这里有个按钮给读者试)
当然,声音的大小、音频、音高和音色甚至语种都可以使用参数来控制:
var msg = new SpeechSynthesisUtterance;
var voices = window.speechSynthesis.getVoices;
msg.voice = voices[10]; // Note: some voices don't support altering params
msg.voiceURI = 'native';
msg.volume = 1; // 0 to 1
msg.rate = 1; // 0.1 to 10
msg.pitch = 2; //0 to 2
msg.text = 'Hello World';
msg.lang = 'en-US';
msg.onend = function(e) {
console.log('Finished in ' + event.elapsedTime + ' seconds.');
};
speechSynthesis.speak(msg);
设置语音
API为你提供了接口,获取引擎支持的语音列表:
speechSynthesis.getVoices.forEach(function(voice) {
console.log(voice.name, voice.default ? '(default)' :'');
});
然后,通过设置表述的.voice属性来设置不同的语音。
var msg = new SpeechSynthesisUtterance('I see dead people!'); msg.voice = speechSynthesis.getVoices.filter(function(voice) { return voice.name == 'Whisper'; })[0]; speechSynthesis.speak(msg);
演示
var msg = new SpeechSynthesisUtterance('I see dead people!'); msg.voice = speechSynthesis.getVoices.filter(function(voice) { return voice.name == 'Whisper'; })[0]; speechSynthesis.speak(msg);
在我2013年Google I/O的演讲中,More Awesome Web: features you've always wanted,我为大家演示了Google Now,与Siri很相似。当时我使用的是Web Speech API的SpeechRecognition服务,结合Google翻译API,实时地讲麦克风输入翻译为另外的语言(演示)。
不过,它所使用的语音识别是一个没有文档同时也非官方的API。现在好了,我们拥有了完成的Web Speech API,将返回的翻译结果念出来!我更新了演示,使用了最新的识别API。
浏览器兼容性
Chrome 33已经完全支持Web Speech API,不过iOS7上的Safari只提供了部分支持。
特性检测
既然浏览器有可能支持部分支持Web Speech API(Chromium就是个例子),你也许需要分开检测浏览器是否支持特定的API:
if ('speechSynthesis' in window) {
// Synthesis support. Make your web apps talk!
}
if ('SpeechRecognition' in window) {
// Speech recognition support. Talk to your apps!
}
相关推荐
- Linux 关机与重启命令 在linux中关机重启的命令怎么写的
-
关机命令我们可以使用以下三种命令来关机Linux:1、立刻关机(需要root用户)...
- 长按电源键强制关机,真的会弄坏电脑吗?
-
“开始菜单——电源——关机”。不知道差友们是否和托尼一样,尽管用了好几年的电脑,期间无论换过多少台,每当想要给电脑关机的时候,这几个步骤一直固定没变。但Windows系统的尿性想必很多...
- WIN服务器快捷命令大全 电脑服务器快捷方式
-
以下是Windows服务器上常用的快捷命令大全,涵盖了文件管理、网络配置、服务管理、系统监控等多个方面的内容,适合日常管理和运维使用。一、常用快捷命令1.打开命令提示符和PowerShell...
- linux实例之关闭、重启linux系统 关闭和重启linux操作系统
-
linux系统提供了多个用于关闭和重启linux系统的操作命令,分别有用于关闭系统的shutdown命令,halt命令,poweroff命令,init命令,systemctl命令,以及用于重启系统的r...
- 如何创建一个双击打开就能关机的图标
-
前言Windows每个版本的关机按钮位置好像都不太一样,有时候根本找不到。有些时候又得点好几次才能把电脑关了,着实是着急。...
- 使用 Python 注销、重启、关闭计算机
-
众所周知,Python是一种功能强大的脚本语言。在本文中,将编写一个Python程序本控制计算机,实现计算机的注销、重启、关闭等操作。...
- Windows系统CMD命令提示符的常用命令汇总
-
一、概述本期文章分享Window系统CMD命令提示符的常用命令汇总,结合具体的使用场景,向各位小伙伴分享关于Window操作系统系统管理、磁盘管理、文件管理、进程任务管理、网络管理和常用工具等命令,...
- 怎样用命令行关闭电脑? 怎么用命令关闭电脑
-
对于很多人来说,在Windows系统上关机太简单了,只需要点击开始-电源-关机即可,但你知道怎么用命令行关机吗?事实上,利用命令行可以构建更复杂的关机任务,而这些都是电源选项做不到的。据微软官方介绍,...
- 怎么使用命令行定时关机 cmd定时关机命令设置时间
-
方法1:设置关闭时间,仅在24小时内。例如,如果要在18:50设置计划的关机时间,请单击开始菜单→运行→输入18:50关机-s命令→确定。到达该点时,系统将提示您在一分钟内关闭计算机...
- 电脑常用命令提示符大全 电脑命令提示符用来干什么
-
电脑在日常工作和生活使用中,大家偶尔会用到一些命令提示符,比如注册表管理器的regedit,系统配置命令MSConfig之类的(我之前的文章中都有涉及使用),那么通常都有哪些命令提示符是常用的呢?作用...
- 君子如兰不动手 简单设置让Cortana操作一切
-
虽然江湖中有句俗语说“能动手的时候别吵吵”,但对咱们这帮用电脑的人来说,现在是能动嘴的时候还是别打字了吧。不仅仅是因为冬天打字冻手(南北都一样),时间一长什么腱鞘炎、腕管炎也都找上门来了。另外,科技这...
- Linux怎么关机 linux系统关机流程
-
请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1.前言在本教程中,我们将通过实际案例演示最常见的Linux系统关机选项及其详细解释。...
- 电脑CMD命令大全-学会让别人刮目相看
-
电脑CMD(命令提示符)是一个强大的工具,允许用户通过输入命令来执行各种操作。掌握一些常用的CMD命令可以让你在处理电脑问题时显得更加专业,甚至让别人刮目相看。以下是一些常用的CMD命令及其用途,按照...
- 使用SHUTDOWN 快速关机重启 shutdown 立即关机
-
立即重启,不需要时间等待shutdown-r-t0立即关机,不需要时间等待(尽量不要在服务器上执行这个命令,否则就得去机房启动了)shutdown-s-t0等待1分钟重启...
- 如何远程关闭局域网中的电脑? 怎么能远程关闭电脑
-
一般单位或企业中都会有很多台电脑,如果电脑操作系统都是windows操作系统的话,我们可以能过配置后,通过远程来关闭它们,省去人工关机步骤,省时,快捷。下面我们看看如何进行设置!一.准备条件1-1...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)