最近在开发一款小程序:唐诗宋词鉴赏plus ,其中在诗歌的详情页,想着加上阅读的功能,但是在微信小程序的API  中不支持,所以到网上找其他的解决方案。发现百度AI下有一款产品:语音合成,正好可以使用,看了一下API,完全可以在小程序前端直接调用。

1.语音合成的调用流程

1).首先要在百度AI注册一个账号,找到 语音技术,创建一个应用,就可以使用了。

2).开始使用语音合成API,第一步,先调接口获得token值,这个值30天过期,再重新获取,也可以每次合成都调取,如下链接:

https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHl********LT0vuXV4&client_secret=0rDSjzQ20XUj5i********PQSzr5pVw2

其中的client_id和client_secret就是申请应用下的API Key和Secret Key

3).获取了token,就完成了一大步,然后调用语音合成方法:
http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=1.a6b7dbd428f731035f771b8d****.86400.1292922000-2346678-124328&tex=百度你好&vol=9&per=0&spd=5&pit=5&aue=3

// 这是一个正常MP3的下载url // tex在实际开发过程中请urlencode2次

上面的链接是一个GET方法调用的链接,拼好后直接就是MP3链接,可以直接播放。还用POST调用,更符合大文本调用。

4).至此语音合成api已经调研结束了,下面就看怎么植入到微信小程序了。

2.小程序调用语音合成

1).这里播放语音的API是wx.getBackgroundAudioManager(),这个背景音频播放插件的好处是可以暂停后,再从暂停的位置播放。

2).调用语音合成api生成mp3的url

  getAudioContext(){let that = thisvar name = that.data.detail.namevar dynasty = that.data.detail.dynastyvar author = that.data.detail.authorlet content = that.data.detail.contentvar str = name + "," + dynasty + "," + author + "," + content//此处生成的就是mp3地址var audio = baiduTsn + "tex=" + encodeURI(encodeURI(str)) + "&lan=zh&cuid=111&ctp=1&tok=" + that.data.videoTokenthat.setData({ audio })},async getBaiduToken(){const that = this;var token =''const db = wx.cloud.database()const res = await  db.collection('baiduToken').get();var date = new Date();var myDate = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate()  //先取本地的百度userToken  if (res.data.length > 0 && this.checkDate(res.data[0].date, myDate)) {token = res.data[0].tokenthat.setData({videoToken: token})that.getAudioContext()}else{//调用云函数包装调用获取tokenwx.cloud.callFunction({name: 'getRequest',data: {url: baiduToken + "client_id=" + client_id + "&client_secret=" + client_secret},success: function (res) {token = JSON.parse(res.result).access_tokenthat.setData({videoToken: token})that.getAudioContext()that.setBaiduToken(token)},fail: function (err) {console.log(err)}})}},

此处解释一下,其一,由于token值是30天不变,所以先存放到云开发上,30天后重新获取。其二,由于语音合成的api调用涉及Secret Key这样隐私的东西,所以用云开发调用包装url。

至此audio 就是MP3的地址,可以直接调用播放了

3).小程序调用语音代码

      console.log("新建播放")backgroundAudioManager.title = ‘播放片段’;backgroundAudioManager.singer = ‘标题’;backgroundAudioManager.coverImgUrl ='https://gss3.bdstatic.com/7Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=39dadea12d381f308a1485fbc868276d/2e2eb9389b504fc272975c9ce0dde71191ef6d5b.jpg';backgroundAudioManager.src = this.data.audio ;

可以播放了。其他的细节代码整理后会开源放到GitHub上,敬请关注

点击下面小程序使用百度AI语音合成

扫二维码体验吧

