Точная настройка Tacotron2 и модели предварительной подготовки Waveglow от Nvidia Tacotron и Waveglow ModelsPython

Программы на Python
Ответить
Anonymous
 Точная настройка Tacotron2 и модели предварительной подготовки Waveglow от Nvidia Tacotron и Waveglow Models

Сообщение Anonymous »

Кто-нибудь знает, как точно настроить tacotron2 и модель waveglow от nvida tacotron и предварительно обученную модель waveglow?
первым делом я создал свой собственный набор данных, где то же самое с форматом из ljspeech набор данных с такими же метаданными, как этот:

Код: Выделить всё

audio1-0056|You guys want to see my tablet? of course because, you know interesting case you're curious.  I wouldn't mind showing it.
audio1-0219|we send them because we love you okay what about the, what about the unchy sticker?
а также я создаю набор данных waveglow в формате csv

Код: Выделить всё

audio1-0056, audio1-0056.pt
audio1-0219, audio1-0219.pt
Я также добавляю расширение звука в свой набор аудиоданных.
Что мне делать дальше после того, как я подготовил набор данных? я прочитал некоторую документацию и руководство от ИИ, которые рассказывали об этой теме, но я все еще не понимаю, как их переобучить.
в моем случае я пытаюсь начать код с создания набора такотронов набор данных:

Код: Выделить всё

import os
import torch
import torchaudio
import torch.nn as nn
import pandas as pd
from torch.utils.data import Dataset
from torch.utils.data import DataLoader, Dataset
from torch.utils.tensorboard import SummaryWriter
from transformers import AutoTokenizer
from scipy.io.wavfile import write
from IPython.display import Audio

bert_tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')

class TacotronDataset(Dataset):
def __init__(self, metadata, audiofile):
self.text_data = metadata
self.audio_data = audiofile
self.tokenizer = bert_tokenizer

def __len__(self):
return len(self.text_data)

def encode_text_into_tensor(self, text):
inputs = self.tokenizer(text, return_tensors="pt")
return inputs

def __getitem__(self, index):
text = self.text_data[index]
audio, sample_rate = torchaudio.load(os.path.join(voice_dir, self.audio_data[index]))

encoded_text = self.encode_text_into_tensor(text)

return encoded_text, audio

def collate_fn(batch):
inputs = [item[0] for item in batch]
targets = [item[1] for item in batch]
return inputs, targets

train_tensor= TacotronDataset(tacotron_train[0], audiofiles)

train_dataloader = DataLoader(train_tensor, batch_size=32, shuffle=True, num_workers=4, collate_fn=collate_fn)
Позвоните в Tacotron2Models:

Код: Выделить всё

tacotron2model = torch.hub.load('NVIDIA/DeepLearningExamples:torchhub', 'nvidia_tacotron2', model_math ='fp16')
tacotron2model = tacotron2model.to('cuda')
tacotron2model.train()
Начнём обучать модели tacotron2:

Код: Выделить всё

# define loss function
loss_funct = nn.L1Loss()

# define optimizers
optimizer = torch.optim.Adam(tacotron2model.parameters(), lr=0.001)

# add summary writer
loss_writer = SummaryWriter()

# Define Epoch
num_epochs = 100

# train models
for epoch in range(num_epochs):
running_loss = 0.0
for i, data in enumerate(train_dataloader):
inputs, targets = data
inputs = [item.to('cuda') for item in inputs]
targets = [item.to('cuda') for item in targets]
optimizer.zero_grad()

outputs= tacotron2model(inputs)
loss = loss_funct(outputs, targets)
loss.backward()
optimizer.step()

running_loss += loss.item()

epoch_loss = running_loss / len(train_dataloader)
loss_writer.add_scalar('Loss/train', epoch_loss, epoch)

loss_writer.close()
Я пытаюсь запустить их, но при запуске на выходах = tacotron2model(inputs) возникла какая-то ошибка:

Код: Выделить всё

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
 in ()
8     optimizer.zero_grad()
9
---> 10     outputs= tacotron2model(inputs)
11     loss = loss_funct(outputs, targets)
12     loss.backward()

2 frames
~/.cache/torch/hub/NVIDIA_DeepLearningExamples_torchhub/PyTorch/SpeechSynthesis/Tacotron2/tacotron2/model.py in forward(self, inputs)
658
659     def forward(self, inputs):
--> 660         inputs, input_lengths, targets, max_len, output_lengths = inputs
661         input_lengths, output_lengths = input_lengths.data, output_lengths.data
662

ValueError: too many values to unpack (expected 5)
Итак, в этом случае я создал неправильный формат набора данных или я действительно не понимал, как работает tacotron2? кто-нибудь знает, как это решить? Я был бы рад, если бы кто-нибудь любезно подсказал мне, как решить эту проблему.
Большое спасибо

Подробнее здесь: https://stackoverflow.com/questions/792 ... dan-wavegl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»