:index:`MP6`: AutoVC voice conversion ########################################## This MP will use pytorch to train and test an AutoVC voice conversion system. * Pytorch is intentionally easy to learn, but even so, it's worth spending some time with the `pytorch tutorial <https://pytorch.org/tutorials/beginner/basics/quickstart_tutorial.html>`_. In this MP, you will train an LSTM voice conversion system. * mp6.zip will contains the code. You should download the code, unzip it into some directory, and then type ``jupyter-lab`` to get started. * mp6_notebook.html will be an example of what the Jupyter notebook will look like, once you've finished everything. * The MP uses a lot of torch-specific functions. You can find documentation for all of those functions `here <https://pytorch.org/docs/stable/index.html>`_. * Your ``LineEar.__init__`` method will use `torch.nn.parameter.Parameter <https://pytorch.org/docs/stable/generated/torch.nn.parameter.Parameter.html>`_. * Your ``LineEar.forward`` method will use `torch.matmul <https://pytorch.org/docs/stable/generated/torch.matmul.html>`_. * Your module ``EllEssTeeEmm`` will put `torch.nn.LSTMCells <https://pytorch.org/docs/stable/generated/torch.nn.LSTMCell.html>`_. into two `torch.nn.ModuleLists <https://pytorch.org/docs/stable/generated/torch.nn.ModuleList.html>`_ -- one called ``self.forward_layers``, one called ``self.reverse_layers``. * Your module ``GeeArrYou`` will put `torch.nn.GRUCells <https://pytorch.org/docs/stable/generated/torch.nn.GRUCell.html>`_. into two `torch.nn.ModuleLists <https://pytorch.org/docs/stable/generated/torch.nn.ModuleList.html>`_ -- one called ``self.forward_layers``, one called ``self.reverse_layers``. * Your ``Encoder.__init__``, ``Decoder.__init__``, and ``Postnet.__init__`` will each put `Conv1d <https://pytorch.org/docs/stable/generated/torch.nn.Conv1d.html>`_, `BatchNorm1d <https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm1d.html>`_, and `ReLU <https://pytorch.org/docs/stable/generated/torch.nn.ReLU.html>`_ layers into a `torch.nn.ModuleLists <https://pytorch.org/docs/stable/generated/torch.nn.ModuleList.html>`_ -- called ``self.convolutions``. They will then create an ``EllEssTeeEmm`` module called ``self.recurrent``, and a ``LineEar`` called ``self.fc_projection``. * ``python grade.py`` is how you will grade your code on your local machine. * When it works on your machine, then you can try uploading **only** the file ``submitted.py`` to the MP6 assignment on Gradescope.