Update README.md
Browse files
README.md
CHANGED
@@ -108,7 +108,29 @@ with torch.no_grad():
|
|
108 |
sf.write("recon.wav", recon_wav[0][0].cpu().numpy(), 16000)
|
109 |
```
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
|
113 |
## Some Q&A
|
114 |
|
|
|
108 |
sf.write("recon.wav", recon_wav[0][0].cpu().numpy(), 16000)
|
109 |
```
|
110 |
|
111 |
+
FACodec can achieve zero-shot voice conversion with FACodecRedecoder
|
112 |
+
```python
|
113 |
+
from Amphion.models.ns3_codec import FACodecRedecoder
|
114 |
+
|
115 |
+
fa_redecoder = FACodecRedecoder()
|
116 |
+
|
117 |
+
redecoder_ckpt = hf_hub_download(repo_id="amphion/naturalspeech3_facodec", filename="ns3_facodec_redecoder.bin")
|
118 |
|
119 |
+
fa_redecoder.load_state_dict(torch.load(redecoder_ckpt))
|
120 |
+
|
121 |
+
with torch.no_grad():
|
122 |
+
enc_out_a = fa_encoder(wav_a)
|
123 |
+
enc_out_b = fa_encoder(wav_b)
|
124 |
+
|
125 |
+
vq_post_emb_a, vq_id_a, _, quantized_a, spk_embs_a = fa_decoder(enc_out_a, eval_vq=False, vq=True)
|
126 |
+
vq_post_emb_b, vq_id_b, _, quantized_b, spk_embs_b = fa_decoder(enc_out_b, eval_vq=False, vq=True)
|
127 |
+
|
128 |
+
# convert speaker
|
129 |
+
vq_post_emb_a_to_b = fa_redecoder.vq2emb(vq_id_a, spk_embs_b, use_residual=False)
|
130 |
+
recon_wav_a_to_b = fa_redecoder.inference(vq_post_emb_a_to_b, spk_embs_b)
|
131 |
+
|
132 |
+
sf.write("recon_a_to_b.wav", recon_wav_a_to_b[0][0].cpu().numpy(), 16000)
|
133 |
+
```
|
134 |
|
135 |
## Some Q&A
|
136 |
|