腾讯AI开放平台的使用
一、腾讯AI开放平台
https://ai.qq.com/
二、腾讯AI平台支持的功能

三、签名机制
1.计算步骤
用于计算签名的参数在不同接口之间会有差异,但算法过程固定如下4个步骤。 1.将<key, value>请求参数对按key进行字典升序排序,得到有序的参数对列表N 2.将列表N中的参数对按URL键值对的格式拼接成字符串,得到字符串T(如:key1=value1&key2=value2),URL键值拼接过程value部分需要URL编码,URL编码算法用大写字母,例如%E8,而不是小写%e8 3.将应用密钥以app_key为键名,组成URL键值拼接到字符串T末尾,得到字符串S(如:key1=value1&key2=value2&app_key=密钥) 4.对字符串S进行MD5运算,将得到的MD5值所有字符转换成大写,得到接口请求签名
2.注意事项
1.不同接口要求的参数对不一样,计算签名使用的参数对也不一样 2.参数名区分大小写,参数值为空不参与签名 3.URL键值拼接过程value部分需要URL编码 4.签名有效期5分钟,需要请求接口时刻实时计算签名信息
3.参考代码
import time
import random
import string
import base64
import hashlib
import requests
from urllib.parse import urlencode
from collections import OrderedDict class Sign:
def __init__(self):
self.app_id = 12345 # APP_ID
self.app_key = '' # APP_KEY @property
def time_stamp(self):
t = time.time()
return int(t) def random_string(self, num=16):
s = string.ascii_lowercase + string.digits
r = random.sample(s, num)
return ''.join(r) def add_field(self, dic):
dic['app_id'] = self.app_id
# 生成时间戳
dic['time_stamp'] = self.time_stamp
# 生成随机字符串
dic['nonce_str'] = self.random_string()
return dic def add_sign(self, dic):
d = OrderedDict()
# 将字典进行排序
for k in sorted(dic):
d[k] = dic[k]
# 将排序后的字典进行urlencode编码,得到字符串
s = urlencode(d, encoding='utf-8')
# 把app_key拼接到字符串
s += '&app_key={}'.format(self.app_key)
md = hashlib.md5()
md.update(s.encode('utf-8'))
# 将字符串进行md5运算得到签名
m = md.hexdigest().upper()
dic['sign'] = m
return dic
四、语音合成功能的使用
import time
import random
import string
import base64
import hashlib
import requests
from urllib.parse import urlencode
from collections import OrderedDict class Sound:
def __init__(self):
self.app_id = 12345 # APP_ID
self.app_key = '' # APP_KEY @property
def time_stamp(self):
t = time.time()
return int(t) def random_string(self, num=16):
s = string.ascii_lowercase + string.digits
r = random.sample(s, num)
return ''.join(r) def add_field(self, dic):
dic['app_id'] = self.app_id
dic['time_stamp'] = self.time_stamp
dic['nonce_str'] = self.random_string()
return dic def add_sign(self, dic):
d = OrderedDict()
for k in sorted(dic):
d[k] = dic[k]
s = urlencode(d, encoding='utf-8')
s += '&app_key={}'.format(self.app_key)
md = hashlib.md5()
md.update(s.encode('utf-8'))
m = md.hexdigest().upper()
dic['sign'] = m
return dic # 合成语音
def speech_synthesis(self, file_name=None, speaker=6, format=3, volume=0, speed=100, text=None, aht=0, apc=58):
if text == None:
text = '请输入想要转换的文字!'
if file_name == None:
file_name = 'test.mp3'
dic = {
'aht': aht,
'apc': apc,
'text': text,
'speed': speed,
'format': format,
'volume': volume,
'speaker': speaker,
}
# 生成字典
dic = self.add_field(dic)
# 获得签名后的字典
dic = self.add_sign(dic)
# 发post请求,把获得签名后的字典作为data
ret = requests.post(url='https://api.ai.qq.com/fcgi-bin/aai/aai_tts', data=dic).json()
# 将请求结果中的音频数据进行base64解码,然后写入文件
with open(file_name, 'wb') as f:
audio = base64.b64decode(ret['data']['speech'])
f.write(audio) if __name__ == '__main__':
s = Sound()
s.speech_synthesis(file_name='001.mp3', text='我爱你,中国!')
腾讯AI开放平台的使用的更多相关文章
- 腾讯AI开放平台的接口调用指南
最近无意发现腾讯AI开放平台上提供了大量好玩的人工智能云服务,而且是完全免费的.只需要用QQ号登录即可.这么好的东西,作为一个程序员,当然要试试了! 从上图可以看出腾讯AI开放平台提供的人工智能服务主 ...
- 30行代码消费腾讯人工智能开放平台提供的自然语言处理API
腾讯人工智能AI开放平台上提供了很多免费的人工智能API,开发人员只需要一个QQ号就可以登录进去使用. 腾讯人工智能AI开放平台的地址:https://ai.qq.com/ 里面的好东西很多,以自然语 ...
- 百度AI开放平台- API实战调用
百度AI开放平台- API实战调用 一. 前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...
- 基于百度AI开放平台的人脸识别及语音合成
基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...
- coding 绑定腾讯云开放平台注意事项
coding升级后需要绑定腾讯云开放平台,按照coding文档的提示操作就好 1.创建腾讯云平台后,不要自定义邮箱和用户名 2.直接绑定原来我们使用的coding账号即可 绑定成功后,邮箱和用户名会自 ...
- 百度AI开放平台,语音识别,语音合成以及短文本相似度
百度AI开放平台:https://ai.baidu.com/ 语音合成 from aip import AipSpeech APP_ID=" #'你的 App ID' API_KEY=&qu ...
- selenium自动化 | 借助百度AI开放平台识别验证码登录职教云
#通过借助百度AI开放平台识别验证码登录职教云 from PIL import Image from aip import AipOcr import unittest # driver.get(zj ...
- 百度AI开放平台 UNIT平台开发在线客服 借助百度的人工智能如何开发一个在线客服系统
这段时间在研究一些人工智能的产品,对比了国内几家做人工智能在线客服的,有些接口是要收费的,有些是免费的,但是做了很多限制,比如每天调用的接口次数限制是100次.后来就找到了百度的AI,大家也知道,目前 ...
- 百度AI开放平台 情感倾向分析实例以及gbk编码解决
f=open('test.txt','a+',encoding='utf-8') for index,row in cxzg.iterrows(): text=str(row['text']) tex ...
随机推荐
- 年月日时分秒毫秒+随机数getSerialNum
package com.creditharmony.apporveadapter.core.utils; import java.io.ByteArrayInputStream; import jav ...
- [Luogu 4316] 绿豆蛙的归宿
题目链接 一道基础的 \(DAG\) 上期望 \(DP\). 给出一个有向无环图,起点为 \(1\) 终点为 \(N\),每条边都有一个长度,并且从起点出发能够到达所有的点,所有的点也都能够到达终点. ...
- Apache的安装与配置+PHP
https://blog.csdn.net/u012130971/article/details/79284937 文件夹名称不要有空格
- keepalived 安装及配置
简介 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker. 但是它一般不会单独出现, ...
- Apache Hadoop 2.9.2 完全分布式部署
Apache Hadoop 2.9.2 完全分布式部署(HDFS) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.环境准备 1>.操作平台 [root@node101.y ...
- Hadoop记录-queue使用率
#!/bin/sh ip=xxx port=8088 export HADOOP_HOME=/app/hadoop/bin rmstate1=$($HADOOP_HOME/yarn rmadmin - ...
- Hadoop大数据通用处理平台
1.简介 Hadoop是一款开源的大数据通用处理平台,其提供了分布式存储和分布式离线计算,适合大规模数据.流式数据(写一次,读多次),不适合低延时的访问.大量的小文件以及频繁修改的文件. *Hadoo ...
- Redis实战(十)Redis常见问题及解决方案
序言
- 我们来说说self.setinterval
学了js的你,肯定知道setInterval方法是按照指定的周期(以毫秒计)来调用函数或计算表达,setInterval方法会不停地调用函数,直到clearInterval被调用或窗口被关闭,这个se ...
- Unsafe 的简单使用
Unsafe 简介 Unsafe 是sun.misc包中的一个类,可以通过内存偏移量操作类变量/成员变量 Unsafe 用途 AQS(AbstractQueuedSynchronizer) 常用作实现 ...