对于语音识别初学者来说,通过简单案例快速上手,不仅能够快速了解语音识别等实际应用模式,对枯燥无味的学习中提升兴趣值也大有帮助。百度语音提供了语音识别、语音合成和语音唤醒等产品的SDK免费资源,是面向广大开发者永久免费的开放语音技术平台,且简单易用,可以作为学习之余练手的好去处。
本文以在线语音识别为例,基于Python开发环境,尝试介绍一下如何使用百度语音识别资源。
步骤1:注册百度开发者身份
进入百度语音(http://yuyin.baidu.com/)页面,首先注册百度语音账号,或者用百度账号登录,进入系统后,点击右上角“应用管理”,填入相关信息,注册成为百度开发者。
步骤2:创建应用
同样点击“应用管理”页面,进入后点击“创建新应用”,可以理解为新建了一个自己的工程Project,创建过程中的信息可以按需填写,影响不大。
创建完成后有一个叫“查看key”的按钮,这个key中包含了App ID、API Key、Secret Key几个关键信息,这些信息就像是该应用的身份证,是与百度语音云端交互的唯一身份标识,用txt文件记下,后面Python代码调用时需要用到。
步骤3:开通应用服务
点击应用卡片上的“开通服务”,选择该应用的服务,我们这里做语音识别就选择“语音识别”, “语音识别” 服务开通成功后即可获得 50000次/日 的在线识别调用配额(有一种地上捡到钱的赶脚)。
步骤4:下载SDK包并安装
服务开通过程中,会跳出SDK包的下载通道,可以现在下载SDK包,也可以到“SDK下载”页面中,在语音识别服务的“RestApi SDK下载”中,选择相应语言版本的SDK包进行下载,我们这里基于Python语言,因此下载Python的SDK包,目前版本是“aip-python-sdk-2.0.0”,包里提供了setup.py文件,可在python环境下,cd到该文件夹下用python setup.py install进行安装(官网也提供了pip安装方式,但不知什么原因pip找不到)。
步骤5:语音文件准备
目前,百度语音识别支持pcm、wav、amr三种语音文件格式(实际wav和amr都会在云端被转换成pcm),录音文件时长不超过60s,文件大小不超过10MB。可支持的语言包括普通话、英语、粤语、四川话。
我们可以自己录制一段语音,利用format factory等软件转成上述三种文件格式,但后面测试效果不是太好,会报错提示语音质量不高,这点可能是百度语音需要持续改进的地方。为了快速满足好奇心,可利用官方提供的测试文件,具体下载位置为http://ai.baidu.com/docs#/ASR-API/top ,在其中找到“16k采样率pcm文件样例下载”、“16k 采样率wav文件样例下载”、“ 16k采样率amr文件样例下载”进行下载。
步骤6:执行代码
到这里,所有准备工作就完了,下面进入正题,python代码编写阶段。在“SDK下载”页面中,虽然提供了“语音REST API示例代码”,但里面目前只提供了bash-shell、java、linux-c、php等语言的代码,并没有提供python代码。
(1)新建AipSpeech
AipSpeech是语音识别的Python SDK客户端,为使用语音识别的开发人员提供了一系列的交互方法,这里选择默认配置即可。实现代码如下:
from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
这里,步骤2中的“查看key”就派上用场了。
(2)语音识别
语音识别的工作逻辑非常简单,从本地读取待识别语音样本数据后上传到云端服务器,声学模型和语言模型都架在云端(这是语音识别的核心竞争力),分析后将结果返回到本地。实现代码如下:
# 读取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
# 识别本地文件
client.asr(get_file_content(' 16k.pcm'), 'pcm', 16000, {
'dev_pid': '1536',})
其中,client.asr()函数第一位是文件地址,我们用的样本是“16k采样率pcm文件样例下载”的样本;第二位是样本文件格式;第三位是样本文件采样率;第四位是样本文件的语言类型,这里是普通话。
(3)返回结果
{'corpus_no': '6553433148693781449',
'err_msg': 'success.',
'err_no': 0,
'result': ['北京科技馆,'],
'sn': '44754269321525840058'}
运行结束,返回识别结果“北京科技馆”,存储在result变量中。
结束语
以上就是在线语音识别的案例,希望通过这篇的阐述,能够给大家一个直接的练手案例,节省大家寻找案例的时间。同时,百度语音还有其它很多案例可用,如果想快速成为一个语音技术开发工程师,可以尝试花一点时间跑一跑程序,快速入门。