首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

003-语音识别&语音合成&语义理解

每日一语

2019-第三次更新

调包师

的今日调包项目

过程

项目是做一个教学辅助平台,帮助教师和学生减轻负担(其实也没啥负担)。成品比较像一个手机助手,类似于小爱同学,Siri, 微软小娜和Amazon的alexa。

直接看流程图吧。

讲解一下流程图和我的思路。假设我们的最终成品是一个APP。

首先肯定是软件的唤醒了。从市面上已有的产品来看,手机端的手机助手有些需要通过指定物理操作来启动的,比如我手机上的小爱同学,就是通过长按Home键来唤醒的,其他的如Siri则是通过唤醒词来唤醒的。智能音箱的唤醒也是通过唤醒词来实现的。

唤醒后进行音频的录制。

然后根据接口的限制对音频进行转换,如采样率之类需要进行更改。我接下来使用的讯飞的语音识别就对接受的音频就有一些要求。

之后是上传处理过的音频,提交给语音识别的服务商去识别,然后接收返回的识别出的文本内容。

再接下来是文本的分词,将连续的文本分解为单个的词组。

然后是匹配操作(为什么我想到的是匹配呢?因为语义识别我不会啊。),根据匹配到的操作去进行下一步的任务,比如数据库的擦查找啥的,如果匹配不到的话就提示错误。

照着这个思路,我做了一个Demo, 功能是通过语音命令打开一个word文件,然后通过语音合成读出word的内容。

接下来讲一下具体的实现了。

首先是录音,因为只是一个Demo,所以懒得写格式转换的代码,直接找了一个符合讯飞语音识别要求的录音软件。

然后是语音识别了,我用的是讯飞的服务。如何用呢? 自然是注册 -> 新建应用 -> 添加服务->获取APPID&APIKey这种循规蹈矩的操作了。

这些弄完后你会得到一个这样的界面:

线框圈出来的就是APPID和APIKey,这两个在代码里面调用的时候需要,就相当于你的账号了。

IP白名单也是需要注意的,如果不将你的运行代码的电脑的IP加入白名单,就无法访问。

这个服务每天调用的次数限制是500次,但是我发现有一个小漏洞可以钻,就是如果你创建多个应用,再在每个应用里面都添加一个语音识别的服务,调用次数在不同的应用间是不关联的。所以我们可以在代码里面做个字典,检测到某个应用里面的调用次数用完了之后再换一个应用,操作起来还是很简单的。

上面两个图片展示了不同应用间API调用次数无关

代码我用的是示例代码,稍微改了点。

然后是通过识别出来的文本来分词,确定说话者说的到底是啥意思。

我这里简化了操作。只判断了是不是要打开某个文件,就判断了下面这些关键字。

然后是检查要打开的文件是否存在,判断的也比较简单。先找出所有文件,再匹配。

找到了之后,接下来是打开word。

再接下来是从word中提取文字。

然后是上传文本,做语音合成,用的还是讯飞的代码,改了点。

最后就是接收返回的语音,接着播放了。

播放有个问题没解决,就是播的特别快,可能是默认的播放速率比讯飞返回的要快。

总结

代码很多都参考了网上的,我只是一个小小的搬运工和整合商。感谢开源让世界更美好。

项目上传到了GitHub, 阅读原文可直达。

排版|Carl

文案|Carl

乐观生活

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190131G1AOUJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券