语音搜索java_使用讯飞SDK实现语音搜索功能

昨天刚刚结束了谷歌师资培训。在准备的近三天中也学到很多东西。电子档的材料都上传到了git上,但是还有手写的技术实现不想拍照上传。所以还是写篇文章记录一下,也算是巩固了。就按照我讲的顺序来写。

先总体,再细节(我喜欢这种逻辑,更容易理解把握)。

1.总体部分[IatController.java]:

前端获取到录音文件并转为base64编码交给后端进行处理。IatController层把base64编码转换为text文本。再对得到的文本进行分词处理[findWithWordDivision()],获取到关键词并将关键词保存到sentenceList中,再将sentenceList放入data数据中进行数据库查询。

@PostMapping(value = "/searchBySdkBase", produces = "application/json;charset=UTF-8")

public Map searchBySdkBase(String base64){

Map map=new HashMap();

base64=base64.replace(" ","+");//用空格代替+

try {

String text = this.iatService.useIatSdkBase(base64);

List sentenceList=new ArrayList();

if(text.equals("") || text == null){

map.put("info","error");

return map;

}

sentenceList=this.sentenceService.findWithWordDivision(text);

if(sentenceList == null || sentenceList.size() == 0){

map.put("info","no sentence");

return map;

}

map.put("info","success");

map.put("data",sentenceList);

return map;

}

catch (Exception e){

e.printStackTrace();

return null;

}

}

2.细节实现:

(1)在UploadUtils.java文件中:

后端将得到的base64编码通过方法uploadFileBase()变成字节数组byte [] buffer,并写入随机生成的文件中(也就是recordPath:.wav/.mp3格式文件)。然后创建.pcm格式文件路径(只是创建路径。先建个房子,再把居民塞进去)。最后返回recordPath+pcmPath(接下来会用,需要注意)。

public static String uploadFileBase(String base64,String upload,String recordPath,String pcmPath){

String newFileName=UUID.randomUUID()+".wav";//避免重名:随机生成ID

byte [] buffer=Base64.decodeBase64(base64);

File file=new File(upload,newFileName);

FileOutputStream f

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值