一、阿里云介绍
阿里云创立于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()
四、总结
- 进行调用时所用到的模块:setuptools、aliyun-python-sdk-core-v3(该模块为调用阿里云核心模块)、requirements。
- 调用阿里云生成语音文件格式有三个分别为"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")
- start函数参数说明