mac下载的api文档怎么_Python调用百度API实现语音识别(二)

bdbfe6c4e38129f0c6b10cd072805172.png

Python调用百度API实现语音识别(二)

前言

上一篇文章里,大致介绍了百度官方 api 的一些前置准备工作。

想回顾的同学,可以看完本篇在下面找到历史链接。

今天就来上手实战编码,体验一下代码实现以及编程中遇到的坑。

环境准备

开始之前,安装百度语音 sdk ,Python 版。

pip 

0ffda207dea4865a76d45ae12cd569da.png

环境很简单,就这一步,完成即可编码。

代码撸起

直接拷贝官方提供的代码,就行了,改点参数,上篇文章介绍百度官方申请到的 key 之类的信息自行填入:

from 

脚本同级目录下,把上次解析的 野狼disco.mp3 改下后缀,变成 wav 格式的,上传。注意下 dev_pid,这里贴出官方参数,用 1537 即可。

e02ffb76f5e4992e38ebc67242fbd0d8.png

看下百度封装好的源码,我们最终以什么样的形式来接受数据。

封装请求的代码是 client.asr ,下面逐步来看下它。

  1. asr 函数

ed6aaf4b2a1198ba3169fb271d717e98.png

进来可以看到,有几个默认参数,格式默认 pcm 音频后缀,采样率默认 16000。然后最终封装成 data 字典的形式传入到 _requests() 里,这里有个 __asUrl 变量,即百度请求的 api 地址。

0f763fcca4cb9e86d7c94c2815ab9dcd.png
  1. _requests 函数

fc73a67b1c7213f4307388e8ddbc0502.png

不论最终走到哪里,反正返回的 obj 对象都是经过 _proccessResult函数进行处理返回的。而传进的参数则是 requests 库请求后返回的结果。

  1. _proccessResult 函数

952c15e399c870fbbcc20b9c7b299fbd.png

根据 sys.version_info.major 进行不同的 Python 版本号判断,进行不同的 json 解析,如果是 2,则不用对内容进行解码。

源码看到这里,所以了解最终返回的是什么类型了吗。。

json.loads,在之前小课堂 json 篇中说过,返回的是 dict 类型。

运行下代码:

11f1509f2382940f93d6db0216d45bff.png

哎,返回了 3301 ,错误信息写着,音频质量错误,查阅下官方文档:

5aa4a6e2cfb66f658c2cd8ab7ff2ccd3.png

看来是野狼 disco 背景音乐太嘈杂哦,可以换一个无背景音乐的音频自行尝试。

但是呢,这里又遇到个坑,当你从视频中如果提取音频时,也需要注意这个问题。

这个坑就是,音频的采样率:

fbb99544d2a518b05576926f53ca9886.png

用 mac 自带的 QuickTime 录制的音频采样率默认为 48 kHz。而百度要求采样率是 16 kHz。

如果你不把采样率转成符合它的要求,则会下面的状态码 3307 ,服务端语音识别错误:

5d901073b5b66f232ae9a1333683ec04.png

解决方案很简单,按百度的要求来呗!把音频采样率转化一下。

安装第三方库 ffmpeg-python:

pip install ffmpeg-python

e516ac363dd98cdac42dfd05c3b1c442.png

一行代码即可完成转化采样率:

import 

如果执行这段代码后,报错:

c5c863cc56e54ba0396be30fc7e4993e.png

mac的同学用下面命令安装下 ffmpeg 即可,windows同学估计不会遇到,如果遇到,自行去官网下载安装尝试下。

brew install ffmpeg

安装成功后,执行代码,可以看到生成了新的音频文件:

77fd13d39b74f3c7463fdb4695b3fe37.png

回到语音转文字代码的文件中,再次执行代码:

d16a6364a8d936a4251b78e42273bb1a.png

先看百度解析成功,返回的文字结果在 key 为 result 中,其中是个 list,所以直接取出来即可。

可以发现,结果中文并不准确。此时用的 1537,而 Siri 配音的可能带点外国口音,所以试试 1536 。

7af02aaea57b9dda36fd647017430f93.png

看来还是有一些误差的,Siri男版口音可能严重些,至于怎么选输入法模型的 dev_pid 码,自己尝试,看看准确率高的即可。上面有介绍到官方文档的码表。

总结

简单总结下,这篇文章即符合主线机器人,也符合之前后台提问题的那个小伙伴。上述所有过程,都是我在编码过程中亲身遇到的坑。

所以可以借鉴,没遇到相同错误更好,遇到了自己对着百度的官网看看到底是什么错误。

至于本篇文章的编码,涉及的不多,就不上传到 github 了,下一篇要讲下如何用 Python 玩转 Word 操作,所以打算把下篇文章涉及到的代码留个记录,转语音后的文字,落地到 Word 中,敬请期待!

如果学习中遇到什么问题的小伙伴,欢迎评论区下方留言!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值