Traductions fournies par GPT-4.
Ce projet est une API légère, rapide et efficace en termes de mémoire, qui exécute les modèles RVC v1/v2. Il est destiné à être utilisé dans des environnements de production et est compatible avec les bases de code existantes. Il facilite l'intégration de RVC comme une étape dans un pipeline ou un workflow. L'installation est rapide avec pip et devrait être compatible avec Linux/Windows/Mac et les dernières versions de Python.
Si vous utilisez Python 3.11+, installez d'abord le fork fairseq car fairseq n'est pas encore compatible avec 3.11.
pip install https://github.com/One-sixth/fairseq/archive/main.zip
Installez le dépôt avec Pip comme ci-dessous et toutes les dépendances seront installées automatiquement.
pip uninstall inferrvc
pip install https://github.com/CircuitCM/RVC-inference/raw/main/dist/inferrvc-1.0-py3-none-any.whl --no-cache-dir
Par défaut, pypi installe la construction pytorch pour CPU. Pour installer pour GPU utilisant Nvidia ou AMD, visitez https://pytorch.org/get-started/locally/ et installez avec pip torch
et torchaudio
avec GPU avant d'installer cette bibliothèque.
Le support devrait être disponible pour Python 3.8-3.12 mais seul 3.11 a été testé. Si vous rencontrez des problèmes avec l'installation ou la compatibilité, veuillez ouvrir un problème et je publierai des corrections. Les PR avec des corrections et améliorations sont les bienvenues.
Définissez d'abord les variables d'environnement optionnelles :
import os
os.environ['RVC_MODELDIR']='chemin/vers/rvc_model_dir' #où les fichiers model.pth sont stockés.
os.environ['RVC_INDEXDIR']='chemin/vers/rvc_index_dir' #où les fichiers model.index sont stockés.
#la fréquence de sortie audio, par défaut est 44100.
os.environ['RVC_OUTPUTFREQ']='44100'
#Si le tenseur audio de sortie doit bloquer jusqu'à être complètement chargé, cela peut être ignoré. Mais si vous voulez l'exécuter dans un pipeline torch plus grand, le régler sur False améliorera un peu les performances.
os.environ['RVC_RETURNBLOCKING']='True'
Notes sur les variables d'environnement :
- Les
RVC_OUTPUTFREQ
etRVC_RETURNBLOCKING
définissent les valeurs par défaut pour la classeRVC
, mais elles peuvent être outrepassées par instance avecself.outputfreq
etself.returnblocking
. - Régler
RVC_OUTPUTFREQ
surNone
désactivera le rééchantillonnage standard et renverra la fréquence d'échantillonnage native du modèle. - Si vous ne définissez pas
RVC_INDEXDIR
, la classeRVC
se rabattra surRVC_MODELDIR
et enfin sur le chemin absolu du répertoire du modèleos.path.dirname(model_path)
. - Si vous ne définissez pas
RVC_MODELDIR
, alors l'argumentmodel
doit être un chemin absolu.
Chargement des modèles :
from inferrvc import RVC
whis,obama=RVC('Whis.pth',index='added_IVF1972_Flat_nprobe_1_Whis_v2'),RVC(model='obama')
print(whis.name)
print('Chemins',whis.model_path,whis.index_path)
print(obama.name)
print('Chemins',obama.model_path,obama.index_path)
Modèle : Whis, Index : added_IVF1972_Flat_nprobe_1_Whis_v2
Chemins Z:\Models\RVC\Models\Whis.pth Z:\Models\RVC\Indexes\added_IVF1972_Flat_nprobe_1_Whis_v2.index
Modèle : obama, Index : obama
Chemins Z:\Models\RVC\Models\obama.pth Z:\Models\RVC\Indexes\obama.index
Exécuter l'inférence :
from inferrvc import load_torchaudio
aud,sr = load_torchaudio('chemin/vers/audio.wav')
paudio1=whis(aud,f0_up_key=6,output_device='cpu',output_volume=RVC.MATCH_ORIGINAL,index_rate=.75)
paudio2=obama(aud,5,output_device='cpu',output_volume=RVC.MATCH_ORIGINAL,index_rate=.9)
import soundfile as sf
sf.write('chemin/vers/audio_whis.wav',paudio1,44100)
sf.write('chemin/vers/audio_obama.wav',paudio2,44100)
ements par rapport au dépôt original :
- Suppression de la plupart du code non lié à l'inférence. Maintenant beaucoup moins de dépendances.
- Création d'une classe et d'un pipeline d'inférence simplifiés.
- Améliorations de la performance et de l'efficacité de la mémoire.
- Les modèles génériques sont maintenant gérés par
huggingface_hub
et mis en cache via la variable d'environnementHF_HOME
. - Référencement flexible du répertoire et des fichiers du modèle RVC.
- Désactivation du filtre butterworth par défaut car il n'y a généralement pas de différence et cela pourrait légèrement réduire la qualité. Peut être activé avec
inferrvc.pipeline.enable_butterfilter=True
.
- Tester différentes versions de Python.
- Tester différents systèmes d'exploitation et estimateurs de hauteur. (Les autres estimateurs devraient être portés mais seul RMVPE a été testé, c'est le meilleur)
- Déplacer les opérations restantes sur le dispositif principal unique (par exemple GPU), pour réduire la latence et le ralentissement résultant des transferts de mémoire.
- Remplacer le code numpy restant par des équivalents torch
torch.where
ettorch.masked_select
. - Réimplémenter le masque d'index avec pytorch pour les dispositifs GPU.
- Remplacer le code numpy restant par des équivalents torch
- Utiliser la méthode .compile() de torch 2.0 pour accélérer les modèles v1/v2 si possible.