当前位置:首页 > 资讯 > 正文

吾剑未尝不利,国内Azure平替,科大讯飞人工智能免费AI语音合成(TTS)服务Python3.10接入

吾剑未尝不利,国内Azure平替,科大讯飞人工智能免费AI语音合成(TTS)服务Python3.10接入

微软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。

最新文章