sparkTTS window 安装

SparkTTS 的简介

        Spark-TTS是一种基于SpardAudio团队提出的 BiCodec 构建的新系统,BiCodec 是一种单流语音编解码器,可将语音策略性地分解为两种互补的标记类型:用于语言内容的低比特率语义标记和用于说话者特定属性的固定长度全局标记。这种解开的表示与 Qwen2.5 LLM 和思路链 (CoT) 生成方法相结合,既可以实现粗粒度属性控制(例如性别、音高水平),也可以实现细粒度参数调整(例如精确的音高值、语速)。 

它是香港科技大学,上海交大,南洋技术大学等单位组成的团队开发的,与香港中文大学的MaskGCT 相比,SparkTTS 使用了大模型。

SparkTTS的结构

MaskGCT 结构

测试网站

你可以在下列网站做一些测试。

Spark TTS - Text-to-Speech AI Model

Windows 安装 

下载 Spark-TTS

  • Go to Spark-TTS GitHub
  • Click "Code" > "Download ZIP", then extract it.

2. 建立   Conda 环境

conda create -n sparktts python=3.12 -y
conda activate sparktts

3. Install Dependencies

pip install -r requirements.txt

Install PyTorch (Auto-Detect CUDA or CPU)

我使用的是RTX4080 显卡。安装cuda 12.4,安装的PyTorch 为2.5.1+cu124。

下载cuda 12.4.

安装 PyTorch  +cu124

conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia

5. Download the Model

mkdir pretrained_models
git clone https://huggingface.co/SparkAudio/Spark-TTS-0.5B pretrained_models/Spark-TTS-0.5B

遇到问题

 运行python webUI.py 时出现:

variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

办法

1 删除 libiomp5md.dll

D:\Users\Yao\anaconda3\Library\bin\libiomp5md.dll

2 设置临时环境变量:KMP_DUPLICATE_LIB_OK=TRUE

  set KMP_DUPLICATE_LIB_OK=TRUE

也在windows 下设置了。

结果

效果明显比MaskGCT 好。转码速度快。 

使用Python 调用SparkTTS

改写了使用python 调用SparkTTS 的方式

from datetime import datetime
import os
import soundfile as sf
import torch
import logging
from cli.SparkTTS import SparkTTS
from sparktts.utils.token_parser import LEVELS_MAP_UI
 # Initialize model

def initialize_model(model_dir="pretrained_models/Spark-TTS-0.5B", device=0):
    """Load the model once at the beginning."""
    logging.info(f"Loading model from: {model_dir}")
    device = torch.device(f"cuda:{device}")
    model = SparkTTS(model_dir, device)
    return model
def run_tts(
    text,
    model,
    prompt_text=None,
    prompt_speech=None,
    gender=None,
    pitch=None,
    speed=None,
    save_dir="example/results",
):
    """Perform TTS inference and save the generated audio."""
    logging.info(f"Saving audio to: {save_dir}")

    if prompt_text is not None:
        prompt_text = None if len(prompt_text) <= 1 else prompt_text

    # Ensure the save directory exists
    os.makedirs(save_dir, exist_ok=True)

    # Generate unique filename using timestamp
    timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
    save_path = os.path.join(save_dir, f"{timestamp}.wav")

    logging.info("Starting inference...")

    # Perform inference and save the output audio
    with torch.no_grad():
        wav = model.inference(
            text,
            prompt_speech,
            prompt_text,
            gender,
            pitch,
            speed,
        )

        sf.write(save_path, wav, samplerate=16000)

    logging.info(f"Audio saved at: {save_path}")

    return save_path

 # Define callback function for voice cloning
def voice_clone(text, prompt_text, prompt_wav_upload, prompt_wav_record):
     """
     Gradio callback to clone voice using text and optional prompt speech.
     - text: The input text to be synthesised.
     - prompt_text: Additional textual info for the prompt (optional).
     - prompt_wav_upload/prompt_wav_record: Audio files used as reference.
     """
     prompt_speech = prompt_wav_upload if prompt_wav_upload else prompt_wav_record
     prompt_text_clean = None if len(prompt_text) < 2 else prompt_text

     audio_output_path = run_tts(
         text,
         model,
         prompt_text=prompt_text_clean,
         prompt_speech=prompt_speech
     )
     return audio_output_path

 # Define callback function for creating new voices
def voice_creation(text, gender, pitch, speed):
     """
     Gradio callback to create a synthetic voice with adjustable parameters.
     - text: The input text for synthesis.
     - gender: 'male' or 'female'.
     - pitch/speed: Ranges mapped by LEVELS_MAP_UI.
     """
     pitch_val = LEVELS_MAP_UI[int(pitch)]
     speed_val = LEVELS_MAP_UI[int(speed)]
     audio_output_path = run_tts(
         text,
         model,
         gender=gender,
         pitch=pitch_val,
         speed=speed_val
     )
     return audio_output_path
 #
 
