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查询mysql中文乱码问题
Nov 09 Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
基于Python的接口测试框架实例
Nov 04 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python构建网页爬虫原理分析
Dec 19 Python
Python聊天室程序(基础版)
Apr 01 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
详解python之heapq模块及排序操作
Apr 04 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
python中shell执行知识点
May 06 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
默默小谈PHP&MYSQL分页原理及实现
2007/01/02 PHP
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
php使用escapeshellarg时中文被过滤的解决方法
2016/07/10 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
JQuery包裹DOM节点的方法
2015/06/11 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
javascript 缓冲运动框架的实现
2017/09/29 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
python字典序问题实例
2014/09/26 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
小学教师岗位职责
2013/11/25 职场文书
餐饮业创业计划书范文
2014/01/06 职场文书
执行总经理岗位职责
2014/02/03 职场文书
十八届三中全会感言
2014/03/10 职场文书
商业项目策划方案
2014/06/05 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
centos8安装MongoDB的详细过程
2021/10/24 MongoDB