首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

sparkTTS window 安装

  • 25-04-25 02:00
  • 3255
  • 7905
blog.csdn.net

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 环境

  1. conda create -n sparktts python=3.12 -y
  2. 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

  1. mkdir pretrained_models
  2. 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 的方式

  1. from datetime import datetime
  2. import os
  3. import soundfile as sf
  4. import torch
  5. import logging
  6. from cli.SparkTTS import SparkTTS
  7. from sparktts.utils.token_parser import LEVELS_MAP_UI
  8. # Initialize model
  9. def initialize_model(model_dir="pretrained_models/Spark-TTS-0.5B", device=0):
  10. """Load the model once at the beginning."""
  11. logging.info(f"Loading model from: {model_dir}")
  12. device = torch.device(f"cuda:{device}")
  13. model = SparkTTS(model_dir, device)
  14. return model
  15. def run_tts(
  16. text,
  17. model,
  18. prompt_text=None,
  19. prompt_speech=None,
  20. gender=None,
  21. pitch=None,
  22. speed=None,
  23. save_dir="example/results",
  24. ):
  25. """Perform TTS inference and save the generated audio."""
  26. logging.info(f"Saving audio to: {save_dir}")
  27. if prompt_text is not None:
  28. prompt_text = None if len(prompt_text) <= 1 else prompt_text
  29. # Ensure the save directory exists
  30. os.makedirs(save_dir, exist_ok=True)
  31. # Generate unique filename using timestamp
  32. timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
  33. save_path = os.path.join(save_dir, f"{timestamp}.wav")
  34. logging.info("Starting inference...")
  35. # Perform inference and save the output audio
  36. with torch.no_grad():
  37. wav = model.inference(
  38. text,
  39. prompt_speech,
  40. prompt_text,
  41. gender,
  42. pitch,
  43. speed,
  44. )
  45. sf.write(save_path, wav, samplerate=16000)
  46. logging.info(f"Audio saved at: {save_path}")
  47. return save_path
  48. # Define callback function for voice cloning
  49. def voice_clone(text, prompt_text, prompt_wav_upload, prompt_wav_record):
  50. """
  51. Gradio callback to clone voice using text and optional prompt speech.
  52. - text: The input text to be synthesised.
  53. - prompt_text: Additional textual info for the prompt (optional).
  54. - prompt_wav_upload/prompt_wav_record: Audio files used as reference.
  55. """
  56. prompt_speech = prompt_wav_upload if prompt_wav_upload else prompt_wav_record
  57. prompt_text_clean = None if len(prompt_text) < 2 else prompt_text
  58. audio_output_path = run_tts(
  59. text,
  60. model,
  61. prompt_text=prompt_text_clean,
  62. prompt_speech=prompt_speech
  63. )
  64. return audio_output_path
  65. # Define callback function for creating new voices
  66. def voice_creation(text, gender, pitch, speed):
  67. """
  68. Gradio callback to create a synthetic voice with adjustable parameters.
  69. - text: The input text for synthesis.
  70. - gender: 'male' or 'female'.
  71. - pitch/speed: Ranges mapped by LEVELS_MAP_UI.
  72. """
  73. pitch_val = LEVELS_MAP_UI[int(pitch)]
  74. speed_val = LEVELS_MAP_UI[int(speed)]
  75. audio_output_path = run_tts(
  76. text,
  77. model,
  78. gender=gender,
  79. pitch=pitch_val,
  80. speed=speed_val
  81. )
  82. return audio_output_path
  83. #
  84. model_dir="pretrained_models/Spark-TTS-0.5B"
  85. device=0
  86. model = initialize_model(model_dir, device=device)
  87. text="仅仅懂得应用科学本身是不够的!对人类本身及其命运的关心必然总是培养出努力学习各种技术的兴趣;对尚未解决的物质起源和商品分配的问题的关心——为了我们思想意识的建立,将会给整个人类带来幸福而不是灾难。"
  88. #prompt_wav_upload="E:\yao2025\Spark-TTS-main\src\demos\鲁豫\luyu_zh.wav"
  89. prompt_wav_upload="E:\yao2025\yaoaudio.wav"
  90. prompt_text="朋友们,今天我要对你们说,尽管眼下困难重重,但我依然怀有一个梦。这个梦深深植根于美国梦之中。我梦想有一天,这个国家将会奋起,实现其立国信条的真谛,我们认为这些真理不言而喻:人人生而平等。我梦想有一天,在佐治亚洲的红色山岗上,昔日奴隶的儿子能够同昔日奴隶主的儿子同席而坐,亲如手足。"
  91. prompt_wav_record=None
  92. print("TTS ....")
  93. audio_output_path=voice_clone(text, prompt_text, prompt_wav_upload, prompt_wav_record)
  94. """
  95. pitch,音调
  96. speed 速度
  97. 通过下面的map
  98. LEVELS_MAP_UI = {
  99. 1: 'very_low',
  100. 2: 'low',
  101. 3: 'moderate',
  102. 4: 'high',
  103. 5: 'very_high'
  104. }
  105. """
  106. #audio_output_path=voice_creation(text,"female","5","5")
  107. print(audio_output_path)

注:本文转载自blog.csdn.net的姚家湾的文章"https://blog.csdn.net/yaojiawan/article/details/146164154"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

111
大数据
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top