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的Tornado框架异步编程入门实例
Apr 24 Python
Python实现二维有序数组查找的方法
Apr 27 Python
python读取oracle函数返回值
Jul 18 Python
详解Python中的相对导入和绝对导入
Jan 06 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
对python打乱数据集中X,y标签对的方法详解
Dec 14 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
Python列表的切片实例讲解
Aug 20 Python
Python Parser的用法
May 12 Python
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
May 17 Python
Python matplotlib多个子图绘制整合
Apr 13 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
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
九种原生js动画效果
2015/11/11 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
Node.js JSON模块用法实例分析
2019/01/04 Javascript
Python使用turtule画五角星的方法
2015/07/09 Python
详解python eval函数的妙用
2017/11/16 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
南威尔士家居商店:Leekes
2016/10/25 全球购物
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
旅游管理实习自我鉴定
2013/09/29 职场文书
应聘护士自荐信
2013/10/21 职场文书
考试作弊被抓检讨书
2014/01/10 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
《桥》教学反思
2014/04/09 职场文书
食品安全承诺书范文
2014/08/29 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript
python数字图像处理实现图像的形变与缩放
2022/06/28 Python