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变量不能以数字打头详解
Jul 06 Python
python基于pyDes库实现des加密的方法
Apr 29 Python
Django实现的自定义访问日志模块示例
Jun 23 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
使用python实现ANN
Dec 20 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
Django models.py应用实现过程详解
Jul 29 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
python argparse传入布尔参数false不生效的解决
Apr 20 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 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函数method_exists()与is_callable()的区别
2013/06/21 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
实例讲解PHP表单
2020/06/10 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
初步认识Python中的列表与位运算符
2015/10/12 Python
python一键升级所有pip package的方法
2017/01/16 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
python中安装django模块的方法
2020/03/12 Python
python如何调用百度识图api
2020/09/29 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
超市端午节活动方案
2014/01/23 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
材料化学专业求职信
2014/07/15 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS