【百度语音爬坑】-JAVA对PCM文件格式处理
1 问题描述
调用百度语音接口使用测试PCM文件正常返回。
使用微信小程序上传录音文件、本地录音调用百度语音接口。正常响应,但是响应结果不是“嗯嗯”,就是空。然后检查使用音频文件,额,没啥问题,一度怀疑接口的识别率....
实在没办法,不可能别人都能用,就你用不了。继续仔细研究接口文档。
注意是必须符合,必须符合,必须符合。重要的事情说3遍。
然后文档中给了文件格式的转码说明。
详细见:开发工具-音频文件转码
额,好吧ffmpeg软件一枚。我吐了啊。代码要用,给你我软件我怎么玩?
2 解决方案
1 、安装软件
2 、程序通过调用系统命令形式将文件转换为需求格式
3、使用转换后的文件调用百度语音接口
嗯,问题就这样解决了。具体解决流程及代码如下,后附源码。(注意:区分开发及测试环境,安装ffmpeg,本地一般是windows,生产一般是linux环境)
大佬提供了另一种解决方式:
使用下述测试类中的mp3转pcm的转换方法,微信小程序配置如下,上传MP3文件,转码成PCM格式,然后调用接口
const options = {
duration: 600000, //指定录音的时长,单位 ms
sampleRate: 16000, //采样率
numberOfChannels: 1, //录音通道数
encodeBitRate: 96000, //编码码率
format: 'mp3', //音频格式,有效值 aac/mp3
frameSize: 50, //指定帧大小,单位 KB
}
recorder.start(options) //开始录音
注意文档中说需要额外告知编码格式等信息,该方法我未尝试,但据说可使用,大佬牛皮。
方法及maven在源码中,这里不做介绍
3、ffmpeg
3.1 windows安装ffmpeg
windows安装比较简单,去官网下载windows版本,然后添加环境变量
下载地址:Download FFmpeg
然后解压
添加环境变量,Path指定到bin目录即可
CMD测试,如下Windows安装完成
3.2 centos linux下安装ffmpeg
1、下载解压
wget http://www.ffmpeg.org/releases/ffmpeg-3.1.tar.gz
tar -zxvf ffmpeg-3.1.tar.gz
2、 进入解压后目录,输入如下命令/usr/local/ffmpeg为自己指定的安装目录
cd ffmpeg-3.1
./configure --prefix=/usr/local/ffmpeg
make && make install
这里如果出现一下提示则需要安装 yasm,
具体版本可查看Index of /projects/yasm/releases/,进行选择
yasm/nasm not found or too old. Use –disable-yasm for a crippled build.
If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file “config.log” produced by configure as this will help
solve the problem.
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && make install
3 执行命令测试,配置环境变量后,使用ffmpeg测试也是一样的,但是建议使用/usr/local/ffmpeg/bin/ffmpeg后续说明
/usr/local/ffmpeg/bin/ffmpeg
如果出现,或者提示libavdevice.so.xx类似信息,原因是找不到找不到启动路径
ffmpeg: error while loading shared libraries: libavdevice.so.58
则
vi /etc/ld.so.conf
打开文本后,加入如下路径、
/usr/local/ffmpeg/lib/
#最后面的斜杠一定要带上,别忘了!
#该路径为ffmpeg的安装路径,如果路径不同,需要切换到自己的安装路径下,最后指向lib文件夹下
sudo ldconfig
OK,在测试 一波,Linux版本安装完成
4 源码介绍
后续附源码,这里只介绍不贴代码
4.1 微信小程序测试
使用wx.recorderManager获取录音,配置如下上传mp3文件(可根据自己需求定)
4.2 文件上传
4.3 调用系统命令工具类
具体调用命令可根据实际情况制定,详细见https://ai.baidu.com/ai-doc/SPEECH/7k38lxpwf4.4 百度语音识别工具类
4.5 语音识别极速版获取token
4.6 测试类
4.7 pom文件
4.8 配置类
注意:这里command 没有直接使用系统变量ffmpeg,而是直接指定文件D:\\SoftWare\\ffmpeg\\bin\\ffmpeg.exe,是因为程序调用是使用ffmpeg会报错,找不到命令,又因为我懒,这样简单便捷。linux类似