咪哥杂谈

本篇阅读时间约为 5 分钟。

1

前言

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

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

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

2

环境准备

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

pip install baidu-aip

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

3

代码撸起

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

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)# 读取文件def get_file_content(file_path):with open(file_path, 'rb') as fp:return fp.read()# 识别本地文件result = client.asr(get_file_content('disco.wav'), 'wav', 16000, {'dev_pid': 1537, # 默认1537(普通话 输入法模型),dev_pid参数见本节开头的表格})

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

看下百度封装好的源码,我们最终以什么样的形式来接受数据。封装请求的代码是client.asr,下面逐步来看下它。1.asr函数

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

2._requests函数

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

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

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

json.loads,在之前小课堂 json 篇中说过,返回的是 dict 类型。运行下代码:

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

看来是野狼 disco 背景音乐太嘈杂哦,那换一个无背景音乐的音频试试。自己动手,丰衣足食,于是用 Siri 录了一段 11 s的音频,一定要亲自听一下,笑声挺鬼畜的

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

用 mac 自带的 QuickTime 录制的音频采样率默认为 48 kHz。而百度要求采样率是16 kHz。如果你不把采样率转成符合它的要求,则会下面的状态码 3307 ,服务端语音识别错误:

解决方案很简单,按百度的要求来呗!把音频采样率转化一下。安装第三方库 ffmpeg-python:pip install ffmpeg-python

一行代码即可完成转化采样率:import ffmpegffmpeg.input('mi.wav').output('mi2.wav', ar=16000).run()

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

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

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

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

先看百度解析成功,返回的文字结果在 key 为 result 中,其中是个 list,所以直接取出来即可。可以发现,结果中文并不准确。此时用的 1537,而 Siri 配音的可能带点外国口音,所以试试 1536 。

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

4

总结

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

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

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

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

▼往期精彩回顾▼Python调用百度API实现语音识别(一)

用Python玩转视频剪辑,秀的飞起!Python实现电脑录音(含音频基础知识讲解)

你点的每个在看,我都认真当成了喜欢

python aipspeech_Python调用百度API实现语音识别(二)相关推荐

  1. python通过调用百度api实现语音识别(超详细)

    python通过调用百度api实现语音识别(超详细) 2021.04.18:该文章是在18年,初学Python时写的,所以功能仅限于当时可用,至于现在(貌似依然可用)和以后就不确定了.完整的demo也 ...

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

    Python调用百度API实现语音识别(二) 前言 上一篇文章里,大致介绍了百度官方 api 的一些前置准备工作. 想回顾的同学,可以看完本篇在下面找到历史链接. 今天就来上手实战编码,体验一下代码实 ...

  3. Linux python PyQt5调用百度API实现图片文字转换

    系统:Linux Mint 18.3 xfce 64bit 参考链接:http://blog.csdn.net/u012236875/article/details/74726035 根据参考链接的代 ...

  4. Python实现调用百度API翻译文字

    调用百度API翻译文字 最近复制别人的代码实现百度API翻译文字,总是报错: {'error_code': '52003', 'error_msg': 'UNAUTHORIZED USER'} 后来发 ...

  5. python实现调用百度API批量翻译单词

    1. 首先需要申请百度翻译api(每个手机号可以注册一个) 参考:https://www.yuque.com/docs/share/c9d690e0-8f33-40af-97a4-42b0a55030 ...

  6. Python之调用百度API实现手势识别

    目录 1.作者介绍 2.实现过程 2.1注册登录百度智能云 2.2进入百度智能云---人体分析 2.3创建手势识别应用 2.4 获取SDK 3.结果及代码 3.1手势识别结果 3.2代码 1.作者介绍 ...

  7. 【Python学习笔记】简单调用百度API应用

    #本文一切代码及理论均来自于郑秋生.夏敏捷二位老师主编<Python项目案例发 从入门到实践>一书,本人仅做微改.创作本文的目的仅为总结本人的学习过程和成果,借此巩固.可能存在许多疏漏之处 ...

  8. python调用百度api判断两张图片是否相同_python如何调用百度识图api

    一.先去百度识别官网注册开通服务且获得ak和sk 二.代码模板 import cv2 import base64 import requests import numpy as np import t ...

  9. java实现文本纠错功能_调用百度API进行文本纠错

    毕设做的是文本纠错方面,然后今天进组见研究生导师 .老师对我做的东西蛮感兴趣.然后介绍自己现在做的一些项目,其中有个模块需要有用到文本纠错功能. 要求1:有多人同时在线编辑文档,然后文档功能有类似Wo ...

最新文章

  1. 【转载】【Python-ML】SKlearn库谱聚类SpectralClustering模型
  2. Android之在一个类里面注册Handler发送消息在另外一个类里面接收消息
  3. SuperSpider——打造功能强大的爬虫利器
  4. ] 求鉴定:《终于知道ramdisk 4g是如何使用4G以上内存了,慎用!》
  5. java贪吃蛇撞壁转弯代码_java贪吃蛇demo
  6. .net stardant 2.0创建及引用说明--Nuget包
  7. hdu 1003 Max Sum (DP)
  8. C++实现 电子邮件客户端程序(简易版)
  9. 解析腾讯云游戏多媒体引擎GME技术方案
  10. html 一键发送给微信朋友圈,微信朋友圈如何转发别人说说(朋友圈一键集赞神器)...
  11. ccy影响因子版270ms
  12. 6月份鸿蒙升级名单,华为鸿蒙系统6月升级名单机型有哪些
  13. EasyExcel读excel文件模板校验暨时间格式正则表达式
  14. Android混淆发布依赖
  15. 新年将至, 程序员如何以代码送出新春祝福
  16. OpenCV钢铁平面焊接的缺陷检测案例
  17. Java中带返回值的线程池Future
  18. 蓝牙常用的profile
  19. android控制板
  20. 什么是APP???APP的开发类型又分哪几种???

热门文章

  1. Error: ‘\R‘ is an unrecognized escape in character string starting “‘E:\R“
  2. Python使用过滤器(filter)进行图像模糊处理
  3. R语言时间序列(time series)分析实战:霍尔特指数Holt‘s平滑法预测
  4. 使用hyperopt(Bayesian optimization)为lightGBM模型挑选最优参数进行模型构建、by Cross Validation
  5. linux shell合并文件命令paste
  6. 计算机网络(谢希仁)-第一章:概述
  7. 转录组测序技术和结果解读(二)——文库构建和测序策略
  8. 使用Oracle创建图书馆数据库(book reader lib loan表)
  9. html5主要是针对哪方面行优化,前端知识点总结(HTML篇)
  10. 树莓派做网站服务器同时做nas,【项目分享】树莓派4搭建NAS,让硬盘轻松联网...