python发音机器人_python qq机器之 使用阿里云语音合成让机器人发送好听到炸裂的语音...
上一篇文章我们写了用python实现qq机器人的基本操作:xiaowei:使用python打造一个自己的QQ机器人 【基础篇】zhuanlan.zhihu.com
本篇文章,我们来尝试使用语音合成技术,让机器人发送语音消息。博主尝试了市面上大多数知名的语音合成服务商,最后选择了阿里云。先来听一下阿里云语音合成的效果:
【知乎不能插语音 我也不知道怎么操作 这里假装有语音 可以去我博客文章里听】
一 、 开通阿里云语音合成
开通免费版本后,进入控制台,创建一个新的项目:创建项目
然后进入你的项目,切换到“语音合成”,选择一个你喜欢的声音,点“发布上线”(上方有一个appkey,请记下来):合成配置
二、 阿里云接口调用之计算鉴权秘钥阿里云的鉴权秘钥(Access Token)是对所有阿里云服务都适用的一种秘钥,就是说任意项目要请求阿里云的接口,都需要计算这个秘钥(区别于TTS接口鉴权)。我们在适用语音合成接口的时候,需要先用阿里云的开发者id和秘钥计算出鉴权秘钥,然后在通过这个鉴权秘钥组合语音合成(TTS)的appkey,来请求语音合成接口。因为鉴权秘钥存在过期时间,最好的解决方法就是,每次请求语音合成接口,都先计算一遍这个秘钥。
Access Key: 阿里云开发者ID,又称为访问公钥。
Access Secret: 阿里云开发者秘钥,又称访问秘钥。
Access Token:通过Access Key 和 Access Secret 计算出来的鉴权秘钥,有时效性。
app key:项目的公钥,搭配Access Token来请求接口。
首先安装阿里云SDK核心库: 命令行执行 pip install aliyun-python-sdk-core
用python计算鉴权秘钥:
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
import json
def get_aliyun_secret():
client = AcsClient('你的开发者ID',
'你的开发者秘钥',
'cn-shanghai'
)
request = CommonRequest()
request.set_method('POST')
request.set_domain('nls-meta.cn-shanghai.aliyuncs.com')
request.set_version('2019-02-28')
request.set_action_name('CreateToken')
r = client.do_action_with_exception(request)
r = json.loads(r.decode())
return r['Token'].get('Id')
三、 阿里云接口调用之语音合成
语音合成文档: https://help.aliyun.com/document_detail/94737.html
语音合成带有python的SDK,但是无法pip安装,比较麻烦,所以我们采用Restful API形式(http调用)。
http调用的方式,我们只需要用requests的post即可,将相关参数post到阿里云接口,即可返回音频。
import requests
import base64
def tts(text):
data = {
'appkey':'你的appkey', #语音合成项目里的appkey
"text": text, #要语音合成的文字
'token':get_aliyun_secret(), #上一步的鉴权秘钥
'format':'mp3', #合成语音的格式
"sample_rate": "16000", #比特率
"volume":'90', #音量
"pitch_rate":'0', #语调
"speech_rate":'-250', #语速
"voice":'Siyue' #发音人 参数详见 https://help.aliyun.com/document_detail/84435.html
}
header = {
"Content-Type": "application/json;charset=UTF-8"
}
r = requests.post('https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/tts',data=json.dumps(data),headers=header)
return base64.b64encode(r.content).decode()
运行后会返回base64编码的语音。
四、使用酷Q pro
免费版的酷Q Air不支持发送语音,我们需要去下载一个酷Q pro,然后开个会员…
下载地址: https://cqp.cc/t/14901
然后按照上一篇文章的方法,配置酷Q http API。
五、发送语音
以发送群聊语音为例:
def send_record(group_id,text):
api_url = 'http://127.0.0.1:5700/send_msg'
data = {
'msg_type': 'group',
'group_id':group_id,
'message':'[CQ:record,file=base64://{}]'.format(tts(text))
}
requests.post(api_url,data=data)
调用这个方法,传入qq群号,和要发送的文本,即可直接把文字转成语音发送到群聊啦。
六、 完整代码
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
import json
import requests
accessKey = ''
accessSecret = ''
appKey = ''
botServerApi = 'http://127.0.0.1:5700/send_msg'
def get_aliyun_secret():
client = AcsClient(accessKey,accessSecret,'cn-shanghai')
request = CommonRequest()
request.set_method('POST')
request.set_domain('nls-meta.cn-shanghai.aliyuncs.com')
request.set_version('2019-02-28')
request.set_action_name('CreateToken')
r = client.do_action_with_exception(request)
r = json.loads(r.decode())
return r['Token'].get('Id')
def tts(text):
data = {
'appkey':'你的appkey', #语音合成项目里的appkey
"text": text, #要语音合成的文字
'token':get_aliyun_secret(), #上一步的鉴权秘钥
'format':'mp3', #合成语音的格式
"sample_rate": "16000", #比特率
"volume":'90', #音量
"pitch_rate":'0', #语调
"speech_rate":'-250', #语速
"voice":'Siyue' #发音人 参数详见 https://help.aliyun.com/document_detail/84435.html
}
header = {
"Content-Type": "application/json;charset=UTF-8"
}
r = requests.post('https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/tts',data=json.dumps(data),headers=header)
return base64.b64encode(r.content).decode()
def send_record(group_id,text):
api_url = 'http://127.0.0.1:5700/send_msg'
data = {
'msg_type': 'group',
'group_id':group_id,
'message':'[CQ:record,file=base64://{}]'.format(tts(text))
}
requests.post(api_url,data=data)
if __name__ == '__main__':
send_record(12345678,'今天天气真不错')
python发音机器人_python qq机器之 使用阿里云语音合成让机器人发送好听到炸裂的语音...相关推荐
- python基础框架_Python基础框架和工具-阿里云开发者社区
Python基础框架和工具 最近在学Python金融大数据分析,在安装Python进行大数据分析的环境时遇到很多问题,例如:在安装pandas包时候就要到各种错误,总是缺少很多安装包,最后发现利用Py ...
- python%怎么算_python怎么算log-问答-阿里云开发者社区-阿里云
! /usr/bin/env python -- coding: utf-8 -- """ logging配置 """ import os ...
- python做泰勒展开_python中的泰勒展开-问答-阿里云开发者社区-阿里云
也许有点过头了,但这里有个不错的解决方法,用辛普森法来计算无穷级数. from sympy.abc import k from sympy import Sum, oo as inf import m ...
- 阿里云RPA(机器人流程自动化)干货系列之二:认识RPA(下)
2019独角兽企业重金招聘Python工程师标准>>> 导读:本文是阿里云RPA(机器人流程自动化)干货系列之二,主要介绍了RPA的发展齐纳经和主要使用场景有哪些,目前国内外主流的R ...
- 阿里云RPA(机器人流程自动化)干货系列之三:阿里云RPA介绍
本文是阿里云RPA(机器人流程自动化)干货系列之三,详细介绍了阿里云RPA的产生背景.技术特点.功能特性.非功能指标以及发展现状等. 一.产生背景 在2011年,随着阿里巴巴集团的各项业务突飞猛进,集 ...
- 阿里云RPA(机器人流程自动化)干货系列之一:认识RPA(上)
本文是阿里云RPA(机器人流程自动化)干货系列的开山之作,全面.详细的剖析了RPA的基本概念.给企业带来的价值点以及RPA的优劣势分析. 一.什么是RPA? 人类社会进入21世纪的第一个十年之后,全球 ...
- 阿里云RPA(机器人流程自动化)干货系列之五:业务流程梳理方法...
导读:本文是阿里云RPA(机器人流程自动化)干货系列之五,详细介绍了在开发阿里云RPA机器人应用之前对客户的业务流程进行详细.全面地梳理,并识别出流程中的关键点和换位思考点,为后续应用开发打好基础. ...
- 阿里云RPA(机器人流程自动化)干货系列之五:业务流程梳理方法
导读:本文是阿里云RPA(机器人流程自动化)干货系列之五,详细介绍了在开发阿里云RPA机器人应用之前对客户的业务流程进行详细.全面地梳理,并识别出流程中的关键点和换位思考点,为后续应用开发打好基础. ...
- 阿里云客服机器人人工服务配置文档
配置之前需要购买相应的产品,获得相应的授权使用 阿里云客服机器人配置文档 1.登录阿里云 链接: https://account.aliyun.com/login/login.htm?oauth_ca ...
最新文章
- 视觉导航的神经拓扑SLAM
- 2020上半年收集到的优质AI文章 – 计算机视觉
- 明明输出电压小于5V,单片机ADC测量到数值却一直为5V,解决方法
- 算法笔记-两数之和、三数之和、四数之和(LeetCode)
- js中字符串和数组的使用
- 凭借K2 SmartObject框架,在SharePoint中集成数据
- 解锁Android性能优化的五大误区!满满干货指导
- mysql5.7 设置远程访问
- Android之ListView/GridView 优化
- 《21天学通Java(第6版)》—— 2.11 练习
- 基于STM32单片机设计指纹考勤机+上位机管理
- 富士施乐 DocuCentre-V 3065 打印机远程命令执行漏洞
- nginx学习,看这一篇就够了(转)
- 移动app测试经验分享
- An Indexable Time Series Dimensionality Reduction Method for Maximum Deviation Reduction and Simi...
- JAVA Spring
- HTMLCSS常用英语词汇
- 护眼灯值不值得买?专业眼科医生盘点十大护眼台灯排行榜
- 双网卡同时上内外网的方法
- 深入理解java虚拟机 新生代_深入理解java虚拟机:笔记