千与千寻

济宁果壳科技专业软件开发团队,提供全方位的互联网服务!
座机:0537-2551991 手机:16688004545(微信)15563775221(微信)

热门标签

  1. 做回自己
  2. 果壳学院
  3. 技术顾问
  4. 语音合成 (Speech Synthesis),语音识别(Speech Recognition) | 果壳科技
语音合成 (Speech Synthesis),语音识别(Speech Recognition) | 果壳科技

语音合成 (Speech Synthesis),语音识别(Speech Recognition) | 果壳科技

语音合成 ,Speech Synthesis,语音识别,Speech Recognition,JS,前端应用,Windows窗体应用,济宁果壳科技。Windows 语音使用

济宁果壳科技

2016-07-22 16:46:01

0

3481

一、首先说一下语音识别和语音合成技术实现;Windows系统有自己的语音,基于C#的开发,也已经将语音封装到System.Speech程序集中,有兴趣的朋友可以自己试试;

二、我们讲述一下c#实现语音阅读以及文本转语音文件,是基于c#的一个类库SpeechSynthesizer 实现的,使用该类必须要添加引用using System.Speech.Synthesis;直接是无法添加引用的,先对项目进行添加System.Speech引用;

下面的代码使用窗体应用程序简单实现的,当然程序集里还封装的好多的功能,大家可以自行探讨;在web应用是不行的,应该可以封装成ActiveX 控件,供浏览器调用吧,这个还没实现;下面会说用JS实现web语音技术。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Speech.Synthesis;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Speech_WinForm
{
public partial class SpeakVoice : Form
{
public SpeakVoice()
{
InitializeComponent();
}

private void text_content_TextChanged(object sender, EventArgs e)
{

}

private void btn_speak_Click(object sender, EventArgs e)
{
var content = this.text_content.Text;
SpeechSynthesizer synth = new SpeechSynthesizer();
synth.Speak(content);
}

private void SpeakVoice_Load(object sender, EventArgs e)
{

}
}
}

上面的代码也可以用控制台应用程序去写,在这里只给大家一个引子,感兴趣的同志可以去百度一下吧,

三、HTML5语音Web Speech

HTML5中和Web Speech相关的API实际上有两类,一类是“语音识别(Speech Recognition)”,另外一个就是“语音合成(Speech Synthesis)”,这两个名词听上去很高大上,实际上指的分别是“语音转文字”,和“文字变语音”。 而下面要介绍的就是这里的“语音合成-文字变语音”。为什么称为“合成”呢?比方说你发音“你好,世界!” 实际上是把“你”、“好”、“世”、“界”这4个字的读音给合并在一起,因此,称为“语音合成”。 “语音识别”和“语音合成”看上去像是正反两方面,实际上,至少从兼容性来看,两者并无法直接对等。 “语音识别(Speech Recognition)”目前的就Chrome浏览器和Opera浏览器默认支持,并且需要webkit私有前缀:

1、先说一下 语音识别(Speech Recognition)

使用的基本套路如下: 创建SpeechRecognition的新实例。

由于到目前为止,浏览器还没有广泛支持,所以需要webKit的前缀:

var newRecognition = webkitSpeechRecognition(); 设置是持续听还是听到声音之后就关闭接收。通过设置continuous属性值实现。一般聊天沟通使用false属性值,如果是写文章写公众号之类的则可以设置为true,

如下示意: newRecognition.continuous = true;

控制语音识别的开启和停止,可以使用start()和stop()方法:

// 开启 newRecognition.start();

// 停止 newRecognition.stop(); 对识别到的结果进行处理,可以使用一些事件方法,比方说onresult: newRecognition.onresult = function(event) { console.log(event); } event是个对象,我家里电脑不知道什么原因,无法成功返回识别内容,显示网络错误,可能因为墙的缘故:

2、语音合成Speech Synthesis


先从最简单的例子说起,如果想让浏览器读出“你好,世界!”的声音,可以下面的JS代码:


var utterThis = new window.SpeechSynthesisUtterance('你好,世界!');

window.speechSynthesis.speak(utterThis);


没错,只需要这么一点代码就足够了,大家可以在自己浏览器的控制台里面运行上面两行代码,看看有没有读出声音。


上面代码出现了两个长长的对象,SpeechSynthesisUtterance和speechSynthesis,就是语音合成Speech Synthesis API的核心。


