Spear-TTS - Pytorch
在Pytorch中实现Spear-TTS - 多说话人文本到语音注意力网络
这里构建的文本到语义模块将用于SoundStorm的条件设置。
致谢
-
感谢Stability慷慨赞助,使我们能够开展并开源前沿人工智能研究
-
感谢Lucas Newman完成反向翻译部分,以及束搜索解码!
-
感谢Lucas Newman完成最终的文本到语义转换器训练代码!
安装
$ pip install spear-tts-pytorch
使用
import torch
from audiolm_pytorch import HubertWithKmeans
from spear_tts_pytorch import (
TextToSemantic,
SemanticToTextDatasetGenerator,
GeneratedAudioTextDataset,
MockDataset
)
wav2vec = HubertWithKmeans(
checkpoint_path = './hubert_base_ls960.pt',
kmeans_path = './hubert_base_ls960_L9_km500.bin'
)
model = TextToSemantic(
wav2vec = wav2vec,
dim = 512,
num_text_token_ids = 256,
heads = 8,
target_kv_heads = 2, # 分组查询注意力,用于内存高效解码
source_depth = 1,
target_depth = 1
)
ds = MockDataset(10)
dataset_generator = SemanticToTextDatasetGenerator(
model = model,
dataset = ds,
folder = './output_folder'
)
dataset_generator(max_length = 2)
generated_dataset = GeneratedAudioTextDataset(
folder = './output_folder'
)
assert len(generated_dataset) == 10
待办事项
-
添加eos逻辑+生成,并在soundstorm中连接端到端生成
-
添加首次预训练语音到语音,重建60%删除的标记
-
为该项目添加dropout,因为资源有限
-
在训练过程中添加对编码器/解码器哪些层冻结的完全灵活性
-
添加在小型语音->文本语料库上训练并生成伪标记数据集+微调的步骤(感谢@lucasnewman)
-
添加最后一步在文本->语音+伪标记数据集上微调
-
找出存储和管理伪标记生成数据集的最佳方式
-
批量束搜索解码
-
允许在解码器中使用旋转位置+快速注意力,再次引用Tri
-
集成推测解码,并进行一些即兴创作 - 在同一模型中使用早期退出策略完成
-
为起始器和单个/分组键值添加缓存的键/值,确保快速注意力能够支持专门的因果掩码,直到快速注意力2进入pytorch核心
-
完善音频-文本生成工作流程
-
将真实音频-文本数据集与生成的数据集连接 -> 或能够将真实音频-文本数据集转换为生成的数据集
引用
[引用内容保持不变]