许可证: mit
基础模型: microsoft/speecht5_tts
标签:
- 训练生成
模型索引:
- 名称: speecht5_tts-wolof
结果: []
数据集:
- galsenai/wolof_tts
语言:
- wo
管道标签: 文本转语音
speecht5_tts-wolof
该模型是基于SpeechT5针对沃洛夫语文本转语音(TTS)任务微调的版本。它使用专为沃洛夫语设计的自定义分词器,并调整了基础模型的配置以适应新分词器引入的词汇。此版本的SpeechT5专门为沃洛夫语提供语音合成能力。
模型描述
该模型基于SpeechT5
架构,该架构将语音识别与合成集成到统一框架中。通过使用自定义训练的分词器和适配沃洛夫语独特词汇的配置,该模型针对文本转语音任务进行了微调。微调过程使用了包含沃洛夫语文本的数据集,以帮助模型合成能捕捉该语言细微差别的语音。
用户安装指南
运行以下命令安装必要的依赖项:
!pip install transformers datasets
模型加载与语音生成代码
import torch
from transformers import SpeechT5ForTextToSpeech, SpeechT5Processor
from transformers import SpeechT5HifiGan
def load_speech_model(checkpoint="bilalfaye/speecht5_tts-wolof", vocoder_checkpoint="microsoft/speecht5_hifigan"):
"""
加载SpeechT5模型、处理器和声码器用于文本转语音。
参数:
checkpoint (str): SpeechT5 TTS的模型检查点。
vocoder_checkpoint (str): HiFi-GAN声码器的检查点。
返回:
processor: 模型处理器。
model: 加载的SpeechT5模型。
vocoder: 加载的HiFi-GAN声码器。
device: 模型加载的设备(CPU或GPU)。
"""
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
processor = SpeechT5Processor.from_pretrained(checkpoint)
model = SpeechT5ForTextToSpeech.from_pretrained(checkpoint).to(device)
vocoder = SpeechT5HifiGan.from_pretrained(vocoder_checkpoint).to(device)
return processor, model, vocoder, device
processor, model, vocoder, device = load_speech_model()
print(f"模型和声码器加载于设备: {device}")
from datasets import load_dataset
embeddings_dataset = load_dataset("Matthijs/cmu-arctic-xvectors", split="validation")
speaker_embedding = torch.tensor(embeddings_dataset[7306]["xvector"]).unsqueeze(0)
import torch
from transformers import SpeechT5ForTextToSpeech, SpeechT5Processor, SpeechT5HifiGan
from IPython.display import Audio, display
def generate_speech_from_text(text,
speaker_embedding=speaker_embedding,
processor=processor,
model=model,
vocoder=vocoder):
"""
使用SpeechT5和HiFi-GAN声码器从给定文本生成语音。
参数:
text (str): 待转换为语音的输入文本。
checkpoint (str): SpeechT5 TTS的模型检查点。
vocoder_checkpoint (str): HiFi-GAN声码器的检查点。
speaker_embedding (torch.Tensor): 说话人嵌入张量。
processor (SpeechT5Processor): 模型处理器。
model (SpeechT5ForTextToSpeech): 加载的SpeechT5模型。
vocoder (SpeechT5HifiGan): 加载的HiFi-GAN声码器。
返回:
None
"""
max_text_positions = model.config.max_text_positions
max_length = model.config.max_length * 1.2
min_length = max_length // 3
num_beams = 7
temperature = 0.6
inputs = processor(text=text, return_tensors="pt", padding=True, truncation=True, max_length=max_text_positions)
inputs = {key: value.to(model.device) for key, value in inputs.items()}
speech = model.generate(
inputs["input_ids"],
speaker_embeddings=speaker_embedding.to(model.device),
vocoder=vocoder,
max_length=int(max_length),
min_length=int(min_length),
num_beams=num_beams,
temperature=temperature,
no_repeat_ngram_size=3,
repetition_penalty=1.5,
eos_token_id=None,
use_cache=True
)
speech = speech.detach().cpu().numpy()
display(Audio(speech, rate=16000))
text = "ñu ne ñoom ñooy nattukaay satélite yi"
generate_speech_from_text(text)
预期用途与限制
预期用途:
- 文本转语音生成: 该模型可用于将沃洛夫语文本转换为自然语音。可集成到需要语音界面、虚拟助手或为沃洛夫语社区提供语音合成的应用中。
限制:
- 适用范围有限: 该模型专门针对沃洛夫语微调,可能不适用于其他语言或口音。
- 数据可用性: 虽然模型在沃洛夫语数据集上进行了微调,但生成语音的质量可能因输入文本的复杂性和训练数据而异。
- 词汇与分词器限制: 分词器专为沃洛夫语训练,可能无法有效处理词汇外单词或未知字符。
训练与评估数据
该模型在包含沃洛夫语文本的自定义数据集上进行了微调。该数据集用于调整模型以生成准确反映沃洛夫语语音和句法特性的语音。
训练过程
训练超参数
训练期间使用的超参数如下:
- 学习率: 1e-05
- 训练批大小: 8
- 评估批大小: 2
- 随机种子: 42
- 梯度累积步数: 8
- 总训练批大小: 64
- 优化器: Adam,参数beta=(0.9, 0.999),epsilon=1e-08
- 学习率调度器类型: 线性
- 预热步数: 500
- 训练步数: 255000
- 混合精度训练: 原生AMP
训练结果
周期 |
训练损失 |
验证损失 |
26 |
0.3894 |
0.3687 |
27 |
0.3858 |
0.3712 |
28 |
0.3874 |
0.3669 |
29 |
0.3887 |
0.3685 |
30 |
0.3854 |
0.3670 |
32 |
0.3856 |
0.3697 |
评估表仅包含最后5个周期。
框架版本
- Transformers: 4.41.2
- PyTorch: 2.4.0+cu121
- Datasets: 3.2.0
- Tokenizers: 0.19.1
作者