基于百度语音识别API的Python语音识别小程序

一、功能概述

实现语音为文字,可以扩展到多种场景进行工作,这里只实现其基本的语言接收及转换功能。
在语言录入时,根据语言内容的多少与停顿时间,自动截取音频进行转换。
工作示例:
1084569-20180121043448490-1197956795.png

二、软件环境

  • 操作系统:win10
  • 语言:Python 版本:3.6.0
  • Python库:AipSpeech(百度语音识别SDK客户端),wave,PyAudio,paInt16

    ###Python库安装:除百度为:pip install baidu-aip,其他直接 pip install *(库名) 即可。

三、原理概述

利用wave,PyAudio搭建一个wav格式的简易录音机,基于百度API进行wav格式的音频转文本。

  • 简易录音机类(WWAV)有__save_wave_file音频文件保存方法与my_record音频录制方法。在录制音频的方法中,加入了有效音频测试的代码,可以测试一小段时间内是否有有效音频输入,否则退出音频录制。
  • 转换类(Translation)则为__get_file_content方法与get_word音频转换主方法。

四、核心代码

my_record音频录制方法(WWAV类)

def my_record(self,TIME = 60,INTERVAL = 5):'''录制并保存音频文件,TIME录制时间,INTERVAL测试间隔'''pa=PyAudio()tr = Translation()stream=pa.open(format = paInt16,channels=self.__channels,rate=self.__framerate,input=True,frames_per_buffer=self.__NUM_SAMPLES)my_buf=[] # 主音频源buf=[] # 测试音频源i=0while i < TIME*2: #控制录音时间string_audio_data = stream.read(self.__NUM_SAMPLES)  # 获取音频片段my_buf.append(string_audio_data)if i < INTERVAL*2:buf.append(string_audio_data)i += 1elif i == INTERVAL*2:self.__save_wave_file('00.wav',buf) # 保存测试音频err,a = tr.get_word('00.wav') # 得到测试音频是否有效if err == 0:breaki = 0 # 初始化buf = [] # 同上print('.',end = ' ')self.__save_wave_file('01.wav',my_buf)stream.close()

get_word音频转换方法(Translation类)

def get_word(self,filePath):'''音频转文字,参数filePath为wav音频地址,返回双值:状态(1为转换成功)及转换后文本或错误信息'''word = self.__client.asr(self.__get_file_content(filePath),'wav',8000,{'lan': 'zh'}) # 参数:语音对象,文件格式,采样率,语种类型if word['err_no'] == 0: # 错误值为0(即正确)return 1,word['result'][0] # 返回 1 与 文本信息else:return 0,word['err_no'] # 否则返回 0 与 错误内容

源码

GitHub地址

附:我又回来了,这个是不是大项目,正在写,敬请期待!寒假会更一些学习笔记,一起加油

以上

转载于:https://www.cnblogs.com/mxwbq/p/8323193.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring专业术语了解

组件/框架设计 侵入式设计 引入了框架&#xff0c;对现有的类的结构有影响&#xff1b;即需要实现或继承某些特定类。 例如&#xff1a;Struts框架 非侵入式设计 引入了框架&#xff0c;对现有的类结构没有影响。 例如&#xff1a;Hibernate框架 / Spring框架 控制反转: In…

java修改ldap用户密码_LDAP 用户更改自己的密码

LDAP中采用了ACL的权限控制。在/etc/openldap/slapd.conf文件中&#xff1a;## See slapd.conf(5) for details on configuration options.# This file should NOT be world readable.#include/etc/openldap/schema/corba.schemainclude/etc/openldap/schema/core.schemainclud…

Spring第三篇【Core模块之对象依赖】

tags: Spring 前言 在Spring的第二篇中主要讲解了Spring Core模块的使用IOC容器创建对象的问题&#xff0c;Spring Core模块主要是解决对象的创建和对象之间的依赖关系&#xff0c;因此本博文主要讲解如何使用IOC容器来解决对象之间的依赖关系&#xff01; 回顾以前对象依赖 我…

spring框架结构介绍

Spring提供了一站式解决方案&#xff1a; 1&#xff09; Spring Core spring的核心功能&#xff1a; IOC容器, 解决对象创建及依赖关系 2&#xff09; Spring Web Spring对web模块的支持。 -->可以与struts整合,让struts的action创建交给spring -->spring mvc模式 3…

java通过J2C获取用户名密码_WAS服务器上的J2C别名有什么用途?

