python录音并调用百度语音识别接口的示例


Posted in Python onDecember 01, 2020
#!/usr/bin/env python
import requests
import json
import base64
import pyaudio
import wave
import os
import psutil


#首先配置必要的信息
def bat(voice_path):
  baidu_server = 'https://aip.baidubce.com/oauth/2.0/token?'
  grant_type = 'client_credentials'
  client_id = 'uj70rS1LiwZ9sQDvMSUqKsie' #API KEY
  client_secret = 'Q88eav41PzeNLczZ3hlRjhR8e4WShXwD' #Secret KEY  这里可以自己去百度注册,这里是我的API KEY 和 Secret KEY

  #合成请求token的url
  url = baidu_server+'grant_type='+grant_type+'&client_id='+client_id+'&client_secret='+client_secret

  #获取token
  res = requests.get(url).text
  data = json.loads(res)
  token = data['access_token']

  #设置音频的属性,采样率,格式等
  VOICE_RATE = 8000
  FILE_NAME = voice_path
  # USER_ID = '16241950' #这里的id随便填填就好啦,我填的自己昵称
  FILE_TYPE = 'wav'
  CUID="wate_play"
  #读取文件二进制内容
  f_obj = open(FILE_NAME, 'rb')
  content = base64.b64encode(f_obj.read())  # 百度语音识别需要base64编码格式
  speech = content.decode("utf-8")
  size = os.path.getsize(FILE_NAME)

  #json封装
  datas = json.dumps({
    'format': FILE_TYPE,
    'rate': VOICE_RATE,
    'channel': 1,
    'cuid': CUID,
    'token': token,
    'speech': speech,
    'len': size,
    "dev_pid":"1536"
  })
  return datas

#设置headers和请求地址url
def post(datas):
  headers = {'Content-Type':'application/json'}
  url = 'https://vop.baidu.com/server_api'
  # url = "http://vop.baidu.com/server_api"

  #用post方法传数据
  request = requests.post(url, datas, headers)
  result = json.loads(request.text)
  text = result.get("result")
  if result['err_no'] == 0:
    return text
  else:
    return "Error"


def get_audio(filepath):
  input("回车开始录音 >>>")   #输出提示文本,input接收一个值,转为str,赋值给aa
  CHUNK = 256         #定义数据流块
  FORMAT = pyaudio.paInt16  #量化位数(音量级划分)
  CHANNELS = 1        # 声道数;声道数:可以是单声道或者是双声道
  RATE = 8000        # 采样率;采样率:一秒内对声音信号的采集次数,常用的有8kHz, 16kHz, 32kHz, 48kHz, 11.025kHz, 22.05kHz, 44.1kHz
  RECORD_SECONDS = 5     #录音秒数
  WAVE_OUTPUT_FILENAME = filepath   #wav文件路径
  p = pyaudio.PyAudio()        #实例化

  stream = p.open(format=FORMAT,
          channels=CHANNELS,
          rate=RATE,
          input=True,
          frames_per_buffer=CHUNK)
  print("*"*10, "开始录音:请在5秒内输入语音")
  frames = []                         #定义一个列表
  for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):   #循环,采样率11025 / 256 * 5
    data = stream.read(CHUNK)                #读取chunk个字节 保存到data中
    frames.append(data)                   #向列表frames中添加数据data
  # print(frames)
  print("*" * 10, "录音结束\n")

  stream.stop_stream()
  stream.close()     #关闭
  p.terminate()      #终结

  wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')         #打开wav文件创建一个音频对象wf,开始写WAV文件
  wf.setnchannels(CHANNELS)                  #配置声道数
  wf.setsampwidth(p.get_sample_size(FORMAT))         #配置量化位数
  wf.setframerate(RATE)                    #配置采样率
  wf.writeframes(b''.join(frames))              #转换为二进制数据写入文件
  wf.close()       #关闭
  return


def check_disk():
  list_drive = psutil.disk_partitions() # 找出本地磁盘列表,保存的是结构体对象
  list_disk = []
  for drive in list_drive:
    list_disk.append(drive.device)
  return list_disk


if __name__ == '__main__':
  list_disk = check_disk() # 检索本地磁盘
  dirname_path = os.path.join(list_disk[0], "voice") # 设置语音文件存放路径, 
                                  (mac os下需要自己定存储路径)
  if not os.path.exists(dirname_path):
    os.makedirs(dirname_path)

  filename = "voice.wav" # 定义语音文件名
  in_path = os.path.join(dirname_path, filename)

  get_audio(in_path) # 录音

  datas = bat(in_path) # 封装百度语音识别需要的配置信息,返回请求头
  res = post(datas) # 连接百度语音识别接口,得到识别结果
  print("识别结果:",res[0])

实现效果:

python录音并调用百度语音识别接口的示例

在上述代码中,需要装到requests、psutil、pyaudio等库,其中pyaudio这个库在python3环境下装比较特殊,

windows环境下具体步骤如下:

第一步:下载whl文件支持

url:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio

python录音并调用百度语音识别接口的示例

注意:

下载自己python解释器对应版本的

不要下载错了,资源很多 

第二步:打开cmd,cd 进入下载的whl所在目录

   执行命令:pip install Twisted-18.7.0-cp36-cp36m-win_amd64.whl     #  下载的什么版本,后面就跟什么版本 

第三步:执行命令:pip install pyaudio     安装

如果本地同时装有python2和python3,想装到python3里可以在cmd命令里把 pip 改成 pip3 即可

mac os 下安装pyaudio步骤如下:

python录音并调用百度语音识别接口的示例

到这里就结束啦!

以上就是python录音并调用百度语音识别接口的示例的详细内容,更多关于python 录音并调用语音识别接口的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python遍历zip文件输出名称时出现乱码问题的解决方法
Apr 08 Python
python实现的二叉树定义与遍历算法实例
Jun 30 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
Python简单实现的代理服务器端口映射功能示例
Apr 08 Python
python设计tcp数据包协议类的例子
Jul 23 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
Python实现手绘图效果实例分享
Jul 22 Python
python实现自动清理重复文件
Aug 24 Python
容易被忽略的Python内置类型
Sep 03 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
Pytest中skip skipif跳过用例详解
Jun 30 Python
用python爬虫批量下载pdf的实现
Dec 01 #Python
python3字符串输出常见面试题总结
Dec 01 #Python
python3中数组逆序输出方法
Dec 01 #Python
Python爬虫简单运用爬取代理IP的实现
Dec 01 #Python
python爬虫请求头的使用
Dec 01 #Python
在pycharm创建scrapy项目的实现步骤
Dec 01 #Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 #Python
You might like
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
php截取视频指定帧为图片
2016/05/16 PHP
javascript new fun的执行过程
2010/08/05 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
React如何避免重渲染
2018/04/10 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
使用Python对Access读写操作
2017/03/30 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
毕业生自荐信的主要内容
2013/10/29 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
高中生旷课检讨书
2014/10/08 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
工程主管竞聘书
2015/09/15 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
nginx优化的六点方法
2021/03/31 Servers