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使用新浪微博API发送微博的例子
Apr 10 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
Sep 13 Python
python八皇后问题的解决方法
Sep 27 Python
Python字典遍历操作实例小结
Mar 05 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
WxPython实现无边框界面
Nov 18 Python
Python进程池Pool应用实例分析
Nov 27 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
解决Python中报错TypeError: must be str, not bytes问题
Apr 07 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
谈谈PHP语法(4)
2006/10/09 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
python查看zip包中文件及大小的方法
2015/07/09 Python
在Django中创建动态视图的教程
2015/07/15 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
Windows下python3.6.4安装教程
2018/07/31 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
python实现图片转字符画的完整代码
2021/02/21 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
妈妈的账单教学反思
2014/02/06 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
年度评优评先方案
2014/06/03 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
安全隐患整改报告
2014/11/06 职场文书
早上好问候语大全
2015/11/10 职场文书
Python绘制散点图之可视化神器pyecharts
2022/07/07 Python