model_dir="pretrained_models/Spark-TTS-0.5B"
device=0
model = initialize_model(model_dir, device=device)
text="仅仅懂得应用科学本身是不够的!对人类本身及其命运的关心必然总是培养出努力学习各种技术的兴趣;对尚未解决的物质起源和商品分配的问题的关心——为了我们思想意识的建立,将会给整个人类带来幸福而不是灾难。"
#prompt_wav_upload="E:\yao2025\Spark-TTS-main\src\demos\鲁豫\luyu_zh.wav"
prompt_wav_upload="E:\yao2025\yaoaudio.wav"
prompt_text="朋友们,今天我要对你们说,尽管眼下困难重重,但我依然怀有一个梦。这个梦深深植根于美国梦之中。我梦想有一天,这个国家将会奋起,实现其立国信条的真谛,我们认为这些真理不言而喻:人人生而平等。我梦想有一天,在佐治亚洲的红色山岗上,昔日奴隶的儿子能够同昔日奴隶主的儿子同席而坐,亲如手足。"
prompt_wav_record=None
print("TTS ....")
audio_output_path=voice_clone(text, prompt_text, prompt_wav_upload, prompt_wav_record)
"""
pitch,音调
speed 速度 
通过下面的map
LEVELS_MAP_UI = {
    1: 'very_low',
    2: 'low',
    3: 'moderate',
    4: 'high',
    5: 'very_high'
}
"""
#audio_output_path=voice_creation(text,"female","5","5")
print(audio_output_path)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/985037.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高效微调算法 (Parameter-Efficient Fine-tuning, PEFT) 详解

引言 随着预训练语言模型 (Pre-trained Language Models, PLMs) 规模的持续膨胀&#xff0c;全参数微调 (Full Fine-tuning) 模式的局限性日益凸显。 全参数微调在下游任务上取得了显著的性能提升&#xff0c;但其高昂的计算和存储成本&#xff0c;以及为每个下游任务维护完整…

第十五届蓝桥杯大学B组(握手问题、小球反弹、好数)

一、握手问题 思路1&#xff1a; 1)先让所有人相互握手 第一个人49次 第二个人48次 第五十个人0次 共计01249 2)减去7个没握手的 016 #include<stdio.h> int main() {int a 50*49/2 - 7*6/2;printf("%d\n",a);return 0; } 运行结果&#xf…

若依框架-给sys_user表添加新字段并获取当前登录用户的该字段值

目录 添加字段 修改SysUser类 修改SysUserMapper.xml 修改user.js 前端获取字段值 添加字段 若依框架的sys_user表是没有age字段的&#xff0c;但由于业务需求&#xff0c;我需要新添加一个age字段&#xff1a; 修改SysUser类 添加age字段后&#xff0c;要在SysUser类 …

基于langchain+llama2的本地私有大语言模型实战

Langchain功能 LangChian 作为一个大语言模型&#xff08;LLM, Large Language Model&#xff09;开发框架&#xff0c;是 LLM 应用架构的重要一环。借助 LangChain&#xff0c;我们可以创建各种应用程序&#xff0c;包括聊天机器人和智能问答工具。 AI模型&#xff1a;包含各…

再聊 Flutter Riverpod ,注解模式下的 Riverpod 有什么特别之处,还有发展方向

三年前我们通过 《Flutter Riverpod 全面深入解析》 深入理解了 riverpod 的内部实现&#xff0c;而时隔三年之后&#xff0c;如今Riverpod 的主流模式已经是注解&#xff0c;那今天就让我们来聊聊 riverpod 的注解有什么特殊之处。 前言 在此之前&#xff0c;我们需要先回忆…

uniapp+Vue3 组件之间的传值方法

一、父子传值&#xff08;props / $emit 、ref / $refs&#xff09; 1、props / $emit 父组件通过 props 向子组件传递数据&#xff0c;子组件通过 $emit 触发事件向父组件传递数据。 父组件&#xff1a; // 父组件中<template><view class"container">…

Kafka×DeepSeek:智能决策破取经八十一难!

《西游记》的故事中&#xff0c;唐僧师徒四人历经九九八十一难&#xff0c;从东土大唐前往西天取经。一路上&#xff0c;火焰山酷热难耐、通天河水位忽高忽低、妖怪神出鬼没…… 现在&#xff0c;唐僧师徒取经路上的种种难题&#xff0c;在KafkaDeepSeek双引擎加持下有了全新解…

C# 委托使用详解

总目录 前言 在C#中&#xff0c;委托&#xff08;Delegate&#xff09; 是一种类型安全的函数指针机制&#xff0c;它允许我们将方法作为参数传递给其他方法&#xff0c;或者将方法存储在变量中。委托在 C# 中有广泛的应用&#xff0c;特别是在事件处理、异步编程和回调机制中…

