初始百度人工智能

人工智能听起来高大上,现有阶段我们可以借助第三方开发好的库来服务于各个领域,其中百度就给我们提供了很多如图像识别、语音识别、语音合成、自然语言等多种产品服务,今天和大家一起接触下。

环境准备

前提我认为你已经在百度ai开放平台上登录且创建好了相应的应用,本文中用到了简单的语音合成和图像识别,所以创建应用是,选择接口应该包含以上接口。

请在操作前安装第三方百度ai

1
pip install baidu-aip

语音合成

新建AipSpeech

1
2
3
4
5
6
7
8
from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

接口描述

基于该接口,开发者可以轻松的获取语音合成能力

请求说明

  • 合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求的方式。文本长度不可超过限制

举例,要把一段文字合成为语音文件:

1
2
3
4
5
6
7
8
result  = client.synthesis('我在上海,你在哪儿?', 'zh', 1, {
'vol': 5,
})

# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
参数类型描述是否必须
texString合成的文本,使用UTF-8编码, 请注意文本长度必须小于1024字节
cuidString用户唯一标识,用来区分用户, 填写机器 MAC 地址或 IMEI 码,长度为60以内
spdString语速,取值0-15,默认为5中语速
pitString音调,取值0-15,默认为5中语调
volString音量,取值0-15,默认为5中音量
perString发音人选择, 0为女声,1为男声, 3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女

返回样例

1
2
3
4
5
6
7
8
// 成功返回二进制文件流
// 失败返回
{
"err_no":500,
"err_msg":"notsupport.",
"sn":"abcdefgh",
"idx":1
}

返回文件:

此时在当前文件夹会出现一个auido.mp3的文件,内容就是“我在上海,你在哪儿?”的语音

图像识别

新建AipImageClassify

AipImageClassify是图像识别的Python SDK客户端,为使用图像识别的开发人员提供了一系列的交互方法。

参考如下代码新建一个AipImageClassify

1
2
3
4
5
6
7
8
from aip import AipImageClassify

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

在上面代码中,常量APP_ID在百度智能云控制台中创建,常量API_KEYSECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。

注意:如您以前是百度智能云的老用户,其中API_KEY对应百度智能云的“Access Key ID”,SECRET_KEY对应百度智能云的“Access Key Secret”。

车辆识别

该请求用于检测一张车辆图片的具体车型。即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片的车辆品牌及型号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 调用车辆识别 """
client.carDetect(image);

""" 如果有可选参数 """
options = {}
options["top_num"] = 3
options["baike_num"] = 5

""" 带参数调用车辆识别 """
client.carDetect(image, options)

车辆识别 请求参数详情

参数名称是否必选类型默认值说明
imagestring图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
top_numstring返回预测得分top结果数,默认为5
baike_numstring0返回百科信息的结果数,默认不返回

车辆识别 返回数据参数详情

字段是否必选类型说明
log_iduint64唯一的log id,用于问题定位
color_resultstring颜色
resultcar-result()车型识别结果数组
+namestring车型名称,示例:宝马x6
+scoredouble置信度,示例:0.5321
+yearstring年份
+baike_infoobject对应识别结果的百科词条名称
++baike_urlstring对应识别结果百度百科页面链接
++image_urlstring对应识别结果百科图片链接
++descriptionstring对应识别结果百科内容描述
location_resultstring车在图片中的位置信息

车辆识别 返回示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{
"log_id": 4086212218842203806,
"location_result": {
"width": 447,
"top": 226,
"height": 209,
"left": 188
},
"result": [{
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E5%B8%83%E5%8A%A0%E8%BF%AAChiron/20419512",
"description": "布加迪Chiron是法国跑车品牌布加迪出品的豪华超跑车。配置四涡轮增压发动机,420 公里每小时,有23种颜色的选择,售价高达260万美元。"
},
"score": 0.98793351650238,
"name": "布加迪Chiron",
"year": "无年份信息"
},
{
"score": 0.0021970034576952,
"name": "奥迪RS5",
"year": "2011-2017"
},
{
"score": 0.0021096928976476,
"name": "奥迪RS4",
"year": "无年份信息"
},
{
"score": 0.0015581247862428,
"name": "奥迪RS7",
"year": "2014-2016"
},
{
"score": 0.00082337751518935,
"name": "布加迪威航",
"year": "2004-2015"
}],
"color_result": "颜色无法识别"
}

以上就完成了两个简单的语音合成和图像识别小功能,你大可以封装为类,运用在你的项目中!关于百度ai库,还有很多接口功能,大致类似,参照以上做一个多功能的智能系统吧!