首先是SpeechSynthesisUtterance对象,主要用来构建语音合成实例,例如上面代码中的实例对象utterThis。我们可以直接在构建的时候就把要读的文字内容写进去:


var utterThis = new window.SpeechSynthesisUtterance('你好,世界!');


又或者是使用实例对象的一些属性,包括:


text – 要合成的文字内容,字符串。

lang – 使用的语言,字符串, 例如:"zh-cn"

voiceURI – 指定希望使用的声音和服务,字符串。

volume – 声音的音量,区间范围是0到1,默认是1。

rate – 语速,数值,默认值是1,范围是0.1到10,表示语速的倍数,例如2表示正常语速的两倍。

pitch – 表示说话的音高,数值,范围从0(最小)到2(最大)。默认值为1。


因此上面的代码也可以写作:


var utterThis = new window.SpeechSynthesisUtterance();

utterThis.text = '你好,世界!';


不仅如此,该实例对象还暴露了一些方法:


onstart – 语音合成开始时候的回调。

onpause – 语音合成暂停时候的回调。

onresume – 语音合成重新开始时候的回调。

onend – 语音合成结束时候的回调。


接下来是speechSynthesis对象,主要作用是触发行为,例如读,停,还原等:


speak() – 只能接收SpeechSynthesisUtterance作为唯一的参数,作用是读合成的话语。

stop() – 立即终止合成过程。

pause() – 暂停合成过程。

resume() – 重新开始合成过程。

getVoices – 此方法不接受任何参数,用来返回浏览器支持的语音包列表,是个数组,例如,在我的电脑下,Firefox浏览器返回的语言包是两个:

虽然数量很多,是有种给人中看不中用的感觉,为什么这么说呢!在我的chrome浏览器下,不知道为什么,不会读任何声音,但是同样的demo见面,公司的电脑就可以,我后来仔细查了一下,有可能(20%可能性)是我家里的电脑win7版本是阉割版,没有安装或配置TTS引擎。


手机Safari浏览器也不会读。



三、语音合成Speech Synthesis API有什么用


对于盲人或弱视用户,往往会借助一些辅助设备或者软件访问我们的网页,其原理是通过触摸或定位某些元素发出声音,来让用户感知内容。


有了语音合成Speech Synthesis API,对于这类用户,以及开发人员自己,都会带来一定的便利性。首先对于视觉有障碍的用户,他们就不需要再安装其他软件或购买其他设备,就可以无障碍地访问我们的产品。对于开发人员自己,我们的无障碍建设可以变得更加灵活,不一定要百分百契合ARIA无障碍规范(可参见我之前文章“WAI-ARIA无障碍网页应用属性完全展示”),因为我们可以直接让浏览器合成我想要的语音内容,例如,VoiceOver在对一些标签读取的时候,总会附带一句“标志性内容”,就算对于我这样专业从业者,这个词也是有点生涩难懂的,我们其实可以把这个语音合成交给自己,使用更通俗易懂的词反馈给用户,我想体验上应该是更好的。



定制首选 果壳科技 咨询热线:0537-2551991

关闭咨询框
赘婿
分享到:QQ空间新浪微博腾讯微博人人网微信
王思聪 吴亦凡 全职法师 樱花 恰好是少年 贰 海边 我和我的家乡 深水炸弹 37年积蓄家中发霉 哥斯拉大战金刚 逆战 迪丽热巴 房东回应免租4年中美关系三条底线 该忘了 丰田 两象打架一象劝和 下一位前度 魔兽世界 一家8口同日离世 夏有乔木雅望天堂 猪猪侠 上海5人被浪卷走 阴阳师奔驰 王一博 冒险岛 奔跑吧 体操男团获得铜牌 nba季后赛 奔跑吧兄弟 雷神 梦幻西游 小花仙斗罗大陆 凯特王妃 流金岁月 中超积分榜 让我好好看看你 地下城与勇士 Without Me 诸葛亮 风犬少年的天空 两小无猜 镇魂街 易烊千玺 穿越火线姐妹俱乐部 铠甲勇士 杨毅 积水如何进入地铁5号线隧道?钟南山凡尔赛发言 河南文物局局长哭了 万古神帝 欧洲杯 三国演义 吉利 拜托了冰箱 狼行者 寻情记 项少龙全职高手 | 下一页 魔兽世界