# API_final
**Repository Path**: yang_pei_jun/api_final
## Basic Information
- **Project Name**: API_final
- **Description**: API期末项目-卡点APP
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-01-22
- **Last Updated**: 2021-01-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
API期末项目——卡点-旅行打卡分享平台
---
| 项目名称 | 卡点 |
| ---- | ---- |
| 发布日期 | 2021-01-24 |
| 项目介绍 |一款有趣的旅行打卡分享平台 |
| 项目版本 | 1.0 |
| 项目主人 |杨培君 |
## 一、MVP加/价值主张宣言
### MVP 1—产品名称
##### 卡点:记录你的每一个打卡瞬间
### MVP 2—问题描述及解决方案
#### 1.问题描述
随着经济的快速发展,人们的生活水平也在日益提高,对美好的生活需求也在日益提高,越来越多的人前往世界各地进行旅游。然而,有一些用户想要找到好玩的地方,需要从各大app分散搜索,同时需要便捷的操作制定旅行计划。
#### 2.解决方案
因此,一款以打卡作为基础,记录旅程,分享物料的旅行打卡APP更能满足当代人的旅行需求。通过华为云的推荐系统RES、百度AI的语音识别、文本审核(注册信息筛查、评论)、高德API功能对产品进行优化,致力于为客户提供一个有趣味性的旅行打卡分享平台。
## 二、问题需求
### 1. 使用情境与[用户画象](https://baike.baidu.com/item/%E7%94%A8%E6%88%B7%E7%94%BB%E5%83%8F/22085710?fr=aladdin)

