From ff082f1aa701fa8b21d18c80fb0add98a903a399 Mon Sep 17 00:00:00 2001 From: Atopona <103567097+Atopona@users.noreply.github.com> Date: Thu, 8 Feb 2024 19:42:56 +0800 Subject: [PATCH 01/13] Sync Chinese README --- docs/cn/README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/cn/README.md b/docs/cn/README.md index da3051c9..59518dcd 100644 --- a/docs/cn/README.md +++ b/docs/cn/README.md @@ -195,6 +195,36 @@ D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin. - [ ] 更好的 sovits 基础模型(增强的音频质量)。 - [ ] 模型混合。 +## (可选)命令行操作方式 +使用命令行打开UVR5的WebUI +```` +python tools/uvr5/webui.py "" +```` +如果打不开浏览器,请按照下面的格式进行UVR处理,这是使用mdxnet进行音频处理 +```` +python mdxnet.py --model --input_root --output_vocal --output_ins --agg_level --format --device --is_half_precision +```` +这是使用命令行完成数据集的音频切分的方式 +```` +python audio_slicer.py \ + --input_path "" \ + --output_root "" \ + --threshold \ + --min_length \ + --min_interval + --hop_size +```` +这是使用命令行完成数据集ASR处理的方式(仅限中文) +```` +python tools/damo_asr/cmd-asr.py "" +```` +通过Faster_Whisper进行ASR处理(除中文之外的ASR标记) + +(没有进度条,GPU性能可能会导致时间延迟) +```` +python ./tools/damo_asr/WhisperASR.py -i -o -f -l +```` +启用自定义列表保存路径 ## 致谢 特别感谢以下项目和贡献者: From be79966c1d9ebfc8fb99062eab11f5dfc91dea01 Mon Sep 17 00:00:00 2001 From: Atopona <103567097+Atopona@users.noreply.github.com> Date: Thu, 8 Feb 2024 19:45:03 +0800 Subject: [PATCH 02/13] Correction --- docs/cn/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/cn/README.md b/docs/cn/README.md index 59518dcd..5c87dcfa 100644 --- a/docs/cn/README.md +++ b/docs/cn/README.md @@ -195,12 +195,12 @@ D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin. - [ ] 更好的 sovits 基础模型(增强的音频质量)。 - [ ] 模型混合。 -## (可选)命令行操作方式 +## (可选)命令行的操作方式 使用命令行打开UVR5的WebUI ```` python tools/uvr5/webui.py "" ```` -如果打不开浏览器,请按照下面的格式进行UVR处理,这是使用mdxnet进行音频处理 +如果打不开浏览器,请按照下面的格式进行UVR处理,这是使用mdxnet进行音频处理的方式 ```` python mdxnet.py --model --input_root --output_vocal --output_ins --agg_level --format --device --is_half_precision ```` From 00f3e12b463a387f4cbae44b81f420bb23e02fd1 Mon Sep 17 00:00:00 2001 From: Atopona <103567097+Atopona@users.noreply.github.com> Date: Thu, 8 Feb 2024 19:57:38 +0800 Subject: [PATCH 03/13] Synchronized Japanese (machine translation) --- docs/ja/README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/ja/README.md b/docs/ja/README.md index 7c316059..26074b9d 100644 --- a/docs/ja/README.md +++ b/docs/ja/README.md @@ -189,6 +189,36 @@ D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin. - [ ] より良い sovits ベースモデル(音質向上) - [ ] モデルミックス +## (オプション) 必要に応じて、コマンドライン操作モードが提供されます。 +コマンド ラインを使用して UVR5 の WebUI を開きます +``` +python tools/uvr5/webui.py "" +``` +ブラウザを開けない場合は、以下の形式に従って UVR 処理を行ってください。これはオーディオ処理に mdxnet を使用しています。 +``` +python mdxnet.py --model --input_root --output_vocal --output_ins --agg_level --format --device --is_half_precision +``` +コマンド ラインを使用してデータセットのオーディオ セグメンテーションを行う方法は次のとおりです。 +``` +python audio_slicer.py \ + --input_path "" \ + --output_root "" \ + --threshold \ + --min_length \ + --min_interval + --hop_size +``` +コマンドラインを使用してデータセット ASR 処理を行う方法です (中国語のみ) +``` +python tools/damo_asr/cmd-asr.py "" +``` +ASR処理はFaster_Whisperを通じて実行されます(中国語を除くASRマーキング) + +(進行状況バーは表示されません。GPU のパフォーマンスにより時間遅延が発生する可能性があります) +``` +python ./tools/damo_asr/WhisperASR.py -i -o -f -l +``` +カスタムリストの保存パスが有効になっています ## クレジット 以下のプロジェクトとコントリビューターに感謝します: From 117bcecd52cf7fe90f46d36ff06cb60fe401e361 Mon Sep 17 00:00:00 2001 From: Atopona <103567097+Atopona@users.noreply.github.com> Date: Thu, 8 Feb 2024 19:59:43 +0800 Subject: [PATCH 04/13] Synchronized Korean (machine translation) --- docs/ko/README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/ko/README.md b/docs/ko/README.md index 59201c9b..e348885d 100644 --- a/docs/ko/README.md +++ b/docs/ko/README.md @@ -193,6 +193,36 @@ D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin. - [ ] 더 나은 sovits 기본 모델 (향상된 오디오 품질). - [ ] 모델 블렌딩. +## (선택 사항) 필요한 경우 여기에서 명령줄 작업 모드를 제공합니다. +명령줄을 사용하여 UVR5용 WebUI 열기 +``` +python tools/uvr5/webui.py "" +``` +브라우저를 열 수 없는 경우 UVR 처리를 위해 아래 형식을 따르십시오. 이는 오디오 처리를 위해 mdxnet을 사용하는 것입니다. +``` +python mdxnet.py --model --input_root --output_vocal --output_ins --agg_level --format --device --is_half_precision +``` +명령줄을 사용하여 데이터세트의 오디오 분할을 수행하는 방법은 다음과 같습니다. +``` +python audio_slicer.py \ + --input_path "" \ + --output_root "" \ + --threshold \ + --min_length \ + --min_interval + --hop_size +``` +명령줄을 사용하여 데이터 세트 ASR 처리를 수행하는 방법입니다(중국어만 해당). +``` +python tools/damo_asr/cmd-asr.py "" +``` +ASR 처리는 Faster_Whisper(중국어를 제외한 ASR 마킹)를 통해 수행됩니다. + +(진행률 표시줄 없음, GPU 성능으로 인해 시간 지연이 발생할 수 있음) +``` +python ./tools/damo_asr/WhisperASR.py -i -o -f -l +``` +사용자 정의 목록 저장 경로가 활성화되었습니다. ## 감사의 말 특별히 다음 프로젝트와 기여자에게 감사드립니다: From 8c01e275ecede4ce37712fa7351dbcd055cc8909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=9D=CE=B1=CF=81=CE=BF=CF=85=CF=83=CE=AD=C2=B7=CE=BC?= =?UTF-8?q?=C2=B7=CE=B3=CE=B9=CE=BF=CF=85=CE=BC=CE=B5=CE=BC=CE=AF=C2=B7?= =?UTF-8?q?=CE=A7=CE=B9=CE=BD=CE=B1=CE=BA=CE=AC=CE=BD=CE=BD=CE=B1?= <40709280+NaruseMioShirakana@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:38:38 +0800 Subject: [PATCH 05/13] Add files via upload --- GPT_SoVITS/onnx_export.py | 72 +++++++++++++++++++++++++-------------- 1 file changed, 46 insertions(+), 26 deletions(-) diff --git a/GPT_SoVITS/onnx_export.py b/GPT_SoVITS/onnx_export.py index f08679f9..b82e987f 100644 --- a/GPT_SoVITS/onnx_export.py +++ b/GPT_SoVITS/onnx_export.py @@ -140,6 +140,7 @@ class T2SModel(nn.Module): ) onnx_encoder_export_output.save(f"onnx/{project_name}/{project_name}_t2s_encoder.onnx") return + torch.onnx.export( self.onnx_encoder, (ref_seq, text_seq, ref_bert, text_bert, ssl_content), @@ -147,16 +148,16 @@ class T2SModel(nn.Module): input_names=["ref_seq", "text_seq", "ref_bert", "text_bert", "ssl_content"], output_names=["x", "prompts"], dynamic_axes={ - "ref_seq": [1], - "text_seq": [1], - "ref_bert": [0], - "text_bert": [0], - "ssl_content": [2], + "ref_seq": {1 : "ref_length"}, + "text_seq": {1 : "text_length"}, + "ref_bert": {0 : "ref_length"}, + "text_bert": {0 : "text_length"}, + "ssl_content": {2 : "ssl_length"}, }, opset_version=16 ) x, prompts = self.onnx_encoder(ref_seq, text_seq, ref_bert, text_bert, ssl_content) - torch.exp + torch.onnx.export( self.first_stage_decoder, (x, prompts), @@ -164,10 +165,10 @@ class T2SModel(nn.Module): input_names=["x", "prompts"], output_names=["y", "k", "v", "y_emb", "x_example"], dynamic_axes={ - "x": [1], - "prompts": [1], + "x": {1 : "x_length"}, + "prompts": {1 : "prompts_length"}, }, - verbose=True, + verbose=False, opset_version=16 ) y, k, v, y_emb, x_example = self.first_stage_decoder(x, prompts) @@ -179,13 +180,13 @@ class T2SModel(nn.Module): input_names=["iy", "ik", "iv", "iy_emb", "ix_example"], output_names=["y", "k", "v", "y_emb", "logits", "samples"], dynamic_axes={ - "iy": [1], - "ik": [1], - "iv": [1], - "iy_emb": [1], - "ix_example": [1], + "iy": {1 : "iy_length"}, + "ik": {1 : "ik_length"}, + "iv": {1 : "iv_length"}, + "iy_emb": {1 : "iy_emb_length"}, + "ix_example": {1 : "ix_example_length"}, }, - verbose=True, + verbose=False, opset_version=16 ) @@ -224,9 +225,19 @@ class GptSoVits(nn.Module): self.vits = vits self.t2s = t2s - def forward(self, ref_seq, text_seq, ref_bert, text_bert, ref_audio, ssl_content): + def forward(self, ref_seq, text_seq, ref_bert, text_bert, ref_audio, ssl_content, debug=False): pred_semantic = self.t2s(ref_seq, text_seq, ref_bert, text_bert, ssl_content) - return self.vits(text_seq, pred_semantic, ref_audio) + audio = self.vits(text_seq, pred_semantic, ref_audio) + if debug: + import onnxruntime + sess = onnxruntime.InferenceSession("onnx/koharu/koharu_vits.onnx", providers=["CPU"]) + audio1 = sess.run(None, { + "text_seq" : text_seq.detach().cpu().numpy(), + "pred_semantic" : pred_semantic.detach().cpu().numpy(), + "ref_audio" : ref_audio.detach().cpu().numpy() + }) + return audio, audio1 + return audio def export(self, ref_seq, text_seq, ref_bert, text_bert, ref_audio, ssl_content, project_name): self.t2s.export(ref_seq, text_seq, ref_bert, text_bert, ssl_content, project_name) @@ -238,11 +249,12 @@ class GptSoVits(nn.Module): input_names=["text_seq", "pred_semantic", "ref_audio"], output_names=["audio"], dynamic_axes={ - "text_seq": [1], - "pred_semantic": [2], - "ref_audio": [1], + "text_seq": {1 : "text_length"}, + "pred_semantic": {2 : "pred_length"}, + "ref_audio": {1 : "audio_length"}, }, - opset_version=17 + opset_version=17, + verbose=False ) @@ -261,7 +273,7 @@ def export(vits_path, gpt_path, project_name): gpt_sovits = GptSoVits(vits, gpt) ssl = SSLModel() ref_seq = torch.LongTensor([cleaned_text_to_sequence(["n", "i2", "h", "ao3", ",", "w", "o3", "sh", "i4", "b", "ai2", "y", "e4"])]) - text_seq = torch.LongTensor([cleaned_text_to_sequence(["w", "o3", "sh", "i4", "b", "ai2", "y", "e4"])]) + text_seq = torch.LongTensor([cleaned_text_to_sequence(["w", "o3", "sh", "i4", "b", "ai2", "y", "e4", "w", "o3", "sh", "i4", "b", "ai2", "y", "e4", "w", "o3", "sh", "i4", "b", "ai2", "y", "e4"])]) ref_bert = torch.randn((ref_seq.shape[1], 1024)).float() text_bert = torch.randn((text_seq.shape[1], 1024)).float() ref_audio = torch.randn((1, 48000 * 5)).float() @@ -275,10 +287,18 @@ def export(vits_path, gpt_path, project_name): pass ssl_content = ssl(ref_audio_16k).float() + + debug = False + if debug: + a, b = gpt_sovits(ref_seq, text_seq, ref_bert, text_bert, ref_audio_sr, ssl_content, debug=debug) + soundfile.write("out1.wav", a.cpu().detach().numpy(), vits.hps.data.sampling_rate) + soundfile.write("out2.wav", b[0], vits.hps.data.sampling_rate) + return + a = gpt_sovits(ref_seq, text_seq, ref_bert, text_bert, ref_audio_sr, ssl_content).detach().cpu().numpy() - # soundfile.write("out.wav", a, vits.hps.data.sampling_rate) + soundfile.write("out.wav", a, vits.hps.data.sampling_rate) gpt_sovits.export(ref_seq, text_seq, ref_bert, text_bert, ref_audio_sr, ssl_content, project_name) @@ -306,9 +326,9 @@ if __name__ == "__main__": except: pass - gpt_path = "pt_model/koharu-e20.ckpt" - vits_path = "pt_model/koharu_e20_s4960.pth" - exp_path = "koharu" + gpt_path = "GPT_weights/nahida-e25.ckpt" + vits_path = "SoVITS_weights/nahida_e30_s3930.pth" + exp_path = "nahida" export(vits_path, gpt_path, exp_path) # soundfile.write("out.wav", a, vits.hps.data.sampling_rate) \ No newline at end of file From 08aed05796f28244bf70e26ffa9f8ba88031e938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=9D=CE=B1=CF=81=CE=BF=CF=85=CF=83=CE=AD=C2=B7=CE=BC?= =?UTF-8?q?=C2=B7=CE=B3=CE=B9=CE=BF=CF=85=CE=BC=CE=B5=CE=BC=CE=AF=C2=B7?= =?UTF-8?q?=CE=A7=CE=B9=CE=BD=CE=B1=CE=BA=CE=AC=CE=BD=CE=BD=CE=B1?= <40709280+NaruseMioShirakana@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:39:29 +0800 Subject: [PATCH 06/13] Add files via upload --- GPT_SoVITS/module/models_onnx.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/GPT_SoVITS/module/models_onnx.py b/GPT_SoVITS/module/models_onnx.py index 35fd291f..232fd74d 100644 --- a/GPT_SoVITS/module/models_onnx.py +++ b/GPT_SoVITS/module/models_onnx.py @@ -896,9 +896,6 @@ class SynthesizerTrn(nn.Module): refer_mask = torch.ones_like(refer[:1,:1,:]) ge = self.ref_enc(refer * refer_mask, refer_mask) - y_lengths = torch.LongTensor([codes.size(2) * 2]).to(codes.device) - text_lengths = torch.LongTensor([text.size(-1)]).to(text.device) - quantized = self.quantizer.decode(codes) if self.semantic_frame_rate == "25hz": dquantized = torch.cat([quantized, quantized]).permute(1, 2, 0) @@ -907,6 +904,7 @@ class SynthesizerTrn(nn.Module): x, m_p, logs_p, y_mask = self.enc_p( quantized, text, ge ) + z_p = m_p + torch.randn_like(m_p) * torch.exp(logs_p) z = self.flow(z_p, y_mask, g=ge, reverse=True) From 0b2e3760c268b0cbafb0f3e00207f776b80ac7aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=9D=CE=B1=CF=81=CE=BF=CF=85=CF=83=CE=AD=C2=B7=CE=BC?= =?UTF-8?q?=C2=B7=CE=B3=CE=B9=CE=BF=CF=85=CE=BC=CE=B5=CE=BC=CE=AF=C2=B7?= =?UTF-8?q?=CE=A7=CE=B9=CE=BD=CE=B1=CE=BA=CE=AC=CE=BD=CE=BD=CE=B1?= <40709280+NaruseMioShirakana@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:39:56 +0800 Subject: [PATCH 07/13] Add files via upload --- GPT_SoVITS/module/attentions_onnx.py | 47 +++++++++++----------------- 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/GPT_SoVITS/module/attentions_onnx.py b/GPT_SoVITS/module/attentions_onnx.py index df0ae824..bc63a06f 100644 --- a/GPT_SoVITS/module/attentions_onnx.py +++ b/GPT_SoVITS/module/attentions_onnx.py @@ -188,38 +188,27 @@ class MultiHeadAttention(nn.Module): query = query.view(b, self.n_heads, self.k_channels, -1).transpose(2, 3) key = key.view(b, self.n_heads, self.k_channels, -1).transpose(2, 3) value = value.view(b, self.n_heads, self.k_channels, -1).transpose(2, 3) - scores = torch.matmul(query / math.sqrt(self.k_channels), key.transpose(-2, -1)) + if self.window_size is not None: key_relative_embeddings = self._get_relative_embeddings(self.emb_rel_k, t_s) - rel_logits = self._matmul_with_relative_keys( - query / math.sqrt(self.k_channels), key_relative_embeddings - ) + rel_logits = self._matmul_with_relative_keys(query / math.sqrt(self.k_channels), key_relative_embeddings) scores_local = self._relative_position_to_absolute_position(rel_logits) scores = scores + scores_local + if mask is not None: scores = scores.masked_fill(mask == 0, -1e4) - if self.block_length is not None: - block_mask = ( - torch.ones_like(scores) - .triu(-self.block_length) - .tril(self.block_length) - ) - scores = scores.masked_fill(block_mask == 0, -1e4) + p_attn = F.softmax(scores, dim=-1) p_attn = self.drop(p_attn) output = torch.matmul(p_attn, value) + if self.window_size is not None: relative_weights = self._absolute_position_to_relative_position(p_attn) - value_relative_embeddings = self._get_relative_embeddings( - self.emb_rel_v, t_s - ) - output = output + self._matmul_with_relative_values( - relative_weights, value_relative_embeddings - ) - output = ( - output.transpose(2, 3).contiguous().view(b, d, -1) - ) + value_relative_embeddings = self._get_relative_embeddings(self.emb_rel_v, t_s) + output = output + self._matmul_with_relative_values(relative_weights, value_relative_embeddings) + + output = (output.transpose(2, 3).contiguous().view(b, d, -1)) return output, p_attn def _matmul_with_relative_values(self, x, y): @@ -243,16 +232,16 @@ class MultiHeadAttention(nn.Module): def _get_relative_embeddings(self, relative_embeddings, length): max_relative_position = 2 * self.window_size + 1 # Pad first before slice to avoid using cond ops. - pad_length = max(length - (self.window_size + 1), 0) - slice_start_position = max((self.window_size + 1) - length, 0) + pad_l = torch.zeros((1), dtype = torch.int64) + length - (self.window_size + 1) + pad_s = torch.zeros((1), dtype = torch.int64) + (self.window_size + 1) - length + pad_length = torch.max(pad_l, other=torch.zeros((1), dtype = torch.int64)) + slice_start_position = torch.max(pad_s, other=torch.zeros((1), dtype = torch.int64)) + slice_end_position = slice_start_position + 2 * length - 1 - if pad_length > 0: - padded_relative_embeddings = F.pad( - relative_embeddings, - commons.convert_pad_shape([[0, 0], [pad_length, pad_length], [0, 0]]), - ) - else: - padded_relative_embeddings = relative_embeddings + padded_relative_embeddings = F.pad( + relative_embeddings, + commons.convert_pad_shape([[0, 0], [pad_length, pad_length], [0, 0]]), + ) used_relative_embeddings = padded_relative_embeddings[ :, slice_start_position:slice_end_position ] From d1c3cf70e54cb7411367bde0608ff759e9402793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=9D=CE=B1=CF=81=CE=BF=CF=85=CF=83=CE=AD=C2=B7=CE=BC?= =?UTF-8?q?=C2=B7=CE=B3=CE=B9=CE=BF=CF=85=CE=BC=CE=B5=CE=BC=CE=AF=C2=B7?= =?UTF-8?q?=CE=A7=CE=B9=CE=BD=CE=B1=CE=BA=CE=AC=CE=BD=CE=BD=CE=B1?= <40709280+NaruseMioShirakana@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:40:07 +0800 Subject: [PATCH 08/13] Add files via upload From ffa49a7a1c4f51b224c8b2cf06b8aa8c3184efb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=9D=CE=B1=CF=81=CE=BF=CF=85=CF=83=CE=AD=C2=B7=CE=BC?= =?UTF-8?q?=C2=B7=CE=B3=CE=B9=CE=BF=CF=85=CE=BC=CE=B5=CE=BC=CE=AF=C2=B7?= =?UTF-8?q?=CE=A7=CE=B9=CE=BD=CE=B1=CE=BA=CE=AC=CE=BD=CE=BD=CE=B1?= <40709280+NaruseMioShirakana@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:41:06 +0800 Subject: [PATCH 09/13] Add files via upload From dd1186c029929e05cbf490dd7e404a59f9686cd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=9D=CE=B1=CF=81=CE=BF=CF=85=CF=83=CE=AD=C2=B7=CE=BC?= =?UTF-8?q?=C2=B7=CE=B3=CE=B9=CE=BF=CF=85=CE=BC=CE=B5=CE=BC=CE=AF=C2=B7?= =?UTF-8?q?=CE=A7=CE=B9=CE=BD=CE=B1=CE=BA=CE=AC=CE=BD=CE=BD=CE=B1?= <40709280+NaruseMioShirakana@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:41:37 +0800 Subject: [PATCH 10/13] Add files via upload --- GPT_SoVITS/AR/models/t2s_model_onnx.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GPT_SoVITS/AR/models/t2s_model_onnx.py b/GPT_SoVITS/AR/models/t2s_model_onnx.py index 263b9337..92f2d745 100644 --- a/GPT_SoVITS/AR/models/t2s_model_onnx.py +++ b/GPT_SoVITS/AR/models/t2s_model_onnx.py @@ -57,7 +57,7 @@ def logits_to_probs( logits = logits / max(temperature, 1e-5) if top_k is not None: - v, _ = torch.topk(logits, min(top_k, logits.size(-1))) + v, _ = torch.topk(logits, top_k) pivot = v.select(-1, -1).unsqueeze(-1) logits = torch.where(logits < pivot, inf_tensor_value, logits) From 59f35adad85815df27e9c6b33d420f5ebfd8376b Mon Sep 17 00:00:00 2001 From: RVC-Boss <129054828+RVC-Boss@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:53:31 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dgpt=E8=AE=AD=E7=BB=83?= =?UTF-8?q?=E5=8D=A1=E6=AD=BB=E9=97=AE=E9=A2=98=E5=92=8Cunmatched=20'}'=20?= =?UTF-8?q?in=20format=20string=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复gpt训练卡死问题和unmatched '}' in format string问题 --- GPT_SoVITS/s1_train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/GPT_SoVITS/s1_train.py b/GPT_SoVITS/s1_train.py index 3bbfdfb3..c26302a8 100644 --- a/GPT_SoVITS/s1_train.py +++ b/GPT_SoVITS/s1_train.py @@ -106,6 +106,7 @@ def main(args): dirpath=ckpt_dir, ) logger = TensorBoardLogger(name=output_dir.stem, save_dir=output_dir) + os.environ["MASTER_ADDR"]="localhost" trainer: Trainer = Trainer( max_epochs=config["train"]["epochs"], accelerator="gpu", From 7ee3f744eded4389e034e53fd7765e0d74d970e3 Mon Sep 17 00:00:00 2001 From: RVC-Boss <129054828+RVC-Boss@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:06:09 +0800 Subject: [PATCH 12/13] Update Changelog_CN.md --- docs/cn/Changelog_CN.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/cn/Changelog_CN.md b/docs/cn/Changelog_CN.md index d3c79907..74789cdd 100644 --- a/docs/cn/Changelog_CN.md +++ b/docs/cn/Changelog_CN.md @@ -103,6 +103,10 @@ 7-集成faster whisper ASR日文英文 +### 20240208更新 + +1-GPT训练卡死(win10 1909)和https://github.com/RVC-Boss/GPT-SoVITS/issues/232 (系统语言繁体)GPT训练报错,[尝试修复](https://github.com/RVC-Boss/GPT-SoVITS/commit/59f35adad85815df27e9c6b33d420f5ebfd8376b)。 + todolist: 1-中文多音字推理优化 From 3b2c1a77fa4aed2ec2ff1deab012812c8b318168 Mon Sep 17 00:00:00 2001 From: Kenn Zhang Date: Thu, 8 Feb 2024 15:14:58 +0000 Subject: [PATCH 13/13] =?UTF-8?q?=E5=A2=9E=E5=8A=A0.dockerignore=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=BB=A5=E4=BE=BF=E5=9C=A8Docker=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=E4=B8=AD=E6=8E=92=E9=99=A4=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E6=96=87=E4=BB=B6=E5=A4=B9/=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..b8fec2ae --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +docs +logs +output +reference \ No newline at end of file