在尝试了各种TTS解决方案之后,经过一定的经验,发现微软是该领域的国王。其服务的转换是最自然的,但是Azure是一项付费服务,付款操作太麻烦了。但是,它在其官方网站上提供了演示功能,可以充分体验所有角色语音和口语风格...
但是不可能将其下载到文件中,因此有些朋友必须通过转录计算机的声音获取音频文件,但这太麻烦了。实际上,网页上可以看到的所有资源都是解密的结果。换句话说,只要从网页上播放此声音,我们就必须找到一种提取音频文件的方法。
本文是记录整个探索实施的过程,请享受?
本文的大多数内容都在今年年初写在我手中。我知道,一旦该方法公开,我可能很快就会引入Microsoft的阻塞,甚至直接取消了网页体验的入口和相关接口。
使用Chrome浏览器打开测试面板。当我们在Azure官方网站上单击该功能时,我们可以从网络标签监视到请求。这是一个请求。
在请求中,我们可以看到有两个参数和和谐
有趣的是,第一个参数是在网页的源代码中。使用请求向此Azure文本的URL启动请求。
检查启动请求的JS调用堆栈后,单击断点,然后单击再次播放
可以发现第二个参数来自函数
这是一个格式字符串,对此一无所有。
在要求时,URL中的两个参数已完成。我们继续分析此请求。您可以从消息标签中看到
每次单击播放时,您都会向服务器报告三个数据。显然,您可以看到数据的三个报告的作用。
第一个数据:SDK版本,系统信息,Useragent
第二个数据:过渡语音输出配置。从角度来看,最终音频格式不是我们想要的文件吗?
第三个数据:语音的文本信息和字符,速度,音调,情感和其他配置
由于从前三次返回的信息是文件,因此我们可以将返回的所有二进制数据缝合到一个完整的文件中吗?答案是肯定的!
每次我从收据中所有消息中单击最后一条消息时,都有一个明确的标识符结束
代表转换已经结束!
既然它们已经被解析,其余的就是重新实现此过程的过程。
首先发送
第二次发送
第三发送
发送三次后,我们听了通过监视收到的二进制消息。
创建一个空的缓冲对象,然后每次缝制收到的二进制内容。一旦监视了一般文本消息,它将写入文件中。
这样,我们成功保存了音频文件,甚至没有Azure官方网站!
我将整个代码包装到命令行工具中,这非常易于使用
所有开源:https://github.com/ezshine/mstts-js
创建一个新的云功能,命名
由于它已被封装,仅在云功能中,然后代码如下
有两种方法可以在Uniapp中播放此MP3格式文件。
方法1.首先上传到云存储,通过云存储地址访问
前端用法:
方法2.使用云函数的urlization+集成响应访问此方法是将云功能的响应主体直接转换为mp3文件。
前端用法:
如此简单的库,如果您为您提供帮助,请不要忘记在其中支持它。
我是一个喜欢编程的程序。个人微信:
原始:https://juejin.cn/post/7103720862221598757