资讯专栏INFORMATION COLUMN

移动端快速接入语音播报

elarity / 2539人阅读

摘要:最近在忙一个小程序蓝牙秤的项目,开发环境为小程序,上传物料的时候需要用到语音播报即将文字转换为语音,于是开始研究,试了几个,最终使用腾讯的来完成这个功能。

最近在忙一个小程序蓝牙秤的项目,开发环境为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

相关文章

  • 爆肝一周,用Python在物联网设备上写了个智能语音助手

    摘要:背景介绍智能语音助手作为物联网领域的一个重要生态成员,是一种全新的交互方式,它能够解放双手,随时提供服务,无须借助任何按键。学完该案例让你对智能语音助手有一个全新的认识。快来打造你的智能语音助手吧 1. 背景介绍 智能语音助手作为物联网领域的一个重要生态成员,是一种全新的交互方式,它能够解...

    I_Am 评论0 收藏0
  • 中小企业 IT 运维福利:快速构建 on-call 机制

    摘要:避免手机网络不稳定引起的微信邮件移动不及时现象,基本上电话是不可抗拒的,除非关机。中小企业运维支撑同学就可构建一个团队,告警事件的处理会逐渐进入正轨,并有序处理。结束语这次新版本发布,已经实现两个中国领先通知渠道领先和接入监控平台领先。 大多 IT 运营支撑同学都有过深夜业务应用突然故障的经历,监控系统准确告警,但是白天筋疲力尽的运维同学在熟睡中,经常会遗漏告警提醒;往往是接到主管电话...

    fobnn 评论0 收藏0

发表评论

0条评论

elarity

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<