基于python实现语音录入识别代码实例


Posted in Python onJanuary 17, 2020

这篇文章主要介绍了如何通过python实现语音录入识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、介绍

1.第一步录音存入本地

2.调用百度语音识别sdk

注意点:百度语音识别对声音源有要求,比特率必须是256kbps

二、代码

#安装必要库
pip install baidu-aip #百度sdk
pip install pyaudio
import wave
import pyaudio
from aip import AipSpeech

def record():
 # 定义数据流块
 CHUNK = 1024
 FORMAT = pyaudio.paInt16
 # 想要百度识别,下面这两参数必须这样设置,使得比特率为256kbps
 CHANNELS = 1
 RATE = 16000
 # 录音时间
 RECORD_SECONDS = 8
 # 要写入的文件名
 WAVE_OUTPUT_FILENAME = "output.wav"
 # 创建PyAudio对象
 p = pyaudio.PyAudio()

 # 打开数据流
 stream = p.open(format=FORMAT,
     channels=CHANNELS,
     rate=RATE,
     input=True,
     frames_per_buffer=CHUNK)

 print("* recording")

 # 开始录音
 frames = []
 for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
  data = stream.read(CHUNK)
  frames.append(data)

 print("* done recording")
 # 停止数据流
 stream.stop_stream()
 stream.close()

 # 关闭PyAudio
 p.terminate()

 # 写入录音文件
 wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
 wf.setnchannels(CHANNELS)
 wf.setsampwidth(p.get_sample_size(FORMAT))
 wf.setframerate(RATE)
 wf.writeframes(b''.join(frames))
 wf.close()
def ASR():
 # 录音
 record()

 """ 你的 APPID AK SK """
 APP_ID = '****'
 API_KEY = '****'
 SECRET_KEY = '****'

 client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

 # 读取文件
 def get_file_content(filePath):
  with open(filePath, 'rb') as fp:
   return fp.read()

 # 识别本地文件
 res=client.asr(get_file_content('output.wav'), 'wav', 16000, {
  'dev_pid': 1536,
 })

 print(res)
if __name__ == '__main__':
 ASR()

三、语音命令控制程序

import wave
import pyaudio
from aip import AipSpeech
import win32api

def record():
 # 定义数据流块
 CHUNK = 1024
 FORMAT = pyaudio.paInt16
 # 想要百度识别,下面这两参数必须这样设置,使得比特率为256kbps
 CHANNELS = 1
 RATE = 16000
 # 录音时间
 RECORD_SECONDS = 8
 # 要写入的文件名
 WAVE_OUTPUT_FILENAME = "output.wav"
 # 创建PyAudio对象
 p = pyaudio.PyAudio()

 # 打开数据流
 stream = p.open(format=FORMAT,
     channels=CHANNELS,
     rate=RATE,
     input=True,
     frames_per_buffer=CHUNK)

 print("* recording")

 # 开始录音
 frames = []
 for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
  data = stream.read(CHUNK)
  frames.append(data)

 print("* done recording")
 # 停止数据流
 stream.stop_stream()
 stream.close()

 # 关闭PyAudio
 p.terminate()

 # 写入录音文件
 wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
 wf.setnchannels(CHANNELS)
 wf.setsampwidth(p.get_sample_size(FORMAT))
 wf.setframerate(RATE)
 wf.writeframes(b''.join(frames))
 wf.close()
def ASR():
 # 录音
 record()

 """ 你的 APPID AK SK """
 APP_ID = '****'
 API_KEY = '****'
 SECRET_KEY = '****'

 client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

 # 读取文件
 def get_file_content(filePath):
  with open(filePath, 'rb') as fp:
   return fp.read()

 # 识别本地文件
 res=client.asr(get_file_content('output.wav'), 'wav', 16000, {
  'dev_pid': 1536,
 })
 if not res.get("err_no"):
  return res.get("result")[0]
 return res.get("err_no")

def control(order):
 # 命令对应的程序路径
 open_order={"打开QQ":r"C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe","打开记事本":r"D:\Notepad++\notepad++.exe","打开浏览器":r"C:\Users\ffm11\AppData\Roaming\360se6\Application\360se.exe"}
 res=open_order.get(order)
 if res:
  # 参数1:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口
  # 参数2:用于指定要进行的操作。
  # “open”操作表示执行由lpFile参数指定的程序,或打开由lpFile参数指定的文件或文件夹;
  # “print”操作表示打印由lpFile参数指定的文件;
  # “explore”操作表示浏览由lpFile参数指定的文件夹。
  # 参数3:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。
  # 参数4:若lpFile参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为NULL.
  # 参数5:若lpFile参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。
  # 这个参数常用的常数:
  # SW_HIDE 隐藏窗口,活动状态给令一个窗口
  # SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
  # SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
  # SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
  # SW_SHOWMAXIMIZED 最大化窗口,并将其激活
  # SW_SHOWMINIMIZED 最小化窗口,并将其激活
  # SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
  # SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
  # SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
  win32api.ShellExecute(0, 'open', res, '', '', 1)
 else:
  print("语音命令失败")

if __name__ == '__main__':
 order=ASR()
 control(order.rstrip("。"))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python GAE、Django导出Excel的方法
Nov 24 Python
videocapture库制作python视频高速传输程序
Dec 23 Python
github配置使用指南
Nov 18 Python
python 爬取微信文章
Jan 30 Python
flask框架中勾子函数的使用详解
Aug 01 Python
Python 打印中文字符的三种方法
Aug 14 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
如何利用Python实现n*n螺旋矩阵
Jan 18 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 #Python
python实现高斯投影正反算方式
Jan 17 #Python
python中图像通道分离与合并实例
Jan 17 #Python
Python-opencv 双线性插值实例
Jan 17 #Python
如何通过python实现人脸识别验证
Jan 17 #Python
Python-openCV读RGB通道图实例
Jan 17 #Python
OpenCV python sklearn随机超参数搜索的实现
Jan 17 #Python
You might like
php 运行效率总结(提示程序速度)
2009/11/26 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
对联广告js flash激活
2006/10/19 Javascript
从javascript语言本身谈项目实战
2006/12/27 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
javascript验证身份证号
2015/03/03 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
使用Vue-Router 2实现路由功能实例详解
2017/11/14 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
python使用pycharm环境调用opencv库
2018/02/11 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
python、Matlab求定积分的实现
2019/11/20 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
大学生表扬信范文
2014/01/09 职场文书
学生手册家长评语
2014/02/10 职场文书
好人好事事迹材料
2014/02/12 职场文书
个人安全生产责任书
2014/07/28 职场文书
人事任命通知
2015/04/20 职场文书
高中生军训感言
2015/08/01 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python