python3调用阿里云语音服务

步骤 1 创建阿里云账号,包括语音服务里的企业实名

为了访问语音服务,您需要有一个阿里云账号。如果没有,可首先按照如下步骤创建阿里云账号:

  1. 访问阿里云 官方网站,单击页面上的 免费注册 按钮。
  2. 按照屏幕提示完成注册流程并进行企业实名认证语音服务只支持企业实名认证用户使用。为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用。具体实名认证流程,请参考 这里

步骤 2 获取阿里云访问密钥

需要设置为AliyunDyvmsFullAccess,管理语音服务(VMS)的权限。

步骤 3 在控制台完成号码与模板的申请,获得调用接口必备的参数

在“语音号码”页面完成资质的申请,号码的购买

在“文本转语音模板”页面完成模板申请,或,在“语音通知文件”页面完成文件上传

入参列表

参数名称参数类型必填与否样例取值参数说明
CalledShowNumber String 必须 4001112222 被叫显号
CalledNumber String 必须 13700000000 被叫号码
TtsCode String 必须 TTS_10001 TTS文本模板Code
TtsParam String 可选 {“AckNum”:”123456”} 替换TTS模板中变量的JSON串
OutId String 可选 abcdefgh 预留给调用方使用的ID, 最终会通过在回执消息中将此ID带回给调用方

出参列表

出参名称出参类型样例取值参数说明
RequestId String 8906582E-6722 请求ID
Code String OK 状态码-返回OK代表请求成功,其他错误码详见错误码列表
Message String 请求成功 状态码的描述
CallId String 134523^4351232 调用的回执ID

下载的SDK和DEMO包里,

语音产品相关的SDK及DEMO程序

文件清单:

  1. api_demo(语音服务API接口调用DEMO工程)
  2. api_sdk(语音服务API接口依赖的SDK)
  3. msg_demo(语音回执消息的DEMO)
  4. msg_sdk(语音回执消息的SDK)

对于我们来说,只要用到api_demo文件夹即可。里面的aliyun-python-sdk-core也没用,这个是给python2安装sdk用的;

对于我们python3来说,直接安装核心库pip install aliyun-python-sdk-core-v3即可

我们实际只使用到

文本转语音外呼API(SingleCallByTts)----TTS方式

代码如下:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#Author:lzd

# import sys
import importlib,sys
from aliyunsdkdyvmsapi.request.v20170525 import SingleCallByTtsRequest
# from aliyunsdkdyvmsapi.request.v20170525 import SingleCallByVoiceRequest
from aliyunsdkcore.client import AcsClient
import uuid
from aliyunsdkcore.profile import region_provider

"""
语音业务调用接口示例,版本号:v20170525

Created on 2017-06-12

@author: seven
"""

# reload(sys)
importlib.reload(sys)
# sys.setdefaultencoding('utf8')

# 注意:不要更改
REGION = "cn-hangzhou"
PRODUCT_NAME = "Dyvmsapi"
DOMAIN = "dyvmsapi.aliyuncs.com"

# ACCESS_KEY_ID/ACCESS_KEY_SECRET 根据实际申请的账号信息进行替换
ACCESS_KEY_ID = "xxxxxxxxxxxxxx"
ACCESS_KEY_SECRET = "xxxxxxxxxxxxxxxx"

acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
region_provider.add_endpoint(PRODUCT_NAME,REGION,DOMAIN)

def tts_call(business_id, called_number, called_show_number, tts_code, tts_param=None):
    ttsRequest = SingleCallByTtsRequest.SingleCallByTtsRequest()
    # 申请的语音通知tts模板编码,必填
    ttsRequest.set_TtsCode(tts_code)
    # 设置业务请求流水号,必填。后端服务基于此标识区分是否重复请求的判断
    ttsRequest.set_OutId(business_id)
    # 语音通知的被叫号码,必填。
    ttsRequest.set_CalledNumber(called_number)
    # 语音通知显示号码,必填。
    ttsRequest.set_CalledShowNumber(called_show_number)
    # tts模板变量参数
    if tts_param is not None:
        ttsRequest.set_TtsParam(tts_param)
    # 调用tts文本呼叫接口,返回json
    ttsResponse = acs_client.do_action_with_exception(ttsRequest)

    # TODO 业务处理

    return ttsResponse

__name__ = 'tts'
if __name__ == 'tts':
    __business_id = uuid.uuid1()
    print(__business_id)
    params = "{"weizhi":"杭州机房","name":"测试服务器","title":"测试"}"
    print((tts_call(__business_id, "13900000000", "0125456655", "TTS_4564654", params)).decode(encoding='utf-8'))

  

原文地址:https://www.cnblogs.com/itfat/p/8393181.html