音频录音文件实现语音转换识别文字最后文档输出结果

实现对mp3等录音文件进行语音识别成文字,最终获取文档格式或者其它定义格式文件,也可以进行提取数据处理逻辑,轻松实现大文件的语音文字转换功能,精准高效便捷...

  1. 功能技术:java+阿里云语音识别+OSS文件存储

*注意:文件需要有读写和可下载访问权限

代码实现

配置地域ID、常量、固定值:

// 地域ID,常量,固定值。(根据自己开通地址配置)public static final String REGIONID = "cn-shenzhen";public static final String ENDPOINTNAME = "cn-shenzhen";public static final String PRODUCT = "nls-filetrans";public static final String DOMAIN = "filetrans.cn-shenzhen.aliyuncs.com";public static final String API_VERSION = "2018-08-17";  // 中国站版本// public static final String API_VERSION = "2019-08-23";  // 国际站版本public static final String POST_REQUEST_ACTION = "SubmitTask";public static final String GET_REQUEST_ACTION = "GetTaskResult";// 请求参数public static final String KEY_APP_KEY = "appkey";public static final String KEY_FILE_LINK = "file_link";public static final String KEY_VERSION = "version";public static final String KEY_ENABLE_WORDS = "enable_words";// 响应参数public static final String KEY_TASK = "Task";public static final String KEY_TASK_ID = "TaskId";public static final String KEY_STATUS_TEXT = "StatusText";public static final String KEY_RESULT = "Result";// 状态值public static final String STATUS_SUCCESS = "SUCCESS";private static final String STATUS_RUNNING = "RUNNING";private static final String STATUS_QUEUEING = "QUEUEING";

完整代码:

