准备工具:
环境:linux cetnos
小程序,ffmpeg,百度语音API
步骤:
1、小程序上传录音文件格式如下
const options = {
duration: 30000,
sampleRate: 16000,
numberOfChannels: 1,
encodeBitRate: 48000,
format: 'mp3',
frameSize: 50
}
坑:PC端测试环境中上传的文件类型是audio/webm格式的文件,但是在wap端,小程序上传的文件格式为audio/mpeg,我是以wap端小程序上传的audio/mpeg的为准。
2、ffmpeg 将小程序上传的MP3格式文件转换为wav格式文件。
ffmpeg -i input.mp3 -f wav -ar 16000 -ac 1 output.wav
3、服务器通过百度语音API将output.wav转换为文字并返回结果
//文件结构
├── AipSpeech.php //语音识别
└── lib
├── AipHttpClient.php //内部http请求类
├── AipBCEUtil.php //内部工具类
└── AipBase //Aip基类
//实现
require_once 'AipSpeech.php';
// 你的 APPID AK SK
const APP_ID = '你的 App ID';
const API_KEY = '你的 Api Key';
const SECRET_KEY = '你的 Secret Key';
$client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
// 识别本地文件
$client->asr(file_get_contents('audio.pcm'), 'pcm', 16000, array(
'lan' => 'zh',
));
// 从URL获取文件识别
$client->asr(null, 'pcm', 16000, array(
'url' => 'http://121.40.195.233/res/16k_test.pcm',
'callback' => 'http://xxx.com/receive',
));