Update synthesizer/train.py, vocoder/train.py, synthesizer/synthesize.py, vocoder_preprocess.py to Allow Vocoder_preprocess to Work (Win10 GPU)
diff --git a/README.md b/README.md
index 214e9b3ef..454fb79c7 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,7 @@ SV2TTS is a three-stage deep learning framework that allows to create a numerica
 
 **Python 3.6 or 3.7** is needed to run the toolbox.
 
-* Install [PyTorch](https://pytorch.org/get-started/locally/) (>=1.0.1).
+* Install [PyTorch](https://pytorch.org/get-started/locally/) (>=1.1.0).
 * Install [ffmpeg](https://ffmpeg.org/download.html#get-packages).
 * Run `pip install -r requirements.txt` to install the remaining necessary packages.
 
diff --git a/demo_cli.py b/demo_cli.py
index c7309e8e2..d43f04d72 100644
--- a/demo_cli.py
+++ b/demo_cli.py
@@ -43,7 +43,7 @@
 
     if args.cpu:
         # Hide GPUs from Pytorch to force CPU processing
-        os.environ["CUDA_VISIBLE_DEVICES"] = ""
+        os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
 
     if not args.no_mp3_support:
         try:
diff --git a/demo_toolbox.py b/demo_toolbox.py
index d93803141..ea30a2927 100644
--- a/demo_toolbox.py
+++ b/demo_toolbox.py
@@ -32,7 +32,7 @@
 
     if args.cpu:
         # Hide GPUs from Pytorch to force CPU processing
-        os.environ["CUDA_VISIBLE_DEVICES"] = ""
+        os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
     del args.cpu
 
     ## Remind the user to download pretrained models if needed
diff --git a/synthesizer/synthesize.py b/synthesizer/synthesize.py
index ff05d0eb8..ffc7dc267 100644
--- a/synthesizer/synthesize.py
+++ b/synthesizer/synthesize.py
@@ -8,13 +8,13 @@
 import numpy as np
 from pathlib import Path
 from tqdm import tqdm
-
+import platform
 
 def run_synthesis(in_dir, out_dir, model_dir, hparams):
     # This generates ground truth-aligned mels for vocoder training
     synth_dir = Path(out_dir).joinpath("mels_gta")
     synth_dir.mkdir(exist_ok=True)
-    print(hparams_debug_string(hparams))
+    print(hparams_debug_string())
 
     # Check for GPU
     if torch.cuda.is_available():
@@ -62,9 +62,9 @@ def run_synthesis(in_dir, out_dir, model_dir, hparams):
 
     dataset = SynthesizerDataset(metadata_fpath, mel_dir, embed_dir, hparams)
     data_loader = DataLoader(dataset,
-                             collate_fn=lambda batch: collate_synthesizer(batch, r),
+                             collate_fn=lambda batch: collate_synthesizer(batch, r, hparams),
                              batch_size=hparams.synthesis_batch_size,
-                             num_workers=2,
+                             num_workers=2 if platform.system() != "Windows" else 0,
                              shuffle=False,
                              pin_memory=True)
 
@@ -80,7 +80,7 @@ def run_synthesis(in_dir, out_dir, model_dir, hparams):
             if device.type == "cuda" and torch.cuda.device_count() > 1:
                 _, mels_out, _ = data_parallel_workaround(model, texts, mels, embeds)
             else:
-                _, mels_out, _ = model(texts, mels, embeds)
+                _, mels_out, _, _ = model(texts, mels, embeds)
 
             for j, k in enumerate(idx):
                 # Note: outputs mel-spectrogram files and target ones have same names, just different folders
diff --git a/synthesizer/train.py b/synthesizer/train.py
index 786e5d0d6..a136cf9b3 100644
--- a/synthesizer/train.py
+++ b/synthesizer/train.py
@@ -15,6 +15,7 @@
 from pathlib import Path
 import sys
 import time
+import platform
 
 
 def np_now(x: torch.Tensor): return x.detach().cpu().numpy()
@@ -146,7 +147,7 @@ def train(run_id: str, syn_dir: str, models_dir: str, save_every: int,
         data_loader = DataLoader(dataset,
                                  collate_fn=lambda batch: collate_synthesizer(batch, r, hparams),
                                  batch_size=batch_size,
-                                 num_workers=2,
+                                 num_workers=2 if platform.system() != "Windows" else 0,
                                  shuffle=True,
                                  pin_memory=True)
 
diff --git a/vocoder/train.py b/vocoder/train.py
index 491246937..6dc2f892e 100644
--- a/vocoder/train.py
+++ b/vocoder/train.py
@@ -11,7 +11,7 @@
 import numpy as np
 import time
 import torch
-
+import platform
 
 def train(run_id: str, syn_dir: Path, voc_dir: Path, models_dir: Path, ground_truth: bool,
           save_every: int, backup_every: int, force_restart: bool):
@@ -79,7 +79,7 @@ def train(run_id: str, syn_dir: Path, voc_dir: Path, models_dir: Path, ground_tr
         data_loader = DataLoader(dataset,
                                  collate_fn=collate_vocoder,
                                  batch_size=hp.voc_batch_size,
-                                 num_workers=2,
+                                 num_workers=2 if platform.system() != "Windows" else 0,
                                  shuffle=True,
                                  pin_memory=True)
         start = time.time()
diff --git a/vocoder_preprocess.py b/vocoder_preprocess.py
index 0828d72e4..7ede3dfb9 100644
--- a/vocoder_preprocess.py
+++ b/vocoder_preprocess.py
@@ -43,7 +43,7 @@ class MyFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptio
 
     if args.cpu:
         # Hide GPUs from Pytorch to force CPU processing
-        os.environ["CUDA_VISIBLE_DEVICES"] = ""
+        os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
     
     # Verify webrtcvad is available
     if not args.no_trim:

Pull requested by @blue-fish 
@tomcattwo edited synthesizer/train.py per issue #669 and blue-fish/Real-Time-Voice-Cloning@89a9964 to fix Win10 pickle issue.
This will allow Windows users using a GPU to properly run synthesizer training.