html5 web speech,Web Speech

## Web Speech 语音输入

老版本中,如果我们要部署一个带有语音搜索功能的input,可用如下代码:

```

x-webkit-speech speech />

```

然后通过webkitspeechchange事件来监听用户输入:

```

var speech = document.getElementById('speech');

speech.onwebkitspeechchange = funciton(){

}

```

注意:目前只有Chrome支持这种带语音的输入框。

在新版本中,我们还可以用JavaScript操作语音输入,就是通过Web Speech这个API。(也是只有Chrome支持)

主要有两部分:

- 语言识别(将所说的转换成文本文字)

- 语言合成(将文本文字读出来)

**1、语言识别**

**1.1 SpeechRecognition对象**

这个API部署在`SpeechRecognition`对象之上。

**1.1.1 检测是否支持**

```

if ('webkitSpeechRecognition' in window) {

// 支持

}

```

确定支持后,新建一个`SpeedchRecognition`的实例对象:

```

if ('webkitSpeechRecognition' in window) {

var recognition = new webkitSpeechRecognition();

}

```

**1.1.2 属性和方法**

**属性**

- continous:是否让浏览器始终进行语言识别,默认为false,也就是说,当用户停止说话时,语音识别就停止了。这种模式适合处理短输入的字段。

- maxAlternatives:设置返回的最大语音匹配结果数量,默认为1

- lang:设置语言类型,默认值就继承自HTML文档的根节点或者是祖先节点的语言设置。

**方法**

- start():启动语音识别

- stop():停止语音识别

- abort():中止语音识别

**1.1.3 事件**

浏览器会询问用户是否许可浏览器获取麦克风数据

这个API提供了11个事件。

- audiostart:当开始获取音频时触发,也就是用户允许时。

- audioend:当获取音频结束时触发

- error:当发生错误时触发

- nomatch:当找不到与语音匹配的值时触发

- result: 当得到与语音匹配的值时触发,它传入的是一个SpeechRecognitionEvent对象,它的results属性就是语音匹配的结果数组,最匹配的结果排在第一位。该数组的每一个成员是SpeechRecognitionResult对象,该对象的transcript属性就是实际匹配的文本,confidence属性是可信度(在0到1之间)

- soundstart

- soundend

- speechstart

- speechend

- start:当开始识别语言时触发

- end:当语音识别断开时触发

看个实例:

```

x-webkit-speech speech />

var speech = document.getElementById('speech');

if('webkitSpeechRecognition' in window) {

var recognition = new webkitSpeechRecognition();

recognition.onaudiostart = function(){

speech.value = '开始录音';

};

recognition.ononmatch = function(){

speech.value = '没有匹配结果,请再次尝试';

};

recognition.onerror = function(){

speech.value ='错误,请再次尝试';

};

// 如果得到与语音匹配的值,则会触发result事件。

recognition.onresult = function(event){

if(event.results.length > 0) {

var results = event.results[0];

var topResult = results[0];

if(topResult.confidence > 0.5) {

} else {

speech.value = '请再次尝试';

}

}

}

}

```

**2、语音合成**

语音合成只有Chrome和Safari支持。

**2.1 SpeechSynthesisUtterance对象**

打开控制台,黏贴下面的函数,然后调用:

```

funciton speak(textToSpeak){

var newUtterance = new SpeechSynthesisUtterance();

newUtterance.text = textToSpeak;

window.speechSynthsisi.speak(newUtterance);

}

```

**2.1 SpeechSynthesisUtteranc的实例对象的属性**

- text:识别的文本

- volume:音量(0~1)

- rate:发音速度

- pitch:音调

- voice:声音

- lang:语言类型

**2.2 window.speechSynthesis.getVoices()**

通过API提供给用户的声音在很大程度上取决于操作系统。谷歌有自己的一套给Chrome的默认声音,可以在Mac OS X,Windows和Ubuntu上使用。Mac OS X的声音也可用,所以和OSX的Safari的声音一样。你可以通过开发者工具的控制台看有哪种声音可用。

`window.speechSynthesis.getVoices()`用来获取发音列表,返回一个数组,每个元素的name属性表示声音名称

**2.3 window.speechSynthsisi.speak()**

`window.speechSynthsisi.speak()`方法是用于发音的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值