🚀 Spark TTS Vietnamese
Spark-TTS是一个先进的文本转语音系统,它借助大语言模型(LLM)的强大能力,实现了高度准确且自然的语音合成。该系统专为研究和生产使用而设计,具备高效、灵活和强大的特点。此模型基于viVoice越南语数据集进行训练。
🚀 快速开始
安装依赖
首先,安装所需的软件包:
pip install --upgrade transformers accelerate
文本转语音
我们对代码进行了定制,这样你可以使用Hugging Face的Transformer库进行推理,而无需安装其他任何东西。
from transformers import AutoProcessor, AutoModel, AutoTokenizer
import soundfile as sf
import torch
import numpy as np
device = "cuda"
model_id = "DragonLineageAI/Vi-SparkTTS-0.5B"
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
model = AutoModel.from_pretrained(model_id, trust_remote_code=True).eval()
processor.model = model
prompt_audio_path = "path_to_audio_path"
prompt_transcript = "text corresponding to prompt audio"
text_input = "xin chào mọi người chúng tôi là Nguyễn Công Tú Anh và Chu Văn An đến từ dragonlineageai"
inputs = processor(
text=text_input.lower(),
prompt_speech_path=prompt_audio_path,
prompt_text=prompt_transcript,
return_tensors="pt"
).to(device)
global_tokens_prompt = inputs.pop("global_token_ids_prompt", None)
with torch.no_grad():
output_ids = model.generate(
**inputs,
max_new_tokens=3000,
do_sample=True,
temperature=0.8,
top_k=50,
top_p=0.95,
eos_token_id=processor.tokenizer.eos_token_id,
pad_token_id=processor.tokenizer.pad_token_id
)
output_clone = processor.decode(
generated_ids=output_ids,
global_token_ids_prompt=global_tokens_prompt,
input_ids_len=inputs["input_ids"].shape[-1]
)
sf.write("output_cloned.wav", output_clone["audio"], output_clone["sampling_rate"])
微调
你可以使用任何数据集对该模型进行微调,以提高质量或在新语言上进行训练。训练代码
✨ 主要特性
- 使用大语言模型(LLM)实现高度准确且自然的语音合成。
- 专为研究和生产使用而设计,具备高效、灵活和强大的特点。
📦 安装指南
pip install --upgrade transformers accelerate
💻 使用示例
基础用法
from transformers import AutoProcessor, AutoModel, AutoTokenizer
import soundfile as sf
import torch
import numpy as np
device = "cuda"
model_id = "DragonLineageAI/Vi-SparkTTS-0.5B"
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
model = AutoModel.from_pretrained(model_id, trust_remote_code=True).eval()
processor.model = model
prompt_audio_path = "path_to_audio_path"
prompt_transcript = "text corresponding to prompt audio"
text_input = "xin chào mọi người chúng tôi là Nguyễn Công Tú Anh và Chu Văn An đến từ dragonlineageai"
inputs = processor(
text=text_input.lower(),
prompt_speech_path=prompt_audio_path,
prompt_text=prompt_transcript,
return_tensors="pt"
).to(device)
global_tokens_prompt = inputs.pop("global_token_ids_prompt", None)
with torch.no_grad():
output_ids = model.generate(
**inputs,
max_new_tokens=3000,
do_sample=True,
temperature=0.8,
top_k=50,
top_p=0.95,
eos_token_id=processor.tokenizer.eos_token_id,
pad_token_id=processor.tokenizer.pad_token_id
)
output_clone = processor.decode(
generated_ids=output_ids,
global_token_ids_prompt=global_tokens_prompt,
input_ids_len=inputs["input_ids"].shape[-1]
)
sf.write("output_cloned.wav", output_clone["audio"], output_clone["sampling_rate"])
高级用法
可参考微调部分,使用训练代码对模型进行微调。
📄 许可证
本项目采用CC BY-NC-ND 4.0许可证。
📚 详细文档
模型信息
属性 |
详情 |
模型类型 |
文本转语音系统 |
训练数据 |
viVoice越南语数据集 |