精华内容
下载资源
问答
  • 主要实现的是java平台的音频转文字,默认的是普通话,先上传到讯飞的服务器,得到data,再result读取data,之后再通过json解析,得到你需要的内容
  • 电脑现已成为我们工作、生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到java使用语音识别文字转换成语音的问题,如果我们遇到了java使用语音识别文字转换成语音的情况,该怎么处理怎么才能解决java...

    电脑现已成为我们工作、生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到java使用语音识别将文字转换成语音的问题,如果我们遇到了java使用语音识别将文字转换成语音的情况,该怎么处理怎么才能解决java使用语音识别将文字转换成语音带来的困扰呢,对于这样的问题其实我们只需要EclipseJDK登录百度AI开放平台注册一个语音服务应用。在开始编码前我们需新建一个和语音服务有关的应用获取应用对应的API Key和Secret Key信息,具体流程如下:1.注册并使用百度账号登录百度AI开放平台后台管理系统。2.在产品菜单下的语音服务找到语音合成菜单点击进入,跳转页面后点击立即使用。3.创建语音服务相关应用,应用信息编辑页面默认勾选了语音转换的基本功能点,如果我们需要其他这样就解决了这样的问题,接下来给大家带来java使用语音识别将文字转换成语音的详细操作步骤。

    工具/原料

    Eclipse

    JDK

    方法/步骤

    登录百度AI开放平台注册一个语音服务应用。在开始编码前我们需新建一个和语音服务有关的应用获取应用对应的API Key和Secret Key信息,具体流程如下:

    1.注册并使用百度账号登录百度AI开放平台后台管理系统。

    2.在产品菜单下的语音服务找到语音合成菜单点击进入,跳转页面后点击立即使用。

    3.创建语音服务相关应用,应用信息编辑页面默认勾选了语音转换的基本功能点,如果我们需要其他功能可以选择勾选,填写应用的名称和备注信息后确认提交即可。

    4.在应用管理页面查找刚才我们新建的应用信息,记录下API Key和Secret Key信息。

    3526edf736e31e72bac4bd395e4a04af.png

    3e17238fd4321b14f728b2542f6bd6a3.png

    6d5316879e22eaf2c51cd4ead8888131.png

    7a722d95bc275588f165e2d981471983.png

    获取access_token信息。后台使用的接口还需要先获取access_token才能发起请求,事实上几乎所有的相关接口都需要使用该参数,access_token的有效期为一个月,我们可以获取到access_token后存储在本地供接口使用,获取的请求地址格式和返回数据如下:

    85c22f95e964bf62368afabdc2a20ca5.png

    6ecc2eda8d66c4fc9c8aba89f6f7c688.png

    创建项目并引入Maven依赖包。在完成前期准备工作后我们可以将需要的依赖包引入到项目中,本项目是基于SpringBoot构建的,除了基本的SpringBoot包以外还需要引入以下几个架包:

    8cc02a1b79655af2345eba9ff9d40636.png

    创建文字语音转换工具类。现在我们可以开始编写具体的实现类了,流程如下:

    1.创建一个枚举类ApiURL对请求的URL和参数拼接做公共的处理。

    2.创建BaiduTTS类处理文字转语音的相关方法操作,具体实现代码如下:

    6eb2c1429664918aad1d077f27bfc821.png

    506eb4ddb11fb1d77e6f0fb59c2f3937.png

    31f846bf3b619388cb4a2f8a9ff9570c.png

    b2ac82bc0c3eb66abc019f851f77bd33.png

    29f195b47cb3245d275596f61207204a.png

    912b62a51110b35c40fc53ac189776b2.png

    创建语音转文字工具类。该类是上一个接口的逆过程也是我们经常会用到的一个比较实用的功能,该类有一部分代码和上一个类相同如token的获取,在实际开发中我们应该将这部分提取出来,具体代码如下:

    2b5931304eb6512d724de00b405b4c71.png

    38aea13ed68a3009941c4ac29699705e.png

    e8b1e4d2826c17560293a96952e0b567.png

    45bb445d3816922d402cd7f5c95da367.png

    201b0db513f747fc06fffcff7691b438.png

    展开全文
  • 手把手教你用JAVA实现“语音识别”功能(声音转文字)标贝科技 前言 什么是语音识别? 将自然语音转换为文本信息,本篇文章将介绍“一句话识别”(对60秒以内的语音进行实时转写识别) 一、内容太长不愿意看,直接...

    手把手教你用JAVA实现“语音识别”功能(声音转文字)标贝科技


    前言

    什么是语音识别?
    将自然语音转换为文本信息,本篇文章将介绍“一句话识别”(对60秒以内的语音进行实时转写识别)


    一、内容太长不愿意看,直接使用系列

    首先确认接口调用要求:
    时长限制:60秒以内
    支持音频格式:wav,pcm
    音频采样率:8000Hz,16000Hz
    位深:16bits
    声道:单声道
    确认无误后,直接执行 2.2获取权限+2.3.3完整代码示例

    二、用JAVA调用标贝科技“语音识别”接口使用流程

    2.1.环境准备

    java

    2.2.获取权限

    2.1.1.登录

    地址:https://ai.data-baker.com/#/?source=qaz123
    (注:填写邀请码hi25d7,每日免费调用量还可以翻倍)
    ​​​​​​在这里插入图片描述
    在这里插入图片描述

    点击上方地址登录,支持短信、密码、微信三种登录方式。

    在这里插入图片描述
    2.1.2.创建应用

    登录后,点击创建应用,填写相关信息(未实名认证只能创建一个应用)
    (注:实名认证后可获得创建多个应用的权限)
    在这里插入图片描述
    进入应用,其中包含的技术产品有:语音识别、语音合成、声音复刻、声音转换
    页面中功能主要包括:服务用量管理、购买服务量管理、开发者文档、授权管理、套餐管理

    在这里插入图片描述
    2.1.3.获取token
    点击一句话识别—>授权管理—>显示—>获取APISecret—>(获取访问令牌token
    在这里插入图片描述


    2.3.代码实现

    2.3.1.获取token

    /**
         * 授权:需要在开放平台获取【https://ai.data-baker.com/#/?source=qaz123】
         */
        private static final String clientId = "输入你的clientid";
        private static final String clientSecret = "输入你的clientsecret";
    
        /**
         * 获取token的地址信息
         */
        public static String tokenUrl = "https://openapi.data-baker.com/oauth/2.0/token?grant_type=client_credentials&client_secret=%s&client_id=%s";
    	public static String getAccessToken() {
            String accessToken = "";
            OkHttpClient client = new OkHttpClient();
            // request 默认是get请求
            String url = String.format(tokenUrl, clientSecret, clientId);
            Request request = new Request.Builder().url(url).build();
            JSONObject jsonObject;
            try {
                Response response = client.newCall(request).execute();
                if (response.isSuccessful()) {
                    // 解析
                    String resultJson = response.body().string();
                    jsonObject = JSON.parseObject(resultJson);
                    accessToken = jsonObject.getString("access_token");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return accessToken;
        }
    

    2.3.2.httpclient发送post请求

    public static void doSpeechRecognition(String accessToken, File audioFile, String audioFormat, Integer sampleRate) {
            try {
                OkHttpClient client = new OkHttpClient();
                MediaType mediaType = MediaType.parse("application/octet-stream");
                FileInputStream in = new FileInputStream(audioFile);
                byte[] fileByte = new byte[(int) audioFile.length()];
                int realLen = in.read(fileByte);
                //确保音频文件内容全部被读取
                if (realLen == (int) audioFile.length()) {
                    RequestBody body = RequestBody.create(mediaType, fileByte);
                    //构造request
                    Request request = new Request.Builder()
                            .url(asrUrl)
                            .addHeader("access_token", accessToken)
                            .addHeader("audio_format", audioFormat)
                            .addHeader("sample_rate", String.valueOf(sampleRate))
                            .addHeader("domain", "common")
                            .method("POST", body)
                            .build();
                    Response response = client.newCall(request).execute();
                    if (response.isSuccessful()) {
                        JSONObject jsonObject = JSON.parseObject(response.body().string());
                        System.out.println("识别成功,识别结果:" + (jsonObject == null ? "" : jsonObject.getString("text")));
                    } else {
                        System.out.println("识别失败,错误信息:" + response.body().string());
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    2.3.3.完整代码示例

    package ......
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import okhttp3.*;
    import org.apache.commons.lang3.StringUtils;
    
    import java.io.File;
    import java.io.FileInputStream;
    
    /**
     * (一句话)在线识别RESTFUL API接口调用示例
     * 附:在线识别RESTFUL API文档 【https://www.data-baker.com/specs/file/asr_word_api_restful】
     * <p>
     * 注意:仅作为demo示例,失败重试、token过期重新获取、日志打印等优化工作需要开发者自行完成
     *
     * @author data-baker
     */
    public class AsrRestApiDemo {
        /**
         * 授权:需要在开放平台获取【https://ai.data-baker.com/】
         */
        private static final String clientId = "YOUR_CLIENT_ID";
        private static final String clientSecret = "YOUR_CLIENT_SECRET";
    
        /**
         * 获取token的地址信息
         */
        public static String tokenUrl = "https://openapi.data-baker.com/oauth/2.0/token?grant_type=client_credentials&client_secret=%s&client_id=%s";
        /**
         * 一句话识别API地址
         */
        public static String asrUrl = "https://openapi.data-baker.com/asr/api";
        /**
         * 音频文件
         */
        public static String audioPath = "/home/asr/16bit_16k.pcm";
        /**
         * 文件大小限制:开发者需注意服务端会校验音频时长不超过60S。demo作为示例,简化为只校验文件大小
         *
         * @param args
         */
        public static Integer MAX_FILE_SIZE = 10 * 1024 * 1024;
    
        public static void main(String[] args) {
            String accessToken = getAccessToken();
            if (StringUtils.isNotEmpty(accessToken)) {
                File audioFile = new File(audioPath);
                //一句话在线识别支持的音频长度在60S内,开发者需注意音频流的大小
                if (audioFile.exists() && audioFile.length() < MAX_FILE_SIZE) {
                    //支持pcm和wav格式:如果是wav格式,audioFormat设置为"wav";如果是pcm格式,audioFormat设置为"pcm"
                    doSpeechRecognition(accessToken, audioFile, "pcm", 16000);
                }
            }
        }
    
        public static void doSpeechRecognition(String accessToken, File audioFile, String audioFormat, Integer sampleRate) {
            try {
                OkHttpClient client = new OkHttpClient();
                MediaType mediaType = MediaType.parse("application/octet-stream");
                FileInputStream in = new FileInputStream(audioFile);
                byte[] fileByte = new byte[(int) audioFile.length()];
                int realLen = in.read(fileByte);
                //确保音频文件内容全部被读取
                if (realLen == (int) audioFile.length()) {
                    RequestBody body = RequestBody.create(mediaType, fileByte);
                    //构造request
                    Request request = new Request.Builder()
                            .url(asrUrl)
                            .addHeader("access_token", accessToken)
                            .addHeader("audio_format", audioFormat)
                            .addHeader("sample_rate", String.valueOf(sampleRate))
                            .addHeader("domain", "common")
                            .method("POST", body)
                            .build();
                    Response response = client.newCall(request).execute();
                    if (response.isSuccessful()) {
                        JSONObject jsonObject = JSON.parseObject(response.body().string());
                        System.out.println("识别成功,识别结果:" + (jsonObject == null ? "" : jsonObject.getString("text")));
                    } else {
                        System.out.println("识别失败,错误信息:" + response.body().string());
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static String getAccessToken() {
            String accessToken = "";
            OkHttpClient client = new OkHttpClient();
            //request 默认是get请求
            String url = String.format(tokenUrl, clientSecret, clientId);
            Request request = new Request.Builder().url(url).build();
            JSONObject jsonObject;
            try {
                Response response = client.newCall(request).execute();
                if (response.isSuccessful()) {
                    //解析
                    String resultJson = response.body().string();
                    jsonObject = JSON.parseObject(resultJson);
                    accessToken = jsonObject.getString("access_token");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return accessToken;
        }
    }
    

    地址:https://ai.data-baker.com/#/?source=qaz123
    (注:填写邀请码hi25d7,每日免费调用量还可以翻倍)
    在这里插入图片描述
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/5fc12c005cbf468d849d22abd707d64c.png

    展开全文
  • 语音交互的需求场景越来越多,很多开发者都想做一款把语音转换成文字的游戏或者应用,这需要用到语音识别技术,这里会对如何使用完全免费的百度语音开放平台来快速开发,拥有高大上的语音识别技术的应用。...

    🍅 Java学习路线:搬砖工逆袭Java架构师

    🍅 简介:Java领域优质创作者🏆、CSDN哪吒公众号作者✌ 、Java架构师奋斗者💪

    🍅 扫描主页左侧二维码,加入群聊,一起学习、一起进步 

    🍅 欢迎点赞 👍 收藏 ⭐留言 📝  

    一、基本介绍

    语音交互的需求场景越来越多,很多开发者都想做一款把语音转换成文字的游戏或者应用,这需要用到语音识别技术,这里会对如何使用完全免费的百度语音开放平台来快速开发,拥有高大上的语音识别技术的应用。

    二、引入jar包

    下载jacob-1.18.zip
    并导入jacob.jar、json-20160810.jar、log4j-1.2.17.jar
    将解压后的文件中jacob-1.18-x64.dll复制到对应的JDK中(我的是C:Program FilesJavajdk1.8.0_152jrein)

    三、代码实例

    1、工具类,ConnUtil

    展开全文
  • 基于android的离线语音识别,实现没有网络的情况下把语音转换成文字信息。 对程序内容进行了简化,内容简单明了,容易看懂。 包含了离线语音需要的所有离线包 speechapp.java文件第22行修改成自己在讯飞网站申请的id...
  • Java实现在线语音识别

    2020-08-27 00:23:00
    主要为大家详细介绍了Java实现在线语音识别功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 讯飞语音识别之语音转文字------java

    千次阅读 2019-01-29 16:31:00
    最近项目要用到语音识别的功能,网上找别人写的都不行,二话不说直接去讯飞官网注册下载了一个sdk,但是个人觉得sdk中并不是很明确的能运行实现功能,于是自己参考下载的sdk中的代码做了一个改动和封装。添加了一个...

     

    最近项目要用到语音识别的功能,网上找别人写的都不行,二话不说直接去讯飞官网注册下载了一个sdk,但是个人觉得sdk中并不是很明确的能运行实现功能,于是自己参考下载的sdk中的代码做了一个改动和封装。添加了一个配置文件,基本功能都能实现运行了。下面是我测试写的一个语音转文字的例子

    第一:首先在官网上注册下载sdk后之后每一个sdk中都会对应一个apppid和secret key,在我的应用中就会找到(注意新手很难找到对应的secret key,我也是弄了很久,实在找不到可以留言给我)

    在下载的sdk中会有对应的jar版本。我的lib是2.0的版本

    第二步

    我在测试实例中加了一个log4j.properties,代码如下:

    log4j.rootLogger=INFO, Console,file

    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.Target=System.out
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%l]%m%n

    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=logs/lfasr-sdk-client.log
    log4j.appender.file.MaxFileSize=128MB
    log4j.appender.file.MaxBackupIndex=50
    log4j.appender.file.Append=true
    log4j.appender.file.Threshold=INFO
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] %l - %m%n

     

    配置文件config.properties

    # APP ID
    app_id=“写你申请sdk时候的apppid”
    # secret key
    secret_key='写你申请sdk时候的secret key"
    # we support both http and https prototype
    lfasr_host=http://lfasr.xfyun.cn/lfasr/api
    # file piece size, recommended between 128KB and 10,240KB

    #读取文件大小的最大显示
    file_piece_size=524288
    # store path: this is not the store path for the result json file, but the path for the file piece during upload
    store_path=语音识别的文件的根目录

     

    最后测试代码

    package com.iflytek.msp.lfasr;

    import java.util.HashMap;

    import org.apache.log4j.PropertyConfigurator;

    import com.alibaba.fastjson.JSON;
    import com.iflytek.msp.cpdb.lfasr.client.LfasrClientImp;
    import com.iflytek.msp.cpdb.lfasr.exception.LfasrException;
    import com.iflytek.msp.cpdb.lfasr.model.LfasrType;
    import com.iflytek.msp.cpdb.lfasr.model.Message;
    import com.iflytek.msp.cpdb.lfasr.model.ProgressStatus;
    public class LaugDemo {
    private static final LfasrType type = LfasrType.LFASR_TELEPHONY_RECORDED_AUDIO;
    public static void main(String[] args) {

    //打印日志所在的项目路径
    PropertyConfigurator.configure("source\\log4j.properties");
    String path ="你要识别的文件";
    LfasrClientImp lc =null;
    String task_id = "";
    try {
    lc= LfasrClientImp.initLfasrClient();
    HashMap<String, String> map = new HashMap<>();
    map.put("has_participle", "true");

    Message uploadMsg = lc.lfasrUpload(path, type, map);
    int msg = uploadMsg.getOk();
    if(msg == 0){
    task_id = uploadMsg.getData();
    System.out.println("task_id======="+task_id);
    }else{
    System.out.println("转换语音发生异常==========="+uploadMsg.getErr_no());
    }
    //Message progressMsg = lc.lfasrGetProgress(task_id);
    } catch (Exception e) {
    Message uploadMsg = JSON.parseObject(e.getMessage(), Message.class);
    System.out.println("ecode=" + uploadMsg.getErr_no());
    System.out.println("failed=" + uploadMsg.getFailed());
    }

    while(true){
    try {
    Thread.sleep(5 * 1000);
    System.out.println("waiting ...");
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    try {
    //失败
    Message msg = lc.lfasrGetProgress(task_id);
    if(msg.getOk() !=0){ //0表示成功 -1表示失败
    System.out.println("任务失败"+task_id);
    System.out.println("ecode==========="+msg.getErr_no());
    System.out.println("failed====="+msg.getFailed());

    }else{

    //成功
    ProgressStatus ps = JSON.parseObject(msg.getData(),ProgressStatus.class);
    if(ps.getStatus()==9){
    System.out.println("任务完成===="+task_id+",status===="+ps.getDesc());
    break;
    }else{
    System.out.println("任务没有完成====="+task_id+",status===="+ps.getDesc());
    continue;
    }
    }
    } catch (LfasrException e) {
    e.printStackTrace();
    }
    }

    }


    }

     

    转载于:https://www.cnblogs.com/evildoer-bugs/p/10334672.html

    展开全文
  • java语音识别Api

    2021-02-26 08:49:32
    我想在其上实现语音识别功能.像这样:假设我有一些被用户称为“嘿”,“一个”,“两个”茶的记录.当他/她说“嘿”时,语音识别api应该识别记录的第一个输入.“嘿“,”一个“,”两个,“茶”可能是英语中没有单词的东西....
  • 基于Java的利用科大讯飞提供的MSC SDK实现语音模拟和语音识别。具有简单的界面。
  • Android 第三方SDK开发视频教程,给课程结合讯飞语音这个第三方SDK进行实战教学,实现在线语音合成,将文字信息转化为声音信息,给应用配上“嘴巴;语音听写,将连续语音识别文字,给应用配上“耳朵”。
  • 科大讯飞语音识别自己写的demo,已经过自测没有问题; 1.使用前建议下载看科大讯飞的接口文档 http://doc.xfyun.cn/msc_java/299249; MSC Develop Manual for Java.pdf 2.必须添加语音识别的jar包
  • NULL 博文链接:https://542255641.iteye.com/blog/2371542
  • javaweb实现语音识别

    2018-03-22 14:35:20
    javaweb实现语音识别,将语音转换成文字并输出,调用百度接口,需要自己注册账号。
  • 阿里语音识别服务java调用全程手把手详解-适合中小学生快速上手 阿里语音识别与百度语音识别的调用对比: 用例:1分30秒的录音文件 百度用时:3秒 阿里用时:30秒 识别准确率来看:阿里还算准确,百度除了...
  • “最近为小程序增加语音识别转文字的功能,坑路不断,特此记录。”微信开发者工具开发者工具上的录音文件与移动端格式不同,暂时只可在工具上进行播放调试,无法直接播放或者在客户端上播放。debug的时候发现,工具...
  • 调用科大讯飞SDK包,语音识别java版本代码示例。示例包括语音听写、语音识别、语音组合三个功能,本人只用到语音听写(即把语音文字
  • Java中实现在线语音识别

    万次阅读 2018-03-23 11:19:47
    1.SpeechRecognizer类,语音识别类,语音识别,包括听写、语法识别功能。本类使用单例,调用者使用本类的对象,只需要通过createRecognizer()创建 一次对象后,便可一直使用该对象,直到通过调用destroy()进行单例...
  • 批量语音转文字小工具是一款非常不错的文字语音转换工具,批量语音转文字小工具主要用来进行MP3文件批量上传,进行语音转文字的功能,依托于百度AI软件的识别率还是非常不错的。
  • uni-app使用百度语音识别转文字

    万次阅读 2020-04-09 16:58:26
    recorderManager.start({ sampleRate: 16000 // 必须设置是后台设置的参数,不然百度语音识别不了 }); }, endRecord() { console.log('录音结束'); _this = this; recorderManager.stop(); }, playVoice() { ...
  • 使用百度AI将语音转换成文字(JAVA)

    千次阅读 2020-05-08 10:07:22
    使用百度AI将语音转换成文字--JAVA1.安装ffmpeg 1.安装ffmpeg 如果使用百度AI的话,需要依赖ffmpeg这个工具。所以要提前安装这个, 以Mac为例: brew install ffmpeg 然后就等着,时间不会短了,保证电脑不要休眠 ...
  • java语音转文字

    千次阅读 2018-08-14 20:43:00
    用到的百度提供的api 需要把wav音频文件成16k的频率,必须,不百度api解析不出来。显示音频文件不清晰错误。想要转化还必须要有ffmpeg...-- 百度语音识别 --> <dependency> <groupId>co...
  • 都会通过文字来记录一些资料数据等,但是如果碰到语音文件的话,大部分人都会选择将录音文件成可编辑的文本形式,但是我估计大部分人都是用键盘或者用笔一个字一个字记录下来的,其实很多人都知道有语音转文字这个...
  • android 语音识别转文字.rar
  • 【实例简介】【实例截图】【核心代码】...import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClic...
  • 百度api 语音转文字Demo amr文件,亲测可行
  • 会议记录转文字 - 语音识别

    千次阅读 2020-08-19 20:40:21
    随着人工智能的发展,我们考虑借助语音识别来提高效率。 个人搭建模型的话,由于缺乏训练数据,往往用来练手。市面上目前有两大类语音识别的解决方案:一类是科大讯飞和搜狗之类的输入法公司的产品,公司往往有现成...
  • 基于Springboot微服务,引用科大讯飞Msc.jar实现对语音的听写与识别
  • java实现语音识别

    千次阅读 2020-10-27 18:40:51
    现在已经非常非常非常普及了,看过‘最强大脑’的朋友,也应该对‘小度’这个机器人有所了解,战胜国际顶尖的‘大脑’- 水哥,(ps:内幕不知),那么今天,我们来看下关于语音识别,是如何做到的,java又是如何识别...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,871
精华内容 2,748
关键字:

java语音识别转文字

java 订阅