精华内容
下载资源
问答
  • 电脑现已成为我们工作、生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到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

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

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

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

    6991b164a74ea4d20902066363dc47b0.png

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

    40ddde47b0c67bfec6c8fe9d48da8def.png

    第二步

    我在测试实例中加了一个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 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();

    }

    }

    }

    }

    展开全文
  • java 微信小程序 语音识别文字 音频格式转换 silk pcm wav

    最近有需求要把微信小程序里面的语音进行语音识别,然后搜搜,微信小程序的语音格式是silk

    1、上传silk文件

    2、下载silk-v3-decoder,通过名称把silk转换成讯飞可识别的wav文件

    3、获取讯飞转换后的文字信息

    	/**
    	 * 获取wav文件 并返回路径
    	 * @param wavFileName
    	 * @return
    	 * @throws Exception
    	 */
    	public String getWav(String wavFileName) throws Exception {//之前别人写的代码,可以改为java直接执行shell脚本的方式
    
    		StringBuilder command = new StringBuilder(Constant.FFMPEG);
    		command.append(Constant.CONVERTER);
    		command.append(Constant.OXM_VOICE_UPLOAD_BASE_PTAH);
    		command.append(wavFileName);
    		command.append(" wav ");
    		Session session = jschSessionService.getSession();
    		jschSessionService.getChannelAndExec(session, command.toString());
    		Thread.sleep(2000);
    		String name = wavFileName.replace("silk", "wav");
    		return name;
    	}


    public static final String FFMPEG = " export PATH=/usr/local/ffmpeg/bin/:$PATH; source /etc/profile;";
    public static final String CONVERTER = " sh /home/deployer/silk-v3-decoder-master/converter.sh ";
    public static final String OXM_VOICE_UPLOAD_BASE_PTAH = "/home/deployer/tomcat7/webapps/xxxx/";

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.nio.charset.Charset;
    import java.util.Properties;
    
    import org.springframework.stereotype.Service;
    
    import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelExec;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.JSchException;
    import com.jcraft.jsch.Session;
    import com.shanjin.oxm.common.util.Constant;
    
    /**
     *  java  ssh 服务
     *
     */
    @Service("JschSessionService")
    public class JschSessionService {
    
    	public Session getSession() throws JSchException {
    		Properties sshConfig = new Properties();
    		sshConfig.put("StrictHostKeyChecking", "no");
    		JSch jsch = new JSch();
    		Session session = jsch.getSession(Constant.SSH_USER,Constant.SSH_IP,Constant.SSH_PORT);
    		session.setPassword(Constant.SSH_PASSWORD);
    		session.setConfig(sshConfig);
    		session.connect();
    		return session;
    	}
    
    	public void closeSession(Session session) {
    		if (session.isConnected()) {
    			session.disconnect();
    		}
    	}
    
    	
    	public String getChannelAndExec(Session session, String command) throws JSchException, IOException {
    		Channel channel = session.openChannel("exec");
    		((ChannelExec) channel).setCommand(command);
    
    		channel.setInputStream(null);
    
    		((ChannelExec) channel).setErrStream(System.err);
    
    		channel.connect();
    
    		int state = channel.getExitStatus();
    		/*if (state != 0) {
    			return "exec is error ,exit code is :" + state;
    		}*/
    		((ChannelExec) channel).setErrStream(System.err);
    
    		//String msg = getExitMessage(channel);
    		closeChannel(channel);
    		closeSession(session);
    		return state + "";
    	}
    
    	public void closeChannel(Channel channel){
    		if(channel.isConnected()){
    			channel.disconnect();
    		}
    	}
    	
    	
    	public String getExitMessage(Channel channel) throws IOException {
    		StringBuilder message = new StringBuilder("exit message is : ");
    		InputStream in = channel.getInputStream();
    		BufferedReader reader = new BufferedReader(new InputStreamReader(in,
    				Charset.forName("utf-8")));
    		String buf = null;
    		while ((buf = reader.readLine()) != null) {
    			message.append(buf);
    		}
    
    		return message.toString();
    	}
    	
    
    }

    	/**
    	 * 获取语音信息
    	 */
    	public String getVoiceText(String filePath,String wavName) throws Exception {
    		IflyTekServiceImpl iflytekService = new IflyTekServiceImpl();//TODO 注解方式,会产生缓存,一直都是第一次识别的语音
            	File ff = null;
    		String text = null;
    		File file = new File(filePath+wavName);
    		InputStream in = new FileInputStream(file);
    		byte[] bb = VoiceSplitUtil.getbytes(in);
    		System.out.println(bb);
    		text = iflytekService.RecognizePcmfileByte(bb);
    //		text = this.getText(fly);
    		in.close();
    		return text;
    	}
    
    	public String getText(IflyTekServiceImpl fly) {
    
    		StringBuilder text = new StringBuilder();
    
    		JSONObject json = null;
    		JSONArray wss = null;
    		JSONObject ws = null;
    		JSONArray cw = null;
    		JSONObject c = null;
            long begin = System.currentTimeMillis();
    		while (true) {
    			 long end = System.currentTimeMillis();
    			 if((end - begin) >3000){
    				 break;
    				
    			 }
    			if (fly.recognizer.isListening() && fly.mIsEndOfSpeech == true) {
    System.out.println(fly.sn);
    				json = JSONObject.fromObject(fly.sn.toString());
    				wss = json.getJSONArray("ws");
    				text = new StringBuilder();
    				for (int i = 0; i < wss.size(); i++) {
    					ws = wss.getJSONObject(i);
    					cw = ws.getJSONArray("cw");
    					c = cw.getJSONObject(0);
    					text.append(c.getString("w"));
    				}
    
    				break;
    			}
    
    		}
    
    		
    		if(text.length() <= 0){
    			text.append("对不起,我没听清您在说什么");
    		}
    		return text.toString();
    	}


    用到了讯飞的jar:json-jena-1.0-1.0.jar、Msc-1.0.jar

    讯飞的插件:libmsc32.so、libmsc64.so、msc32.dll、msc64.dll,插件我全部放在了工程的根目录下


    后来又要求文字需要转换成,一个痛苦的过程啊,各种文件格式转换

    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Date;
    import java.util.Properties;
    
    public class ShellExec {
    
    	public static void execShell(String command) {
    		InputStreamReader stdISR = null;
    		InputStreamReader errISR = null;
    		Process process = null;
    //		String command = "/home/Lance/workspace/someTest/testbash.sh";
    		long timeout = 10 * 1000;
    		try {
    			process = Runtime.getRuntime().exec(command);
    
    //			CommandStreamGobbler errorGobbler = new CommandStreamGobbler(
    //					process.getErrorStream(), command, "ERR");
    //			CommandStreamGobbler outputGobbler = new CommandStreamGobbler(
    //					process.getInputStream(), command, "STD");
    
    //			errorGobbler.start();
    			// 必须先等待错误输出ready再建立标准输出
    //			while (!errorGobbler.isReady()) {
    //				Thread.sleep(10);
    //			}
    //			outputGobbler.start();
    //			while (!outputGobbler.isReady()) {
    //				Thread.sleep(10);
    //			}
    
    			CommandWaitForThread commandThread = new CommandWaitForThread(
    					process);
    			commandThread.start();
    
    			long commandTime = new Date().getTime();
    			long nowTime = new Date().getTime();
    			boolean timeoutFlag = false;
    			while (!commandThread.isFinish()) {
    				if (nowTime - commandTime > timeout) {
    					timeoutFlag = true;
    					break;
    				} else {
    					Thread.sleep(1000);
    					nowTime = new Date().getTime();
    				}
    			}
    			if (timeoutFlag) {
    				// 命令超时
    //				errorGobbler.setTimeout(1);
    //				outputGobbler.setTimeout(1);
    				System.out.println("正式执行命令:" + command + "超时");
    			}
    
    //			while (true) {
    //				if (errorGobbler.isReadFinish() && outputGobbler.isReadFinish()) {
    //					break;
    //				}
    //				Thread.sleep(10);
    //			}
    		} catch (IOException | InterruptedException e) {
    			e.printStackTrace();
    		} finally {
    			if (process != null) {
    				process.destroy();
    			}
    		}
    	}
    	
    	public static void convertAudio(String sourcePath,int sourceHZ,String targetPath,int targetHZ){//ffmpeg参数设置的坑好大啊
    		Properties props=System.getProperties(); //获得系统属性集    
    		String osName = props.getProperty("os.name"); //操作系统名称
    		String command = null;
    		if(osName.contains("Windows")){
    //			ffmpeg -y -f s16le -ar 24000 -ac 1 -i "$1.pcm" -f wav -ar 16000 -b:a 16 -ac 1 "${1%.*}.$2"
    			command = "C:\\ffmpeg.exe -y -f s16le -ar "+sourceHZ+" -i "+sourcePath+" -f wav -ar "+targetHZ+" -b:a 8 -ac 1 "+targetPath;			
    		}else{
    			command = "/usr/local/ffmpeg/bin/ffmpeg -y -f s16le -ar "+sourceHZ+" -ac 1 -i "+sourcePath+" -f wav -ar "+targetHZ+" -b:a 8 -ac 1 "+targetPath;
    		}
    		System.out.println("格式转换:"+command);
    		ShellExec.execShell(command);
    	}
    	
    	public static void pcmToSilk(String pcmPath,String silkPath) throws InterruptedException{
    		//首先 pcm转换成8000的wav,然后wav转成silk
    //		ShellExec.convertAudio(pcmPath, 16000, pcmPath+".wav", 16000);
    //		Thread.sleep(1000);
    //		ShellExec.convertAudio(pcmPath+".wav", 16000, silkPath, 8000);
    		
    
    		ShellExec.convertAudio(pcmPath, 16000, silkPath, 8000);
    	}
    	
    	public static void pcmToWav(String pcmPath,String wavPath){
    		Properties props=System.getProperties(); //获得系统属性集    
    		String osName = props.getProperty("os.name"); //操作系统名称
    		String command = null;
    		if(osName.contains("Windows")){
    			command = "C:\\ffmpeg.exe -f s16le -ar 16000 -i "+pcmPath+" -f wav -ar 16000 -b:a 8 -ac 1 "+wavPath;			
    		}else{
    			command = "/usr/local/ffmpeg/bin/ffmpeg -f s16le -ar 16000 -i "+pcmPath+" -f wav -ar 16000 -b:a 16 -ac 1 "+wavPath;
    		}
    		System.out.println("格式转换:"+command);
    		ShellExec.execShell(command);
    	}
    	
    	public static void silkToWav(String silkPath,String wavPath){
    		Properties props=System.getProperties(); //获得系统属性集    
    		String osName = props.getProperty("os.name"); //操作系统名称
    		String command = null;
    		if(osName.contains("Windows")){
    //			ffmpeg -y -f s16le -ar 24000 -ac 1 -i "$1.pcm" -f wav -ar 16000 -b:a 16 -ac 1 "${1%.*}.$2"
    			command = "C:\\ffmpeg.exe -y -f s16le -ar 8000 -ac 1 -i "+silkPath+" -f wav -ar 16000 -b:a 16 -ac 1 "+wavPath;			
    		}else{
    			command = "/usr/local/ffmpeg/bin/ffmpeg -y -f s16le -ar 8000 -ac 1 -i "+silkPath+" -f wav -ar 16000 -b:a 16 -ac 1 "+wavPath;
    		}
    		System.out.println("格式转换:"+command);
    		ShellExec.execShell(command);
    	
    	}
    	
    	public static void main(String[] args) throws Exception{
    		ShellExec.pcmToSilk("/home/deployer/tomcat7/webapps/omoFile/gc3e72fbe-1a27-479f-ae4f-d3aacc6276ed.pcm", "/home/deployer/tomcat7/webapps/omoFile/gc3e72fbe-1a27-479f-ae4f-d3aacc6276ed.pcm.silk");
    //		ShellExec.pcmToWav("/home/deployer/tomcat7/webapps/omoFile/gdd68fe07-35b3-46f1-af08-97100caba179.pcm", "/home/deployer/tomcat7/webapps/omoFile/gdd68fe07-35b3-46f1-af08-97100caba179.pcm.wav");
    
    	}

    public class CommandWaitForThread extends Thread {
    
    	private Process process;
    	private boolean finish = false;
    	private int exitValue = -1;
    
    	public CommandWaitForThread(Process process) {
    		this.process = process;
    	}
    
    	public void run() {
    		try {
    			this.exitValue = process.waitFor();
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		} finally {
    			finish = true;
    		}
    	}
    
    	public boolean isFinish() {
    		return finish;
    	}
    
    	public void setFinish(boolean finish) {
    		this.finish = finish;
    	}
    
    	public int getExitValue() {
    		return exitValue;
    	}
    

    最终得到了微信小程序需要的silk格式,然而,他喵的我不知道微信小程序需要什么频率什么规格的silk文件,电脑能够播放我转换了的silk,但是小程序并不能播放,好蛋疼啊。继续蛋疼中........


    附两份资料

    linux安装ffmpeg

    http://blog.csdn.net/wh8_2011/article/details/50666745

    ffmpeg命令及案例

    http://blog.csdn.net/c910511/article/details/54849048 案例

    http://www.cuplayer.com/player/PlayerCode/FFmpeg/2014/0706/1399.html 命令

    展开全文
  • java语音转文字

    千次阅读 2018-08-14 20:43:00
    用到的百度提供的api 需要把wav音频文件成16k的频率,必须,不百度api解析不出来。显示音频文件不清晰错误。想要转化还必须要有ffmpeg...-- 百度语音识别 --> <dependency> <groupId>co...

    用到的百度提供的api

    需要把wav音频文件转成16k的频率,必须转,不转百度api解析不出来。显示音频文件不清晰错误。想要转化还必须要有ffmpeg程序,这个自己百度去下载。然后拿转好的文件扔到百度的api中。很简单。

    pom

    <!-- 百度语音识别 -->
            <dependency>
                <groupId>com.baidu.aip</groupId>
                <artifactId>java-sdk</artifactId>
                <version>4.3.2</version>
            </dependency>

    工具类Cover8xTo16x

    package com.xiaoxin.yixinai._frame.utils;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by liuzhonghua on 2018/8/14.
     */
    public class Cover8xTo16x {
    
        static final Logger logger = LoggerFactory.getLogger(Cover8xTo16x.class);
        /**
         * 音频文件频率8k转16k。必须要转,因为不转百度识别不出来,错误信息是音质太差
         * @param sourceFile
         * @return
         */
        public static File cover8xTo16x(File sourceFile){
            String targetPath = null;
            try {
                File ffmpegPath = new File("E:\\project\\ffmpeg\\bin\\ffmpeg"); //存放ffmpeg程序的目录
                targetPath = sourceFile.getAbsolutePath().replaceAll(".wav" , "_16x.wav");
                // ffmpeg.exe -i source.wav -ar 16000 target.wav
                List<String> wavToPcm = new ArrayList<String>();
                wavToPcm.add(ffmpegPath.getAbsolutePath());
                wavToPcm.add("-i");
                wavToPcm.add(sourceFile.getAbsolutePath());
                wavToPcm.add("-ar");
                wavToPcm.add("16000");
                wavToPcm.add(targetPath);
                ProcessBuilder builder = new ProcessBuilder();
                builder.command(wavToPcm);
                builder.redirectErrorStream(true);
                Process process = builder.start();
                process.waitFor();
            } catch (Exception e) {
                logger.error("录音文件8k转化16k失败"+e.getMessage());
                e.printStackTrace();
                return null;
            }
            if (StringUtils.isNotEmpty(targetPath)) {
                return new File(targetPath);
            }
            logger.error("传入的文件路径有误");
            return null;
        }
    }
           AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
                client.setConnectionTimeoutInMillis(2000);
                client.setSocketTimeoutInMillis(60000);
                JSONObject res = client.asr("D:\\websites\\upload\\vox\\vns\\389_37\\4.6.1.ai1_16x.wav", "wav", 16000, null);
                System.out.println(res);

     

    转载于:https://www.cnblogs.com/coder-lzh/p/9477759.html

    展开全文
  • 都会通过文字来记录一些资料数据等,但是如果碰到语音文件的话,大部分人都会选择将录音文件转成可编辑的文本形式,但是我估计大部分人都是用键盘或者用笔一个字一个字记录下来的,其实很多人都知道有语音转文字这个...
  • 讯飞语音识别之语音转文字------java

    千次阅读 2019-01-29 16:31:00
    最近项目要用到语音识别的功能,网上找别人写的都不行,二话不说直接去讯飞官网注册下载了一个sdk,但是个人觉得sdk中并不是很明确的能运行实现功能,于是自己参考下载的sdk中的代码做了一个改动和封装。添加了一个...
  • 基于android的离线语音识别,实现没有网络的情况下把语音转换成文字信息。 对程序内容进行了简化,内容简单明了,容易看懂。 包含了离线语音需要的所有离线包 speechapp.java文件第22行修改成自己在讯飞网站申请的id...
  • 阿里语音识别服务java调用全程手把手详解-适合中小学生快速上手 阿里语音识别与百度语音识别的调用对比: 用例:1分30秒的录音文件  百度用时:3秒  阿里用时:30秒  识别准确率来看:阿里还算准确...
  • 语音交互的需求场景越来越多,很多开发者都想做一款把语音转换成文字的游戏或者应用,这需要用到语音识别技术,这里会对如何使用完全免费的百度语音开放平台来快速开发,拥有高大上的语音识别技术的应用。...
  • java语音识别(科大讯飞版)

    千次阅读 热门讨论 2017-11-01 13:50:06
    用科大讯飞来实现java语音识别,语音转文字,很简单的示例
  • 科大讯飞语音识别自己写的demo,已经过自测没有问题; 1.使用前建议下载看科大讯飞的接口文档 http://doc.xfyun.cn/msc_java/299249; MSC Develop Manual for Java.pdf 2.必须添加语音识别的jar包
  • Android语音转文字识别语音

    千次阅读 2018-10-30 18:01:05
    项目地址:https://github.com/zhanlv/VtDemo 讯飞AndroidSDK文档:... 讯飞语音SDK不提供android平台语音转写的功能(只支持java平台,当然android可以通过访问后台去请求),这里是通过语音听写来识...
  • voicewo 是一个专门用于在网页中实现语音识别转换的jQuery插件。开发人员可以用voicewo将用户的语音转换成文字,插入到指定的HTML表单里,无缝地与Java、.NET、PHP、ASP等多种编程语言集成。适合在聊天室、评论框、...
  • 调用科大讯飞SDK包,语音识别java版本代码示例。示例包括语音听写、语音识别、语音组合三个功能,本人只用到语音听写(即把语音文字
  • 微信内测“发送语音过程中转文字”的功能受到了不少用户的好评,如今,在经过一段时间的灰度测试过后,近日有媒体测试发现,iOS版微信目前已经上线了按住说话“语音转文字”功能——据了解,该功能支持识别的语言有...
  • 有时需要把讯飞语音识别结果成srt字幕,通过下面的java代码即可实现。 import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.io.*; import java.text.SimpleDateFormat;...
  • voicewo语音识别

    2016-02-02 14:13:07
    voicewo 是一个专门用于在网页中实现语音识别转换的jQuery插件。开发人员可以用voicewo将用户的语音转换成文字,插入到指定的HTML表单里,无缝地与Java、.NET、PHP、ASP等多种编程语言集成。适合在聊天室、评论框、...
  • 项目需求,需要使用讯飞的语音识别接口,将微信小程序上传的录音文件识别成文字返回 首先去讯飞开放平台中申请开通语音识别功能 在这里面下载sdk,然后解压,注意appid与sdk是关联的,appid在初始化接口时候需要 ...
  • 科大讯飞语音转换文字 下载demo demo、webapi文档 1、下载好demo文档、音频样例之后,用IDEA或者Eclipse启动就能成功 2、html的话原先在百度找了个浏览器支持Media​Recorder API的技术,最后发现用这个技术得到...
  • 其实作为H5想要做语音识别,自认为还说有各种弊端得,同时还是微信公众号里面,如果小程序得话,或许会简单一点,但是这里是在公众号里面开发,在这个过程中查阅个各种资料,其实里面得东西都大同小异,但是大多数并...
  • 讯飞离线语音识别.zip

    2019-11-19 19:56:29
    基于android的离线语音识别,实现没有网络的情况下把语音转换成文字信息。 对程序内容进行了简化,内容简单明了,容易看懂。 包含了离线语音需要的所有离线包 speechapp.java文件第22行修改成自己在讯飞网站申请的id...
  • 在做项目的过程中,我们往往会用到语音播报——把文字转换成语音播放出来,自动识别语言进行播报,那么我们现在来看看怎么操作:1.下载jacob.jar,下载地址:这里2.32位操作系统下载:jacob-1.17-M2-x32.dll,64位...
  • java语音播报案例

    千次阅读 热门讨论 2017-09-03 08:22:23
    在做项目的过程中,我们往往会用到语音播报——把文字转换成语音播放出来,自动识别语言进行播报,那么我们现在来看看怎么操作: 1.下载jacob.jar,下载地址:这里 2.32位操作系统下载:jacob-1.17-M2-x32.dll,64...
  • 百度语音识别API初探

    2019-10-04 01:40:42
    近期想做个东西把大段对话文字。用语音输入法太慢,所以想到看有没有现成的API,网上一搜,基本就是百度和讯飞。 这里先看百度的 笔者使用的是Java版本号的 下载地址:...
  • 最近在做智能客服的时候需要使用到语音识别,所以了解和对比了各家平台的语音识别对比和分析! 一、科大讯飞 1、语音听写即在线音识别查看Demo 把语音(≤60秒)转换成对应的文字信息,让机器能够“听懂”人类语言...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

java语音识别转文字

java 订阅