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 |
|