最后编辑于2022-04
百度语音合成服务,基于HTTP请求的REST API接口,将文本转换为可以播放的音频文件。本文主要介绍采用百度语音合成服务,实现小程序的听写功能。
想了解微信小程序的开发过程,请参看我之前的帖子:《UNIT接入小程序》https://ai.baidu.com/forum/topic/show/953022
想了解语音合成的调用过程,请参看我之前的帖子:《语音问答机器人小程序》
https://ai.baidu.com/forum/topic/show/953177
1 系统框架
用到的技术主要有:百度语音合成和微信小程序。小程序将用户的输入文本及设置提交给百度语音合成服务,返回音频并播放出来。全部功能都在小程序客户端完成,不需要服务器,适合个人开发者学习调试使用,同时也为商业应用提供相应解决方案。
2创建小程序项目
在根目录的全局配置文件app.json中增加:"pages/tts/tts" ,会自动创建相关页面文件,结构如下:
tts.js:功能逻辑模块
tts.wxss:页面样式文件
tts.wxml:页面布局文件
tts.json:页面配置文件
3 调用语音合成API
3.1 首先要在控制台创建应用,调用语音合成API,“获取API Key/Secret Key”。
接口文档地址:https://ai.baidu.com/docs#/TTS-API/top
请求URL: https://tsn.baidu.com/text2audio
Body中放置请求参数,参数详情如下:
3.2 语音合成功能实现
(1)发送URL请求核心代码
//在tts.js中发送语音合成请求 tts: function (e) { var tex = encodeURI(e);//转换编码url_encode UTF8编码 var tok= app.globalData.access_token; console.log(tok); var cuid = app.globalData.NLPCusid; var ctp = 1; var lan = "zh"; // zh表示中文 // 字符编码 var per = app.globalData.fayinren; //fayinren var vol = app.globalData.vol; //音量,取值0-15,默认为5中音量 var pit = app.globalData.pit; //音调,取值0-15,默认为5中语调 var spd = app.globalData.spd; // 语速,取值0-15,默认为5中语速 var url = "https://tsn.baidu.com/text2audio?tex=" + tex + "&lan=" + lan + "&cuid=" + cuid + "&ctp=" + ctp + "&tok=" + tok + "&spd=" + spd + "&per=" + per + "&pit=" + pit console.log(url); wx.downloadFile({ url: url, success: function (res) { console.log(res); // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容 if (res.statusCode === 200) { audio_filePath = res.tempFilePath; console.log(audio_filePath); } } }) },
(2)定义按钮点击事件
//在tts.js中定义按钮点击事件 //播放合成音频 mainHandler: function () { var that = this; that.tts(text_input); }, radioChange(e) { var that = this app.globalData.fayinren = e.detail.value; that.setData({ fayinren: e.detail.value }) console.log('radio发生change事件,携带value值为:', e.detail.value) // console.log(that.data.option) }, /** * slider滑动监听事件 */ changeSlider1(e) { app.globalData.vol = e.detail.value; this.setData({ slider1: e.detail.value }) }, changeSlider2(e) { app.globalData.pit = e.detail.value; this.setData({ slider2: e.detail.value }) }, changeSlider3(e) { app.globalData.spd = e.detail.value; this.setData({ slider3: e.detail.value }) }, /** * 获取文本框内容 */ getDataBindTap: function (e) { var that = this; text_input = e.detail.value; console.log(text_input); },
(3)修改页面样式文件
/* pages/tts/tts.wxss */ .container { margin-top: -110px; background-repeat: no-repeat; background-size: auto; background-position: bottom; background-position-x: right; } textarea { width: 700rpx; height: 500rpx; margin-left: 10rpx; margin-right: 10rpx; margin-top: 10rpx; } .textarea-bg { background-color: rgb(239, 250, 175); padding: 10rpx; font-size: 32rpx; } .title-bg { font-size: 32rpx; margin-left: 10rpx; margin-right: 10rpx; margin-top: 10rpx; color: #43c729; } .atbottom { width: 100%; height: 50px; display: flex; flex-direction: row; justify-content: center; position: fixed; background: #3366FF; bottom: 0; } .btnImg { margin-right: 8rpx; width: 80rpx; height:80rpx; } .tui-slider-head,.tui-slider-box{ height: 110rpx; line-height: 80rpx; font-size: 35rpx; color: #666; } .card { border: 2px solid #807474e5; border-radius: 5px; height: 200px; background-color: #4854bb94; box-shadow: 4px 1px 1px #cccccc; margin: 8px; position: relative; } .image { width: 10%; height: 20px; background-color: #eeeeee; }
4 实现效果
请登录后评论
TOP
切换版块
识别能力已经超过人类
免费额度还是有的
还不知道哦,没关注过
收费应该也会按惯例给些免费额度进行试用吧
这个已经部署成服务了。飞浆模型库里有没有完成度比较高的风格迁移模型,用于再次开发?
欢乐无处不在
wow~,听说最近要收费 了
原则上可以,指定发音人的话可以用语音自训练平台,上传语料进行训练
迁移成别人的语音特征。比如我说的一段音频变成哆啦A梦的音色
风格迁移是指什么?调整语速、语调?
大佬,这个能将一段语音进行风格迁移么?
试了一下,感觉很有意思
wow~ 好厉害的AI呢~
欢迎扫码体验
识别的准确度也可以嘛
识别还是很准确的
可选择不同发音人 语调 语速