音频录音文件实现语音转换辨认文字最初文档输入后果

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

性能技术: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";    // 阿里云鉴权client    IAcsClient client;    public FileTransJavaDemo(String accessKeyId, String accessKeySecret) {        // 设置endpoint        try {            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);        // 设置action        postRequest.setAction(POST_REQUEST_ACTION);        // 设置产品名称        postRequest.setProduct(PRODUCT);        /**         * 2. 设置录音文件辨认申请参数,以JSON字符串的格局设置到申请Body中。         */        JSONObject taskObject = new JSONObject();        // 设置appkey        taskObject.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);        // 设置action        getRequest.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