基于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操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
python批量修改文件名的实现代码
Sep 01 Python
Python的Django框架中消息通知的计数器实现教程
Jun 13 Python
django使用xlwt导出excel文件实例代码
Feb 06 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
基于python实现把图片转换成素描
Nov 13 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
python db类用法说明
Jul 07 Python
Django生成数据库及添加用户报错解决方案
Oct 09 Python
Python+Selenium自动化环境搭建与操作基础详解
Mar 13 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/03/10 PHP
PHP进程同步代码实例
2015/02/12 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
浅析vue深复制
2018/01/29 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
简单了解python数组的基本操作
2019/11/26 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
python实现自动打卡的示例代码
2020/10/10 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
初中班级口号
2014/06/09 职场文书
电子专业求职信
2014/06/19 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
优秀团支部申报材料
2014/12/26 职场文书
父亲节活动总结
2015/02/12 职场文书
员工离职证明范本
2015/06/12 职场文书
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS