Comment générer du son à l’aide du modèle d’IA de synthèse vocale Bark

Comment produire du son avec le modèle d'IA de synthèse vocale Bark

Introduction

Bark est un modèle texte-vers-audio génératif open-source créé par Suno.ai qui peut générer une parole multilingue très réaliste, incluant des bruits de fond, de la musique et des effets sonores simples. Il suit une architecture de type GPT capable de s’éloigner de manière inattendue de tout script donné. Les moteurs de synthèse de la parole (TTS) classiques produisent des sons robotiques et monotones générés par une machine. Bark génère des voix très réalistes et naturelles en utilisant des modèles de style GPT et offre une expérience fantastique similaire à l’écoute de véritables êtres humains.

Objectifs d’apprentissage

  • Apprendre à connaître l’utilisation basique et les fonctionnalités du modèle Bark, ses limitations et ses applications.
  • Apprendre à générer des fichiers audio à partir de texte en utilisant du code Python.
  • Créer une grande quantité de parole en utilisant NLTK et la bibliothèque Bark en Python.

Cet article a été publié dans le cadre du Data Science Blogathon.

Installation de Bark

Utilisons un carnet Google Colab pour comprendre les fonctionnalités et les applications de Bark.

Pour installer Bark, utilisez la commande pip install git+https://github.com/suno-ai/bark.git.

pip install git+https://github.com/suno-ai/bark.git

Note : N’utilisez pas ‘pip install bark’ car cela installe un package différent qui n’est pas géré par Suno.ai.

Génération d’audio avec Bark

Bark prend en charge une variété de langues comme l’anglais, le chinois, le français, l’hindi, l’allemand, etc. Il prend également en charge une bibliothèque de haut-parleurs Bark, qui contient plusieurs invites vocales pour les langues prises en charge. Veuillez vérifier la liste de la bibliothèque des haut-parleurs ici.

Bark est livré avec des balises/notes prédéfinies telles que Bruit de fond, Auditorium, Silence au début, etc., qui aident à comprendre l’utilisation des haut-parleurs. Vous pouvez définir une invite appropriée dans le code Python en utilisant ces balises en fonction des besoins de l’utilisateur.

Le code Python ci-dessous génère un fichier audio en fonction du haut-parleur sélectionné.

from bark import SAMPLE_RATE, generate_audio, preload_models# importer Audio pour écouter le tableau audio généré dans le carnet.from IPython.display import Audio

Pour une entrée texte donnée, la fonction generate_audio renverra un tableau audio numpy en sortie avec une fréquence d’échantillonnage de 24kHz. L’invite historique choisit le haut-parleur sélectionné dans la liste de la bibliothèque des haut-parleurs. Ensuite, le modèle utilise Scipy pour enregistrer un fichier audio au format .wav à l’emplacement souhaité pour une utilisation ultérieure.

# Texte qui doit être converti en paroletext_prompt1 = """Un avion Learjet 45 avec huit personnes à bord a dévié jeudi"""# générer un tableau audio numpy pour le texte donnéspeech_array1 = generate_audio(text_prompt1,                history_prompt="en_speaker_6")# lire le texte dans le notebookAudio(speech_array1, rate=SAMPLE_RATE)import scipyscipy.io.wavfile.write("bark_out1.wav", rate=SAMPLE_RATE,data=speech_array1)

Bark détecte automatiquement les scripts dans un texte donné et génère une audio avec un haut-parleur de langue approprié s’il n’est pas spécifié. Certaines invites de haut-parleurs, telles que Narrateur, Homme, Femme, etc., peuvent être utilisées pour générer des paroles audio spécifiques. Cependant, elles ne sont pas toujours respectées, en particulier si une invite d’historique audio conflictuelle est donnée.

text_prompt2 = """femme: Salut Shakira, comment ça va?"""speech_array2 = generate_audio(text_prompt2)# lire le texte dans le notebookAudio(speech_array2, rate=SAMPLE_RATE)

Génération de parole non verbale avec Bark

Bark est un modèle texte-vers-parole entièrement génératif développé à des fins de recherche et de démonstration. Contrairement aux approches précédentes, l’invite texte d’entrée se convertit directement en audio sans utiliser de phonèmes intermédiaires. Il peut donc généraliser à des instructions arbitraires au-delà de la parole, telles que les paroles de musique, les effets sonores ou d’autres sons non verbaux. Les utilisateurs peuvent également produire des communications non verbales en utilisant Bark, comme le rire, le chant, l’ajout d’hésitation, etc. Ci-dessous se trouve une liste de quelques sons non verbaux connus qui peuvent être générés en utilisant Bark.

  • [rires]
  • [sourires]
  • [soupirs]
  • [musique]
  • [sursauts]
  • [clair de gorge]
  • — ou … pour des hésitations
  • ♪ pour les paroles de chansons
  • MAJUSCULES pour mettre en évidence un mot
  • [HOMME] et [FEMME] pour orienter Bark vers des locuteurs masculins et féminins, respectivement

Bark peut générer tous les types de sons et, en principe, ne fait pas de différence entre la parole et la musique. Parfois, Bark choisit de générer du texte comme de la musique, mais vous pouvez l’aider en ajoutant des notes de musique autour de vos paroles.

Vérifiez le code Python ci-dessous pour la génération de l’hésitation dans la parole et la musique.

text_prompt3 = """J'aime la cuisine indienne mais... parfois c'est très ÉPICÉ."""                 #... ajoute de l'hésitation dans la parole.speech_array3 = generate_audio(text_prompt3,history_prompt="en_speaker_4")# joue le texte dans le bloc-notesAudio(speech_array3, rate=SAMPLE_RATE)

text_prompt4 = """    ♪ 5 petits canards sont allés nager un jour ♪"""speech_array4 = generate_audio(text_prompt4)# joue le texte dans le bloc-notesAudio(speech_array4, rate=SAMPLE_RATE)

Bark a la capacité de cloner complètement des voix, y compris le ton, la hauteur, l’émotion, etc., à partir de l’audio d’entrée. Il peut être utilisé de manière abusive pour créer de la parole en utilisant des voix connues et célèbres et générer du contenu frauduleux et malveillant. En raison de ce problème éthique, la bibliothèque Bark d’origine limite les invites d’historique audio à un ensemble limité d’options entièrement synthétiques fournies par Suno.ai pour chaque langue prise en charge. Une liste de ces invites de locuteurs est mentionnée dans la bibliothèque Bark pour les locuteurs.

Traitement audio des phrases longues avec Bark

Bark a limité la durée de sortie de la parole à 13-14 secondes. Donc, si vous lui donnez un très long texte d’entrée, il va diviser le texte et produire une sortie pendant seulement 14 secondes. Comme Bark est un modèle de type GPT, son architecture optimisée ne peut produire de la parole que d’environ cette longueur. Pour générer des longueurs audio plus grandes, vous devrez diviser le texte requis en phrases plus petites. Ensuite, générez de l’audio pour chacune d’entre elles et combinez tous ces fichiers audio pour générer l’audio global.

Suivez le processus étape par étape ci-dessous pour générer un discours audio court d’une histoire en utilisant Bark.

Étape 1 : Utilisez la bibliothèque NLTK pour diviser un texte plus long en phrases et générer une liste de phrases.

story_1 = """Il était une fois un lièvre qui était ami avec une tortue. Un jour, il a défié la tortue pour une course. Voyant à quelle vitesse la tortue allait, le lièvre pensait qu'il gagnerait facilement. Il a donc fait une sieste pendant que la tortue continuait. Lorsque le lièvre s'est réveillé, il a vu que la tortue était déjà à la ligne d'arrivée. Bien à son grand désarroi, la tortue a remporté la course pendant qu'il dormait."""sentences = nltk.sent_tokenize(story_1)

Étape 2 : Générez des fichiers audio pour chaque phrase en utilisant la fonction de génération audio de Bark et ajoutez un quart de seconde de silence après chaque phrase. Créez une boucle for pour générer de l’audio pour une phrase, puis ajoutez-lui du silence.

SPEAKER = "v2/en_speaker_6"# quart de seconde de silencesilence = np.zeros(int(0.25 * SAMPLE_RATE))pieces = []for sentence in sentences:    audio_array = generate_audio(sentence,history_prompt=SPEAKER)    pieces += [audio_array, silence.copy()]

Étape 3 : Concaténez les séquences de fichiers audio générés, puis vérifiez le fichier audio combiné pour écouter le discours complet.

Audio(np.concatenate(pieces), rate=SAMPLE_RATE)

Le fichier audio combiné final génère un bon extrait vocal de la narration de toute l’histoire.

Amélioration de la parole générée

Si le texte donné est trop court, Bark ajoutera automatiquement un peu d’audio supplémentaire à la fin de la demande. Cela aboutit à la génération d’une mauvaise sortie audio. Voici un exemple.

text_prompt5 = """   Qu'est-il arrivé mon ami ?"""speech_array5 = generate_audio(text_prompt5,history_prompt="v2/en_speaker_6")# joue le texte dans le bloc-notesAudio(speech_array5, rate=SAMPLE_RATE)