package com.jame.excel.excelManager;import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;import java.io.File;
import java.util.ArrayList;
import java.util.List;public class FileTransJavaDemo {// 地域ID,常量,固定值。public static final String REGIONID = "cn-shenzhen";public static final String ENDPOINTNAME = "cn-shenzhen";public static final String PRODUCT = "nls-filetrans";public static final String DOMAIN = "filetrans.cn-shenzhen.aliyuncs.com";public static final String API_VERSION = "2018-08-17";  // 中国站版本// public static final String API_VERSION = "2019-08-23";  // 国际站版本public static final String POST_REQUEST_ACTION = "SubmitTask";public static final String GET_REQUEST_ACTION = "GetTaskResult";// 请求参数public static final String KEY_APP_KEY = "appkey";public static final String KEY_FILE_LINK = "file_link";public static final String KEY_VERSION = "version";public static final String KEY_ENABLE_WORDS = "enable_words";// 响应参数public static final String KEY_TASK = "Task";public static final String KEY_TASK_ID = "TaskId";public static final String KEY_STATUS_TEXT = "StatusText";public static final String KEY_RESULT = "Result";// 状态值public static final String STATUS_SUCCESS = "SUCCESS";private static final String STATUS_RUNNING = "RUNNING";private static final String STATUS_QUEUEING = "QUEUEING";// 阿里云鉴权clientIAcsClient client;public FileTransJavaDemo(String accessKeyId, String accessKeySecret) {// 设置endpointtry {DefaultProfile.addEndpoint(ENDPOINTNAME, REGIONID, PRODUCT, DOMAIN);} catch (ClientException e) {e.printStackTrace();}// 创建DefaultAcsClient实例并初始化DefaultProfile profile = DefaultProfile.getProfile(REGIONID, accessKeyId, accessKeySecret);this.client = new DefaultAcsClient(profile);}public String submitFileTransRequest(String appKey, String fileLink) {/*** 1. 创建CommonRequest,设置请求参数。*/CommonRequest postRequest = new CommonRequest();// 设置域名postRequest.setDomain(DOMAIN);// 设置API的版本号,格式为YYYY-MM-DD。postRequest.setVersion(API_VERSION);// 设置actionpostRequest.setAction(POST_REQUEST_ACTION);// 设置产品名称postRequest.setProduct(PRODUCT);/*** 2. 设置录音文件识别请求参数,以JSON字符串的格式设置到请求Body中。*/JSONObject taskObject = new JSONObject();// 设置appkeytaskObject.put(KEY_APP_KEY, appKey);// 设置音频文件访问链接taskObject.put(KEY_FILE_LINK, fileLink);// 新接入请使用4.0版本,已接入(默认2.0)如需维持现状,请注释掉该参数设置。taskObject.put(KEY_VERSION, "4.0");// 设置是否输出词信息,默认为false,开启时需要设置version为4.0及以上。taskObject.put(KEY_ENABLE_WORDS, true);taskObject.put("enable_sample_rate_adaptive", true);String task = taskObject.toJSONString();System.out.println(task);// 设置以上JSON字符串为Body参数。postRequest.putBodyParameter(KEY_TASK, task);// 设置为POST方式的请求。postRequest.setMethod(MethodType.POST);/*** 3. 提交录音文件识别请求,获取录音文件识别请求任务的ID,以供识别结果查询使用。*/String taskId = null;try {CommonResponse postResponse = client.getCommonResponse(postRequest);System.err.println("提交录音文件识别请求的响应:" + postResponse.getData());if (postResponse.getHttpStatus() == 200) {JSONObject result = JSONObject.parseObject(postResponse.getData());String statusText = result.getString(KEY_STATUS_TEXT);if (STATUS_SUCCESS.equals(statusText)) {taskId = result.getString(KEY_TASK_ID);}}} catch (ClientException e) {e.printStackTrace();}return taskId;}public String getFileTransResult(String taskId) {/*** 1. 创建CommonRequest,设置任务ID。*/CommonRequest getRequest = new CommonRequest();// 设置域名getRequest.setDomain(DOMAIN);// 设置API版本getRequest.setVersion(API_VERSION);// 设置actiongetRequest.setAction(GET_REQUEST_ACTION);// 设置产品名称getRequest.setProduct(PRODUCT);// 设置任务ID为查询参数getRequest.putQueryParameter(KEY_TASK_ID, taskId);// 设置为GET方式的请求getRequest.setMethod(MethodType.GET);/*** 2. 提交录音文件识别结果查询请求* 以轮询的方式进行识别结果的查询,直到服务端返回的状态描述为“SUCCESS”或错误描述,则结束轮询。*/String result = null;while (true) {try {CommonResponse getResponse = client.getCommonResponse(getRequest);System.err.println("识别查询结果:" + getResponse.getData());if (getResponse.getHttpStatus() != 200) {break;}JSONObject rootObj = JSONObject.parseObject(getResponse.getData());String statusText = rootObj.getString(KEY_STATUS_TEXT);if (STATUS_RUNNING.equals(statusText) || STATUS_QUEUEING.equals(statusText)) {// 继续轮询,注意设置轮询时间间隔。Thread.sleep(10000);}else {// 状态信息为成功,返回识别结果;状态信息为异常,返回空。if (STATUS_SUCCESS.equals(statusText)) {result = rootObj.getString(KEY_RESULT);// 状态信息为成功,但没有识别结果,则可能是由于文件里全是静音、噪音等导致识别为空。if(result == null) {result = "";}}break;}} catch (Exception e) {e.printStackTrace();}}return result;}public static void main(String args[]) throws Exception {//写出文本路径文件String path = "C:\\Users\\Administrator\\Desktop\\" +System.currentTimeMillis()+".txt";//txt数据List<String> list = new ArrayList<>();final String accessKeyId = "你的_accessKeyId";final String accessKeySecret = "你的_accessKeySecret";//创建识别项目就有final String appKey = "你的_appKey";//oss存储音频文件地址String fileLink = "http://aabbcc/voice_word.mp3";FileTransJavaDemo demo = new FileTransJavaDemo(accessKeyId, accessKeySecret);// 第一步:提交录音文件识别请求,获取任务ID用于后续的识别结果轮询。String taskId = demo.submitFileTransRequest(appKey, fileLink);System.out.println("taskId_"+taskId);if (taskId != null) {System.out.println("录音文件识别请求成功,task_id: " + taskId);}else {System.out.println("录音文件识别请求失败!");return;}// 第二步:根据任务ID轮询识别结果。String result = demo.getFileTransResult(taskId);if (result != null) {System.out.println("录音文件识别结果查询成功:" + result);JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(result);JSONArray jsonArray = (JSONArray)jsonObject.get("Sentences");
//            StringBuffer stringBuffer = new StringBuffer();for (Object strTwo : jsonArray) {cn.hutool.json.JSONObject text = JSONUtil.parseObj(strTwo);String word = text.get("Text").toString();
//                stringBuffer.append(word);list.add(word);System.out.println(word);}
//            list.add(stringBuffer.toString());//写出.txt文件FileUtil.writeLines(list, new File(path), "utf-8");System.out.println("文件voiceToWord_写出成功!");}else {System.out.println("录音文件识别结果查询失败!");}}
}

最终效果:

欢迎技术沟通和业务合作 -> 微/电: 16717696360

