百度语音识别[python]
代码下载:https://download.csdn.net/download/GreatXiang888/12028057
一
首先上 百度AI平台 申请账号,和开通语音识别模块。
这个比较简单,不细说。
你可以得到三个东西:
AppID
API Key
Secret Key
并新建一个my_password.txt,按上述格式粘贴进去。(防止把密码明文直接写到代码中)
二
打开cmd命令行窗口,输入 pip install baidu-aip ,安装相关依赖。
三
新建ai.py,粘贴以下代码:
将待转换音频复制到相同目录下,如16k.pcm
from aip import AipSpeech
def getPassword(path="my_password.txt"):
with open(path, "r", encoding="utf-8") as f:
APP_ID = f.readline().strip()
API_KEY = f.readline().strip()
SECRET_KEY = f.readline().strip()
return APP_ID, API_KEY, SECRET_KEY
# 读取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
def audio2Text(audio_path, text_save_path="result.txt"):
APP_ID, API_KEY, SECRET_KEY = getPassword()
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 识别本地文件
try:
print("正在转换中,请等待...")
res = client.asr(get_file_content(audio_path), 'pcm', 16000, {
'dev_pid': 1537,
})
print("转换完成:")
print(res)
except Exception as e:
print("出错了!")
print(e)
if __name__ == "__main__":
audio2Text("16k.pcm")
结果:

可以看到result对应的value值就是转换的内容。
高级内容
1,值得注意的是,因为语音识别模型采用类似seq2seq的神经网络,故音频长度都限制在60s内。见 将音频分割为60s内的短文件[Cygwin; speech-vad-demo] https://blog.csdn.net/GreatXiang888/article/details/103495082
2,另外,m4a格式音频(录音/微信语音)不支持普通识别,需要用付费接口。但可以自己转换成其他格式。
见 硬核音频格式转换[ffmpeg] https://blog.csdn.net/GreatXiang888/article/details/103496717
悲伤
遗憾的是,我做了上面的一切,发现还是不能达到想要的效果。
具体为:
1,从手机中获取录音文件,1小时左右,m4a格式,想转换成文字版。
2,因为m4a格式不能调接口,故用ffmpeg 转换成wav格式。
3,因为音频不能太长,故用Cygwin; speech-vad-demo 分割60s以内文件。
4,以上几步都成功了,用实例文件转换也成功了,但我自己切分的文件却失败了。
如果有哪位知道原因,请赐教。
(我再想想其他办法)
原本以为很简单的一个语音识别,却有这么多坑呐。
资料
AI开放平台 http://ai.baidu.com/
语音识别导览 http://ai.baidu.com/ai-doc/SPEECH/Ek39uxgre
更多推荐



所有评论(0)