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


    集成阿里云的实时语音识别遇到的问题:

    困扰了一周时间,主要涉及到流的处理问题。

    集成处理逻辑:

    集成是通过引用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. }

    解决代码:

    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. }

  • 相关阅读:
    第四篇 本地开发环境搭建
    【无标题】
    【机器学习】音乐表示Music Representation
    WebMagic抓取医院科室,医生信息实战及踩坑
    常用JVM配置参数
    大学生游戏静态HTML网页设计 (HTML+CSS+JS仿英雄联盟网站15页)
    项目管理软件dhtmlxGantt配置教程(十六):如何设置动态化比例
    golang学习笔记(一):基础入门
    【AUTOSAR-CAN-3】COM 模块详解
    全志V853 NPU 转换部署 YOLO V5 模型
  • 原文地址:https://blog.csdn.net/m0_49790240/article/details/127938707