web端文字转语音的几种方案
最近在开发一个微信排队取号的的系统,其中对于服务员端(管理端) 需要有呼叫功能,即点按钮 就播出"xxx号顾客请就座"的声音。
经过在网上一番搜索研究,web端实现指定文字的语音播放 方案有这几种
1 免费在线服务,一些网站提供文字转语音文件的功能,其中好像百度,讯飞还提供接口调用,但对我来说,需要联网这个条件就被否决了。
2 使用微软内置activatex语音控件,最简单的但缺点也明显,只能在IE上用,考虑到系统可能在平板电脑上使用,所以这个方案也被否决。
js代码
var VoiceObj = new ActiveXObject("Sapi.SpVoice");
VoiceObj.Speak("xxx号顾客请就座", 1);
3 重点来了。 前端使用H5的audio播放组件,后台使用SpeechSynthesizer生成wav音频文件流直接向播放器的src输出。
大致代码如下:
前端html
<audio id="audioPlay">
<source type="audio/wav" />
</audio> ...... function play(callText) {
var audioPlay = document.getElementById("audioPlay");
audioPlay.src = "../voicehandler.ashx? voice=" + callText;
audioPlay.play();
}
c#后台代码
public class VoiceHandler : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{ Thread t = null;
context.Response.ContentType = "application/wav";
using (MemoryStream ms = new MemoryStream())
{ t = new Thread(() =>
{
SpeechSynthesizer ss = new SpeechSynthesizer();
try
{
ss.Rate = -;
ss.Volume = ;
ss.SetOutputToWaveStream(ms);
ss.Speak(context.Request["voice"]);
}
catch(Exception ex)
{
ss.Dispose();
context.Response.Write(ex.Message);
}
});
t.Start();
t.Join();
ms.Position = ;
if (ms.Length > )
{
ms.WriteTo(context.Response.OutputStream);
}
context.Response.End(); } }
}
由于语音要设置人声,语速,然后合成语音等一个系列的过程,所以这里要注意的是需要通过异步线程方式调用 SpeechSynthesizer。
iis调用SpeechSynthesizer,还涉及权限问题,如果程序报出这个异常:
System.InvalidOperationException Message=系统上未安装语音,或没有当前安全设置可用的语音。
那么,试试
1. 权限问题;你可以尝试把应用程序池的进程标识改成LocalSystem
2. webconfig配置:<identity impersonate="true" userName="YourAdminUsr" password="YourAdminPwd"/>
web端文字转语音的几种方案的更多相关文章
- php在web端播放amr语音(如微信语音)
在使用微信JSSDK的上传下载语音接口时,发现一个问题: 下载的语音在iPhone上不能播放,测试了之后原因竟然是: 微信接口返回的音频内容是amr格式的,但iPhone不支持播放此类型格式. 那么转 ...
- 语音识别(语音转文字)&& 语音合成(文字转语音)
[语音合成API]SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等 // 语音播报 s ...
- 对接网易云信音视频2.0呼叫组件集成到vue中,实现web端呼叫app,视频语音通话。
项目中需要实现视频通话功能,经过公司的赛选,采用网易云信的视频通话服务,app小伙伴集成很顺利.web端需要实现呼叫app端用户.网易云信文档介绍不全,vue的demo满足不了需求,和客服人员沟通,只 ...
- Web端测试和移动端测试的区别
1.记录bug 在Web端可以通过系统自带的截图和QQ截图等方式来截取bug的图片,对于错误的地方可以用工具自带的标识来重点标记. 对于移动端设备可以用手机自带的截图工具来截图然后传到电脑上,个人一般 ...
- web端测试和移动端测试的区别小记
转:http://qa.blog.163.com/blog/static/19014700220157128345318/ 之前一直参与web端的测试,最近一个项目加入了移动端,本人有幸参与了移动端的 ...
- cordova使用webrtc与网页端及移动端视频、语音聊天
最近在做一个移动端与移动端.网页端文字.视频.语音聊天的功能.文字聊天使用websocket,在网上很多资料,也没什么难度.但是在视频.语音聊天上遇到了小小的难点.之前一直在找一些SDK想快速开发,例 ...
- Web端测试和移动端测试
之前参加的项目有涉及Web端测试和移动端测试,简单的记录下他们之间的区别: 1.记录bug 在Web端可以通过系统自带的截图和QQ截图等方式来截取bug的图片,对于错误的地方可以用工具自带的标识来 ...
- Asciinema文章勘误及Web端使用介绍
欠下的债迟早是要还的,查文档,重验证,出结果,不误导 文章勘误 在上一篇文章Asciinema:你的所有操作都将被录制中有两个地方表述有错误或瑕疵,这里更正一下 第一个地方为录制时的参数--stdin ...
- web端测试总结
1.数值型输入框: 条件:demcial(x,y) ,界面显示小数点到y位 通常要检查以下几点: (1)边界值:最大值.最小值.最大值+1.最小值-1 (2)位数:最小位数.最大位数.最小位数-1最 ...
随机推荐
- 【转】Vue生命周期
Vue所有的生命周期钩子自动绑定在this上下文到实例中,因此你可以访问数据,对属性和方法进行运算.这意味着你不能使用箭头函数来定义一个生命周期方法.这是因为箭头函数绑定了父上下文,因此this与你期 ...
- MongoDB journal与oplog解惑
journal journal 是 MongoDB 存储引擎层的概念,目前 MongoDB主要支持 mmapv1.wiredtiger.mongorocks 等存储引擎,都支持配置journal. M ...
- 运行Scrapy项目提示“import win32api ImportError: DLL load failed: 找不到指定的模块。”
安装完成Scrapy时候,终端导入Scrapy时候,发现没有任何报错,但是在运行Scrapy的项目的时候提示“import win32api ImportError: DLL load failed: ...
- 编写第一个python selenium-webdriver程序(二)
上节介绍了如何搭建selenium 系统环境,那么本节来讲一下如何开始编写第一个自动化测试脚本. Selenium2.x 将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里 ...
- mysql重复start stop slave测试
如题,测试重复start slave, stop slave是否会有报错. 版本 5.7.21 重复start slave测试 第一次start >start slave; Query OK, ...
- 小米笔记本装MAC(黑苹果),外接USB蓝牙,禁止笔记本自带的蓝牙方法
https://blog.daliansky.net/ 解决插入耳机没有声音问题,每次开机需要重新插拔一次:https://github.com/daliansky/XiaoMi-Pro/blob/m ...
- 阅读<<HDMI 1.4/2.0 Transmitter Subsystem V2.0>>笔记
阅读<<HDMI 1.4/2.0 Transmitter Subsystem V2.0>>笔记 1.Subsystem Block Diagram 2.HDMI TX Subs ...
- IntelliJ IDEA maven项目 ***
创建一个新Maven项目 new 一个project 不选择任何Maven模板 起个GroupId.ArifactId 起个项目名.注意:Idea_Project是存放此项目的工作区间,mavenDe ...
- sql Find_IN_SET 用法
字段以 1,2,3,4 格式存储的SELECT * from test where FIND_IN_SET('15',btype) GROUP_CONCAT + group_by
- spring 整合Junit学习
测试一般是测试的局部功能,使用时需要自己写个测试相关的spring配置文件,比较费劲,所以常用的是纯配置的方式来实现测试. @RunWith(SpringJUnit4ClassRunner.class ...