【AI实践】阿里云方言文本转语音TTS

最近要做一些普通话和方言demo

找一个免费工具

免费在线文字转语音工具 | edge-tts 在线体验 (bingal.com)

还有一些方言在阿里云上找了下,基于官方demo改了一下

阿里云语音合成接口说明_智能语音交互(ISI)-阿里云帮助中心 (aliyun.com)

如何下载安装、使用语音合成PythonSDK及代码示例_智能语音交互(ISI)-阿里云帮助中心 (aliyun.com)

python 复制代码
# -*- coding: UTF-8 -*-

import time
import threading
import sys

import nls

URL="wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1"
TOKEN="xxx"  #参考https://help.aliyun.com/document_detail/450255.html获取token
APPKEY="xxx"       #获取Appkey请前往控制台:https://nls-portal.console.aliyun.com/applist



TEXT=['这是第一条测试语料,请欣赏','这是第二条测试语料,请欣赏']

#以下代码会根据上述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,
      	      	      	      	       token=TOKEN,
      	      	      	      	       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])
      	print("{}: session start".format(self.__id))
      	r = tts.start(self.__text, voice="cuijie", aformat="mp3",speech_rate=-250)
      	print("{}: tts done with result:{}".format(self.__id, r))

def multiruntest(num):
    for i in range(0, num):
        name = "thread" + str(i)
        t = TestTts(name, "tests/output_tts"+str(i)+".mp3")
        t.start(TEXT[i])
    
nls.enableTrace(True)
multiruntest(2)
相关推荐
2601_967979123 小时前
python中str函数怎么用?使用方法与注意事项详解
python·使用方法·字符串转换·注意事项·str函数
青少儿编程课堂3 小时前
蓝桥杯青少组图形化+信息素养+电子学会Scratch考级:校园口算闯关解析
c++·python·算法·bfs·信息学竞赛
fanruitian3 小时前
python 机器学习 交叉验证train_test_split 网格搜索GridSearchCV
开发语言·python·机器学习
前端精髓13 小时前
结构化输出with_structured_output(抽卡)
python·langchain
尹人入圣14 小时前
目前热门的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip
Nuanyt14 小时前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
吴卫斌14 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
2601_9679873715 小时前
Python——入门级(定义功能def函数)
python·函数·可变参数·默认参数·关键字参数
专注仿真17 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
外收内放17 小时前
Python基础语法练习题(75)
开发语言·python·学习