Résultat du code ci-dessus :

Dans le code ci-dessus, l’audio généré de 5 secondes pour une simple phrase de parole a les 3 dernières secondes vides. Pour résoudre ce problème et générer un audio de bonne qualité pour de tels cas, essayez d’utiliser le paramètre min_eos_p. Ce paramètre dans la fonction generate_text_semantic ajuste le seuil de probabilité de Bark pour générer du texte. En abaissant cette valeur de seuil de probabilité, nous pouvons arrêter la génération de texte et résoudre le problème d’ajout d’audio supplémentaire.

Voici les étapes à suivre pour améliorer l’audio généré :

  1. Utilisez la fonction generate_text_semantic pour générer des jetons sémantiques à partir d’un texte donné.
  2. Réduisez la valeur du paramètre min_eos_p à 0,05 (valeur par défaut 0,2).
  3. Utilisez la fonction semantic_to_waveform pour générer un tableau audio numpy.

En raison du seuil de probabilité réduit min_eos_p, la génération de texte s’arrête plus tôt et donne un petit extrait audio de 2 secondes. Veuillez consulter le code de référence ci-dessous pour plus de détails.

from bark.api import semantic_to_waveform
from bark.generation import (generate_text_semantic,preload_models)

semantic_token5 = generate_text_semantic(text_prompt5, history_prompt="v2/en_speaker_6", min_eos_p=0.05) # Cela contrôle la probabilité de fin de génération
speech_array6 = semantic_to_waveform(semantic_token5, history_prompt="v2/en_speaker_6") # Jouer le texte dans un notebook
Audio(speech_array6, rate=SAMPLE_RATE)

Les modèles de synthèse vocale traditionnels produisaient des sons robotiques et monotones, générés par ordinateur, avec une utilisation limitée. Grâce aux algorithmes d’apprentissage profond, les derniers modèles TTS peuvent imiter les modèles et l’intonation de la parole humaine. Grâce aux avancées technologiques, il est possible de créer des applications plus captivantes et naturellement humaines, telles que la TTS émotionnelle, la TTS chantante, la TTS multilingue, le clonage vocal, etc.

Conclusion

Bark est un modèle de synthèse de texte en discours génératif de style GPT open source qui présente une variété d’applications. Les cas d’utilisation de Bark comprennent la création de livres audio et de podcasts multilingues, et la génération d’effets sonores pour les émissions de télévision, les jeux vidéo, etc. Il est particulièrement utile dans les cas où il est nécessaire de générer une sortie ayant l’air naturel avec une conversation entre plusieurs locuteurs ou lors de la création de musique. Étant donné que Bark se concentre sur la génération de voix humaines hautement réalistes, il arrive parfois qu’un bruit musical supplémentaire soit généré dans l’audio. Si cela est indésirable pour l’utilisation souhaitée, ce bruit peut être supprimé à l’aide d’outils et de logiciels d’édition externes.

Points clés

  • Bark est un modèle génératif hautement réaliste qui génère une sortie sonore naturelle ressemblant à celle d’un être humain.
  • C’est un modèle unique capable de produire des effets sonores tels que le rire, les pleurs et la musique.
  • Vous pouvez générer une parole de haute qualité en utilisant Bark en utilisant des techniques de formatage audio et en ajustant les paramètres de seuil.

Questions fréquemment posées

Le média présenté dans cet article n’appartient pas à Analytics Vidhya et est utilisé à la discrétion de l’auteur.

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Accélérer le temps d'obtention des informations avec les collections de séries temporelles de MongoDB et Amazon SageMaker Canvas

Ceci est un article invité co-écrit avec Babu Srinivasan de MongoDB. À mesure que les industries évoluent dans le pay...

AI

Des chercheurs de NTU Singapour proposent PointHPS une plateforme d'IA pour une estimation précise de la posture humaine et de la forme à partir de nuages de points 3D.

Avec plusieurs avancées dans le domaine de l’Intelligence Artificielle, l’estimation de la posture et de ...

AI

Des hommes ont envahi un salon de l'emploi pour les femmes dans la technologie

Le Grâce Hopper Celebration vise à rassembler les femmes dans le domaine de la technologie. Cette année, de nombreux ...

AI

Élever les jeux d'un cran Sports Vision AI de démarrage pour diffuser des compétitions sportives à travers le monde

Pixellot marque des points avec l’IA de vision – rendant plus facile pour les organisations de diffuser e...