1)进入http://yuyin.baidu.com/app,在弹出的界面中单击要针对哪个应用开通语音识别服务,个人测试可全选
(开通个人认证,白嫖)
 
 

注意:
1、百度语音识别API对于要识别的音频源是有要求的:原始PCM的录音参数必须符合8k/16k采样率、16位深、单声道,支持的压缩格式有:pcm(不压缩)、wav、opus、amr、x-flac。
 
2、在本地计算机上测试的,因此使用的是MAC地址。获取MAC地址的方法是:打开系统终端命令行窗口(Win+R,输入cmd并按Enter键),在命令行中输入命令ipconfig/all
 
3、关闭防火墙,网络限时

参考代码如下:
 
 1 # -*- coding: utf-8 -*-
2 import json # 用来转换JSON字符串
3 import base64 # 用来做语音文件的Base64编码
4 import requests # 用来发送服务器请求
5
6 # 获得token
7 API_Key = '********' # 从申请应用的key信息中获得
8 Secret_Key = '********' # 从申请应用的key信息中获得
9 token_url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s"
10 # 获得token的地址
11 res = requests.get(token_url % (API_Key, Secret_Key)) # 发送请求
12 res_text = res.text # 获得请求中的文字信息
13 token = json.loads(res_text)['access_token'] # 提取token信息
14
15 # 定义要发送的语音
16 voice_file = 'D:\Users\m07013a\Downloads\05. Ancient of Wind.wav' # 要识别的语音文件
17 voice_fn = open(voice_file, 'rb') # 以二进制的方式打开文件
18 org_voice_data = voice_fn.read() # 读取文件内容
19 org_voice_len = len(org_voice_data) # 获得文件长度
20 base64_voice_data = base64.b64encode(org_voice_data).decode('utf-8')
21 # 将语音内容转换为base64编码格式
22 # 发送信息
23 # 定义要发送的数据主体信息
24 headers = {'content-type': 'application/json'} # 定义header信息
25 payload = {
26 'format': 'pcm', # 以具体要识别的语音扩展名为准
27 'rate': 8000, # 支持8000或16000两种采样率
28 'channel': 1, # 固定值,单声道
29 'token': token, # 上述获取的token
30 'cuid': '90-65-84-C1-70-32', # 本机的MAC地址或设备唯一识别标志,要修改
31 'len': org_voice_len, # 上述获取的原始文件内容长度
32 'speech': base64_voice_data # 转码后的语音数据
33 }
34 data = json.dumps(payload) # 将数据转换为JSON格式
35 vop_url = 'http://vop.baidu.com/server_api' # 语音识别的API
36 voice_res = requests.post(vop_url, data=data, headers=headers) # 发送语音识别请求
37 api_data = voice_res.text # 获得语音识别文字返回结果
38 text_data = json.loads(api_data)['result']
39 print(api_data) # 打印输出整体返回结果
40 print(text_data) # 打印输出语音识别的文件
 
返回结果如下:

 

总结:上述语音识别仅提供了关于语音转文字的方法。其实语音本身包括非常多的信息,除了相对浅层的生理和物理特征,例如语速、音调、音长、音色、音强等外,还包括更深层次的社会属性,这部分内容需要自然语音理解的深层次应用。目前的语音数据读取后主要应用方向包括:

·语音转文字。这也是广义上语音识别的一种,直接将语音信息转为文字信息,例如微信中就有这个小功能。

·语音识别。语音识别指的是对说话者通过选取语音识别单元、提取语音特征参数、模型训练、模型匹配等阶段,实现其角色识别和个体识别的过程,例如通过某段语音识别出是哪个人说的话。

·语音语义理解。在语音识别的基础上,需要对语义特征进行分析,目的是通过计算得到语音对应的潜在知识或意图,然后提供对应的响应内容或方法。语音识别和语音理解的差异之处在于,语音识别重在确定语音表达的字面含义,属于表层意义;而语音理解重在挖掘语音的背后含义,属于深层意义。

·语音合成。语音合成就是让计算机能够“开口说话”,这是一种拟人的技术方法。语音合成,又称文本转语音(Text to Speech)技术,它通过机械的、电子的方法将文字信息转变为人类可以听得懂的语音。

·应用集成。经过分析、识别后的信息可以与硬件集成,直接通过语音发送指令。例如通过跟Siri(苹果手机上的语音助理)的“沟通”,除了可以进行日常对话,还可以告诉你天气情况、帮你设置系统日程、介绍餐厅等。这是智能机器人在模式识别方面的典型应用。

基于上述的复杂应用场景,通常语音后续分析、处理和建模等过程都无法由数据工程师单独完成,还需要大量的语料库素材,以及社会学、信号工程、语言语法、语音学、自然语音处理、机器学习、知识搜索、知识处理等交叉学科和相关领域才有可能解开其中的密码。