这是我LdapTemplate类 公共LdapTemplate getLdapTemplete(字符串ldapID) {WAS服务器上的J2C别名有什么用途&#xff1f;if (ldapID.equalsIgnoreCase(Constants.LDAP1)){if (ldapTemplate1 null){try{PasswordCredential passwordCredential j2cAliasUtility.getAliasDetails…

百度坐标转换API使用

http://api.map.baidu.com/geoconv/v1/?coords121.54759,29.870724&from1&to5&aksGSOaO07WkRHHiCRxxbSQVBn 前提&#xff1a;121.54759,29.870724 是由手机硬件或谷歌地图获取的 错误的方法一&#xff1a; function standard2china(lng,lat){//http://api.map.ba…

Java语言所有异常类均继承自_Java将运行错误分为两类:(__)和(__), 其对应的类均派生自(__)类;...

【单选题】设 x,y 均为已定义的类名,下列声明对象x1的语句中正确的是( )【判断题】构造函数的方法名可以由编程人员任意命名。【单选题】能够实现对原文的鉴别和不可否认性的认证技术是( )。【单选题】设有定义语句int a[]{66,88,99}; 则以下对此语句的叙述错误的是( )。【判断…

Quartz业务类无法注入Spring对象问题

tags: 解决错误, titile: Quartz业务类无法注入Spring对象问题 Quartz业务类无法注入Spring对象问题 在刚开始遇到的时候还以为是Spring配置哪里错误了&#xff0c;结果搞了那么久&#xff0c;才知道Quartz与Spring注入对象是不关联的。。 因为Quartz的业务Job对象是由Quartz来…

如何解决ajax跨域问题

原文&#xff1a;http://www.congmo.net/blog/2012/06/27/ajax-cross-domain/ 跨域问题 起 因是这样的&#xff0c;为了复用&#xff0c;减少重复开发&#xff0c;单独开发了一个用户权限管理系统&#xff0c;共其他系统获取认证与授权信息&#xff0c;暂且称之为A系统&#xf…

spring bean创建细节

1) 对象创建&#xff1a; 单例/多例 scope"singleton", 默认值&#xff0c;即默认是单例【service/dao/工具类】 scope"prototype", 多例&#xff1b;【Action对象】 2) 什么时候创建? scope"prototype" 在用到对象的时候&#xff0c…

发送邮件程序报错454 Authentication failed以及POP3和SMTP简介

一、发现问题 在测试邮件发送程序的时候&#xff0c;发送给自己的QQ邮箱&#xff0c;程序报错454 Authentication failed, please open smtp flag first。 二、解决问题 进入QQ邮箱——>设置——>账户——>POP3/IMAP/SMTP选择——>开启POP3/SMTP服务。 三、POP3和S…

MySQL数据库是非关系_MySQL(数据库)基础知识、关系型数据库yu非关系型数据库、连接认证...

什么是数据库&#xff1f;数据库(Database)&#xff1a;存储数据的仓库高效地存储和处理数据的介质(介质主要是两种&#xff1a;磁盘和内存)数据库系统&#xff1a;DBS(Database System)&#xff1a;是一种虚拟系统&#xff0c;将多种内容关联起来的称呼DBS DBMS DBDBMS&…

WPF 使用MahApps.Metro UI库

http://www.cnblogs.com/happyyftk/p/6904766.html 本文示例源码下载&#xff1a;MetroWPF 官方示例地址&#xff1a;http://mahapps.com/guides/quick-start.html 官方控件示例地址&#xff1a;http://mahapps.com/controls/ MahApps.Metro 项目源码&#xff1a;https://githu…

SpringIOC容器-创建对象

SpringIOC容器&#xff0c;是spring核心内容。功能&#xff1a;创建对象&#xff0c;处理对象的依赖关系 IOC容器创建对象&#xff1a; 创建对象, 有几种方式&#xff1a; 1&#xff09; 调用无参数构造器 2&#xff09; 带参数构造器 3&#xff09; 工厂创建对象 工厂类&…

java注释搞笑图案_搞笑的代码注释,那些有趣的程序员

发表于 2019-04-24 16:11:26 by 月小升搞笑/**** .::::.* .::::::::.* ::::::::::: F*CK YOU* ..:::::::::::* ::::::::::::* .::::::::::* ::::::::::::::..* ..::::::::::::.* ::::::::::::::::* ::::::::::::: .:::.* :::: ::::: .::::::::.* .:::: :::: .:::::::::::.* .::…

SpringIOC容器-对象依赖

1 概述 Spring中&#xff0c;如何给对象的属性赋值? 【DI, 依赖注入】 1) 通过构造函数 2) 通过set方法给属性注入值 3) p名称空间 4) 自动装配 5) 注解 1.1 通过构造函数 <!-- ###############对象属性赋值############### --><!-- 1) 通过构造函数 --><be…

f5长连接策略

但是把这些短连接汇聚到一起&#xff0c;集中F5的设备上&#xff0c;通过F5与服务器建立平滑的长连接&#xff0c;就解决了不断增大的并发连接。比如说前台有15万个并发连接&#xff0c;经过F5的优化&#xff0c;在服务器上只有不到5000个并发连接&#xff0c;而且在此过程中&a…

pdo-mysql_PHP: MySQL (PDO) - Manual

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY(int)Если этот атрибут установлен в true вPDOStatement, MySQL-драйвербудет использовать буферизованные версии API MySQL.Если вы пишете пе…

Spring IOC容器【p名称空间注入属性值 】

# p 名称空间给对象的属性注入值(spring3.0以上版本才支持) 需要引入&#xff1a; xmlns:p"http://www.springframework.org/schema/p" 举例 applicationContext.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http…

Spring properties定义bean

2019独角兽企业重金招聘Python工程师标准>>> Spring提供了丰富的标签和注解来进行bean的定义&#xff0c;除此之外框架来提供了扩展机制让使用可以通过properties来定义bean&#xff0c;与强大的标签式和注解式的bean定义相比&#xff0c;properties提供的规则要简单…