首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在腾讯云上搭建一个PPT自动播放的服务器

如何在腾讯云上搭建一个PPT自动播放的服务器

作者头像
腾讯云开发者社区
修改2017-11-03 14:52:09
4.7K0
修改2017-11-03 14:52:09
举报

作者:宋秋萌

先描述一下我们产品的效果,你可以借助任何一个远程终端来讲解你的 PPT (一个手机、麦克风等),我们的系统会根据你讲解的内容帮助你自动播放 PPT ,解决播放 PPT 的麻烦。

一.服务端代码实现

先放上我们的系统架构图

[image.png]
[image.png]

我们的服务器分成了两层来实现这项功能。

第一层是数据处理层

具体模块:

1.持久化模块(数据库)

我们选择的是用 mongoDB 数据库进行持久化操作。这个模块的主要功能是对每个 PPT 的信息进行记录,比如用户预先输入的每一页 PPT 的翻页提示语。每一个 PPT 都被是一个 document ,同意放置在 userinfo collection 里面(命名比较随意。)。其中, document 的前面几条分别记录了用户的 ID,PPT 的信息等,后面则是记录每一页用户的翻页提示。即用户在当前页面说道这句话的时候,系统会下达翻页指令。

2.语义识别模块

这个模块是用来将用户发来的 string 类型进行识别,转化成 PC 客户端可以理解的 PPT 指令。

由于在网上关于语义匹配的多是整个文章的语义匹配,或文章与一句话的匹配程度,而我们这个工程需要的是两个较短的句子的匹配,且比赛时间有限,所以我们只能自己在已有的较复杂的算法模型上自行改进,创造出了了一个简化版矩阵相乘的算法。具体实现思路如下:

首先,拿到用户演讲内容的字符串和用户设置的翻页关键句字符串,例如,用户演讲内容为:“接下来我们介绍屈原的文学成就”;用户设置的关键句为:“屈原的文学成就”。

然后分词模块开始工作,讲两句分别分词放在不同的Vector中:

V1:{"接下来","我们","介绍","屈原","的","文学","成就"}

V2:{"屈原","的","文学","成就"}

而且我们会调用开源 API 得到每个词的词性,匹配时根据词性设置权重。

对于 V1 中每个词,分别去匹配 V2 中的词,若是名词且匹配住,则 V1 中那个词的的位置设置为1,动词匹配成功会将权重设置为0.9。若匹配不成功则为名词为0.1,动词为0.15。其他词性的词也这样处理但权重不同,具体权重按具体情况分析,这样就可以得到一个矩阵。{0.4,0.1,0.15,1,0.8,1,1},这样就可以算出来一个相似度约为0.635,设置一个阈值,具体情况根据实际而定,若相似度大于阈值,则匹配成功,返回翻页指令。

对于轻微口音导致语音识别不准确,我们会和转成拼音的相似度进行综合。

3.PPT 指令调度模块

这个模块用来综合调度语意模块识别出来的 PPT 指令。这个模块实现的核心是一个 map 集合,它以用户的 ID 为 key,指令集合为 value ,来储存用户已经发送而未被 PPT 客户端执行的 PPT 指令,并且通过一个接口提供指令的 CURD 操作。

考虑到网络的原因,用户发出的指令可能无法及时被客户端获取,所以我们在这里使用了一个 queue 来储存用户的指令。当网络拥堵或者用户发送的指令过多的时候指令会被临时储存,并等待PPT客户端周期性的访问取出。

第二层是服务接口层

1.PPT 客户端

考虑到 Java 平台的广泛性,我们的 PPT 客户端也选择采用 Java swing 来实现。所以,服务端使用 Java 平台的 rmi 框架来为PPT客户端提供服务接口。具体结构包括获取 PPT 指令、注册服务、绑定 PPT 翻页提示语等,具体的实现细节则会交由第一层模块。

2.语音录入端(智能手机)

当时因为设备的限制,我们决定采用智能手机作为语音的录入设备。

考虑到 iOS 系统不支持 Java 语言,我们没有使用 rmi 框架来提供服务,而是提供了更为适用的 tcp 接口。

这个接口会不断接收客户端识别并发来的 string 类型的用户语音,并交由语义识别模块来进行语意识别,并将结果交给 PPT 指令调度模块。

这样,一个调度 PPT 自动播放的服务端就可以搭建完毕了。

二.服务器部署

这里我们采用了腾讯云服务器作为服务器的运行平台(腾讯云推出的1元学生服务器,简单易用)。

首先在镜像市场上购买带有 Java 开发环境的 Linus 系统(牛人可以自己配置),再将写好的系统打包成 jar 文件(记得添加程序入口)。

将程序上传后通过 ssh 客户端启动程序就 OK 了(最好能设置能一个服务,并设置成自启动,方法请百度)。

三.客户端实现简介

PPT 客户端我们主要使用的 robot 相关类来控制 PPT 的播放,并通过 shell 脚本来实现视屏播放等功能。

语音识别端则是通过讯飞语音系统来识别用户说出的话,并上传到服务端进行处理。

这样,一个远程自动播放 PPT 的系统就搭建完毕了,大家在演讲分享的时候就再也不同站在电脑前来播放 PPT 啦。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.服务端代码实现
    • 第一层是数据处理层
      • 第二层是服务接口层
      • 二.服务器部署
      • 三.客户端实现简介
      相关产品与服务
      语音识别
      腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档