### 2. 需求列表
用户需求 | 智能加值 | 使用API | 优先级 |
---- | ---- | ---- | ----
快速提供推荐旅程打卡点 | 通过推荐系统对用户信息、喜好进行推送 | 推荐系统RES | 一(最重要)
找到附近的旅行打卡点并进行定位 | 通过高德API的poi搜索快速找到附近的打卡点 | 搜索POI | 二(重要)
快速语音输入搜索打卡点 | 通过语音识别反馈文本信息 | 实时语音识别API | 三(次重要)
用户注册 | 通过对用户注册信息进行检测,筛查过滤用户提交注册的用户名或网名昵称 | 文本审核API | 四(次重要)
### 3.需求论证之利害相关者分析
#### 3.1利害相关者分析
| 主要利益相关者 | 行为 | 关注点 | 权利 | 获得利益 |
| ---- | ---- | ---- | ---- |---- |
| APP开发团队 | 经过前期调研、分析用户痛点等相关行为,输出APP产品的价值主张画布,从而解决用户痛点及需求;在APP投入使用后,分析用户数据,考虑APP产品的迭代更新问题等 | 该产品的价值主张是否具有意义?该产品是否满足了用户可欲性、技术可行性和商业可行性? | 高 | 高|
| API使用者(用户) | 提出相关需求,使用该APP产品满足自己“推荐系统”、“附近的打卡点” 、“语音识别”以及“用户注册”等需求,查看相关数据反馈,并可对该APP提出一定的意见反馈 | 该产品是否满足了自己的日常使用需求?该产品是否值得自己下载使用?该产品是否是免费供自己使用? | 高| 高|
| API提供者(华为云、高德开放平台、有道智云开放平台、百度AI开发平台) | 为APP设计开发团队提供相关API技术支持,为UI设计师提供使用API的输出等 | 为该产品提供API接口服务支持,是否能得到回报? | 中 | 高|
#### 3.2系统性偏差
人工智能API的识别存在的识别错误或识别失败的可能性,对于推荐系统、周边搜索、语音识别等API功能仍然存在差异性
#### 3.3关于[ESG](https://www.zhihu.com/question/21565680)考量
- 用户隐私安全。用户个人信息的泄漏。
- 建立信息保护机制,不随意泄露用户的信息。
## 三、解决方案:界面流程及关键智能交互
### 1.原型及界面设计
交互原型:[体验链接](https://modao.cc/app/e304a5ad68780d16c46defdb4cfc625269ea2e7b#screen=skk8hoftuu3ymky)




### 2.用户体验/旅程分析

### 3.产品结构图

### 4.产品可行性与用户可欲性
#### 4.1 用户可欲性-Desirability
- 用户需求明显,且最小可行性功能可满足需求。
- 用户群体广泛,如在校学生、职场人士、退休人员皆可使用,产品的市场未来需求趋势在逐步增长。
#### 4.2技术可行性-Feasibility
- 该产品具有明确的核心价值和使用需求。
- 在多种实现产品功能的技术中,我们选择了精准度高、符合用户痛点的API加值。
- 该产品API存在小低率的技术风险,但是此小概率风险对用户体验的负面影响不会压过正面影响的机率。
#### 4.3商业可行性-Viability
- 华为云、高德开放平台、有道智云开放平台、百度AI开发平台提供了一定数量的免费API调用额度和优惠的额度套餐服务支持产品技术运行。
- 与相关旅行平台合作,进行浏览旅行打卡笔记的的同时也进行旅行攻略和购票等服务,用户可以通过点击外链跳转到相应的旅行平台页面。
### 5.价值主张画布

## 四、解决方案:数据流程及关键智能API使用
### 1.数据流程图

### 2.数据流程设计可行性与用户可欲性
#### 2.1 用户可欲性-Desirability
- 通过旅程的打卡,为用户提供平台记录生活,并形成一篇笔记或者卡片。
- 卡点APP的界面清晰,易于上手,操作流畅且简洁。
#### 2.2 技术可行性-Feasibility
- 通过获取用户位置、信息、爱好等数据,借助“推荐系统RES”、“搜索POI”、“语音识别”、“文本审核”API功能,完成用户的旅程打卡。
- 华为云、高德开放平台、有道智云开放平台、百度AI开发平台的各项技术与且具有较高准确性的人工智能API能够为用户提供稳定且高质量的服务。
#### 2.3 商业可行性 Viability
尽管市场上有推荐型和分享型的APP,但是卡点的功能结合了各大APP缺乏的功能,能够满足用户的更大需求,用户的群体范围庞大,市场广阔。
### 3.API代码及数据展示加值
#### 3.1 华为云—— [推荐系统RES](https://support.huaweicloud.com/res/index.html)
- 接口描述:
基于华为大数据和人工智能技术,提供推荐平台和算法服务,并帮助企业构建个性化推荐应用,助力提升网站/APP的点击率、留存率和用户体验。
- 技术文档地址: [推荐系统RES](https://support.huaweicloud.com/api-res/res_02_0003.html)
- 请求说明:
- HTTP方法:`POST`
- 请求url:`/v2.0/{project_id}/workspaces/{workspace_id}/intelligent-scenes `
- 案例参考:智能场景(猜你喜欢)
- 输入请求
```
{
"id":"user01", # 需要请求的用户id
"rec_num": 5 # 推荐物品的数量。
}
```
- 预测结果
```
{
"flow_id": "flow1", # 流程id
"rec_num": 10, # 推荐物品结果的数量
"candidates": [ # 候选集结果
{
"id": "item237", # 推荐结果物料id
"score": 0.58418584, # 推荐物料的评分
"source": "WeightBehavior-DIREC" # 推荐物料来源策略
},
{
"id": "item453",
"score": 0.5653803,
"source": "WeightBehavior-DIREC"
},
{
"id": "item769",
"score": 0.55219465,
"source": "WeightBehavior-DIREC"
},
{
"id": "item860",
"score": 0.55219465,
"source": "WeightBehavior-DIREC"
},
{
"id": "item974",
"score": 0.55219465,
"source": "WeightBehavior-DIREC"
}
]
}
```
#### 3.2 高德开放平台—— [POI—周边搜索](https://lbs.amap.com/api/lightmap/guide/localsearch/)
- 接口描述:
在用户传入经纬度坐标点附近,在设定的范围内,按照关键字或POI类型搜索;
- 技术文档地址: [POI周边搜索](https://lbs.amap.com/api/webservice/guide/api/search)
- 请求说明:
- 请求方法:`GET`
- 请求url:`https://restapi.amap.com/v3/place/around?parameters `
- 案例参考:
- 获取旅程目的地的地理编码
```
import requests
# 地理编码
def geocode(key,address,city=None,batch="false",sig=None,output="json",callback=None):
"""将详细的结构化地址转换为高德经纬度坐标"""
geocode_url = "https://restapi.amap.com/v3/geocode/geo?parameters"
params = {
"key":key,
"address":address,
"city":city,
"batch":batch,
"sig":sig,
"output":output,
"callback":callback
}
r = requests.get(geocode_url,params=params)
results = r.json()
return results
# 周边搜索
def poi_around(key,location,keywords=None,types="050000|070000|120000",city=None,radius=3000,sortrule="distance",offset=20,page=1,extensions="base",sig=None,output="json",callback=None):
"""在用户传入经纬度坐标点附近,在设定的范围内,按照关键字或POI类型搜索"""
poi_around_url = "https://restapi.amap.com/v3/place/around?parameters"
params = {
"key":key,
"location":location,
"keywords":keywords,
"types":types,
"city":city,
"radius":radius,
"sortrule":sortrule,
"offset":offset,
"page":page,
"extensions":extensions,
"sig":sig,
"output":output,
"callback":callback
}
r = requests.get(poi_around_url,params=params)
results = r.json()
return results
# 调用以上的地理编码和周边搜索
geo.poi_around(jun_key,'113.271191,22.779995')
```
获取到渔人码头附近的餐饮店铺
```
{'suggestion': {'keywords': [], 'cities': []},
'count': '888',
'infocode': '10000',
'pois': [{'parent': [],
'address': '容桂东堤路16号G座首层之五',
'distance': '6',
'biz_ext': [],
'importance': [],
'biz_type': 'diner',
'type': '餐饮服务;中餐厅;中餐厅',
'photos': [],
'typecode': '050100',
'shopinfo': '0',
'poiweight': [],
'childtype': [],
'name': '三洲牛杂(渔人码头店)',
'location': '113.270507,22.780069',
'tel': '13824517272',
'shopid': [],
'id': 'B0FFMEXFRZ'},
{'parent': [],
'address': '容桂街道东风社区东堤路16号H3场地',
'distance': '7',
'biz_ext': [],
'importance': [],
'biz_type': 'diner',
'type': '餐饮服务;快餐厅;快餐厅',
'photos': [],
'typecode': '050300',
'shopinfo': '0',
'poiweight': [],
'childtype': [],
'name': '麦当来容奇快闪店',
'location': '113.271250,22.780028',
'tel': '0757-26683713',
'shopid': [],
'id': 'B0G23UCDIW'},
{'parent': 'B0FFH901MG',
'address': '渔人码头西南东堤路1号楼之三',
'distance': '7',
'biz_ext': [],
'importance': [],
'biz_type': 'diner',
'type': '餐饮服务;餐饮相关场所;餐饮相关',
'photos': [],
'typecode': '050000',
'shopinfo': '0',
'poiweight': [],
'childtype': '302',
'name': '任胜牛煲',
'location': '113.271139,22.779949',
'tel': '18126637710',
'shopid': [],
'id': 'B0GRBYGJOD'},
{'parent': 'B0FFH901MG',
'address': '容桂东堤路16号渔人码头内',
'distance': '17',
'biz_ext': [],
'importance': [],
'biz_type': 'diner',
'type': '餐饮服务;餐饮相关场所;餐饮相关',
'photos': [],
'typecode': '050000',
'shopinfo': '0',
'poiweight': [],
'childtype': '302',
'name': '娱筷食堂',
```
#### 3.3 有道智云开放平台—— [实时语音识别](http://ai.youdao.com/DOCSIRMA/html/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%ABASR/API%E6%96%87%E6%A1%A3/%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E6%9C%8D%E5%8A%A1/%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E6%9C%8D%E5%8A%A1-API%E6%96%87%E6%A1%A3.html)
- 接口描述:
可实现对连续音频流的实时识别,转换成文本信息并返对应文字流。智能语音识别实现将多语种语音内容转换为文字,支持2分钟内音频文件转写以及实时语音转写。
- 技术文档地址: [实时语音识别API](http://ai.youdao.com/DOCSIRMA/html/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%ABASR/API%E6%96%87%E6%A1%A3/%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E6%9C%8D%E5%8A%A1/%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E6%9C%8D%E5%8A%A1-API%E6%96%87%E6%A1%A3.html)
- 请求url:`wss://openapi.youdao.com/stream_asropenapi?{请求参数}`
- 案例参考:
```
# -*- coding: utf-8 -*-
import uuid
import time
import websocket
import hashlib
file_path = '/Users/mac/Desktop/voice.wav'
lang_type = 'yue'
app_key = '45ff2a67206c5ab6'
app_secret = 'lgJNe8FJ3tClENZn6P4mPZdIfQRaUXI9'
def initialize():
nonce = str(uuid.uuid1())
curtime = str(int(time.time()))
signStr = app_key + nonce + curtime + app_secret
print(signStr)
sign = encrypt(signStr)
uri = "wss://openapi.youdao.com/stream_asropenapi?appKey=" + app_key + "&salt=" + nonce + "&curtime=" + curtime + \
"&sign=" + sign + "&version=v1&channel=1&format=wav&signType=v4&rate=16000&langType=" + lang_type
print(uri)
start(uri, 1600)
def encrypt(signStr):
hash = hashlib.sha256()
hash.update(signStr.encode('utf-8'))
return hash.hexdigest()
def on_message(ws, message):
print(message)
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
count = 0
file_object = open(file_path, 'rb')
while True:
chunk_data = file_object.read(1600)
ws.send(chunk_data, websocket.ABNF.OPCODE_BINARY)
time.sleep(0.05)
count = count + 1
if not chunk_data:
break
print(count)
ws.send('{\"end\": \"true\"}', websocket.ABNF.OPCODE_BINARY)
def start(uri, step):
websocket.enableTrace(True)
ws = websocket.WebSocketApp(uri,
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.on_open = on_open
ws.run_forever()
if __name__ == '__main__':
initialize()
```
- 反馈结果
```
{
"result": [{
"st": [{
"bg": 50,
"ed": 1250,
"ws": [{
"w": "顺",
"wb": 50,
"we": 340
}, {
"w": "德",
"wb": 340,
"we": 500
}, {
"w": "区",
"wb": 500,
"we": 780
}, {
"w": "渔",
"wb": 780,
"we": 895
}]
}, {
"w": "人",
"wb": 895,
"we": 1035
}]
}, {
"w": "码",
"wb": 1035,
"we": 1250
}]
}, {
"w": "头",
"wb": 1250,
"we": 1250
}]
}],
"seg_id": 0
}],
"errorCode": "0",
"action": "recognition"
}
```
#### 3.4 百度智能云开放平台—— [文本审核](https://cloud.baidu.com/product/textcensoring)
- 接口描述:
- 用户评论过滤:对网站用户的评论信息进行检测,审核出涉及色情、暴恐、政治敏感、恶意推广等内容,保证良好的用户体验
- 注册信息筛查:对用户的注册信息进行筛查,避免黑产通过用户名实现违规信息的推广
- 文章内容审核:对UGC文章内容进行多个维度的审核,避免因内容违规导致的APP下架等损失
- 技术文档地址:[文本审核API](https://cloud.baidu.com/doc/ANTIPORN/s/Rk3h6xb3i)
- 请求说明:
- 请求方式:`POST`
- 接口地址:`https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined `
- 案例参考:
```
{
"log_id": 15572142621780024,
"conclusion": "合规",
"conclusionType": 1,
"data": [{
"type": 14,
"subType": 0,
"conclusion": "合规",
"conclusionType": 1,
"msg": "用户注册审核通过",
"hits": [{
"datasetName": "用户注册审核",
"words": ["Jelly"]
}]
}]
}
```
### 4.API使用比较分析
主要分析`语音识别`API
#### 4.1 功能对比
##### 百度智能云开放平台 [功能链接](https://cloud.baidu.com/product/speech/realtime_asr)
- 技术领先识别准确
- 基于Deep Peak2端到端建模,超过10万小时数据训练,多采样率多场景声学建模,近场中文普通话识别准确率达98%
- 多语种识别
- 支持普通话和略带口音的中文识别;支持英文识别
- 智能语言处理
- 使用大规模数据集训练语言模型,对识别中间结果进行智能纠错,并根据语音的内容理解和停顿智能匹配合适的标点符号,。!?
- 多种调用方式
- 支持WebSocket API,支持Android、iOS、Linux SDK,可以在多种操作系统、多种设备终端上调用,快速上手,简单易用
- 毫秒级实时识别音频流
- 首包响应时间毫秒级,并实时展示中间文字结果,快速识别音频流
- 文字识别结果支持时间戳
- 识别返回的文字结果带有时间戳,展示VAD切分句子开始和结束时间,方便进行功能开发
##### 有道智云开放平台 [功能链接](https://ai.youdao.com/DOCSIRMA/html/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%ABASR/API%E6%96%87%E6%A1%A3/%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E6%9C%8D%E5%8A%A1/%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E6%9C%8D%E5%8A%A1-API%E6%96%87%E6%A1%A3.html)
- 智能语音识别服务当前支持中文普通话、英语、日文和韩文的输入。
- 智能语音识别对上传的语音数据大小:最长支持120s的录音文件。文件大小不超过10M。
- 实时语音识别SDK是对有道实时语音识别接口服务进行封装。提供快速的接入方式;同时提供数据统计能力,方便了解用户使用情况。
- 有道智云实时语音识别 SDK 是有道智云开放平台提供的云服务之一,是有道在线实时语音识别接口的一种实现,支持在线实时语音识别。
#### 价格对比
###### 百度智能云平台 [价格链接](https://cloud.baidu.com/doc/SPEECH/s/Jk38lxn2j)
- 按小时包预付费
用户购买小时包后即可直接使用,小时包购买之日起一年内有效,具体价格如下:
小时包规格(小时) | 价格(元) | 单价(元/小时) |
--- | --- | --- |
1000 | 1800 | 1.8 |
10000 | 15000 | 1.5 |
100000 | 120000 | 1.2 |
500000 | 450000 | 0.9 |
- 按调用时长后付费
系统按用户实际使用,每小时出账单实时扣费,账户内需保留足量余额,具体价格如下:
月调用小时 | 价格(元) |
--- | --- | --- |
0-∞ | 1800 | 3 |
- 高并发量扩容
购买并发| 价格(元)|
--- | --- |
按月/并发 | 100 |
按年/并发 | 1000 |
补充说明:
1.当且仅当用户产生成功调用或因鉴权、音频质量导致的失败调用时,系统会消耗、记录调用时长,其余情况均不涉及计费。
2.月调用时长统计周期为自然月。
###### 有道智云开放平台 [价格链接](https://ai.youdao.com/DOCSIRMA/html/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%ABASR/%E4%BA%A7%E5%93%81%E5%AE%9A%E4%BB%B7/%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E6%9C%8D%E5%8A%A1/%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E6%9C%8D%E5%8A%A1-%E4%BA%A7%E5%93%81%E5%AE%9A%E4%BB%B7.html)
- 免费体验
对于智能语音识别服务,各接口拥有一定量的免费查询字符数(新用户注册账户时,系统会向您账户赠予50元体验资金),可免费体验有道智云的服务。
- 实时语音服务配置
计费方式 | 服务内容 | 月调用时长(小时) | 语音识别(元) |
--- | --- | --- | --- |
按月调用量计费 | 实时语音识别 | 05000 | 4元/小时 |
说明:
“调用量”是指成功调用的次数,调用失败不计费
- 资源包计费价目表
资源包规格 | 资源包有效时长 | 价格 |
--- | --- | --- |
100小时 | 90天 | 283元 |
1000小时 | 180天 | 3735元 |
5000小时 | 360天 | 18455元 |
10000小时 | 360天 | 25445元 |
说明:
1.资源包可在用户登陆后,进入控制台-资源包管理中进行购买。
2.资源包支持用支付宝、微信等方式进行支付。
3.资源包不支持退款。
4.资源包支付后次日凌晨生效。(如:在2019年6月1日15:30分购买了资源包,则该资源包在2019年6月2日00:00分开始生效。)
5.资源包到期后,若未及时续费,系统会自动以按量计费的方式进行结算。
6.实际使用量超出资源包额度时,超出部分按量付费。
#### 4.3总结
- 从功能上说:百度智能云开放平台的功能叫全面
- 从价格上说:有道智云的价格相对较低
## 五、总结心得与感谢
- **总结心得**:
在《API、机器学习与人工智能》的课程中,体会到了人工智能在日常生活中的运用十分广泛,了解到API、ML、AI的价值十分重要,学习了一些的技术人员的基本操作(如调用api等),产品经理的思维,基于用户,满足用户的需求。在制作本项目的过程中,学习到了许多撰写文档的技巧,感受到需要花费很多的时间与经理去完成一份产品需求文档,制作了产品原型,用户交互,对于用户流程、界面流程有了进一步的了解。总的来说,这门课程中,不仅学到有趣的API、ML、AI功能,而且做出了一个产品原型,使我受益匪浅。
- **感谢**:
[华为云](https://www.huaweicloud.com/)、[高德开放平台](https://lbs.amap.com/)、[有道智云开放平台](https://ai.youdao.com/#/)、[百度智能云开放平台](https://cloud.baidu.com/)各大开放平台提供的免费资源调用;**感谢**:[ProcessOn](https://www.processon.com/)提供优秀的流程图制作工具;[墨刀](https://modao.cc/)提供便捷的产品原型制作工具,[人人都是产品经理](http://www.woshipm.com/)网站,提供与分享许多产品设计经验与用户画像、价值画布等图形制作参考。
---
- 独特非重复有效外连URL:20个
- 高水平原创图表:9张图 + 3张表
---
- 交互原型:[体验链接](https://modao.cc/app/e304a5ad68780d16c46defdb4cfc625269ea2e7b#screen=skk8hoftuu3ymky)
- 带语音旁白投影片:[录屏链接](https://www.bilibili.com/video/BV1HT4y1K7Zt/)