Python调用百度AI,实现音频转换文字(标准版)

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

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

你可能感兴趣的:(Python,百度AI,ffmpeg,python,百度,人工智能)