axure11安装教程包含下载、安装、汉化、授权(附安装包)图文详细教程

文章目录 前言一、axure11安装包下载二、axure11安装教程1.启动安装程序2.安装向导界面3.安装协议协议页面2.选择安装位置3.开始安装4.完成安装 三、axure11汉化教程1.axure11汉化包2.axure11汉化设置 四、axure11授权教程1.打开axure112.设置使用方式3.输入许可证号4.axure11安…

如何使用Opentelemetry+jaeger对Go与Java项目实现分布式链路追踪

本文介绍![如何使用Opentelemetryjaeger实现分布式链路追踪] 关于opentelemetry的介绍可以看下面的文章 https://blog.csdn.net/qq_62368250/article/details/143516314本文中相关图片以及源代码地址 https://github.com/wuchenyanghaoshuai/others/blob/main/step39/README.…

【数据分享】2001-2024年我国逐年植被净初级生产力(NPP)数据

植被净初级生产力&#xff08;Net Primary Productivity&#xff0c;NPP&#xff09;是生态学中的一个重要概念&#xff0c;表示单位面积植被在特定时间内吸收的净光合有机物&#xff0c;是衡量生态系统中植物通过光合作用所产生的有机物质减去植物呼吸作用消耗的有机物质的量&…

靶场(七)---靶场精做小白思考

启程&#xff1a; 先扫一遍全端口发现&#xff0c;有很多tcp端口全部被关闭了&#xff0c;于是我又去看看他们的udp端口&#xff0c;发现也是半死不活的样子&#xff0c;那没办法只能把udp端口当作备选方案&#xff08;其实这个udp什么用都没有就是关闭的状态不用关&#xff0…

Linux开发工具----vim

目录 Linux编辑器-vim使用 1. vim的基本概念 正常/普通/命令模式(Normal mode) 插入模式(Insert mode) 底行模式(last line mode) 2. vim的基本操作 3. vim正常模式命令集 4. vim底行模式命令集 5. vim操作总结 (本篇文章相当于vim常用命令字典) Linux编辑器-vim使用 我们先来看…

【设计模式】设计模式的分类与组织

文章目录 前言一、设计模式的分类1. 目的准则2. 范围准则 二、设计模式的细分1.创建型模式的细分2.结构型模式的细分3.行为型模式的细分 三、设计模式的关联结论 前言 在软件开发中&#xff0c;设计模式是一种解决特定问题的最佳实践。由于设计模式种类繁多&#xff0c;理解它…

Vue3实战学习(Element-Plus常用组件的使用(输入框、下拉框、单选框多选框、el-image图片))(上)(5)

目录 一、Vue3工程环境配置、项目基础脚手架搭建、Vue3基础语法、Vue3集成Element-Plus的详细教程。(博客链接如下) 二、Element-Plus常用组件使用。 &#xff08;1&#xff09;el-input。(input输入框) <1>正常状态的el-input。 <2>el-input的disable状态。 <3…

AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘

AttributeError: module backend_interagg has no attribute FigureCanvas 这个错误通常是由于 Matplotlib 的后端配置问题引起的。具体来说&#xff0c;Matplotlib 在尝试加载某个后端时&#xff0c;发现该后端模块中缺少必要的属性&#xff08;如 FigureCanvas&#xff09;&a…

网络安全基础与应用习题 网络安全基础答案

1.列出并简要给出SSH的定义。 正确答案&#xff1a; 答&#xff1a;6.10传输层协议&#xff1a;提供服务器身份验证、数据保密性和数据完整性&#xff0c;并具有前向保密性&#xff08;即&#xff0c;如果在一个会话期间密钥被破坏&#xff0c;则知识不会影响早期会话的安全性&…

文件上传复现

1、什么是文件上传漏洞&#xff1f; 答&#xff1a;文件上传漏洞是指攻击者通过上传恶意文件到服务器、从而执行任意代码、获取系统权限或者破坏系统安全的漏洞、常见于允许用户上传文件的Web应用程序中。 2. 文件上传漏洞形成原因 未验证文件类型&#xff1a;未对上传文件的…

【网络安全工程】任务12:网络安全设备

目录 一、防火墙​ 1、作用​ 2、配置方式​ 3、存在的漏洞​ 二、入侵检测系统&#xff08;IDS&#xff09;和入侵防御系统&#xff08;IPS&#xff09;​ 1、作用​ 2、配置方式​ 3、存在的漏洞​ 三、防病毒网关​ ​1、作用​ 2、配置方式​ 3、存在的漏洞​ …

Docker容器与宿主机目录映射深度解析

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、Docker容器与宿主机目录映射基础原理 在深入了解如何查询 Docker 容器目录在宿主机的映射目录之前&#xff0c;有必要先明晰其背后的基础原理。Docker 容器通过挂载&#xff08;mount&#xff09;机制将宿主机的…