调用阿里云语音合成Python版SDK

一、阿里云介绍

  阿里云创立于2009年,是全球领先的云计算及人工智能科技公司,致力于以在线公共服务的方式,提供安全、可靠的计算和数据处理能力,让计算和人工智能成为普惠科技。阿里云服务着制造、金融、政务、交通、医疗、电信、能源等众多领域的领军企业,包括中国联通、12306、中石化、中石油、飞利浦、华大基因等大型企业客户,以及微博、知乎、锤子科技等明星互联网公司。
  阿里云在语音交互技术方面也是在全国排名里名列前茅的,同时阿里云免费提供语音合成api进行使用,调用次数不限,给广大的程序猿提供了巨大的便利。

二、调用阿里云步骤如下

1、首先账号注册,再进行个人认证或者进行企业认证。
2、选择智能语音交互
在这里插入图片描述
3、选择全部项目,点击创建项目,从而获得项目Appkey
在这里插入图片描述
4、鼠标放置头像上得到小框,点击AccessKey管理
在这里插入图片描述
5、创建AccessKey,获得ID和密码,点击查看Secret进行查看
在这里插入图片描述
6、点击服务管理与开通,再点击语音合成,接着点击产品文档
在这里插入图片描述
7、选择Python SDK,对SDK进行下载
在这里插入图片描述

三、代码如下

import time
import threading
import sys
# -*- coding: utf-8 -*-
import nls
import wave

URL="wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1"
AKID="LTAI5tPmMMqx7b4Hk7UQQK9Y"
AKKEY="M4IlUfhpeb6UgpAvelJFtvlwhEYcCO"
APPKEY="kJ8eijgLNnS4rpS1"


TEXT='222ng'#'大壮正想去摘取花瓣,谁知阿丽和阿强突然内讧,阿丽拿去手枪向树干边的阿强射击,两声枪响,阿强直接倒入水中'
#以下代码会根据上述TEXT文本反复进行语音合成
class TestTts:
    def __init__(self, tid, test_file):
        self.__th = threading.Thread(target=self.__test_run)
        self.__id = tid
        self.__test_file = test_file
   
    def start(self, text):
        self.__text = text
        self.__f = open(self.__test_file, "wb")
        self.__th.start()
    
    def test_on_metainfo(self, message, *args):
        print("on_metainfo message=>{}".format(message))  

    def test_on_error(self, message, *args):
        print("on_error args=>{}".format(args))

    def test_on_close(self, *args):
        print("on_close: args=>{}".format(args))
        try:
            self.__f.close()
        except Exception as e:
            print("close file failed since:", e)

    def test_on_data(self, data, *args):
        try:
            self.__f.write(data)
        except Exception as e:
            print("write data failed:", e)

    def test_on_completed(self, message, *args):
        print("on_completed:args=>{} message=>{}".format(args, message))


    def __test_run(self):
        print("thread:{} start..".format(self.__id))
        tts = nls.NlsSpeechSynthesizer(
                    url=URL,
                    akid=AKID,
                    aksecret=AKKEY,
                    appkey=APPKEY,
                    on_metainfo=self.test_on_metainfo,
                    on_data=self.test_on_data,
                    on_completed=self.test_on_completed,
                    on_error=self.test_on_error,
                    on_close=self.test_on_close,
                    callback_args=[self.__id]
                )

        # while True:
        print("{}: session start".format(self.__id))
        r = tts.start(self.__text,voice="ailun",aformat="wav", speech_rate=-200)#,aformat="wav"
        print("{}: tts done with result:{}".format(self.__id, r))
        # time.sleep(5)

def multiruntest():
    # for i in range(0, num):
    name = "thread" #+ str(i)
    t = TestTts(name, "1.wav")
    t.start(TEXT)

nls.enableTrace(True)
multiruntest()

四、总结

  1. 进行调用时所用到的模块:setuptools、aliyun-python-sdk-core-v3(该模块为调用阿里云核心模块)、requirements。
  2. 调用阿里云生成语音文件格式有三个分别为"pcm", “wav”, “mp3”,但是默认为“pcm”,一般的播放器无法正常播放出来,故需将下方代码进行改动。
      r = tts.start(self.__text, voice="ailun")
    
    改为
    r = tts.start(self.__text,voice="ailun",aformat="wav")
    
    与此同时下方代码也需改动。
    t = TestTts(name, "tests/test_tts.pcm")
    
    改为
    t = TestTts(name, "tests/test_tts.wav")
    
  3. start函数参数说明
    在这里插入图片描述

感谢各位大佬阅读,如有错误请各位大佬在评论区指出。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一条慢慢游的鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值