Spaces:
Runtime error
Runtime error
Ilaria
commited on
Commit
·
7cfb6ba
1
Parent(s):
2afc955
New Version - 3.0
Browse files- New support for Ilaria TTS (best tts at the moment for HF, resources speaking)
- Fixed support for ElevenLabs and Google TTS
- Faster inference
- Better looking UI
- Various bug fixes
- Removed Herobrine
- app.py +58 -33
- ilariatts.py +230 -0
- requirements.txt +2 -1
- vc_infer_pipeline.py +9 -8
app.py
CHANGED
|
@@ -21,6 +21,11 @@ warnings.filterwarnings("ignore")
|
|
| 21 |
torch.manual_seed(114514)
|
| 22 |
from i18n import I18nAuto
|
| 23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
import signal
|
| 25 |
|
| 26 |
import math
|
|
@@ -1445,6 +1450,12 @@ def elevenTTS(xiapi, text, id, lang):
|
|
| 1445 |
aud_path = save_to_wav('./temp_gTTS.mp3')
|
| 1446 |
return aud_path, aud_path
|
| 1447 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1448 |
def upload_to_dataset(files, dir):
|
| 1449 |
if dir == '':
|
| 1450 |
dir = './dataset'
|
|
@@ -1470,7 +1481,7 @@ def zip_downloader(model):
|
|
| 1470 |
else:
|
| 1471 |
return f'./weights/{model}.pth', "Could not find Index file."
|
| 1472 |
|
| 1473 |
-
with gr.Blocks(theme=gr.themes.
|
| 1474 |
with gr.Tabs():
|
| 1475 |
with gr.TabItem("Inference"):
|
| 1476 |
gr.HTML("<h1> Ilaria RVC 💖 </h1>")
|
|
@@ -1525,11 +1536,11 @@ with gr.Blocks(theme=gr.themes.Base (), title='Mangio-RVC-Web 💻') as app:
|
|
| 1525 |
dropbox.upload(fn=change_choices2, inputs=[], outputs=[input_audio0])
|
| 1526 |
refresh_button2 = gr.Button("Refresh", variant="primary", size='sm')
|
| 1527 |
record_button.change(fn=save_to_wav, inputs=[record_button], outputs=[input_audio0])
|
| 1528 |
-
record_button.change(fn=change_choices2, inputs=[], outputs=[input_audio0])
|
| 1529 |
with gr.Row():
|
| 1530 |
-
with gr.Accordion('
|
| 1531 |
with gr.Column():
|
| 1532 |
-
lang = gr.Radio(label='Chinese & Japanese do not work with ElevenLabs currently.',choices=['en','es','fr','pt','zh-CN','de','hi','ja'], value='en')
|
| 1533 |
api_box = gr.Textbox(label="Enter your API Key for ElevenLabs, or leave empty to use GoogleTTS", value='')
|
| 1534 |
elevenid=gr.Dropdown(label="Voice:", choices=eleven_voices)
|
| 1535 |
with gr.Column():
|
|
@@ -1537,7 +1548,7 @@ with gr.Blocks(theme=gr.themes.Base (), title='Mangio-RVC-Web 💻') as app:
|
|
| 1537 |
tts_button = gr.Button(value="Speak")
|
| 1538 |
tts_button.click(fn=elevenTTS, inputs=[api_box,tfs, elevenid, lang], outputs=[record_button, input_audio0])
|
| 1539 |
with gr.Row():
|
| 1540 |
-
with gr.Accordion('Wav2Lip', open=False):
|
| 1541 |
with gr.Row():
|
| 1542 |
size = gr.Radio(label='Resolution:',choices=['Half','Full'])
|
| 1543 |
face = gr.UploadButton("Upload A Character",type='file')
|
|
@@ -1550,37 +1561,50 @@ with gr.Blocks(theme=gr.themes.Base (), title='Mangio-RVC-Web 💻') as app:
|
|
| 1550 |
refresh_button2.click(fn=change_choices2, inputs=[], outputs=[input_audio0, animation])
|
| 1551 |
with gr.Row():
|
| 1552 |
animate_button = gr.Button('Animate')
|
| 1553 |
-
|
| 1554 |
with gr.Column():
|
| 1555 |
-
with gr.Accordion("Index Settings", open=False):
|
| 1556 |
-
file_index1 = gr.Dropdown(
|
| 1557 |
-
label="3. Choose the index file (in case it wasn't automatically found.)",
|
| 1558 |
-
choices=get_indexes(),
|
| 1559 |
-
value=get_index(),
|
| 1560 |
-
interactive=True,
|
| 1561 |
-
)
|
| 1562 |
-
sid0.change(fn=match_index, inputs=[sid0],outputs=[file_index1])
|
| 1563 |
-
refresh_button.click(
|
| 1564 |
-
fn=change_choices, inputs=[], outputs=[sid0, file_index1]
|
| 1565 |
-
)
|
| 1566 |
-
# file_big_npy1 = gr.Textbox(
|
| 1567 |
-
# label=i18n("特征文件路径"),
|
| 1568 |
-
# value="E:\\codes\py39\\vits_vc_gpu_train\\logs\\mi-test-1key\\total_fea.npy",
|
| 1569 |
-
# interactive=True,
|
| 1570 |
-
# )
|
| 1571 |
-
index_rate1 = gr.Slider(
|
| 1572 |
-
minimum=0,
|
| 1573 |
-
maximum=1,
|
| 1574 |
-
label=i18n("检索特征占比"),
|
| 1575 |
-
value=0.66,
|
| 1576 |
-
interactive=True,
|
| 1577 |
-
)
|
| 1578 |
vc_output2 = gr.Audio(
|
| 1579 |
label="Final Result! (Click on the three dots to download the audio)",
|
| 1580 |
type='filepath',
|
| 1581 |
interactive=False,
|
| 1582 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1583 |
animate_button.click(fn=mouth, inputs=[size, face, vc_output2, faces], outputs=[animation, preview])
|
|
|
|
| 1584 |
with gr.Accordion("Advanced Options", open=False):
|
| 1585 |
f0method0 = gr.Radio(
|
| 1586 |
label="Optional: Change the Pitch Extraction Algorithm. Extraction methods are sorted from 'worst quality' to 'best quality'. If you don't know what you're doing, leave rmvpe.",
|
|
@@ -1679,6 +1703,7 @@ with gr.Blocks(theme=gr.themes.Base (), title='Mangio-RVC-Web 💻') as app:
|
|
| 1679 |
formanting.change(fn=formant_enabled,inputs=[formanting,qfrency,tmbre,frmntbut,formant_preset,formant_refresh_button],outputs=[formanting,qfrency,tmbre,frmntbut,formant_preset,formant_refresh_button])
|
| 1680 |
frmntbut.click(fn=formant_apply,inputs=[qfrency, tmbre], outputs=[qfrency, tmbre])
|
| 1681 |
formant_refresh_button.click(fn=update_fshift_presets,inputs=[formant_preset, qfrency, tmbre],outputs=[formant_preset, qfrency, tmbre])
|
|
|
|
| 1682 |
with gr.Row():
|
| 1683 |
vc_output1 = gr.Textbox("")
|
| 1684 |
f0_file = gr.File(label=i18n("F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调"), visible=False)
|
|
@@ -1704,7 +1729,7 @@ with gr.Blocks(theme=gr.themes.Base (), title='Mangio-RVC-Web 💻') as app:
|
|
| 1704 |
[vc_output1, vc_output2],
|
| 1705 |
)
|
| 1706 |
|
| 1707 |
-
with gr.Accordion("Batch Conversion",open=False):
|
| 1708 |
with gr.Row():
|
| 1709 |
with gr.Column():
|
| 1710 |
vc_transform1 = gr.Number(
|
|
@@ -1828,7 +1853,7 @@ with gr.Blocks(theme=gr.themes.Base (), title='Mangio-RVC-Web 💻') as app:
|
|
| 1828 |
model = gr.Textbox(label="Name of the model (without spaces):")
|
| 1829 |
download_button=gr.Button("Download")
|
| 1830 |
with gr.Row():
|
| 1831 |
-
status_bar=gr.Textbox(label="")
|
| 1832 |
download_button.click(fn=download_from_url, inputs=[url, model], outputs=[status_bar])
|
| 1833 |
with gr.Row():
|
| 1834 |
gr.Markdown(
|
|
@@ -2080,9 +2105,9 @@ with gr.Blocks(theme=gr.themes.Base (), title='Mangio-RVC-Web 💻') as app:
|
|
| 2080 |
else:
|
| 2081 |
print(
|
| 2082 |
"Pretrained weights not downloaded. Disabling training tab.\n"
|
| 2083 |
-
"Wondering how to train a voice?
|
| 2084 |
"-------------------------------\n"
|
| 2085 |
)
|
| 2086 |
|
| 2087 |
-
app.queue(concurrency_count=511, max_size=1022).launch(share=False, quiet=
|
| 2088 |
#endregion
|
|
|
|
| 21 |
torch.manual_seed(114514)
|
| 22 |
from i18n import I18nAuto
|
| 23 |
|
| 24 |
+
import edge_tts, asyncio
|
| 25 |
+
from ilariatts import tts_order_voice
|
| 26 |
+
language_dict = tts_order_voice
|
| 27 |
+
ilariavoices = language_dict.keys()
|
| 28 |
+
|
| 29 |
import signal
|
| 30 |
|
| 31 |
import math
|
|
|
|
| 1450 |
aud_path = save_to_wav('./temp_gTTS.mp3')
|
| 1451 |
return aud_path, aud_path
|
| 1452 |
|
| 1453 |
+
def ilariaTTS(text, ttsvoice):
|
| 1454 |
+
vo=language_dict[ttsvoice]
|
| 1455 |
+
asyncio.run(edge_tts.Communicate(text, vo).save("./temp_ilaria.mp3"))
|
| 1456 |
+
aud_path = save_to_wav('./temp_ilaria.mp3')
|
| 1457 |
+
return aud_path, aud_path
|
| 1458 |
+
|
| 1459 |
def upload_to_dataset(files, dir):
|
| 1460 |
if dir == '':
|
| 1461 |
dir = './dataset'
|
|
|
|
| 1481 |
else:
|
| 1482 |
return f'./weights/{model}.pth', "Could not find Index file."
|
| 1483 |
|
| 1484 |
+
with gr.Blocks(theme=gr.themes.Default(primary_hue="pink", secondary_hue="rose"), title="Ilaria RVC 💖") as app:
|
| 1485 |
with gr.Tabs():
|
| 1486 |
with gr.TabItem("Inference"):
|
| 1487 |
gr.HTML("<h1> Ilaria RVC 💖 </h1>")
|
|
|
|
| 1536 |
dropbox.upload(fn=change_choices2, inputs=[], outputs=[input_audio0])
|
| 1537 |
refresh_button2 = gr.Button("Refresh", variant="primary", size='sm')
|
| 1538 |
record_button.change(fn=save_to_wav, inputs=[record_button], outputs=[input_audio0])
|
| 1539 |
+
record_button.change(fn=change_choices2, inputs=[], outputs=[input_audio0])
|
| 1540 |
with gr.Row():
|
| 1541 |
+
with gr.Accordion('ElevenLabs / Google TTS', open=False):
|
| 1542 |
with gr.Column():
|
| 1543 |
+
lang = gr.Radio(label='Chinese & Japanese do not work with ElevenLabs currently.',choices=['en','it','es','fr','pt','zh-CN','de','hi','ja'], value='en')
|
| 1544 |
api_box = gr.Textbox(label="Enter your API Key for ElevenLabs, or leave empty to use GoogleTTS", value='')
|
| 1545 |
elevenid=gr.Dropdown(label="Voice:", choices=eleven_voices)
|
| 1546 |
with gr.Column():
|
|
|
|
| 1548 |
tts_button = gr.Button(value="Speak")
|
| 1549 |
tts_button.click(fn=elevenTTS, inputs=[api_box,tfs, elevenid, lang], outputs=[record_button, input_audio0])
|
| 1550 |
with gr.Row():
|
| 1551 |
+
with gr.Accordion('Wav2Lip', open=False, visible=False):
|
| 1552 |
with gr.Row():
|
| 1553 |
size = gr.Radio(label='Resolution:',choices=['Half','Full'])
|
| 1554 |
face = gr.UploadButton("Upload A Character",type='file')
|
|
|
|
| 1561 |
refresh_button2.click(fn=change_choices2, inputs=[], outputs=[input_audio0, animation])
|
| 1562 |
with gr.Row():
|
| 1563 |
animate_button = gr.Button('Animate')
|
| 1564 |
+
|
| 1565 |
with gr.Column():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1566 |
vc_output2 = gr.Audio(
|
| 1567 |
label="Final Result! (Click on the three dots to download the audio)",
|
| 1568 |
type='filepath',
|
| 1569 |
interactive=False,
|
| 1570 |
)
|
| 1571 |
+
|
| 1572 |
+
with gr.Accordion('IlariaTTS', open=True):
|
| 1573 |
+
with gr.Column():
|
| 1574 |
+
ilariaid=gr.Dropdown(label="Voice:", choices=ilariavoices, value="English-Jenny (Female)")
|
| 1575 |
+
ilariatext = gr.Textbox(label="Input your Text", interactive=True, value="This is a test.")
|
| 1576 |
+
ilariatts_button = gr.Button(value="Speak")
|
| 1577 |
+
ilariatts_button.click(fn=ilariaTTS, inputs=[ilariatext, ilariaid], outputs=[record_button, input_audio0])
|
| 1578 |
+
|
| 1579 |
+
#with gr.Column():
|
| 1580 |
+
with gr.Accordion("Index Settings", open=False):
|
| 1581 |
+
#with gr.Row():
|
| 1582 |
+
|
| 1583 |
+
file_index1 = gr.Dropdown(
|
| 1584 |
+
label="3. Choose the index file (in case it wasn't automatically found.)",
|
| 1585 |
+
choices=get_indexes(),
|
| 1586 |
+
value=get_index(),
|
| 1587 |
+
interactive=True,
|
| 1588 |
+
)
|
| 1589 |
+
sid0.change(fn=match_index, inputs=[sid0],outputs=[file_index1])
|
| 1590 |
+
refresh_button.click(
|
| 1591 |
+
fn=change_choices, inputs=[], outputs=[sid0, file_index1]
|
| 1592 |
+
)
|
| 1593 |
+
# file_big_npy1 = gr.Textbox(
|
| 1594 |
+
# label=i18n("特征文件路径"),
|
| 1595 |
+
# value="E:\\codes\py39\\vits_vc_gpu_train\\logs\\mi-test-1key\\total_fea.npy",
|
| 1596 |
+
# interactive=True,
|
| 1597 |
+
# )
|
| 1598 |
+
index_rate1 = gr.Slider(
|
| 1599 |
+
minimum=0,
|
| 1600 |
+
maximum=1,
|
| 1601 |
+
label=i18n("检索特征占比"),
|
| 1602 |
+
value=0.66,
|
| 1603 |
+
interactive=True,
|
| 1604 |
+
)
|
| 1605 |
+
|
| 1606 |
animate_button.click(fn=mouth, inputs=[size, face, vc_output2, faces], outputs=[animation, preview])
|
| 1607 |
+
|
| 1608 |
with gr.Accordion("Advanced Options", open=False):
|
| 1609 |
f0method0 = gr.Radio(
|
| 1610 |
label="Optional: Change the Pitch Extraction Algorithm. Extraction methods are sorted from 'worst quality' to 'best quality'. If you don't know what you're doing, leave rmvpe.",
|
|
|
|
| 1703 |
formanting.change(fn=formant_enabled,inputs=[formanting,qfrency,tmbre,frmntbut,formant_preset,formant_refresh_button],outputs=[formanting,qfrency,tmbre,frmntbut,formant_preset,formant_refresh_button])
|
| 1704 |
frmntbut.click(fn=formant_apply,inputs=[qfrency, tmbre], outputs=[qfrency, tmbre])
|
| 1705 |
formant_refresh_button.click(fn=update_fshift_presets,inputs=[formant_preset, qfrency, tmbre],outputs=[formant_preset, qfrency, tmbre])
|
| 1706 |
+
|
| 1707 |
with gr.Row():
|
| 1708 |
vc_output1 = gr.Textbox("")
|
| 1709 |
f0_file = gr.File(label=i18n("F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调"), visible=False)
|
|
|
|
| 1729 |
[vc_output1, vc_output2],
|
| 1730 |
)
|
| 1731 |
|
| 1732 |
+
with gr.Accordion("Batch Conversion",open=False, visible=False):
|
| 1733 |
with gr.Row():
|
| 1734 |
with gr.Column():
|
| 1735 |
vc_transform1 = gr.Number(
|
|
|
|
| 1853 |
model = gr.Textbox(label="Name of the model (without spaces):")
|
| 1854 |
download_button=gr.Button("Download")
|
| 1855 |
with gr.Row():
|
| 1856 |
+
status_bar=gr.Textbox(label="Download Status")
|
| 1857 |
download_button.click(fn=download_from_url, inputs=[url, model], outputs=[status_bar])
|
| 1858 |
with gr.Row():
|
| 1859 |
gr.Markdown(
|
|
|
|
| 2105 |
else:
|
| 2106 |
print(
|
| 2107 |
"Pretrained weights not downloaded. Disabling training tab.\n"
|
| 2108 |
+
"Wondering how to train a voice? Join AI HUB Discord Server! https://discord.gg/aihub\n"
|
| 2109 |
"-------------------------------\n"
|
| 2110 |
)
|
| 2111 |
|
| 2112 |
+
app.queue(concurrency_count=511, max_size=1022).launch(share=False, quiet=False)
|
| 2113 |
#endregion
|
ilariatts.py
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
tts_order_voice = {'English-Jenny (Female)': 'en-US-JennyNeural',
|
| 2 |
+
'English-Guy (Male)': 'en-US-GuyNeural',
|
| 3 |
+
'English-Ana (Female)': 'en-US-AnaNeural',
|
| 4 |
+
'English-Aria (Female)': 'en-US-AriaNeural',
|
| 5 |
+
'English-Christopher (Male)': 'en-US-ChristopherNeural',
|
| 6 |
+
'English-Eric (Male)': 'en-US-EricNeural',
|
| 7 |
+
'English-Michelle (Female)': 'en-US-MichelleNeural',
|
| 8 |
+
'English-Roger (Male)': 'en-US-RogerNeural',
|
| 9 |
+
'Spanish (Mexican)-Dalia (Female)': 'es-MX-DaliaNeural',
|
| 10 |
+
'Spanish (Mexican)-Jorge- (Male)': 'es-MX-JorgeNeural',
|
| 11 |
+
'Korean-Sun-Hi- (Female)': 'ko-KR-SunHiNeural',
|
| 12 |
+
'Korean-InJoon- (Male)': 'ko-KR-InJoonNeural',
|
| 13 |
+
'Thai-Premwadee- (Female)': 'th-TH-PremwadeeNeural',
|
| 14 |
+
'Thai-Niwat- (Male)': 'th-TH-NiwatNeural',
|
| 15 |
+
'Vietnamese-HoaiMy- (Female)': 'vi-VN-HoaiMyNeural',
|
| 16 |
+
'Vietnamese-NamMinh- (Male)': 'vi-VN-NamMinhNeural',
|
| 17 |
+
'Japanese-Nanami- (Female)': 'ja-JP-NanamiNeural',
|
| 18 |
+
'Japanese-Keita- (Male)': 'ja-JP-KeitaNeural',
|
| 19 |
+
'French-Denise- (Female)': 'fr-FR-DeniseNeural',
|
| 20 |
+
'French-Eloise- (Female)': 'fr-FR-EloiseNeural',
|
| 21 |
+
'French-Henri- (Male)': 'fr-FR-HenriNeural',
|
| 22 |
+
'Brazilian-Francisca- (Female)': 'pt-BR-FranciscaNeural',
|
| 23 |
+
'Brazilian-Antonio- (Male)': 'pt-BR-AntonioNeural',
|
| 24 |
+
'Indonesian-Ardi- (Male)': 'id-ID-ArdiNeural',
|
| 25 |
+
'Indonesian-Gadis- (Female)': 'id-ID-GadisNeural',
|
| 26 |
+
'Hebrew-Avri- (Male)': 'he-IL-AvriNeural',
|
| 27 |
+
'Hebrew-Hila- (Female)': 'he-IL-HilaNeural',
|
| 28 |
+
'Italian-Isabella- (Female)': 'it-IT-IsabellaNeural',
|
| 29 |
+
'Italian-Diego- (Male)': 'it-IT-DiegoNeural',
|
| 30 |
+
'Italian-Elsa- (Female)': 'it-IT-ElsaNeural',
|
| 31 |
+
'Dutch-Colette- (Female)': 'nl-NL-ColetteNeural',
|
| 32 |
+
'Dutch-Fenna- (Female)': 'nl-NL-FennaNeural',
|
| 33 |
+
'Dutch-Maarten- (Male)': 'nl-NL-MaartenNeural',
|
| 34 |
+
'Malese-Osman- (Male)': 'ms-MY-OsmanNeural',
|
| 35 |
+
'Malese-Yasmin- (Female)': 'ms-MY-YasminNeural',
|
| 36 |
+
'Norwegian-Pernille- (Female)': 'nb-NO-PernilleNeural',
|
| 37 |
+
'Norwegian-Finn- (Male)': 'nb-NO-FinnNeural',
|
| 38 |
+
'Swedish-Sofie- (Female)': 'sv-SE-SofieNeural',
|
| 39 |
+
'ArabicSwedish-Mattias- (Male)': 'sv-SE-MattiasNeural',
|
| 40 |
+
'Arabic-Hamed- (Male)': 'ar-SA-HamedNeural',
|
| 41 |
+
'Arabic-Zariyah- (Female)': 'ar-SA-ZariyahNeural',
|
| 42 |
+
'Greek-Athina- (Female)': 'el-GR-AthinaNeural',
|
| 43 |
+
'Greek-Nestoras- (Male)': 'el-GR-NestorasNeural',
|
| 44 |
+
'German-Katja- (Female)': 'de-DE-KatjaNeural',
|
| 45 |
+
'German-Amala- (Female)': 'de-DE-AmalaNeural',
|
| 46 |
+
'German-Conrad- (Male)': 'de-DE-ConradNeural',
|
| 47 |
+
'German-Killian- (Male)': 'de-DE-KillianNeural',
|
| 48 |
+
'Afrikaans-Adri- (Female)': 'af-ZA-AdriNeural',
|
| 49 |
+
'Afrikaans-Willem- (Male)': 'af-ZA-WillemNeural',
|
| 50 |
+
'Ethiopian-Ameha- (Male)': 'am-ET-AmehaNeural',
|
| 51 |
+
'Ethiopian-Mekdes- (Female)': 'am-ET-MekdesNeural',
|
| 52 |
+
'Arabic (UAD)-Fatima- (Female)': 'ar-AE-FatimaNeural',
|
| 53 |
+
'Arabic (UAD)-Hamdan- (Male)': 'ar-AE-HamdanNeural',
|
| 54 |
+
'Arabic (Bahrain)-Ali- (Male)': 'ar-BH-AliNeural',
|
| 55 |
+
'Arabic (Bahrain)-Laila- (Female)': 'ar-BH-LailaNeural',
|
| 56 |
+
'Arabic (Algeria)-Ismael- (Male)': 'ar-DZ-IsmaelNeural',
|
| 57 |
+
'Arabic (Egypt)-Salma- (Female)': 'ar-EG-SalmaNeural',
|
| 58 |
+
'Arabic (Egypt)-Shakir- (Male)': 'ar-EG-ShakirNeural',
|
| 59 |
+
'Arabic (Iraq)-Bassel- (Male)': 'ar-IQ-BasselNeural',
|
| 60 |
+
'Arabic (Iraq)-Rana- (Female)': 'ar-IQ-RanaNeural',
|
| 61 |
+
'Arabic (Jordan)-Sana- (Female)': 'ar-JO-SanaNeural',
|
| 62 |
+
'Arabic (Jordan)-Taim- (Male)': 'ar-JO-TaimNeural',
|
| 63 |
+
'Arabic (Kuwait)-Fahed- (Male)': 'ar-KW-FahedNeural',
|
| 64 |
+
'Arabic (Kuwait)-Noura- (Female)': 'ar-KW-NouraNeural',
|
| 65 |
+
'Arabic (Lebanon)-Layla- (Female)': 'ar-LB-LaylaNeural',
|
| 66 |
+
'Arabic (Lebanon)-Rami- (Male)': 'ar-LB-RamiNeural',
|
| 67 |
+
'Arabic (Libya)-Iman- (Female)': 'ar-LY-ImanNeural',
|
| 68 |
+
'Arabic (Libya)-Omar- (Male)': 'ar-LY-OmarNeural',
|
| 69 |
+
'Arabic (Morocco)-Jamal- (Male)': 'ar-MA-JamalNeural',
|
| 70 |
+
'Arabic (Morocco)-Mouna- (Female)': 'ar-MA-MounaNeural',
|
| 71 |
+
'Arabic (Oman)-Abdullah- (Male)': 'ar-OM-AbdullahNeural',
|
| 72 |
+
'Arabic (Oman)-Aysha- (Female)': 'ar-OM-AyshaNeural',
|
| 73 |
+
'Arabic (Qatar)-Amal- (Female)': 'ar-QA-AmalNeural',
|
| 74 |
+
'Arabic (Qatar)-Moaz- (Male)': 'ar-QA-MoazNeural',
|
| 75 |
+
'Arabic (Syrian Arab Republic)-Amany- (Female)': 'ar-SY-AmanyNeural',
|
| 76 |
+
'Arabic (Syrian Arab Republic)-Laith- (Male)': 'ar-SY-LaithNeural',
|
| 77 |
+
'Arabic (Tunisia)-Hedi- (Male)': 'ar-TN-HediNeural',
|
| 78 |
+
'Arabic (Tunisia)-Reem- (Female)': 'ar-TN-ReemNeural',
|
| 79 |
+
'Arabic (Yemen )-Maryam- (Female)': 'ar-YE-MaryamNeural',
|
| 80 |
+
'Arabic (Yemen )-Saleh- (Male)': 'ar-YE-SalehNeural',
|
| 81 |
+
'Azerbaijani-Babek- (Male)': 'az-AZ-BabekNeural',
|
| 82 |
+
'Azerbaijani-Banu- (Female)': 'az-AZ-BanuNeural',
|
| 83 |
+
'Bulgarian-Borislav- (Male)': 'bg-BG-BorislavNeural',
|
| 84 |
+
'Bulgarian-Kalina- (Female)': 'bg-BG-KalinaNeural',
|
| 85 |
+
'Bengali (Bangladesh)-Nabanita- (Female)': 'bn-BD-NabanitaNeural',
|
| 86 |
+
'Bengali (Bangladesh)-Pradeep- (Male)': 'bn-BD-PradeepNeural',
|
| 87 |
+
'Bengali (India)-Bashkar- (Male)': 'bn-IN-BashkarNeural',
|
| 88 |
+
'Bengali (India)-Tanishaa- (Female)': 'bn-IN-TanishaaNeural',
|
| 89 |
+
'Bosniak (Bosnia and Herzegovina)-Goran- (Male)': 'bs-BA-GoranNeural',
|
| 90 |
+
'Bosniak (Bosnia and Herzegovina)-Vesna- (Female)': 'bs-BA-VesnaNeural',
|
| 91 |
+
'Catalan (Spain)-Joana- (Female)': 'ca-ES-JoanaNeural',
|
| 92 |
+
'Catalan (Spain)-Enric- (Male)': 'ca-ES-EnricNeural',
|
| 93 |
+
'Czech (Czech Republic)-Antonin- (Male)': 'cs-CZ-AntoninNeural',
|
| 94 |
+
'Czech (Czech Republic)-Vlasta- (Female)': 'cs-CZ-VlastaNeural',
|
| 95 |
+
'Welsh (UK)-Aled- (Male)': 'cy-GB-AledNeural',
|
| 96 |
+
'Welsh (UK)-Nia- (Female)': 'cy-GB-NiaNeural',
|
| 97 |
+
'Danish (Denmark)-Christel- (Female)': 'da-DK-ChristelNeural',
|
| 98 |
+
'Danish (Denmark)-Jeppe- (Male)': 'da-DK-JeppeNeural',
|
| 99 |
+
'German (Austria)-Ingrid- (Female)': 'de-AT-IngridNeural',
|
| 100 |
+
'German (Austria)-Jonas- (Male)': 'de-AT-JonasNeural',
|
| 101 |
+
'German (Switzerland)-Jan- (Male)': 'de-CH-JanNeural',
|
| 102 |
+
'German (Switzerland)-Leni- (Female)': 'de-CH-LeniNeural',
|
| 103 |
+
'English (Australia)-Natasha- (Female)': 'en-AU-NatashaNeural',
|
| 104 |
+
'English (Australia)-William- (Male)': 'en-AU-WilliamNeural',
|
| 105 |
+
'English (Canada)-Clara- (Female)': 'en-CA-ClaraNeural',
|
| 106 |
+
'English (Canada)-Liam- (Male)': 'en-CA-LiamNeural',
|
| 107 |
+
'English (UK)-Libby- (Female)': 'en-GB-LibbyNeural',
|
| 108 |
+
'English (UK)-Maisie- (Female)': 'en-GB-MaisieNeural',
|
| 109 |
+
'English (UK)-Ryan- (Male)': 'en-GB-RyanNeural',
|
| 110 |
+
'English (UK)-Sonia- (Female)': 'en-GB-SoniaNeural',
|
| 111 |
+
'English (UK)-Thomas- (Male)': 'en-GB-ThomasNeural',
|
| 112 |
+
'English (Hong Kong)-Sam- (Male)': 'en-HK-SamNeural',
|
| 113 |
+
'English (Hong Kong)-Yan- (Female)': 'en-HK-YanNeural',
|
| 114 |
+
'English (Ireland)-Connor- (Male)': 'en-IE-ConnorNeural',
|
| 115 |
+
'English (Ireland)-Emily- (Female)': 'en-IE-EmilyNeural',
|
| 116 |
+
'English (India)-Neerja- (Female)': 'en-IN-NeerjaNeural',
|
| 117 |
+
'English (India)-Prabhat- (Male)': 'en-IN-PrabhatNeural',
|
| 118 |
+
'English (Kenya)-Asilia- (Female)': 'en-KE-AsiliaNeural',
|
| 119 |
+
'English (Kenya)-Chilemba- (Male)': 'en-KE-ChilembaNeural',
|
| 120 |
+
'English (Nigeria)-Abeo- (Male)': 'en-NG-AbeoNeural',
|
| 121 |
+
'English (Nigeria)-Ezinne- (Female)': 'en-NG-EzinneNeural',
|
| 122 |
+
'English (New Zealand)-Mitchell- (Male)': 'en-NZ-MitchellNeural',
|
| 123 |
+
'English (Philippines)-James- (Male)': 'en-PH-JamesNeural',
|
| 124 |
+
'English (Philippines)-Rosa- (Female)': 'en-PH-RosaNeural',
|
| 125 |
+
'English (Singapore)-Luna- (Female)': 'en-SG-LunaNeural',
|
| 126 |
+
'English (Singapore)-Wayne- (Male)': 'en-SG-WayneNeural',
|
| 127 |
+
'English (Tanzania)-Elimu- (Male)': 'en-TZ-ElimuNeural',
|
| 128 |
+
'English (Tanzania)-Imani- (Female)': 'en-TZ-ImaniNeural',
|
| 129 |
+
'English (South Africa)-Leah- (Female)': 'en-ZA-LeahNeural',
|
| 130 |
+
'English (South Africa)-Luke- (Male)': 'en-ZA-LukeNeural',
|
| 131 |
+
'Spanish (Argentina)-Elena- (Female)': 'es-AR-ElenaNeural',
|
| 132 |
+
'Spanish (Argentina)-Tomas- (Male)': 'es-AR-TomasNeural',
|
| 133 |
+
'Spanish (Bolivia)-Marcelo- (Male)': 'es-BO-MarceloNeural',
|
| 134 |
+
'Spanish (Bolivia)-Sofia- (Female)': 'es-BO-SofiaNeural',
|
| 135 |
+
'Spanish (Colombia)-Gonzalo- (Male)': 'es-CO-GonzaloNeural',
|
| 136 |
+
'Spanish (Colombia)-Salome- (Female)': 'es-CO-SalomeNeural',
|
| 137 |
+
'Spanish (Costa Rica)-Juan- (Male)': 'es-CR-JuanNeural',
|
| 138 |
+
'Spanish (Costa Rica)-Maria- (Female)': 'es-CR-MariaNeural',
|
| 139 |
+
'Spanish (Cuba)-Belkys- (Female)': 'es-CU-BelkysNeural',
|
| 140 |
+
'Spanish (Dominican Republic)-Emilio- (Male)': 'es-DO-EmilioNeural',
|
| 141 |
+
'Spanish (Dominican Republic)-Ramona- (Female)': 'es-DO-RamonaNeural',
|
| 142 |
+
'Spanish (Ecuador)-Andrea- (Female)': 'es-EC-AndreaNeural',
|
| 143 |
+
'Spanish (Ecuador)-Luis- (Male)': 'es-EC-LuisNeural',
|
| 144 |
+
'Spanish (Spain)-Alvaro- (Male)': 'es-ES-AlvaroNeural',
|
| 145 |
+
'Spanish (Spain)-Elvira- (Female)': 'es-ES-ElviraNeural',
|
| 146 |
+
'Spanish (Equatorial Guinea)-Teresa- (Female)': 'es-GQ-TeresaNeural',
|
| 147 |
+
'Spanish (Guatemala)-Andres- (Male)': 'es-GT-AndresNeural',
|
| 148 |
+
'Spanish (Guatemala)-Marta- (Female)': 'es-GT-MartaNeural',
|
| 149 |
+
'Spanish (Honduras)-Carlos- (Male)': 'es-HN-CarlosNeural',
|
| 150 |
+
'Spanish (Honduras)-Karla- (Female)': 'es-HN-KarlaNeural',
|
| 151 |
+
'Spanish (Nicaragua)-Federico- (Male)': 'es-NI-FedericoNeural',
|
| 152 |
+
'Spanish (Nicaragua)-Yolanda- (Female)': 'es-NI-YolandaNeural',
|
| 153 |
+
'Spanish (Panama)-Margarita- (Female)': 'es-PA-MargaritaNeural',
|
| 154 |
+
'Spanish (Panama)-Roberto- (Male)': 'es-PA-RobertoNeural',
|
| 155 |
+
'Spanish (Peru)-Alex- (Male)': 'es-PE-AlexNeural',
|
| 156 |
+
'Spanish (Peru)-Camila- (Female)': 'es-PE-CamilaNeural',
|
| 157 |
+
'Spanish (Puerto Rico)-Karina- (Female)': 'es-PR-KarinaNeural',
|
| 158 |
+
'Spanish (Puerto Rico)-Victor- (Male)': 'es-PR-VictorNeural',
|
| 159 |
+
'Spanish (Paraguay)-Mario- (Male)': 'es-PY-MarioNeural',
|
| 160 |
+
'Spanish (Paraguay)-Tania- (Female)': 'es-PY-TaniaNeural',
|
| 161 |
+
'Spanish (El Salvador)-Lorena- (Female)': 'es-SV-LorenaNeural',
|
| 162 |
+
'Spanish (El Salvador)-Rodrigo- (Male)': 'es-SV-RodrigoNeural',
|
| 163 |
+
'Spanish (United States)-Alonso- (Male)': 'es-US-AlonsoNeural',
|
| 164 |
+
'Spanish (United States)-Paloma- (Female)': 'es-US-PalomaNeural',
|
| 165 |
+
'Spanish (Uruguay)-Mateo- (Male)': 'es-UY-MateoNeural',
|
| 166 |
+
'Spanish (Uruguay)-Valentina- (Female)': 'es-UY-ValentinaNeural',
|
| 167 |
+
'Spanish (Venezuela)-Paola- (Female)': 'es-VE-PaolaNeural',
|
| 168 |
+
'Spanish (Venezuela)-Sebastian- (Male)': 'es-VE-SebastianNeural',
|
| 169 |
+
'Estonian (Estonia)-Anu- (Female)': 'et-EE-AnuNeural',
|
| 170 |
+
'Estonian (Estonia)-Kert- (Male)': 'et-EE-KertNeural',
|
| 171 |
+
'Persian (Iran)-Dilara- (Female)': 'fa-IR-DilaraNeural',
|
| 172 |
+
'Persian (Iran)-Farid- (Male)': 'fa-IR-FaridNeural',
|
| 173 |
+
'Finnish (Finland)-Harri- (Male)': 'fi-FI-HarriNeural',
|
| 174 |
+
'Finnish (Finland)-Noora- (Female)': 'fi-FI-NooraNeural',
|
| 175 |
+
'French (Belgium)-Charline- (Female)': 'fr-BE-CharlineNeural',
|
| 176 |
+
'French (Belgium)-Gerard- (Male)': 'fr-BE-GerardNeural',
|
| 177 |
+
'French (Canada)-Sylvie- (Female)': 'fr-CA-SylvieNeural',
|
| 178 |
+
'French (Canada)-Antoine- (Male)': 'fr-CA-AntoineNeural',
|
| 179 |
+
'French (Canada)-Jean- (Male)': 'fr-CA-JeanNeural',
|
| 180 |
+
'French (Switzerland)-Ariane- (Female)': 'fr-CH-ArianeNeural',
|
| 181 |
+
'French (Switzerland)-Fabrice- (Male)': 'fr-CH-FabriceNeural',
|
| 182 |
+
'Irish (Ireland)-Colm- (Male)': 'ga-IE-ColmNeural',
|
| 183 |
+
'Irish (Ireland)-Orla- (Female)': 'ga-IE-OrlaNeural',
|
| 184 |
+
'Galician (Spain)-Roi- (Male)': 'gl-ES-RoiNeural',
|
| 185 |
+
'Galician (Spain)-Sabela- (Female)': 'gl-ES-SabelaNeural',
|
| 186 |
+
'Gujarati (India)-Dhwani- (Female)': 'gu-IN-DhwaniNeural',
|
| 187 |
+
'Gujarati (India)-Niranjan- (Male)': 'gu-IN-NiranjanNeural',
|
| 188 |
+
'Hindi (India)-Madhur- (Male)': 'hi-IN-MadhurNeural',
|
| 189 |
+
'Hindi (India)-Swara- (Female)': 'hi-IN-SwaraNeural',
|
| 190 |
+
'Croatian (Croatia)-Gabrijela- (Female)': 'hr-HR-GabrijelaNeural',
|
| 191 |
+
'Croatian (Croatia)-Srecko- (Male)': 'hr-HR-SreckoNeural',
|
| 192 |
+
'Hungarian (Hungary)-Noemi- (Female)': 'hu-HU-NoemiNeural',
|
| 193 |
+
'Hungarian (Hungary)-Tamas- (Male)': 'hu-HU-TamasNeural',
|
| 194 |
+
'Icelandic (Iceland)-Gudrun- (Female)': 'is-IS-GudrunNeural',
|
| 195 |
+
'Icelandic (Iceland)-Gunnar- (Male)': 'is-IS-GunnarNeural',
|
| 196 |
+
'Javanese (Indonesia)-Dimas- (Male)': 'jv-ID-DimasNeural',
|
| 197 |
+
'Javanese (Indonesia)-Siti- (Female)': 'jv-ID-SitiNeural',
|
| 198 |
+
'Georgian (Georgia)-Eka- (Female)': 'ka-GE-EkaNeural',
|
| 199 |
+
'Georgian (Georgia)-Giorgi- (Male)': 'ka-GE-GiorgiNeural',
|
| 200 |
+
'Kazakh (Kazakhstan)-Aigul- (Female)': 'kk-KZ-AigulNeural',
|
| 201 |
+
'Kazakh (Kazakhstan)-Daulet- (Male)': 'kk-KZ-DauletNeural',
|
| 202 |
+
'Khmer (Cambodia)-Piseth- (Male)': 'km-KH-PisethNeural',
|
| 203 |
+
'Khmer (Cambodia)-Sreymom- (Female)': 'km-KH-SreymomNeural',
|
| 204 |
+
'Kannada (India)-Gagan- (Male)': 'kn-IN-GaganNeural',
|
| 205 |
+
'Kannada (India)-Sapna- (Female)': 'kn-IN-SapnaNeural',
|
| 206 |
+
'Lao (Laos)-Chanthavong- (Male)': 'lo-LA-ChanthavongNeural',
|
| 207 |
+
'Lao (Laos)-Keomany- (Female)': 'lo-LA-KeomanyNeural',
|
| 208 |
+
'Lithuanian (Lithuania)-Leonas- (Male)': 'lt-LT-LeonasNeural',
|
| 209 |
+
'Lithuanian (Lithuania)-Ona- (Female)': 'lt-LT-OnaNeural',
|
| 210 |
+
'Latvian (Latvia)-Everita- (Female)': 'lv-LV-EveritaNeural',
|
| 211 |
+
'Latvian (Latvia)-Nils- (Male)': 'lv-LV-NilsNeural',
|
| 212 |
+
'Macedonian (North Macedonia)-Aleksandar- (Male)': 'mk-MK-AleksandarNeural',
|
| 213 |
+
'Macedonian (North Macedonia)-Marija- (Female)': 'mk-MK-MarijaNeural',
|
| 214 |
+
'Malayalam (India)-Midhun- (Male)': 'ml-IN-MidhunNeural',
|
| 215 |
+
'Malayalam (India)-Sobhana- (Female)': 'ml-IN-SobhanaNeural',
|
| 216 |
+
'Mongolian (Mongolia)-Bataa- (Male)': 'mn-MN-BataaNeural',
|
| 217 |
+
'Mongolian (Mongolia)-Yesui- (Female)': 'mn-MN-YesuiNeural',
|
| 218 |
+
'Marathi (India)-Aarohi- (Female)': 'mr-IN-AarohiNeural',
|
| 219 |
+
'Marathi (India)-Manohar- (Male)': 'mr-IN-ManoharNeural',
|
| 220 |
+
'Maltese (Malta)-Grace- (Female)': 'mt-MT-GraceNeural',
|
| 221 |
+
'Maltese (Malta)-Joseph- (Male)': 'mt-MT-JosephNeural',
|
| 222 |
+
'Burmese (Myanmar)-Nilar- (Female)': 'my-MM-NilarNeural',
|
| 223 |
+
'Burmese (Myanmar)-Thiha- (Male)': 'my-MM-ThihaNeural',
|
| 224 |
+
'Nepali (Nepal)-Hemkala- (Female)': 'ne-NP-HemkalaNeural',
|
| 225 |
+
'Nepali (Nepal)-Sagar- (Male)': 'ne-NP-SagarNeural',
|
| 226 |
+
'Dutch (Belgium)-Arnaud- (Male)': 'nl-BE-ArnaudNeural',
|
| 227 |
+
'Dutch (Belgium)-Dena- (Female)': 'nl-BE-DenaNeural',
|
| 228 |
+
'Polish (Poland)-Marek- (Male)': 'pl-PL-MarekNeural',
|
| 229 |
+
'Polish (Poland)-Zofia- (Female)': 'pl-PL-ZofiaNeural',
|
| 230 |
+
'Pashto (Afghanistan)-Gul Nawaz- (Male)': 'ps-AF-Gul',}
|
requirements.txt
CHANGED
|
@@ -1,5 +1,6 @@
|
|
| 1 |
gTTS
|
| 2 |
elevenlabs
|
|
|
|
| 3 |
stftpitchshift==1.5.1
|
| 4 |
torchcrepe
|
| 5 |
setuptools
|
|
@@ -19,4 +20,4 @@ mega.py
|
|
| 19 |
gdown
|
| 20 |
onnxruntime
|
| 21 |
pyngrok==4.1.12
|
| 22 |
-
torch
|
|
|
|
| 1 |
gTTS
|
| 2 |
elevenlabs
|
| 3 |
+
edge-tts
|
| 4 |
stftpitchshift==1.5.1
|
| 5 |
torchcrepe
|
| 6 |
setuptools
|
|
|
|
| 20 |
gdown
|
| 21 |
onnxruntime
|
| 22 |
pyngrok==4.1.12
|
| 23 |
+
torch
|
vc_infer_pipeline.py
CHANGED
|
@@ -15,6 +15,14 @@ bh, ah = signal.butter(N=5, Wn=48, btype="high", fs=16000)
|
|
| 15 |
|
| 16 |
input_audio_path2wav = {}
|
| 17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
|
| 19 |
@lru_cache
|
| 20 |
def cache_harvest_f0(input_audio_path, fs, f0max, f0min, frame_period):
|
|
@@ -312,14 +320,7 @@ class VC(object):
|
|
| 312 |
x, f0_min, f0_max, p_len, crepe_hop_length, "tiny"
|
| 313 |
)
|
| 314 |
elif f0_method == "rmvpe":
|
| 315 |
-
|
| 316 |
-
from rmvpe import RMVPE
|
| 317 |
-
|
| 318 |
-
print("loading rmvpe model")
|
| 319 |
-
self.model_rmvpe = RMVPE(
|
| 320 |
-
"rmvpe.pt", is_half=self.is_half, device=self.device
|
| 321 |
-
)
|
| 322 |
-
f0 = self.model_rmvpe.infer_from_audio(x, thred=0.03)
|
| 323 |
|
| 324 |
elif "hybrid" in f0_method:
|
| 325 |
# Perform hybrid median pitch estimation
|
|
|
|
| 15 |
|
| 16 |
input_audio_path2wav = {}
|
| 17 |
|
| 18 |
+
#A fun little addition from my personal RVC branch.
|
| 19 |
+
#You don't have to implement it if you don't have to
|
| 20 |
+
from config import Config
|
| 21 |
+
config=Config()
|
| 22 |
+
from rmvpe import RMVPE
|
| 23 |
+
print("Preloading RMVPE model...")
|
| 24 |
+
model_rmvpe = RMVPE("rmvpe.pt", is_half=config.is_half, device=config.device)
|
| 25 |
+
del config
|
| 26 |
|
| 27 |
@lru_cache
|
| 28 |
def cache_harvest_f0(input_audio_path, fs, f0max, f0min, frame_period):
|
|
|
|
| 320 |
x, f0_min, f0_max, p_len, crepe_hop_length, "tiny"
|
| 321 |
)
|
| 322 |
elif f0_method == "rmvpe":
|
| 323 |
+
f0 = model_rmvpe.infer_from_audio(x, thred=0.03)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 324 |
|
| 325 |
elif "hybrid" in f0_method:
|
| 326 |
# Perform hybrid median pitch estimation
|