微软Azure平台的语音合成(TTS)技术确实神乎其技,这一点在之前的一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),已经做过详细介绍,然则Azure平台需要信用卡验证,有一定门槛,对国内用户不太友好,放眼神州,科大讯飞的讯飞开放平台也有语音合成服务接口,可以通过语音合成流式接口将文字信息转化为声音信息。
首先注册讯飞开放平台,随后创建语音合成应用。
创建成功后,同时获取应用的appid、秘钥和APIKey:
该语音合成能力是通过基于Websocket协议的长连接接口API的方式给开发者提供一个通用的接口。
Websocket协议接口具备流式传输能力,适用于需要流式数据传输的AI服务场景,比起集成在客户端的SDK,流接口具备轻量、跨语言的特点;相较于传统的HTTP协议接口,Websocket协议接口有原生支持跨域的优势,换句话说,从前端就可以直接进行语音转换,而不需要后端参与。
根据官网的接口文档:https://www.xfyun.cn/doc/tts/online_tts/API.html ,我们先安装对应的三方库:
由于讯飞的服务端支持的websocket版本是13,所以需要确保请求端使用的库支持该版本。
首先导入基础库,并且预设语音合成类的参数:
这里把应用的APPID, APIKey, APISecret作为实例化参数进行传入,Text为需要语音合成的文本。
和Http协议一样,Websocekt协议接口也需要鉴权操作,这里需要通过接口密钥基于hmac-sha256计算签名,向讯飞的服务器端发送Websocket协议握手请求:
随后实例化转换类,并且生成Websocket协议地址:
程序返回:
至此Websocekt鉴权环节就完成了,讯飞的服务端将发起握手时会对接口地址中的authorization参数进行验签操作。
随后,我们可以发起Websocket链接了:
这里通过on_open方法将参数数据传入到服务端,基本参数默认值设置了语音输出格式为mp3,朗读者是xiaoyan,也就是讯飞小燕,语速为80,默认为50,语速快一点显得没有那么呆板。
随后讯飞服务端会通过onmessage方法将转换好的音频流传回客户端:
注意返回值为Json格式的字符串,语音流放在data的audio字段中,随后写入到指定目录的mp3文件即可,程序返回样例:
转换后文件:
除了讯飞小燕,免费版也可以选择其他朗读者:
个性化定制上,免费版有一定的限制,这一点不如微软Azure。
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com
本文链接:http://www.bhha.com.cn/news/4940.html