这两天因为业务需要,需要使用阿里云的智能语音交互功能,将音频文件转为文字。

但是此接口要求音频文件的采样率必须为16k或者8k。

而我这边收到的音频文件是32k的。

所以修改音频文件的采样率成了关键第一步操作。

因为之前没有做过音频文件处理相关的业务,所以还是临时在网上查阅资料。百度+google看了不少,最后锁定需要使用jave-1.0.2.jar来处理文件。(其他的一些教程处理后的文件无法正常使用)

jave-1.0.2.jar我上传在微云里,地址:https://share.weiyun.com/5epeWn5  

使用下面这个依赖,maven暂时没有找到这个项目,没法用maven直接依赖。所以还是得网上下载一个,自己依赖进项目里即可。

<!– https://mvnrepository.com/artifact/it.sauronsoftware/jave –>
<dependency>
     <groupId>it.sauronsoftware</groupId>
    <artifactId>jave</artifactId>
    <version>1.0.2</version>
</dependency>

使用代码:

    /**
     * 
     * @param inputFilePath 需要处理的文件地址
     * @param outputDirPath 处理后的文件输出目录
     * @throws Exception
     */
    public static void testCompressMp3Samll(String inputFilePath, String outputDirPath) throws Exception{
        Long t1 = System.currentTimeMillis();
        AudioAttributes audio = new AudioAttributes();
        audio.setCodec("libmp3lame");
        audio.setBitRate(16000);//设置比特率
       audio.setSamplingRate(16000);//这两行代码我没时间仔细研究,能跑就行
        EncodingAttributes attrs = new EncodingAttributes();
        attrs.setFormat("mp3");//设置格式,我的文件原本就是mp3格式的
        attrs.setAudioAttributes(audio);
        //attrs.setDuration(360f); // 设置截取的时长
        Encoder encoder = new Encoder();
        File inputFile = new File(inputFilePath);
        encoder.encode(inputFile,new File(outputDirPath+"\\"+inputFile.getName()), attrs);
        Long t2= System.currentTimeMillis();
        System.out.println("消耗:"+(t2-t1)+"ms");
    }

这么处理完成之后,上传至阿里云oss,设置公共读写,直接让程序遍历桶里的mp3列表,提交录音转文本的作业,然后接受返回的json数据存储即可。
整个过程还是挺简单的。

发表评论