flask 简单的语音识别
from aip import AipSpeech,AipNlp #AipNlp 为自然语言处理
""" 你的 APPID AK SK """APP_ID = '152123123704'API_KEY = 'SdZ123tqN2123123hxmOGx0'SECRET_KEY = 't60uD3112313X1gbSbWifTfhKU1Ehj '
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) #识别语言nlp_client = AipNlp(APP_ID, API_KEY, SECRET_KEY) #识别自然语言处理
#'''import requests #发路由请求 此处 可以封装一个模块 此处为图灵测试
url='http://openapi.tuling123.com/openapi/api/v2'
data_dict={ "reqType":0, "perception": { "inputText": { "text": "今天天气咋样" }, }, "userInfo": { "apiKey": "973c50qweqweqweqwe89096fa6aab38", "userId": "xxx" }}
def t1(text,uid): data_dict["perception"]["inputText"]["text"]=text data_dict["userInfo"]["userId"]=uid
res=requests.post(url,json=data_dict) res_json=res.json() return res_json.get('results')[0]["values"]["text"]'''
result = client.synthesis('你叫什么名字', 'zh', 1, { 'vol': 5, 'per':4, 'pit':8, 'spd':4,})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码if not isinstance(result, dict): with open('auido.mp3', 'wb') as f: f.write(result)
#语音识别import os# 读取文件 转格式用pcm 格式def get_file_content(filePath): os.system(f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm") with open(f'{filePath}.pcm', 'rb') as fp: return fp.read()
# 识别本地文件ret=client.asr(get_file_content('bb.m4a'), 'pcm', 16000, { 'dev_pid': 1536,})
Q=ret.get('result')[0]print(Q)
#创建语音及自然文本处理if nlp_client.simnet(Q,'托尼老爸').get('score')>=0.7: #与托尼老爸 类似的名字 A='你站在桥上看风景,看风景的人在楼上看你。明月装饰了你的窗子,你装饰了别人的梦。' \ '假如生活欺骗了你,不要悲伤,不要心急!忧郁的日子里须要镇静:相信吧,快乐的日子将会来临!心儿永远向往着未来;现在却常是忧郁。一切都是瞬息,一切都将会过去;而那过去了的,就会成为亲切的怀恋。' result = client.synthesis(A, 'zh', 1, { 'vol': 5, 'per': 4, 'pit': 8, 'spd': 3, }) if not isinstance(result, dict): with open('auido.mp3', 'wb') as f: f.write(result) os.system('auido.mp3')
#如果不相似 就找图灵else: A=t1(Q,'xxx') result=client.synthesis(A, 'zh', 1, { 'vol': 5, 'per': 4, 'pit': 8, 'spd': 3, }) if not isinstance(result,dict): with open('auido.mp3','wb')as f: f.write(result) os.system('auido.mp3')
本节内容 预备资料:
1.FFmpeg:
链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg
密码:w6hk
2.baidu-aip:
pip install baidu-aip
终于进入主题了,此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径
目前市面上主流的AI技术提供公司有很多,比如百度,阿里,腾讯,主做语音的科大讯飞,做只能问答的图灵机器人等等
这些公司投入了很大一部分财力物力人力将底层封装,提供应用接口给我们,尤其是百度,完全免费的接口
既然百度这么仗义,咱们就不要浪费掉怎么好的资源,从百度AI入手,开启人工智能之旅
开启人工智能技术的大门 : http://ai.baidu.com/

看看我大百度的AI大法,这些技术全部都是封装好的接口,看着就爽
接下来咱们就一步一步的操作一下
首先进入控制台,注册一个百度的账号(百度账号通用)

开通一下我们百度AI开放平台的授权
然后找到已开通服务中的百度语音

走到这里,想必已经知道咱们要从语音入手了,语音识别和语音合成
打开百度语音,进入语音应用管理界面,创建一个新的应用 
创建语音应用App

就可以创建应用了,回到应用列表我们可以看到已创建的应用了

这里面有三个值 AppID , API Key , Secret Key 记住可以从这里面看到 , 在之后的学习中我们会用到
好了 百度语音的应用已经创建完成了 接下来 我会用Python 代码作为实例进行应用及讲解
一.安装百度的人工智能SDK:
首先咱们要 pip install baidu-aip 安装一个百度人工智能开放平台的Python SDK实在是太方便了,这也是为什么我们选择百度人工智能的最大原因
安装完成之后就来测试一下:

在工程目录下,就可以看到 s1.mp3 这个文件了,来听一听

上面咱们测试了一个语音合成的例子,那么就从语音合成开始入手
二.语音合成:
技术上,代码上任何的疑惑,都可以从官方文档中得到答案
baidu-aip Python SDK 语音合成技术文档 : https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top
刚才我们做了一个语音合成的例子,就用这个例子来展开说明
先来看第一段代码

这是与百度进行一次加密校验 , 认证你是合法用户 合法的应用
AipSpeech 是百度语音的客户端 认证成功之后,客户端将被开启,这里的client 就是已经开启的百度语音的客户端了
再来看第二段代码:


用百度语音客户端中的synthesis方法,并提供相关参数
成功可以得到音频文件,失败则返回一段错误信息
重点看一下 synthesis 这个方法 , 从 https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top 来获得答案吧
从参数入手分析:

按照这些参数,从新发起一个语音合成

这次声音是不是与一点点萝莉了呢?
这都是语音语调的作用 0 - 9 其实就是 御姐音 - 萝莉音
这就是人工智能中的语音合成技术,调用百度的SDK,只用了5分钟,完成了1年的开发量,哈哈哈哈
一定要自己练习一下语音合成, 别把它玩儿坏了
三.语音识别:
哎,每次到这里,我都默默无语泪两行,声音这个东西格式太多样化了,如果要想让百度的SDK识别咱们的音频文件,就要想办法转变成百度SDK可以识别的格式PCM
目前DragonFire已知可以实现自动化转换格式并且屡试不爽的工具 : FFmpeg 这个工具的下载地址是 : 链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密码:w6hk
FFmpeg 环境变量配置:
首先你要解压缩,然后找到bin目录,我的目录是 C:\ffmpeg\bin

然后 以 windows 10 为例,配置环境变量


如果没搞明白的话,我也没有办法了,这么清晰这么明白
尝试一下,是否配置成功

看到这个界面就算配置成功了,配置成功有什么用呢, 这个工具可以将wav wma mp3 等音频文件转换为 pcm 无压缩音频文件
做一个测试,首先要打开windows的录音机,录制一段音频(说普通话)
现在假设录制的音频文件的名字为 audio.wav 放置在 D:\DragonFireAudio\
然后我们用命令行对这个 audio.wav 进行pcm格式的转换然后得到 audio.pcm
命令是 : ffmpeg -y -i audio.wav -acodec pcm_s16le -f s16le -ac 1 -ar 16000 audio.pcm

然后打开目录就可以看到pcm文件了

pcm文件已经得到了,赶紧进入正题吧
百度语音识别SDK的应用:

前提是你的audio.pcm 要与你当前的文件在同一个目录,还是分段看一下代码

读取文件的内容,file_context 是 audio.pcm 文件打开的二进制流

asr函数需要四个参数,第四个参数可以忽略,自有默认值,参照一下这些参数是做什么的
第一个参数: speech 音频文件流 建立包含语音内容的Buffer对象, 语音文件的格式,pcm 或者 wav 或者 amr。(虽说支持这么多格式,但是只有pcm的支持是最好的)
第二个参数: format 文件的格式,包括pcm(不压缩)、wav、amr (虽说支持这么多格式,但是只有pcm的支持是最好的)
第三个参数: rate 音频文件采样率 如果使用刚刚的FFmpeg的命令转换的,你的pcm文件就是16000
第四个参数: dev_pid 音频文件语言id 默认1537(普通话 输入法模型)

再来看下一段代码,打印返回结果:

成功的dict中 result 就是我们要的识别文本
失败的dict中 err_no 就是我们要的错误编码,错误编码代表什么呢?

如果err_no不是0的话,就参照一下错误码表
到此百度AI语音部分的调用就结束了,是不是感觉很简单
刚刚学完练习一下:
1.尝试从语音识别中拿出result对应的中文
2.尝试你说一句话,然后让百度AI学你说话
3.尝试使用对话的方式,得到你叫什么名字,你今年几岁了,这样简单问题的答案
flask 简单的语音识别的更多相关文章
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...
- flask简单的路由分发
flask简单的路由分发 from flask import Flask, request app = Flask(__name__) @app.route('/hello') def index() ...
- FLASK简单入门
假定你已经安装好了 Flask.如果没有,请跳转到 安装 章节. 一个最小的应用¶ 一个最小的 Flask 应用看起来会是这样: from flask import Flask app = Flask ...
- flask简单了解
Flask简介: Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,djang ...
- docker打包flask简单程序
简单代码: from flask import Flask app=Flask(__name__) @app.route('/') def hello(): return 'hello world' ...
- 编写一个简单的flask的前后端交互的网页(flask简单知识的讲解)
实验原理: 1.什么是flask Flask是一个使用Python编写的轻量级Web应用框架,其WSGI工具采用Werkzeng,模板引擎使用Jinja2.Flask与 Django之间的区别就是Dj ...
- flask简单web应用
推荐一个学习python的网站,个人觉得在这里面收获挺大的,希望对后来学习flask的小伙伴们有帮助.http://www.pythondoc.com/ 用flask框架实现第一个web应用 首先需要 ...
- ajax的get和post请求 -- 基于flask 简单示例
需求:在浏览器端输入姓名,将数据发送给后端,后端将内容追加到 user.json 中,并将该文件中的数据,返回到浏览器打印 1.浏览器端(html文件) index.html文件 <!DOCTY ...
- Flask简单学习
一:安装 直接 pip install Flask,就可以安装好了 二:hello world 编写一个hello.py # coding: utf- from flask import Flask ...
随机推荐
- python去除\ufeff、\xa0、\u3000
今天使用python处理一个txt文件的时候,遇到几个特殊字符:\ufeff.\xa0.\u3000,记录一下处理方法 代码:with open(file_path, mode='r') as f: ...
- Eureka的高可用
问题: 现在Eureka和Client是1对1,但是Eureka挂了,就不能用了. 如何解决呢,创建多个Erurka.并且Eureka进行相互注册.如下图 怎么相互注册呢 1. 创建两个Eureka ...
- 微信开发-业务域名、JS接口安全域名、网页授权域名
在微信公众平台上可配置这些域名. 1.业务域名:在微信浏览器中点击文本框,会弹出下面的提示,很不爽,通过配置业务域名可以将该提示去掉 2.JS接口安全域名:分享到朋友圈(js-sdk)时用上,此接口要 ...
- Word中选择中内容后变成C,VMware 虚拟中Ctrl键一直被按住了
Word中选择中内容后变成C: 解决办法:关闭金山词霸的[划词翻译]功能即可. VMware 虚拟中Ctrl键一直被按住了: 解决办法:关闭金山词霸的[取词翻译]功能即可.
- Visio View:打开VSd时,IE弹出已停止工作。
解决办法:关闭第三方扩展功能
- STL进阶--删除元素
删除元素 从vector或deque删除元素 vector<int> vec = {1, 4, 1, 1, 1, 12, 18, 16}; // 删除所有的1 for (vector< ...
- vue之过滤器
在vue2.0以前的版本中vue内置的过滤器,但是因为缺乏纯JavaScript的灵活性,现在vue2.0版本中已经删除了内置过滤器,所以需要自己注册过滤器,我们可以定义本地(在某一个template ...
- Java-Runoob-高级教程-实例-方法:07. Java 实例 – instanceOf 关键字用法
ylbtech-Java-Runoob-高级教程-实例-方法:07. Java 实例 – instanceOf 关键字用法 1.返回顶部 1. Java 实例 - instanceof 关键字用法 ...
- [转][C#]Environment 类
当执行 Environment.GetEnvironmentVariables() 时,可以得到以下结果(受所安装软件影响,每台电脑都不一样) Count = ["SystemDrive&q ...
- MFC (如何通过点击botton打开一个文件夹/文件)
1.建一个MFC的工程,类型为基于对话框.在工具箱里拖进去一个button按键,如下图. 2.双击button1按键就可以进入到点击button1后要执行操作的代码,编写如下代码实现网页/文件夹或者文 ...