写在前面:标准版最长支持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'}

如果音频的普通话不标注,或者语速过快,可能会识别部分错误,在大部分情况下识别结果还是不错的。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