录音文件/音频实现mp3等文件语音转换文字txt文档提取文字精准高效识别相关推荐

  1. pythonmat文件转excel,利用python将图片转换成excel文档格式

    前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据 ...

  2. 如何将PDF文件转换成TXT文档

    相信大家都知道什么是PDF文件,可是在使用PDF文件的时候我们常常会碰到一个难题,就是将 PDF文件转换成TXT或者Word文档进行编辑,今天就给大家分享一种简单的转换方法. 1.先打开手机,可借助手 ...

  3. pythonmat文件转excel_利用python将图片转换成excel文档格式详解

    本文主要介绍了关于利用python将图片转换成excel文档的相关内容,编写了一小段Python代码,将图片转为了Excel,纯属娱乐,下面这篇文章主要给大家介绍了关于利用python将图片转换成ex ...

  4. python处理图片文件_python 学习(二)处理图片、TXT文档

    一.尝试实现场景:将一个txt文档内容读到程序的数组内 1.新建一个文档 array.txt,写入内容 ,如: 2.使用命令行读取: 1)在上述新建文档位置相同目录下打开命令提示窗 2)打开文件,读入 ...

  5. 用两个文件a.txt;b.txt.使用linux命令,复制,a.txt文档倒数第十行的记录to b.txt文档

    用两个文件a.txt;b.txt.使用linux命令,复制,a.txt文档倒数第十行的记录to b.txt文档 tail -n 10 a.txt | head -n 1 >> b.txt

  6. 如何使用ABBYY FineReader 12将JPEG文件转换成Word文档

    日常工作中处理JPEG格式的图像文件时,有时需要转换成Word文档进行编辑,市场上应用而生了很多转换工具,相信不少人听说过OCR(光学字符识别)软件,可以用来转换图像文件,而在OCR软件中, ABBY ...

  7. c# html文件转换word,C#实现word转换成html文档 源码

    [实例简介]C#实现word转换成html文档 [实例截图] [核心代码] using System; using System.Collections.Generic; using System.C ...

  8. bin文件怎么转换成文本文档_怎么把pdf文件转换成word文档?这样转很简单

    在日常的学习.工作生活中,小伙伴们总少不了要对文件格式进行转换操作,例如把pdf文件转换成word文档.对于职场老手来说,这当然不算一个难度操作,甚至还很简单.但对于职场新人而言,找不对方法,可能操作 ...

  9. 怎么退出python命令行cd找到txt文档_《python怎么读取txt文件》

    python怎么创建一个txt文件 python怎么创建txt文件的方法. 如下参考: 1.首用内置的空闲编辑器编辑(单击并选择copy),如下图所示. 2.您可以下载记事本和其他编辑软件,以支持多种 ...

最新文章

  1. Ubantu Mark
  2. 【Chat】实验 -- 实现 C/C++下TCP, 服务器/客户端 多人聊天室
  3. 获取新浪网的链接信息
  4. ios 状态栏 覆盖自定义View
  5. JavaScript四(DOM编程)
  6. poj2104(划分树模板)
  7. Linux网络编程——浅谈 TCP 三次握手和四次挥手
  8. “铜死亡”顶级研究文献解读
  9. Design Compiler指南——预综合过程
  10. 依赖注入的威力,.NET Core的魅力:解决MVC视图中的中文被html编码的问题
  11. 自动化日志收集及分析在支付宝 App 内的演进
  12. ]flume高并发优化——(1)load_balance
  13. [Windows] 【黑科技】在线视频一键下载器:无尽一键视频下载v0.2主流视频网站想下就下...
  14. 数三角形个数规律公式
  15. 英语听力计算机教室,每日英语听力电脑版|每日英语听力 v9.2.0 PC客户端
  16. 基于多视角照片的3D人脸重建
  17. 甲方公司vs乙方公司
  18. 百度关键词分析工具_百度网站关键词快排系统 - 网站被降权的原因分析
  19. STM32F767 资料汇总
  20. 计算机更新系统d盘东西还在吗,电脑换系统后东西还在不在

热门文章

  1. 《学习笔记10》——JavaScript三目运算符的使用
  2. android studio ctrl + 鼠标左键点击,Android Studio快捷键Ctrl+ 篇
  3. SVN merge(合并) 时看不到以前的已经合并过的记录的标识
  4. Canva招聘 | 遇见offer之就要圆你的大厂梦
  5. php红包互换免公众号,红包互换H5免公众号对接支付最新完美修复版源码
  6. python框架sanic_Sanic框架路由用法实例分析
  7. 二十一世纪大学英语读写教程(第四册)学习笔记(原文)——5 - Prison Studies(狱中学习)
  8. 抖音提前批--后端开发
  9. php单元格,PHP中的单元格怎么利用PhpSpreadsheet进行设置
  10. html2canvas生成图片空白或缺失问题解决