背景:使用百度语音分析api对100M以内的音频MP3文件进行语音文字识别,但是100M以上的文件不支持,为了满足客户需求,需要对大于100M的音频文件进行分割,而且尽量使音频分割和语音识别的时间缩短
分割工具:Ffmpeg ffmpeg -y -i test.mp3 -ss 00:00:00 -t 00:00:03 -acodec copy output_mp3.mp3 从指定时间节点截取固定时间长度
分割过程:由于之前做过对mp3格式文件进行切分,但是花费时间太长,一个小时的音频用了四五十分钟,后来在同事的帮助下提供了一些思路:
一、修改ffmpeg语句
二、本地测试分割时长
三、改变分割方法
首先,根据网友提供的信息,将 -ss 00:00:00 放置 -i test.mp3的之前,经测试后确实提速了十几分钟;
其次,线上环境的音频文件是url路径的,在本地用本地文件夹中的文件分割后三个小时的文件按每份一小时切分完成只用了十几秒,所以不是ffmpeg切分慢的原因,后来把目标文件中的url改为将url的文件下载至服务器上之后切分的时间短了很多,所以原因是从url下载至本地导致速度慢;
最后,根据同事提供的思路,将之前只要大于100M的文件,就直接按照一小时的时长来切分,改为用文件大小除以100得到切分的份数,将音频文件的总时长除以份数得到切分时长,这样切分也会快很多。
总结,使用了这三个方面优化后,三个小时的音频文件从上传到分析成功由原来的五六十分钟降至了十五分钟。这次优化中得到的经验,一是要将线上环境移至本地测试进而发现问题所在,二是利用数学思维来处理两个以上的变量(本次中的切分方法)。