Java集成阿里云的实时语音识别遇到的一些题目

一给  金牌会员 | 2024-7-26 22:29:11 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 847|帖子 847|积分 2541

集成阿里云的实时语音识别遇到的题目:
困扰了一周时间,重要涉及到流的处置惩罚题目。
集成处置惩罚逻辑:

集成是通过引用maven依赖加载。
前端灌音通过流的方式传到后端,后端再把流上传到Minio,后端拿到文件地点,调微服务(集成语音识别的是另一个独立的微服务)去Minio获取输入流,再上传到阿里云(公有云的服务)。然后监听返回识别的结果,末了返回结果文本给前端。
题目:

偶发性,,监听不到返回的结果就关闭了服务端。该音频是正常的,拿去官网下载的demo执行,是有监听到返回的结果。这时就很纳闷,多数在我集成的代码里是可以监听到结果的,少数没有监听到,一开始以为是音频题目,所以就去demo执行,验证音频,是没题目的。
办理:

末了叫同事一起帮忙对比代码debug,终于发现了,demo里切片上传的是文件输入流,但我的是直接上传的是从Minio获取到的输入流,,,重点是文件输入流和单单的输入流是有区别的。因为是偶发性,一直没注意这里。
区别:

InputStream不可以读取文件,它是一个抽象类,根本不大概实例化,是所有输入流的基类。而FileInputStream是InputStream的一个实现类,用于读取诸如图像数据之类的原始字节流。FileInputStream是读取一个文件来作InputStream,FileInputStream是字节流。
题目代码:

  1.             //获取文件名
  2.             String fileName = path.substring(path.lastIndexOf("/"));
  3.             InputStream fis = MinioUtil.getMinioFile(MinioUtil.getBucketName(), fileName);
  4.             byte[] b = new byte[6400];
  5.             int len;
  6.             while ((len = fis.read(b)) > 0) {
  7.                 logger.info("send data pack length: " + len);
  8.                 recognizer.send(b, len);
  9.                 // 8000采样率情况下,3200byte字节建议 sleep 200ms,16000采样率情况下,3200byte字节建议 sleep 100ms
  10.                 int deltaSleep = getSleepDelta(len, 8000);
  11.                
  12.             }
复制代码
办理代码:

  1.         //获取文件名
  2.         String fileName = path.substring(path.lastIndexOf("/"));
  3.         InputStream fis2 = MinioUtil.getMinioFile(MinioUtil.getBucketName(), fileName);
  4.         //创建临时文件
  5.         File file = File.createTempFile(IdWorker.getIdStr(),"");
  6.         FileUtil.writeFromStream(fis2,file);
  7.         FileInputStream fis = new FileInputStream(file);
  8.         byte[] b = new byte[6400];
  9.         int len;
  10.         while ((len = fis.read(b)) > 0) {
  11.             logger.info("send data pack length: " + len);
  12.             transcriber.send(b, len);
  13.             // 8000采样率情况下,3200byte字节建议 sleep 200ms,16000采样率情况下,3200byte字节建议 sleep 100ms
  14.             int deltaSleep = getSleepDelta(len, 16000);
  15.          
  16.         }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表