上一篇文章我们写了用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机器之 使用阿里云语音合成让机器人发送好听到炸裂的语音...相关推荐

  1. python基础框架_Python基础框架和工具-阿里云开发者社区

    Python基础框架和工具 最近在学Python金融大数据分析,在安装Python进行大数据分析的环境时遇到很多问题,例如:在安装pandas包时候就要到各种错误,总是缺少很多安装包,最后发现利用Py ...

  2. python%怎么算_python怎么算log-问答-阿里云开发者社区-阿里云

    ! /usr/bin/env python -- coding: utf-8 -- """ logging配置 """ import os ...

  3. python做泰勒展开_python中的泰勒展开-问答-阿里云开发者社区-阿里云

    也许有点过头了,但这里有个不错的解决方法,用辛普森法来计算无穷级数. from sympy.abc import k from sympy import Sum, oo as inf import m ...

  4. 阿里云RPA(机器人流程自动化)干货系列之二:认识RPA(下)

    2019独角兽企业重金招聘Python工程师标准>>> 导读:本文是阿里云RPA(机器人流程自动化)干货系列之二,主要介绍了RPA的发展齐纳经和主要使用场景有哪些,目前国内外主流的R ...

  5. 阿里云RPA(机器人流程自动化)干货系列之三:阿里云RPA介绍

    本文是阿里云RPA(机器人流程自动化)干货系列之三,详细介绍了阿里云RPA的产生背景.技术特点.功能特性.非功能指标以及发展现状等. 一.产生背景 在2011年,随着阿里巴巴集团的各项业务突飞猛进,集 ...

  6. 阿里云RPA(机器人流程自动化)干货系列之一:认识RPA(上)

    本文是阿里云RPA(机器人流程自动化)干货系列的开山之作,全面.详细的剖析了RPA的基本概念.给企业带来的价值点以及RPA的优劣势分析. 一.什么是RPA? 人类社会进入21世纪的第一个十年之后,全球 ...

  7. 阿里云RPA(机器人流程自动化)干货系列之五:业务流程梳理方法...

    导读:本文是阿里云RPA(机器人流程自动化)干货系列之五,详细介绍了在开发阿里云RPA机器人应用之前对客户的业务流程进行详细.全面地梳理,并识别出流程中的关键点和换位思考点,为后续应用开发打好基础. ...

  8. 阿里云RPA(机器人流程自动化)干货系列之五:业务流程梳理方法

    导读:本文是阿里云RPA(机器人流程自动化)干货系列之五,详细介绍了在开发阿里云RPA机器人应用之前对客户的业务流程进行详细.全面地梳理,并识别出流程中的关键点和换位思考点,为后续应用开发打好基础. ...

  9. 阿里云客服机器人人工服务配置文档

    配置之前需要购买相应的产品,获得相应的授权使用 阿里云客服机器人配置文档 1.登录阿里云 链接: https://account.aliyun.com/login/login.htm?oauth_ca ...

最新文章

  1. 视觉导航的神经拓扑SLAM
  2. 2020上半年收集到的优质AI文章 – 计算机视觉
  3. 明明输出电压小于5V,单片机ADC测量到数值却一直为5V,解决方法
  4. 算法笔记-两数之和、三数之和、四数之和(LeetCode)
  5. js中字符串和数组的使用
  6. 凭借K2 SmartObject框架,在SharePoint中集成数据
  7. 解锁Android性能优化的五大误区!满满干货指导
  8. mysql5.7 设置远程访问
  9. Android之ListView/GridView 优化
  10. 《21天学通Java(第6版)》—— 2.11 练习
  11. 基于STM32单片机设计指纹考勤机+上位机管理
  12. 富士施乐 DocuCentre-V 3065 打印机远程命令执行漏洞
  13. nginx学习,看这一篇就够了(转)
  14. 移动app测试经验分享
  15. An Indexable Time Series Dimensionality Reduction Method for Maximum Deviation Reduction and Simi...
  16. JAVA Spring
  17. HTMLCSS常用英语词汇
  18. 护眼灯值不值得买?专业眼科医生盘点十大护眼台灯排行榜
  19. 双网卡同时上内外网的方法
  20. 深入理解java虚拟机 新生代_深入理解java虚拟机:笔记

热门文章

  1. 完美解决ghost win10系统缺少hh.exe打不开chm
  2. KubeSphere 3.2.1 正式发布,多项功能优化来袭
  3. JavaScript 经典例子
  4. 前端笔试题汇总 2018/12/04 (2)
  5. C/C++记录程序运行时间
  6. php安装vld扩展
  7. matlab二维重建程序,matlab三维重建程序
  8. zookeeper的下载与安装
  9. 物联网平台是什么,我们怎么才能选择最合适的物联网平台?
  10. 树莓派教程-串口调试