腾讯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 ...
随机推荐
- C++:普通变量C++命名规则
C++提倡使用拥有一定意义的变量名,使程序代码更有阅读性,命名是必须使用的几种简单的C++命名规则: 命名时只能使用:字母字符.数字和下划线(_); 第一个字符不能是数字: 区分大小写(C++对大小写 ...
- Tomcat系列(5)——Tomcat配置详细部分
Tomcat的架构图 Tomcat的组织结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的是Catalina servlet容器,其他组件按照一定的格式要求配置在这个顶层 ...
- package.json 里的 dependencies和devDependencies区别
dependencies(依赖的意思): 通过 --save 安装,是需要发布到生产环境的.比如项目中使用react,那么没有这个包的依赖就会报错,因此把依赖写入dependencies devDep ...
- 【作业4.0】HansBug的第四次面向对象课程思考
嘛..不知不觉这门课程要结束了,那么就再说点啥以示庆祝呗. 测试vs正确性论证 说到这个,相比很多人对此其实很有疑惑,请让我慢慢分析. 逻辑概览 首先我们来看看两种方式各自的做法和流程是什么样的: 单 ...
- java平台学习笔记
java程序从编写源码开始到程序执行一共有三个阶段,编写期,编译期,运行期. 通常,人们都希望自己的程序更快(不仅仅是执行更快,也有编写更快),因此java在不断更新. java源码先通过javac编 ...
- 20175204 张湲祯 2018-2019-2《Java程序设计》
Arrays和String单元测试 一.类的作用 1.- String类 charAt String的charAt的作用是将字符串中第i个位置上的字符(从0开始计数)赋值给n,其用法为n=string ...
- java学习笔记05-运算符
算数运算符 +:相加 -:相减 *:相乘 /:相除 %:取余 ++:自增 --:自减 public static void main(String[] args) { int i = 10; int ...
- c#串口编程(转)
在单片机项目开发中,上位机也是一个很重要的部分,主要用于数据显示(波形.温度等).用户控制(LED,继电器等),下位机(单片机)与 上位机之间要进行数据通信的两种方式都是基于串口的: USB转串口 — ...
- ubuntu 18.04 配置远程ssh/远程ftp/远程vnc登陆
18.04相比过去采用了新的桌面,配置环境稍微有一些不同了. 首先是远程登录,windows用Tera Trem连接,ip地址得自己根据实际情况来. ubuntu上,sudo apt-get inst ...
- jQuery-委托事件和on方法注册事件
delegate注册委托事件 delegate--代理.委托 事件代理----事件最终不是由$("#first")执行,它只是代理元素 第一个参数:最终发生事件的元素 第二个参数: ...