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

一、阿里云介绍

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

二、调用阿里云步骤如下

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

三、代码如下

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函数参数说明
    调用阿里云语音合成Python版SDK_第7张图片

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

你可能感兴趣的:(python项目,阿里云,python,语音识别)