人工智能入门学习笔记(二)语音识别第二部分百度语音识别
一、百度语音识别sdk版本
1、目前本SDK的功能同REST API,需要联网调用http接口, 具体功能见REST API文档, REST API 仅支持整段语音识别的模式,即需要上传完整语音文件进行识别,时长不超过60s,支持、自定义词库设置,没有其他额外功能。
(具体使用参考https://cloud.baidu.com/doc/SPEECH/s/Bk4o0bmt3)
2、百度短语音识别对于pcm文件效果较好,所以先要把wave文件转化为pcm文件。
需要下载音频转换工具ffmpeg(ffmpeg官方文档地址:
http://ffmpeg.org/ffmpeg.html),然后解压并为ffmpeg.exe添加环境变量,
成功标志如下图:
关于音频文件转码具体可以参考(https://cloud.baidu.com/doc/SPEECH/s/7k38lxpwf)
由于底层识别使用的是pcm,因此推荐直接上传pcm文件。如果上传其它格式,会在服务器端转码成pcm,调用接口的耗时会增加。
3、音频参数概念:
采样率: 百度语音识别一般仅支持16000的采样率。即1秒采样16000次。
位深: 无损音频格式pcm和wav可以设置,百度语音识别使用16bits 小端序 ,即2个字节记录1/16000 s的音频数据。
声道: 百度语音识别仅支持单声道。
以16000采样率 16bits 编码的pcm文件为例,每个16bits(=2bytes)记录了 1/16000s的音频数据。即1s的音频数据为 2bytes * 16000 = 32000B。
4、需要先安装语音识别Python SDK(pip3 install baidu-aip)
具体代码如下:
二、百度语音识别http调用API版本(不需要安装AipSpeech SDK)
本例采用JSON格式POST上传本地文件。
小结:1、初步了解了为什么要用urlencode,主要是消除服务器解析url时的歧义。因为当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符。因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urlencode 函数,因为 url 中不能包含 @ 字符。url转义其实也只是为了符合url的规范而已。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。
2、post_data = json.dumps(params) #将字典类型数据转化为字符串类型
result_str=json.loads(result_str) #将字符串类型数据转化为字典类型
req = Request(ASR_URL, post_data.encode('utf-8')) #utf-8编码
result_str = result_str.decode("utf-8") #utf-8解码
以下是我在程序代码中测试数据类型转换的效果图
3、python中bytes类型和str类型可以相互转化