写在前面:标准版最长支持60秒语音文件,大于60秒的音频文件,需要进行切割后,然后依次提交即可。
切割音频工具:
开源VAD音频切分工具
https://ai.baidu.com/ai-doc/SPEECH/xk38lxq46
ffmpeg模块
以下所有的操作均是在windows系统,Python3下实现的;
百度短语音识别介绍:https://ai.baidu.com/ai-doc/SPEECH/Vk38lxily
登录百度AI平台,建立创建应用:
URL=https://console.bce.baidu.com/ai/?fromai=1#/ai/speech/app/list
切记,接口选择:语音技术,建议全部勾选,一般默认是全部勾选的,按照页面的要求填写,即可
应用建立成功之后一定要记录以下几个参数的值,APP_ID,API_KEY,SECRET_KEY
在执行之前需要安装baidu-aip,在电脑中安装了pip的情况下,cmd命令执行:
pip install baidu-aip
如果没有安装在执行下面的python代码的时候,则会报错,报错信息如下
from aip import AipSpeech
ModuleNotFoundError: No module named 'aip'
此处使用的是HTTP方式请求进行转换,提交的文件则是.pcm后缀格式的文件;
MP4视频,需要进行提取mp3音频,可以使用ffmpeg模块,cmd执行下方的命令;
ffmpeg模块文件,建议要和执行的程序目录一致,可以通过cmd切换目录,然后在执行命令
ffmpeg -i aidemo.mp4 -f mp3 -vn aidemo.mp3
然后针对已经提取的MP3音频文件,再次进行pcm文件格式转换。
同样使用ffmpeg模块命令(cmd下执行即可)
ffmpeg -y -i aidemo.mp3 -acodec pcm_s16le -f s16le -ac 1 -ar 16000 aidemo.pcm
音频格式说明:
格式支持:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)、m4a(压缩格式)。推荐pcm 采样率 :16000、8000 固定值。 编码:16bit 位深的单声道。
百度服务端会将非pcm格式,转为pcm格式,因此使用wav、amr、m4a会有额外的转换耗时。
Python请求代码(一定要记得安装baidu-aip)
#需要安装模块:baidu-aip
from aip import AipSpeech
APP_ID = ''#请填写你的APP_ID
API_KEY = ''#请填写你的API_KEY
SECRET_KEY = ''#请填写你的SECRET_KEY
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 读取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
# 识别本地文件
#
data = client.asr(get_file_content('aidemo.pcm'), 'pcm', 16000, {
'dev_pid': 1537,
})
print(data)
解释:
APP_ID = ”#请填写你的APP_ID
API_KEY = ”#请填写你的API_KEY
SECRET_KEY = ”#请填写你的SECRET_KEY
aidemo.pcm为本地需要提交识别的音频文件;
16000位音频采样率。
dev_pid=1537为普通话
dev_pid | 语言 | 模型 | 是否有标点 | 备注 |
---|---|---|---|---|
1537 | 普通话(纯中文识别) | 语音近场识别模型 | 有标点 | 支持自定义词库 |
1737 | 英语 | 英语模型 | 无标点 | 不支持自定义词库 |
1637 | 粤语 | 粤语模型 | 有标点 | 不支持自定义词库 |
1837 | 四川话 | 四川话模型 | 有标点 | 不支持自定义词库 |
1936 | 普通话远场 | 远场模型 | 有标点 | 不支持自定义词库 |
执行结果
{'corpus_no': '7023147935492100607', 'err_msg': 'success.', 'err_no': 0, 'result': ['今天发天气可不是特别的好呀'], 'sn': '184915361951635204054'}
如果音频的普通话不标注,或者语速过快,可能会识别部分错误,在大部分情况下识别结果还是不错的。