关于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进行语音识别的完整步骤的博文,点点关注哦!