关于silk文件如何转码为MP3或PCM格式的方法

介绍:最近在做微信小程序的人工客服,需要用到百度AI语音识别,但是因为微信的录音文件格式为 .silk,但是百度AI识别的格式应该为PCM或者WAV格式的文件,需要进行文件格式转换。经过一番查找和折腾,终于搞定了。特意发出来和大家分享下,具体方法如下。

  • 步骤一下载格式转换工具 silk2mp3-full.rar,提取码:m22l,解压后按ReadMe.txt方法使用;
  • 步骤二:在eclipse中创建JAVA项目,导入jar包:nutz-1.r.66.jar;因为要操作cmd去执行命令进行转换,所以要导入该Jar包;
  • 步骤三:新建DeCoder类,复制此代码,修改路径,进行转换;
import java.io.IOException;

import org.nutz.lang.Encoding;
import org.nutz.lang.Lang;

public class DeCoder {
	public static void main(String[] args){
		// silk格式的文件所在路径,要写绝对路径
        String skil = "D:\\test.silk";
        
		//转换为PCM文件后存放文件的绝对路径
        String pcm = "D:\\test.pcm";

		// 转换为MP3文件后存放文件的绝对路径
        String mp3 = "D:\\test.mp3";
		
		// 将silk文件转换为PCM文件
        boolean b = getPcm(skil,pcm);
        System.out.println(b);
		// 将PCM文件转换为MP3文件
        if (b)
          getMp3(pcm,mp3);

    }

    /**
     * 转换为为pcm格式
     * @param silk
     * @param pcm
     * @return
     */
    public static boolean getPcm(String silk,String pcm){
        boolean flag = true;
        String cmd="cmd.exe /c C:\\silk_v3_decoder.exe "+silk+" "+pcm+" -quiet";
        System.out.println("转码到pcm...");
        try
        {
            StringBuilder msg = Lang.execOutput(cmd, Encoding.CHARSET_GBK);
            System.out.println(msg);
        }
        catch (IOException e)
        {
            e.printStackTrace();
            flag = false;
        }
        return flag;
    }

    /**
     * 转码为MP3格式
     * @param pcm
     * @param mp3
     * @return
     */
    public static boolean getMp3(String pcm,String mp3){
        boolean flag = true;
        String command = "cmd.exe /c C:\\ffmpeg.exe -y -f s16le -ar 24000 -ac 1 -i "+pcm+" "+mp3+" ";
        System.out.println("转码到mp3...");
        try {
            StringBuilder sb = Lang.execOutput(command, Encoding.CHARSET_GBK);
            System.out.println(sb);
        } catch (IOException e) {
            e.printStackTrace();
            flag = false;
        }
        return flag;
    }
}

  • 注意:
  • 此 silk 文件必须是真机调试后所上传的 silk 文件,不能是微信开发者工具所录的 silk 文件;因为微信开发者工具所录音的文件是经过 base64 加密过的(可以用sublime打开该文件,以“data:audio/webm;base64,”开头说明是经过加密的),这样的文件不能被直接转码,需要使用silk_v3_encoder.exe进行解密后才可以被转换。不过这里小编还没有成功,大家成功了可以教一下我!!嘻嘻~~

以上就是关于微信小程序录音文件的格式转换为百度AI可以识别的格式的详细方法。有什么疑问可以留言哦!之后将会写一篇关于微信小程序调用百度AI进行语音识别的完整步骤的博文,点点关注哦!

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