让小程序搭上百度AI的快车相关推荐

  1. 微信小程序 |基于百度AI从零实现人脸识别小程序

    写在前面 针对互联网上已有的人脸识别小程序项目,很多只是基于手动拍照,然后上传到SDK进行识别.这一过程完全脱离实际场景!无法直接使用! 本文项目是基于微信摄像头中的实时视频帧数据,通过实时动态识别小 ...

  2. 微信小程序 如何上传音视频到百度云Bos cloud BCE

    在做了一系列调查之后,目前为止暂未发现有相关的文章,在此简单记录一下解决此问题的步骤,造福来人. 本人的解决方案参考了百度云BOS官方文档,地址如下: https://cloud.baidu.com/ ...

  3. uni-app微信小程序+Java实现百度语音识别

    1.准备工作 由于微信小程序和百度语音识别的记录博客少之又少,所以这篇博客就诞生了. 注册登录百度AI开放平台(http://ai.baidu.com/) 找到语音技术 - 应用列表,创建应用,填写相 ...

  4. 小程序返回上一页_智能小程序档案馆手把手教你成为小程序流量头号玩家(上)...

    百度智能小程序为开发者提供了全面开放的自然搜索接入能力 为了让开发者们接入得又快又好,我们准备了详细说明给大家了解~ 首先我们了解一个问题:什么是小程序接入自然搜索? 通过接入百度搜索生态,在百度 A ...

  5. 小程序源码:AI微信小程序源码下载人脸照片AI转换动漫照片全新源码安装简单无需服务器域名-多玩法安装简单

    这是一款AI人脸转动漫的一款微信小程序源码 该款小程序源码无需服务器和域名 搭建安装简单 有多种风格转换模式可自选 安装教程: 首先解压源码然后把源码上传到微信开发者工具打开 另外设置一个合法域名 合 ...

  6. 【百度小程序模板】百度小程序模板怎么制作

    [百度小程序模板]百度小程序模板怎么制作?百度小程序模板模板WXML提供模板(template),可以在百度小程序模板中定义代码片段,然后在不同的地方调用.定义百度小程序模板使用name属性,作为模板 ...

  7. 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇)

    系列文章 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇) 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇) 前言 好久不见,很久没更新博客了,前段时间 ...

  8. 小程序源码:AI智能配音助手微信小程序源码支持多种声音场景选择

    大家好今天给大家带来一款配音小程序 这款小程序支持多种不同声音和场景的选择更人性化 比如说支持各地区的方言,英文,童声呀等等 另外也支持男声女声的选择,反正就是模板那些非常的多 当然啦音量,语调,语速 ...

  9. AI微信小程序源码下载照片AI转换动漫照片源码安装简单无需服务器域名

    这是一款转动漫脸的一款微信小程序源码 该款小程序源码无需服务器和域名 搭建安装简单 有多种风格转换模式可自选 安装教程: 首先解压源码然后把源码上传到微信开发者工具打开 另外设置一个合法域名 合法域名 ...

最新文章

  1. oracle数据库的net manager配置监听(插图)
  2. python后端开发学什么_零基础学Python,这是阿里Python8年开发经验写给你的学习路线图...
  3. array 前端面试题_web前端开发面试题汇总
  4. file association没有 *.class文件_springboot如何MultipartFile文件跨服务
  5. qtxlsx编译报错_Qt5安装Qxlsx模块,以及Qxlsx模块的简单使用,附资源例程下载
  6. css多重背景教程,多重背景的CSS动画
  7. iOS:详细的正则表达式
  8. 【Verilog设计—数字传输系统】ASK调制与FSK调制
  9. 启动计算机应用程序的命令,如何设置电脑Windows开机启动项命令?
  10. 【MOOC】计算机网络与通信技术笔记(北交)(3)数据链路层
  11. 深度报道 | 5G兵临城下:AIoT将面临哪些变革和挑战?
  12. td强制换行《http://www.cnblogs.com/Fooo/archive/2011/03/28/1998048.html》
  13. Linux服务器的配置和数据迁移方案
  14. 【个人研究】21世纪西方运用脑电(EEG)的音乐研究动向分析(二)
  15. ubuntu16.04截图工具Shutter安装,设置快捷键
  16. vert.x最新官网书籍下载
  17. Python数据挖掘指南
  18. Android中图像变换Matrix的原理、代码验证和应用(一)
  19. c 中的ajax异步刷新,jstl中c:foreach下的表格实现异步刷新
  20. Java实现设置窗口颜色和大小

热门文章

  1. python定间隔取点(np.linspace)
  2. numpy快速生成图像各点坐标并间隔取点
  3. (20200911Solved)WSL: 在配置文件列表中找不到你的默认配置文件...
  4. Sybases数据库----安装
  5. VTK8.2.0安装步骤
  6. python生成随机数和随机矩阵
  7. 【钉钉-场景化能力包】考勤排班
  8. pytorch图片分割原理
  9. Arcgis backbone操作感悟
  10. Python利用微软Azure免费的语音合成TTS源码分享