基于OpenCV的语音数据读取的更多相关文章

  1. 基于MFCC的语音数据特征提取概述

    1. 概述 语音是人类之间沟通交流的最直接也是最快捷方便的一种手段,而实现人类与计算机之间畅通无阻的语音交流,一直是人类追求的一个梦想. 伴随着移动智能设备的普及,各家移动设备的厂家也开始在自家的设备 ...

  2. 基于OpenCV的三维数据点的曲面重构_MySurefaceReconstruction

    在Opencv中有个Viz模块,可以显示三维物体,还可以实现三维动画,本来是很好的东东,但是里面的函数.类的说明太过简单,始终不得要领.不过其中一个扩展功能非常好,就是你可以在vtk中设计自己的模型类 ...

  3. 使用C#处理基于比特流的数据

    使用C#处理基于比特流的数据 0x00 起因 最近需要处理一些基于比特流的数据,计算机处理数据一般都是以byte(8bit)为单位的,使用BinaryReader读取的数据也是如此,即使读取bool型 ...

  4. Python 基于Python从mysql表读取千万数据实践

    基于Python 从mysql表读取千万数据实践   by:授客 QQ:1033553122 场景:   有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...

  5. 基于OpenCv和swing的图片/视频展示Java实现

    基于OpenCv和swing实现图片/视频的展示 图片的展示 swing展示图片,多为操作BufferedImage,这里要关注的核心是将Mat转为BufferedImage. 代码如下: publi ...

  6. 基于Opencv自带BP网络的车标简易识别

    代码地址如下:http://www.demodashi.com/demo/12966.html 记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果 1.准备工作 1.1 训练集和测 ...

  7. 【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性

    本来应该上周更新的,结果碰上五一,懒癌发作,就推迟了 = =.以后还是要按时完成任务.废话不多说,第四章-第六章主要讲了三个内容:键值对.数据读取与保存与Spark的两个共享特性(累加器和广播变量). ...

  8. opencv从txt文本读取像素点并显示

    opencv从txt文本读取像素点并显示 文本储存格式为每行一个像素点,排列为RGB.每帧图像的帧头为65535.  如下图所示 废话不多说,代码如下: // #include <iostrea ...

  9. [转载]卡尔曼滤波器及其基于opencv的实现

    卡尔曼滤波器及其基于opencv的实现 源地址:http://hi.baidu.com/superkiki1989/item/029f65013a128cd91ff0461b 这个是维基百科中的链接, ...

  10. 基于OpenCv的人脸检测、识别系统学习制作笔记之一

    基于OpenCv从视频文件到摄像头的人脸检测 在OpenCv中读取视频文件和读取摄像头的的视频流然后在放在一个窗口中显示结果其实是类似的一个实现过程. 先创建一个指向CvCapture结构的指针 Cv ...

随机推荐

  1. oracle优化-分页查询的错误认识

    对于分页查询,上一篇文章总结了实现分页查询的办法.同时给出等价写法,另外在执行计划角度验证SQL的等价性https://www.cnblogs.com/handhead/p/13856505.html ...

  2. jquery设置图片可手动拖拽

    JQuery是一款流行的JavaScript框架,可以轻松实现网页交互效果.而其中一种常见效果是图片手动拖拽.以下是设置图片手动拖拽的JQuery代码. 1 2 3 4 5 6 7 8 9 10 11 ...

  3. 归并排序 nO(lgn) 审核中

    大家好,我是蓝胖子,我一直相信编程是一门实践性的技术,其中算法也不例外,初学者可能往往对它可望而不可及,觉得很难,学了又忘,忘其实是由于没有真正搞懂算法的应用场景,所以我准备出一个系列,囊括我们在日常 ...

  4. jq工具及其常用用法

    近来在工作中处理JSON处理较多,深入研究了一下jq,之前对jq的使用一直停留在JSON数据格式化的层面,实际它的能力远不止于此. 在处理JSON数据时,我们经常需要在命令行中进行过滤.查询和编辑的操 ...

  5. MQ系列16:MQ实现消息过滤处理

    MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系 ...

  6. 【NOI2014】 魔法森林---解题报告

    传送门 题目大意 给定 \(n\) 个点和 \(m\) 条边.每条边包含起点终点和两个精灵的最低限制,求最少需要携带的精灵数量. 题目解析 直接套 LCT 板子 将所有边按照进行升序排序,从小到大将边 ...

  7. STL deque容器

    deque - 双向队列 1.队列的基本知识 队列的基本特性就是先进先出(FIFO),也就是第一个进去的元素第一个出来.即队列就是一个只允许在一端进行插入,在另一端进行删除操作的线性表.Queue接口 ...

  8. vue+element-ui中引入编辑器

    wangeditor编辑器 1.执行:npm install  --save  wangeditor 2.在你需要调用编辑器的vue文件中引入 wangeditor: import E from 'w ...

  9. Excel表格存在不同大小的合并单元格怎么排序?

    当Excel表格中存在不同大小的合并单元格时,进行排序可能会出现一些难题.因为合并单元格会影响数据的布局,导致排序结果不符合预期. 下面我将详细介绍如何在包含不同大小合并单元格的Excel表格中进行排 ...

  10. Go笔记(1)-变量的详细用法

    变量 (1)变量的定义 Go语言是静态类型的语言,所有类型都需要明确的定义. var是声明变量的关键字 使用格式:var 变量名 变量类型 变量命名规范:遵循驼峰格式,首个单词小写,每个新单词的首字母 ...