用百度大脑技术让AI做回新闻主播!
实现效果:
利用百度新闻摘要能力和微信小程序,快速抽取新闻摘要内容并进行语音播报,让AI做回新闻主播!本文主要介绍小程序功能开发实现过程,分享主要功能实现的子程序模块,都是干货哦!!
想了解python3下的技能调用,请参看我之前的帖子:《AI新闻主播为您读报》
https://ai.baidu.com/forum/topic/show/953193
1 系统框架
这里用到的主要技术有:百度通用文字识别、语音合成、新闻摘要和微信小程序。小程序通过对上传新闻照片进行文字识别,将新闻内容由图片转换成文字,然后通过新闻摘要能力提取核心内容摘要,并将新闻摘要内容利用语音合成朗读出来。非常适合带上老花镜也看不见字的老年人,拍张照片就能将报纸内容转换成声音,听就完了。
2 调用通用文字识别API
2.1在控制台创建应用,调用通用文字识别API,“获取API Key/Secret Key”。
接口文档地址:https://ai.baidu.com/docs#/OCR-API/e1bd77f3
请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic
2.2 程序实现
ocrRequest:function (base64Img, callback) { //拼接接口body参数 var params = { image: base64Img } //发送接口请求 wx.request({ url: ocrUrl + '?access_token=' + accessToken, data: params, header: { 'content-type': 'application/x-www-form-urlencoded' }, method: 'POST', success: function (res) { callback.success(res.data) console.log("request okr", res); }, fail: function (res) { if (callback.fail) callback.fail() } }) }
3 调用新闻摘要API
3.1 在控制台创建应用,调用新闻摘要API,“获取API Key/Secret Key”。
(1)接口文档地址:https://ai.baidu.com/docs#/NLP-Apply-API/c3df5fbc
(2)请求URL: https://aip.baidubce.com/rpc/2.0/nlp/v1/news_summary
Body中放置请求参数,参数详情如下:
body整体文本内容可以支持GBK和UTF-8两种格式的编码,这里选择GBK编码。
GBK支持:默认按GBK进行编码,输入内容为GBK编码,输出内容为GBK编码,否则会接口报错编码错误;
UTF-8支持:若文本需要使用UTF-8编码,请在url参数中添加charset=UTF-8 (大小写敏感) 例如 :https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?charset=UTF-8&access_token=24.f9ba9c5241b67688bb4adbed8bc91dec.2592000.1485570332.282335-8574074。
(3)返回参数
默认返回内容为GBK编码;
若用户指定输入为UTF-8编码(通过指定charset参数),则返回内容为UTF-8编码。
3.2 程序实现
NewsRequest: function (corpus, arg) { // corpus是要发送的对话;arg是回调方法 var that = this; console.log("[Console log]:corpus:" + corpus); var api = "nli"; var timestamp = new Date().getTime(); var rqJson = { "title": "新闻摘要", "content": corpus, "max_summary_len": 200 }; var rq0 = JSON.stringify(rqJson); console.log("[Console log]:rq0:" + rq0); var nliUrl = that.globalData.NLPUrl; console.log("[Console log]:NewsRequest(),URL:" + nliUrl); wx.request({ url: nliUrl, data: rq0, header: { 'content-type': 'application/json' }, method: 'POST', success: function (res) { var resData = res.data.summary; var t0 = decodeURI(resData); console.log("[Console log]:NewsRequest() success..."); console.log("[Console log]:Result:"); console.log("[Console log]:t0:" + t0); var nli = JSON.stringify(resData); console.log("[Console log]:nli:" + nli); // 回调函数,解析数据 typeof arg.success == "function" && arg.success(nli); }, fail: function (res) { console.log("[Console log]:NewsRequest() failed..."); console.error("[Console log]:Error Message:" + res.errMsg); typeof arg.fail == "function" && arg.fail(); }, complete: function () { console.log("[Console log]:NewsRequest() complete..."); typeof arg.complete == "function" && arg.complete(); } }) },
4 调用语音合成API
4.1 在控制台创建应用,调用语音合成API,“获取API Key/Secret Key”。
(1)接口文档地址:https://ai.baidu.com/docs#/TTS-API/top
(2)请求URL: https://tsn.baidu.com/text2audio
将文本以及其他参数写入到body里面,利用html表单的方式将参数传递到服务端。 所有的参数都在body中。body里面的数据为:
tex=***&lan=zh&cuid=***&ctp=1&aue=3&tok=***
(3)返回参数
需要根据 Content-Type的头部来确定是否服务端合成成功。
如果合成成功,返回的Content-Type以“audio”开头,例如:
aue =3 ,返回为二进制mp3文件,具体header信息 Content-Type: audio/mp3;
4.2 程序实现
// 语音合成
tts: function (e) {
console.log("[Console log]tts:" + e);
var tex = encodeURI(e);//转换编码url_encode UTF8编码
var tok = "填入获得的token";
var cuid = app.globalData.NLPCusid;
var ctp = 1;
var lan = "zh"; // zh表示中文
// 字符编码
var spd = 5; // 表示朗读的语速,9代表最快,1是最慢
var url = "https://tsn.baidu.com/text2audio?tex=" + tex + "&lan=" + lan + "&cuid=" + cuid + "&ctp=" + ctp + "&tok=" + tok + "&spd=" + spd
wx.downloadFile({
url: url,
success: function (res) {
console.log(res)
filePath = res.tempFilePath; if (res.statusCode === 200) {
//小程序自身录音,用playVoice播放不了,要用innerAudioContext
var filepath = res.tempFilePath;
console.log(filepath);
const innerAudioContext = wx.createInnerAudioContext();
innerAudioContext.src = filepath;
innerAudioContext.onPlay(() => {
console.log('开始播放')
});
innerAudioContext.onError((res) => {
console.log(res.errMsg)
console.log(res.errCode)
});
innerAudioContext.play();
}
}
})
},
5 欢迎扫码测试
作者:wangwei8638
用百度大脑技术让AI做回新闻主播!的更多相关文章
- 综合5项百度大脑AI技术,快速构建智能交通方案
一.整体方案:思路:整合百度AI功能,通过百度AI解决.优化在公交运行过程中遇到的运营.管理.安全等方面的问题.具体如下: 安全方面:通过驾驶员检测+语音合成,对驾驶员状态进行实时检测,跟踪,告警. ...
- 全面解析百度大脑发布“AI开发者‘战疫’守护计划”
即日起,百度大脑发布“AI开发者战疫守护计划” 大疫当前,人人有责,携手开发者共同出击抗击疫情 基于百度大脑AI开放平台和飞桨深度学习平台,积极运用算法.算力.软件等“武器”助力抗疫! 谁能参与计 ...
- 百度大脑发布“AI开发者‘战疫’守护计划”,AI支援抗疫再升级
面对新冠肺炎疫情,AI开发者们正在积极运用算法.算力.软件等“武器”助力抗疫.针对开发者们在疫情防控期间的开发与学习需求,2月6日,百度大脑推出“AI开发者‘战疫’守护计划”, 正在进行疫情防控相关应 ...
- AI+教育落地,百度大脑如何让校园更智能?
人工智能作为影响社会底层技术革命逐渐向传统行业渗透,“AI+”已经替代“互联网+”成为创业创新的新引擎,出人意料的是,在AI在教育业的率先落地并且相当火爆. 现在,人工智能教育已成为从业者心目中的“教 ...
- 百度大脑UNIT3.0智能对话技术全面解析
智能客服.智能家居.智能助手.智能车机.智能政务……赋予产品智能对话能力是提升产品智能化体验.高效服务的重要手段,已经开始被越来越多的企业关注并布局.然而,智能对话系统搭建涉及NLP.知识图谱.语音等 ...
- 百度大脑UNIT3.0详解之嵌入式对话理解技术
相信很多人都体验过手机没有网时的焦虑,没有网什么也做不了.而机器人也会遇到这样的时刻,没有网或者网络环境不好的情况下,无法识别用户在说什么,也无法回复用户.在AIoT(AI+物联网)飞速普及的现在,智 ...
- 发布AI芯片昆仑和百度大脑3.0、L4自动驾驶巴士量产下线,这是百度All in AI一年后的最新答卷...
机器之心报道,作者:李泽南. 去年的 7 月 5 日,百度在北京国际会议中心开办了首届「AI 开发者大会」.在会上,百度首次喊出了「All in AI」的口号.一年的时间过去了,今天在同样地点举行的第 ...
- python预课06 基于百度大脑AI的人工智能,百度颜值检测,语音合成与识别
百度大脑: 如下图,百度开放了许多人工智能接口可以使用,先注册一个百度大脑账户 点击创建应用,选择需要的功能,如人脸识别,语音识别等 点击查看文档,可以查看功能对应语言的方法,参数.首先在CMD命令下 ...
- 快速上手百度大脑EasyDL专业版·物体检测模型(附代码)
作者:才能我浪费991. 简介:1.1. 什么是EasyDL专业版EasyDL专业版是EasyDL在2019年10月下旬全新推出的针对AI初学者或者AI专业工程师的企业用户及开发者推出的A ...
随机推荐
- Chapter 03—Getting Started with graphs
例01:一个简单的例子 一. 图形参数 1. 符号和线条 例02: plot(dose,drugA,type="b",lty=3,lwd=3,pch=1 ...
- flex布局实现瀑布流排版
网上有很多有关js(jq)实现瀑布流和有关瀑布流的插件很多,例如:插件(Masonry,Wookmark等等).按照正常的逻辑思维,瀑布流的排版(item列表)一般都是 由左到右,上而下排序的结果,单 ...
- OC中内存管理(转)
OC内存管理 一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继 ...
- 《手把手教你》系列进阶篇之3-python+ selenium自动化测试 - python几种骚操作你都知道吗?(详细教程)
1. 简介 这篇文章主要是给小伙伴或者童鞋们介绍和分享 python几种骚操:读取配置文件.获取根目录的相对路径.获取系统时间和格式化时间显示.字符串切割等等操作.为后边的自动化框架打下一个结实的基础 ...
- .NETCore 访问国产达梦数据库
前言 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库管理系统的研发.销售与服务,同时可为用户提供大数据平台架构咨询.数据技术方案规划.产品部署 ...
- IOS UIAlertView(警告框)方法总结
转自:my.oschina.net/u/2340880/blog/408873?p=1 IOS中UIAlertView(警告框)常用方法总结 一.初始化方法 - (instancetype)initW ...
- Spring代理模式(jdk动态代理模式)
有动态代理和静态代理: 静态代理就是普通的Java继承调用方法. Spring有俩种动态代理模式:jdk动态代理模式 和 CGLIB动态代理 jdk动态代理模式: 代码实现: 房东出租房子的方法(继承 ...
- Where/Order by/Ggroup by/Having使用的注意事项
1.Where.Order by.Group by .having Where作用对象是:基本表或视图,从中选出符合条件的元素. Order by 作用对象是:基本表或视图,就是排序方式,分为升序(A ...
- Crush 算法以及PG和PGP调整经验
PG和PGP调整经验调整前准备为了降低对业务的影响,需要调整以下参数ceph tell osd.* injectargs ‘–osd-max-backfills 1’ceph tell osd.* i ...
- SpringBoot系列之集成Mybatis教程
SpringBoot系列之集成Mybatis教程 环境准备:IDEA + maven 本博客通过例子的方式,介绍Springboot集成Mybatis的两种方法,一种是通过注解实现,一种是通过xml的 ...