分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

使用Speech实现js播放音频

发布时间:2023-09-06 02:14责任编辑:郭大石关键词:js

环境:

windows10;

IIS 10;

.Net4.5.2;

首先在程序中添加System.Speech的引用

在控制器中加入以下代码:

 1 ????????public async Task GetSpeek(string context) 2 ????????{ 3 ????????????try 4 ????????????{ 5 ????????????????using (SpeechSynthesizer hello = new SpeechSynthesizer()) 6 ????????????????{ 7 ????????????????????var speek = hello.SpeakAsync(context); 8 ????????????????????while (!speek.IsCompleted) 9 ????????????????????{10 ????????????????????????System.Threading.Thread.Sleep(100);11 ????????????????????}12 ????????????????????using (System.IO.MemoryStream ms = new System.IO.MemoryStream())13 ????????????????????{14 ????????????????????????hello.SetOutputToWaveStream(ms);15 16 ????????????????????????HttpContext.Response.ClearContent();17 ????????????????????????HttpContext.Response.ContentType = "audio/mp3";18 ????????????????????????HttpContext.Response.BinaryWrite(ms.ToArray());19 ????????????????????????//Dispose20 ????????????????????????await ms.FlushAsync();21 ????????????????????????// ms.Dispose();22 ????????????????????????ms.Close();23 ????????????????????????24 ????????????????????????//HttpContext.Response.Close();25 ????????????????????????HttpContext.Request.Abort();26 ????????????????????}27 ????????????????}28 ????????????}29 ????????????catch (Exception ex)30 ????????????{31 32 ????????????}33 ????????}

注意:这里只能使用异步方法

为什么?异常会告诉你。

最后一句

HttpContext.Request.Abort();

  

可以使用:

HttpContext.Response.Close();

  

这两句,为什么,等会我再解释,先上前端代码:

 ???function speckText() { ???????try { ???????????var n = new Audio(); ???????????var url = "http://localhost:8211/Home/GetSpeek?context=" + Math.random(); ???????????n.src = url; ???????????n.loop = false; ???????????n.play(); ???????} catch (e) { ???????} ???}

这里使用html5的audio控件,我这边加了一个

n.loop=false

但是,在测试时候,发现若后台不断开链接,该audio会重复读3遍。而在javascript加这句也没用。所以后台必须给前端一个停止的信息,用来停止这次链接。

这里就有一个不好的地方。

上图!!!

可以看出由于是后台发送停止的,所以前端这边都是显示链接失败,但是!语音的确是有的。

还有一个点就是,发布到IIS上时

进程模型=>标识=>修改为LocalSystem。

没了~

若大家有什么更好的可以推荐给我。有什么优化建议也可以交流交流。

灰常感谢

使用Speech实现js播放音频

原文地址:https://www.cnblogs.com/FlyStupidBird/p/9634641.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved