当前位置: 首页 > news >正文

Spark-TTS 使用

 1.开发背景

        上一章节使用了 MegaTTS3 实现文本转语音,但是后面才发现只能使用官方的语言包,没看到克隆功能,所以重新找了一个可以克隆语音的开源模型。

2.开发需求

        在 Ubuntu 下实现 Spark-TTS 的部署,实现官方语音克隆,根据自定义文本输出语音。

3.开发环境

        Ubuntu20.04 + Conda + Spark-TTS + RTX5060TI

4.实现步骤

4.1 安装环境

# 创建环境 python 版本建议 3.10 以上
conda create -n sparktts python=3.12# 进入环境
conda activate sparktts # 退出环境
conda deactivate

4.2 获取源码

4.2.1 修改网络配置

        如果不修改网络配置可能会导致克隆端口访问失败,可选

sudo vi /etc/resolv.conf
#nameserver 127.0.0.53
options edns0 trust-adnameserver 8.8.8.8
nameserver 8.8.4.4
4.2.2 下载源码
# 克隆开源源码
git clone https://gitee.com/mirrors/Spark-TTS.git

4.3 安装环境

# 进入环境 这个很重要
conda activate sparktts # 进入源码
cd Spark-TTS# 安装相关环境
pip install -r requirements.txt
4.3.1 重装 Pytorch 
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu129

4.4 运行推理

4.4.1 下载模型
# 下载权重文件 注意下载路径
mkdir -p pretrained_models
cd pretrained_models
git clone https://www.modelscope.cn/SparkAudio/Spark-TTS-0.5B.git
4.4.2 官方推理
cd example
bash infer.sh
 4.4.3 克隆推理

        准备一段语音,可以是自己的,这里准备了录音 yjh.wav。照抄 infer.sh 如下

(sparktts) yangjinghui@MICROSO-9VFB07B:~/code/py312/Spark-TTS/example$ cat yjh.sh
#!/bin/bash# Copyright (c) 2025 SparkAudio
#               2025 Xinsheng Wang (w.xinshawn@gmail.com)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.# Get the absolute path of the script's directory
script_dir=$(dirname "$(realpath "$0")")# Get the root directory
root_dir=$(dirname "$script_dir")# Set default parameters
device=0
save_dir='example/results'
model_dir="pretrained_models/Spark-TTS-0.5B"
#text="我都服了你们这群老六了~~~,整天在搞三搞四的,一点正事都不敢,你大爷的!"
text="我觉得吧,您说的也不一定是对的,我是不会听你的。"
prompt_text="我觉得吧,您说得对。我会按照您说的方法去做的,好吧。"
prompt_speech_path="example/yjh.wav"# Change directory to the root directory
cd "$root_dir" || exitsource sparktts/utils/parse_options.sh# Run inference
python -m cli.inference \--text "${text}" \--device "${device}" \--save_dir "${save_dir}" \--model_dir "${model_dir}" \--prompt_text "${prompt_text}" \--prompt_speech_path "${prompt_speech_path}"

        主要修改 text、prompt_text 和 prompt_speech_path,prompt_text 与语音内容保持一致

(sparktts) yangjinghui@MICROSO-9VFB07B:~/code/py312/Spark-TTS/example$ sh yjh.sh
yjh.sh: 37: source: not found
2025-07-26 09:33:51,283 - INFO - Using model from: pretrained_models/Spark-TTS-0.5B
2025-07-26 09:33:51,283 - INFO - Saving audio to: example/results
2025-07-26 09:33:51,359 - INFO - Using CUDA device: cuda:0
/home/yangjinghui/application/anaconda3/envs/sparktts/lib/python3.12/site-packages/torch/nn/utils/weight_norm.py:144: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.WeightNorm.apply(module, name, dim)
Missing tensor: mel_transformer.spectrogram.window
Missing tensor: mel_transformer.mel_scale.fb
2025-07-26 09:33:58,138 - INFO - Starting inference...
Setting `pad_token_id` to `eos_token_id`:None for open-end generation.
2025-07-26 09:34:02,434 - INFO - Audio saved at: example/results/20250726093358.wav

        运行效果一般般吧

http://www.lryc.cn/news/600536.html

相关文章:

  • oracle数据库表空间碎片整理
  • 字节跳动正式开源AI智能体开发平台Coze
  • flink查看taskManager日志
  • 【MySQL】深入浅出事务:保证数据一致性的核心武器
  • Qt 与 WebService 交互开发
  • 实现网页访问/接口调用KernelMemory
  • ACOT Buck的dc 精度问题及稳定性
  • HTML5 新特性:MutationObserver 详解
  • 最小生成树:Kruskal与Prim算法
  • C#其他知识点
  • 前端组件梳理
  • mount: /mnt/sd: wrong fs type, bad option, bad superblock on /dev/mmcblk1
  • 嵌入式硬件篇---有线串口通信问题
  • GitHub的免费账户的存储空间有多少?
  • PHP语法高级篇(六):面向对象编程
  • vue子组件关闭自己的方式(事件触发)
  • React入门学习——指北指南(第三节)
  • Netty中DefaultChannelPipeline源码解读
  • 「iOS」——内存五大分区
  • 【C语言】深入理解C语言中的函数栈帧:从底层揭秘函数调用机制
  • RabbitMQ--消息丢失问题及解决
  • 【Vue2】结合chrome与element-ui的网页端条码打印
  • GRE和MGRE综合实验
  • 深入解析三大Web安全威胁:文件上传漏洞、SQL注入漏洞与WebShell
  • 字节跳动扣子 Coze 宣布开源:采用 Apache 2.0 许可证,支持商用
  • 2025.7.26字节掀桌子了,把coze开源了!!!
  • 服务器被网络攻击后该如何进行处理?
  • 守护汽车“空中升级“:基于HSM/KMS的安全OTA固件签名与验证方案
  • 解决使用vscode连接服务器出现“正在下载 VS Code 服务器...”
  • [硬件电路-91]:模拟器件 - 半导体与常规导体不一样,其电阻式动态变化的,浅谈静态电阻与动态电阻