<> 5 juillet 2024 : dernier point de contrôle AR publié : plus grande stabilité de la sortie. Très grosse mise à jour à venir !
Il s'agit du référentiel du modèle vocal anglais (TTS) MARS5 de CAMB.AI.
Le modèle suit un pipeline AR-NAR en deux étapes avec un composant NAR distinctif (voir plus d'informations dans l'architecture).
Avec seulement 5 secondes d'audio et un extrait de texte, MARS5 peut générer de la parole même pour des scénarios prosodiquement difficiles et divers comme des commentaires sportifs, des dessins animés et bien plus encore. Découvrez notre démo :
Regardez la vidéo complète ici :
Figure : Le flux d'architecture de haut niveau de MARS5. Étant donné un texte et un audio de référence, des caractéristiques vocales d'encodage grossier (L0) sont obtenues grâce à un modèle de transformateur autorégressif. Ensuite, le texte, la référence et les caractéristiques grossières sont affinés dans un modèle DDPM multinomial pour produire les valeurs restantes du livre de codes d'encodec. La sortie du DDPM est ensuite vocodée pour produire l'audio final.
Étant donné que le modèle est formé sur l'audio brut ainsi que sur du texte codé par paire d'octets, il peut être piloté par des éléments tels que la ponctuation et la majuscule. Par exemple, pour ajouter une pause, ajoutez une virgule à cette partie de la transcription. Ou, pour souligner un mot, mettez-le en majuscules dans la transcription. Cela permet une manière assez naturelle de guider la prosodie de la sortie générée.
L'identité du locuteur est spécifiée à l'aide d'un fichier de référence audio d'une durée comprise entre 2 et 12 secondes, avec des durées d'environ 6 secondes donnant des résultats optimaux. De plus, en fournissant la transcription de la référence, MARS5 permet de réaliser un « clonage profond » qui améliore la qualité du clonage et de la sortie, au prix d'un temps de production un peu plus long. Pour plus de détails à ce sujet et d’autres détails sur les performances et le modèle, veuillez consulter le dossier docs.
Nous utilisons torch.hub
pour faciliter le chargement du modèle – aucun clonage du dépôt n'est nécessaire. Les étapes pour effectuer une inférence sont simples :
Installation à l'aide de pip :
Exigences:
pip install --upgrade torch torchaudio librosa vocos encodec safetensors regex
import torch , librosa
mars5 , config_class = torch . hub . load ( 'Camb-ai/mars5-tts' , 'mars5_english' , trust_repo = True )
# The `mars5` contains the AR and NAR model, as well as inference code.
# The `config_class` contains tunable inference config settings like temperature.
(Facultatif) Charger le modèle depuis Huggingface (assurez-vous que le référentiel est cloné)
from inference import Mars5TTS , InferenceConfig as config_class
import torch , librosa
mars5 = Mars5TTS . from_pretrained ( "CAMB-AI/MARS5-TTS" )
# Load reference audio between 1-12 seconds.
wav , sr = librosa . load ( '.wav' ,
sr = mars5 . sr , mono = True )
wav = torch . from_numpy ( wav )
ref_transcript = ""
Remarque : La transcription de référence est facultative. Passez-le si vous souhaitez faire un clone profond.
MARS5 prend en charge 2 types d'inférence : une inférence superficielle et rapide dans laquelle vous n'avez pas besoin de la transcription de la référence (nous appelons cela un clone superficiel ), et une seconde méthode plus lente, mais généralement de meilleure qualité, que nous appelons un clone profond . Pour utiliser le clone profond, vous avez besoin de la transcription de l'invite. Voir l'architecture du modèle pour plus d'informations à ce sujet.
# Pick whether you want a deep or shallow clone. Set to False if you don't know prompt transcript or want fast inference. Set to True if you know transcript and want highest quality.
deep_clone = True
# Below you can tune other inference settings, like top_k, temperature, top_p, etc...
cfg = config_class ( deep_clone = deep_clone , rep_penalty_window = 100 ,
top_k = 100 , temperature = 0.7 , freq_penalty = 3 )
ar_codes , output_audio = mars5 . tts ( "The quick brown rat." , wav ,
ref_transcript ,
cfg = cfg )
# output_audio is (T,) shape float tensor corresponding to the 24kHz output audio.
C'est ça! Ces paramètres par défaut fournissent d'assez bons résultats, mais n'hésitez pas à ajuster les paramètres d'inférence pour optimiser la sortie pour votre cas d'utilisation particulier. Consultez le code InferenceConfig
ou le bloc-notes de démonstration pour obtenir des informations et des documents sur tous les différents paramètres d'inférence.
Quelques conseils pour une meilleure qualité :
Extraire de DockerHub
Vous pouvez directement extraire l'image Docker de notre page DockerHub.
Construisez vous-même
Vous pouvez créer une image personnalisée à partir du Dockerfile fourni dans ce dépôt en exécutant la commande suivante.
cd MARS5-TTS
docker build -t mars5ttsimage ./docker
Remarque : Cette image doit être utilisée comme image de base sur laquelle vous pouvez ajouter votre script d'inférence personnalisé dans un Dockerfile ou un docker-compose. Les images qui génèrent directement une sortie seront bientôt ajoutées à Docker Hub et en tant que fichiers Docker dans ce dépôt.
Points de contrôle
Les points de contrôle pour MARS5 sont fournis sous l'onglet versions de ce dépôt github. Nous proposons deux points de contrôle :
'vocab'
et suit à peu près le même format qu'un tokenizer minbpe enregistré. Les points de contrôle sont fournis à la fois sous forme de points de contrôle pytorch .pt
et de points de contrôle safetensors .safetensors
. Par défaut, torch.hub.load()
charge la version de safetensors, mais vous pouvez spécifier quelle version de point de contrôle vous préférez avec l'argument ckpt_format='safetensors'
ou ckpt_format='pt'
dans l'appel de torch.hub.load()
. Par exemple, pour forcer le format des safetensors :
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='safetensors')
Ou pour forcer le format pytorch .pt
lors du chargement des points de contrôle :
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='pt')
Exigences matérielles :
Vous devez être capable de stocker au moins 750 M+450 M de paramètres sur le GPU et de faire des inférences avec 750 M de paramètres actifs.
Si vous ne disposez pas de la configuration matérielle requise et souhaitez simplement utiliser MARS5 dans vos applications, vous pouvez l'utiliser via notre API. Si vous avez besoin de crédits supplémentaires pour le tester pour votre cas d'utilisation, n'hésitez pas à contacter [email protected]
.
MARS5 n'est pas parfait pour le moment et nous travaillons à améliorer sa qualité, sa stabilité et ses performances. Domaines difficiles que nous cherchons à améliorer et acceptons toute contribution dans les domaines suivants :
Tâches spécifiques
site-packages/torch/nn/functional.py:4840: UserWarning: The operator 'aten::col2im' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications
. Si vous souhaitez contribuer à une amélioration de MARS5, n'hésitez pas à contribuer (directives ci-dessous).
Nous apprécions toute contribution visant à améliorer le modèle. Comme vous pouvez le constater en expérimentant, il peut produire de très bons résultats, il peut encore être amélioré pour créer d'excellents résultats de manière cohérente . Nous aimerions également voir comment vous avez utilisé MARS5 dans différents scénarios, veuillez utiliser le ? Affichez et indiquez la catégorie dans les discussions pour partager vos exemples.
Format des contributions :
La manière préférée de contribuer à notre dépôt est de créer un fork sur le dépôt principal sur GitHub :
git remote add upstream [email protected]:Camb-ai/mars5-tts.git
git push --set-upstream origin
Nous sommes open-source MARS5 en anglais sous GNU AGPL 3.0. Pour toute demande commerciale ou pour obtenir une licence pour la version fermée de MARS, veuillez envoyer un e-mail à [email protected]
Nous sommes une équipe ambitieuse, répartie dans le monde entier, avec un objectif unique : faire en sorte que la voix de chacun compte. Chez CAMB.AI, nous sommes une équipe de recherche composée d'ingénieurs Carnegie Mellon, anciens ingénieurs de Siri, publiés par Interspeech, et nous recherchons que vous rejoigniez notre équipe.
Nous recrutons activement ; veuillez nous envoyer un e-mail à [email protected] si vous êtes intéressé. Visitez notre page carrières pour plus d’informations.
Rejoignez la communauté CAMB.AI sur le forum et Discord pour partager des suggestions, des commentaires ou des questions avec notre équipe.
Certaines parties du code de ce projet sont adaptées des référentiels suivants – assurez-vous de les consulter ! Merci aux auteurs de :
.trim()
: https://librosa.org/doc/main/generated/librosa.effects.trim.html