摘要:最近在忙一个小程序蓝牙秤的项目,开发环境为小程序,上传物料的时候需要用到语音播报即将文字转换为语音,于是开始研究,试了几个,最终使用腾讯的来完成这个功能。
最近在忙一个小程序蓝牙秤的项目,开发环境为php+小程序,上传物料的时候需要用到语音播报(即将文字转换为语音),于是开始研究,试了几个,最终使用腾讯AI的API来完成这个功能。官网上(http://ai.qq.com/)也有相应教程,大致分为这几个步骤
1.创建应用填写应用的相关信息,勾选所需的AI技术服务,完成应用的创建,最多可以为应用开放所有的接口权限。
2.获取密钥在应用创建完毕后,您便可在应用详情中查看到此应用的接入凭证,主要为AppID、AppKey。每个应用唯一标示,互不相同,这两个值需要保存好,后期要用到哦
3.生成签名应用在调用平台AI技术接口之前,首先需要获取接口鉴权签名。
4.启动开发一切就绪,便可以开发
上边呢,是大体的步骤,具体知道有这几步就可以了,下面举个实例,更容易让大家理解,其实这个接口的作用就是将文字转换为语音,然后返回文字的语音数据
5.后台配置请求的参数
模型编码
女生 0
女生纯英文1
男生 2
喜道公子 6
语速编码
0.6倍速 -2
0.8倍速 -1
正常速度 0
1.2倍速 1
1.5倍速 2
下面使用PHP实现该HTTP API调用(text即为待合成的语音)
public function actionBluetoothScaleVoice() { $data = Yii::$app->request->get("data"); $appkey = "Ejxghuuuuuuuuu"; $params = array( "app_id" => "11060809832473294", "text" => $data, "model_type" => "0", "speed" => "0", "time_stamp" => strval(time()), "nonce_str" => strval(rand()), "sign" => "", ); $params["sign"] = $this->getReqSign($params, $appkey); // 执行API调用 $url = "https://api.ai.qq.com/fcgi-bin/aai/aai_tta"; $response =$this->doHttpPost($url, $params); return $response; } //获取签名 public function getReqSign($params /* 关联数组 */, $appkey /* 字符串*/) { // 1. 字典升序排序 ksort($params); // 2. 拼按URL键值对 $str = ""; foreach ($params as $key => $value) { if ($value !== "") { $str .= $key . "=" . urlencode($value) . "&"; } } // 3. 拼接app_key $str .= "app_key=" . $appkey; // 4. MD5运算+转换大写,得到请求签名 $sign = strtoupper(md5($str)); return $sign; } //执行请求 public function doHttpPost($url, $params) { $curl = curl_init(); $response = false; do { // 1. 设置HTTP URL (API地址) curl_setopt($curl, CURLOPT_URL, $url); // 2. 设置HTTP HEADER (表单POST) $head = array( "Content-Type: application/x-www-form-urlencoded" ); curl_setopt($curl, CURLOPT_HTTPHEADER, $head); // 3. 设置HTTP BODY (URL键值对) $body = http_build_query($params); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $body); // 4. 调用API,获取响应结果 curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_NOBODY, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($curl); if ($response === false) { $response = false; break; } $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($code != 200) { $response = false; break; } } while (0); curl_close($curl); return $response; }
2.响应参数
后台写好了,前台该怎么展示呢,这里以小程序为例:
6.前台处理1.在页面中添加audio标签
2.添加请求
wx.request({ url: "https://xxxx.com", data: { data: "待合成的语音数据"}, method: "get", header: { "content-type": "application/json" // 默认值 }, dataType: "json", success: function (res) { let myAudio = wx.createAudioContext("myAudio"); myAudio.setSrc("data:audio/mp3;base64," + res.data.data.voice); myAudio.play(); } })
大致就这么多,如果有不清楚的,或者有更好办法的欢迎留言,共同进步
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/30791.html
摘要:背景介绍智能语音助手作为物联网领域的一个重要生态成员,是一种全新的交互方式,它能够解放双手,随时提供服务,无须借助任何按键。学完该案例让你对智能语音助手有一个全新的认识。快来打造你的智能语音助手吧 1. 背景介绍 智能语音助手作为物联网领域的一个重要生态成员,是一种全新的交互方式,它能够解...
摘要:避免手机网络不稳定引起的微信邮件移动不及时现象,基本上电话是不可抗拒的,除非关机。中小企业运维支撑同学就可构建一个团队,告警事件的处理会逐渐进入正轨,并有序处理。结束语这次新版本发布,已经实现两个中国领先通知渠道领先和接入监控平台领先。 大多 IT 运营支撑同学都有过深夜业务应用突然故障的经历,监控系统准确告警,但是白天筋疲力尽的运维同学在熟睡中,经常会遗漏告警提醒;往往是接到主管电话...
阅读 583·2021-10-08 10:20
阅读 1465·2021-09-23 11:22
阅读 3200·2019-08-30 15:55
阅读 1458·2019-08-28 18:25
阅读 1833·2019-08-28 18:14
阅读 1211·2019-08-26 11:37
阅读 2878·2019-08-26 10:18
阅读 2406·2019-08-23 18:39