Python之人工智能(一)
是不是看到标题感觉很高大上?其实就是人工智障啦hhh~,本篇文档是典型的标题党,虽然是人工智能,但是没有算法,只是站在巨人的肩膀上而已。
好了,步入正题。此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径。目前市面上主流的AI技术提供公司有很多,比如百度,阿里,腾讯,主做语音的科大讯飞,做只能问答的图灵机器人等等。。。这些公司投入了很大一部分财力物力人力将底层封装,提供应用接口给我们,尤其是百度,完全免费的接口。既然百度这么仗义,咱们就不要浪费掉怎么好的资源,从百度AI入手,开启人工智能之旅。
一、开启人工智能大门
创建一个百度语音的应用
首先需要登录百度云,接着进入我的控制台,打开百度语音,进入语音应用管理界面,创建一个新的应用
接着就能看到自己创建的应用啦
这里面有三个值 AppID , API Key , Secret Key 记住可以从这里面看到 , 在之后的学习中我们会用到
好了 百度语音的应用已经创建完成了 接下来 我会用Python 代码作为实例进行应用及讲解
安装百度的人工智能SDK
- 首先咱们要 pip install baidu-aip 安装一个百度人工智能开放平台的Python SDK实在是太方便了,这也是为什么我们选择百度人工智能的最大原因
语音合成
安装好后我们先来测试下,语音合成功能。
具体参数,不详尽之处请看官方文档:传送门
- 这一步会生成一个名字为audio.m4a的文件
- from aip import AipSpeech
- import os
- APP_ID = ''
- API_KEY = 'iL6rNZgPjplCGYQfw86zO2ro'
- SECRET_KEY = '0YNfOLiAPUgqCL4XxYVoO2oLV37pmByY'
- client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
- result = client.synthesis('你好啊', 'zh', 1, {
- "spd": 4,
- 'vol': 8,
- "pit": 6,
- "per": 0,
- })
- # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
- if not isinstance(result, dict):
- with open('audio.m4a', 'wb') as f:
- f.write(result)
- else:
- print(result)
二、语音识别
安装音频转换工具FFmpeg
声音这个东西格式太多样化了,如果要想让百度的SDK识别咱们的音频文件,就要想办法转变成百度SDK可以识别的格式PCM。
这里我们选择的是FFmpeg ,下载好后配置好环境变量。
- 即可在CMD中使用
- ffmpeg -y -i audio.m4a -acodec pcm_s16le -f s16le -ac -ar audio.pcm
- 接着在文件夹中就可以看到pcm格式的文件了
百度语音识别SDK应用
好了准备工作都做好了就开始到正式接触人工智障了
- asr函数需要四个参数,第四个参数可以忽略,自有默认值,参照一下这些参数是做什么的
- 第一个参数: speech 音频文件流 建立包含语音内容的Buffer对象, 语音文件的格式,pcm 或者 wav 或者 amr。(虽说支持这么多格式,但是只有pcm的支持是最好的)
- 第二个参数: format 文件的格式,包括pcm(不压缩)、wav、amr (虽说支持这么多格式,但是只有pcm的支持是最好的)
- 第三个参数: rate 音频文件采样率 如果使用刚刚的FFmpeg的命令转换的,你的pcm文件就是16000
- 第四个参数: dev_pid 音频文件语言id 默认1537(普通话 输入法模型)
- from aip import AipSpeech
- import os
- APP_ID = ''
- API_KEY = 'iL6rNZgPjplCGYQfw86zO2ro'
- SECRET_KEY = '0YNfOLiAPUgqCL4XxYVoO2oLV37pmByY'
- 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('audio.pcm'), 'pcm', 16000,{
- 'dev_pid': 1536,
- })
- print(
- res.get("result")[0]
- )
- 接着来看看返回值
成功的dict中 result 就是我们要的识别文本
失败的dict中 err_no 就是我们要的错误编码,错误编码代表什么呢?
如果err_no不是0的话,就参照一下错误码表
到此百度AI语音部分的调用就结束了,是不是感觉很简单。
Python之人工智能(一)的更多相关文章
- python实现人工智能Ai抠图功能
这篇文章主要介绍了python实现人工智能Ai抠图功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 自己是个PS小白,没办法只能通过技术来证明自己. 话不多说, ...
- 一个使用 Python 的人工智能聊天机器人框架
一个Python 的 AI Chatbot框架 建立一个聊天室可以听起来很棒,但它是完全可行的. IKY是一个内置于Python中的AI动力对话对话界面. 使用IKY,很容易创建自然语言会话场景,无需 ...
- python学习(一)——python与人工智能
最近在朋友圈转起了一张图.抱着试一试的心态,我肝了些课程.都是与python相关的. 课程一:你不知道的python 讲师:王玉杰 (混沌巡洋舰联合创始人 & web ...
- 易百教程人工智能python修正-人工智能无监督学习(聚类)
无监督机器学习算法没有任何监督者提供任何指导. 这就是为什么它们与真正的人工智能紧密结合的原因. 在无人监督的学习中,没有正确的答案,也没有监督者指导. 算法需要发现用于学习的有趣数据模式. 什么是聚 ...
- 是AI就躲个飞机-纯Python实现人工智能
你要的答案或许都在这里:小鹏的博客目录 代码下载:Here. 很久以前微信流行过一个小游戏:打飞机,这个游戏简单又无聊.在2017年来临之际,我就实现一个超级弱智的人工智能(AI),这货可以躲避从屏幕 ...
- Python之人工智能:PyAudio 实现录音 自动化交互实现问答
Python 很强大其原因就是因为它庞大的三方库 , 资源是非常的丰富 , 当然也不会缺少关于音频的库 关于音频, PyAudio 这个库, 可以实现开启麦克风录音, 可以播放音频文件等等,此刻我们不 ...
- 易百教程人工智能python修正-人工智能NLTK性别发现器
在这个问题陈述中,将通过提供名字来训练分类器以找到性别(男性或女性). 我们需要使用启发式构造特征向量并训练分类器.这里使用scikit-learn软件包中的标签数据. 以下是构建性别查找器的Pyth ...
- 易百教程人工智能python修正-人工智能监督学习(回归)
回归是最重要的统计和机器学习工具之一. 我们认为机器学习的旅程从回归开始并不是错的. 它可以被定义为使我们能够根据数据做出决定的参数化技术,或者换言之,允许通过学习输入和输出变量之间的关系来基于数据做 ...
- 易百教程人工智能python修正-人工智能监督学习(分类)
分类技术或模型试图从观测值中得出一些结论. 在分类问题中,我们有分类输出,如“黑色”或“白色”或“教学”和“非教学”. 在构建分类模型时,需要有包含数据点和相应标签的训练数据集. 例如,如果想检查图像 ...
随机推荐
- DataTable数据分页
using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Refle ...
- axure & Markman学习总结
最近学了几款有意思的软件,一款是axure,另一款是Markman.接下来聊聊自己的学习心得吧. 关于axure,百度上的解释是:是一个专业的快速原型设计工具.在我看来,它就是能快速把效果网页做给客户 ...
- 白盒测试实践项目(day6)
胡俊辉负责JUint测试部分,了解JUint测试的方法,并对其他成员介绍JUint的使用,负责JUnit部分相关文档的编写,负责博客园博客的维护,负责小组成员的任务分类与管理. 李建文负责代码复审部分 ...
- SpringMVC的问题No mapping found for HTTP request with URI
做了一个屏蔽进数据库的操作: Applicaition.xml配置: <?xml version="1.0" encoding="UTF-8"?> ...
- C# 生成dll文件 并导入使用
首先 在unity创建一个脚本 并编写内容,其中需要调用的方法.变量要公有化(也可以直接新建cs文件用编译器打开编译,但要先导入UnityEngine.dll). 然后,复制脚本关闭unity,在外界 ...
- 编写高质量代码改善C#程序的157个建议——建议137:委托和事件类型应添加上级后缀
建议137:委托和事件类型应添加上级后缀 委托类型本身是一个类,考虑让派生类的名字以基类名字作为后缀.事件类型是一类特殊的委托,所以事件类型也遵循本建议. 委托和事件的正确的命名方式有: public ...
- 编写高质量代码改善C#程序的157个建议——建议95:避免在构造方法中调用虚成员
建议95:避免在构造方法中调用虚成员 在构造方法中调用虚方法会带来一些意想不到的错误,虽然这种方法不常见,但还是需要注意这类陷阱. static void Main() { American amer ...
- 编写高质量代码改善C#程序的157个建议——建议92:谨慎将数组或集合作为属性
建议92:谨慎将数组或集合作为属性 数组或集合作为属性会引起这样一个问题:如果属性是只读的,我们通常会认为它是不可用改变的,但如果将只读属性应用于数座或集合,而元素的内容和数量却仍旧可以随意改变.如下 ...
- 学习tomcat(一)----用IDEA调试tomcat源码
一直在使用tomcat,但却不怎么熟悉tomcat的"运作流程",今天就 参照参考文章进行了代码搭建(代码的github在文末),并修改了一些操作.学习下tomcat的" ...
- 自制Java中的Mutex类
同步问题中,一个很重要的问题是同步的域,什么是同步的域呢?简单以 synchronized 这个关键字来说,就是它所同步的范围.并发编程中很多时候出现的问题没有选好同步范围所导致的.但现有的同步关键字 ...