Cómo generar audio utilizando el modelo de IA Bark de texto a voz

Cómo generar audio utilizando el modelo de IA Bark de texto a voz

Introducción

Bark es un modelo de texto a audio de código abierto y completamente generativo creado por Suno.ai que puede generar voz multilingüe altamente realista, incluido ruido de fondo, música y efectos de sonido simples. Sigue una arquitectura de estilo GPT capaz de desviarse de manera inesperada de cualquier guion dado. Los motores típicos de síntesis de voz (TTS) producen sonidos robotizados y monótonos generados por máquina. Bark genera voces altamente realistas y naturales utilizando modelos de estilo GPT y brinda una experiencia fantástica como escuchar a personas reales.

Objetivos de aprendizaje

  • Aprender sobre el uso básico y la funcionalidad del modelo Bark, sus limitaciones y sus aplicaciones.
  • Aprender cómo generar archivos de audio a partir de texto utilizando código Python.
  • Crear discursos extensos utilizando NLTK y la biblioteca Bark en Python

Este artículo se publicó como parte del Data Science Blogathon.

Instalación de Bark

Utilicemos un cuaderno de Google Colab para entender la funcionalidad y las aplicaciones de Bark.

Para instalar Bark, utiliza el comando pip install git+https://github.com/suno-ai/bark.git.

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

Nota: No utilices ‘pip install bark’ ya que instala un paquete diferente no gestionado por Suno.ai.

Generando audio con Bark

Bark admite una variedad de idiomas como inglés, chino, francés, hindi, alemán, etc. También admite una biblioteca de altavoces de Bark, que contiene múltiples indicaciones de voz para los idiomas admitidos. Por favor, consulta la lista de bibliotecas de altavoces aquí.

Bark viene con algunas etiquetas/notas predefinidas como ruido de fondo, auditorio, silencio al principio, etc., que ayudan a comprender el uso del altavoz. En el código Python escrito a continuación, puedes establecer una indicación adecuada utilizando estas etiquetas según los requisitos del usuario.

El siguiente código Python generado genera un archivo de audio basado en el altavoz seleccionado.

from bark import SAMPLE_RATE, generate_audio, preload_models# import Audio to listen to generate audio array in notebook.from IPython.display import Audio

Para una entrada de texto dada, la función generate_audio devolverá una matriz de audio numpy en la salida con una frecuencia de muestreo de 24 khz. La indicación de historial selecciona el altavoz seleccionado de la lista de bibliotecas de altavoces. Luego, el modelo utiliza Scipy para guardar un archivo de sonido tipo .wav en la ubicación deseada para su uso posterior.

# Texto que se convertirá en voztext_prompt1 = """Un avión Learjet 45 con ocho personas a bordo se desvió el jueves"""# generar matriz de audio para el texto dadospeech_array1 = generate_audio(text_prompt1,                history_prompt="en_speaker_6")# reproducir texto en el cuadernoAudio(speech_array1, rate=SAMPLE_RATE)import scipyscipy.io.wavfile.write("bark_out1.wav", rate=SAMPLE_RATE, data=speech_array1)

Bark detecta automáticamente el guion en un texto dado y genera audio con un altavoz de idioma adecuado si no se especifica. Se pueden proporcionar ciertas indicaciones de altavoz, como Narrador, Hombre, Mujer, etc., para generar discursos de audio específicos. Sin embargo, esto no siempre se respeta, especialmente si se proporciona una indicación de historial de audio conflictiva.

text_prompt2 = """mujer: Hola Shakira, ¿cómo estás?"""speech_array2 = generate_audio(text_prompt2)# reproducir texto en el cuadernoAudio(speech_array2, rate=SAMPLE_RATE)

Generando discurso no verbal con Bark

Bark es un modelo de texto a voz completamente generativo desarrollado para fines de investigación y demostración. A diferencia de los enfoques anteriores, el guion de texto de entrada se convierte directamente en audio sin el uso intermedio de fonemas. Por lo tanto, puede generalizar instrucciones arbitrarias más allá del habla, como letras de música, efectos de sonido u otros sonidos no verbales. Los usuarios también pueden producir comunicación no verbal utilizando Bark, como risas, cantos, agregar vacilaciones, etc. A continuación se muestra una lista de algunos sonidos no verbales conocidos que se pueden generar utilizando Bark.

  • [risas]
  • [ríe]
  • [suspiros]
  • [música]
  • [golpes de aire]
  • [aclara la garganta]
  • — o … para vacilaciones
  • ♪ para letras de canciones
  • EN MAYÚSCULAS para enfatizar una palabra
  • [HOMBRE] y [MUJER] para inclinar a Bark hacia hablantes masculinos y femeninos, respectivamente

Bark puede generar todo tipo de audio y, en principio, no ve diferencia entre el habla y la música. A veces, Bark elige generar texto como música, pero puedes ayudarlo agregando notas musicales alrededor de tus letras.

Consulta el siguiente código de Python para la generación de vacilación en el habla y la música.

text_prompt3 = """Me gusta la comida india pero ... a veces es muy PICANTE"""                 #... añade vacilación en el habla.speech_array3 = generar_audio(text_prompt3,history_prompt="en_speaker_4")# reproduce texto en NotebookAudio(speech_array3, rate=SAMPLE_RATE)

text_prompt4 = """    ♪ 5 pequeños patitos salieron a nadar un día ♪"""speech_array4 = generar_audio(text_prompt4)# reproduce texto en NotebookAudio(speech_array4, rate=SAMPLE_RATE)

Bark tiene la capacidad de clonar por completo voces, incluyendo tono, altura, emoción, etc., a partir del audio de entrada. Puede ser mal utilizado para crear discursos usando voces conocidas y famosas, y generar contenido fraudulento y malicioso. Debido a este problema ético, la librería original de Bark restringe las indicaciones de historial de audio a un conjunto limitado de opciones completamente sintéticas proporcionadas por Suno.ai para cada idioma compatible. En la Biblioteca de voces Bark se menciona una lista de estas indicaciones de voces.

Procesamiento de audio de órdenes largas con Bark

Bark ha limitado su longitud de discurso de salida a 13-14 segundos. Entonces, si le das un texto de entrada muy largo, romperá el texto y producirá una salida de solo 14 segundos. Como Bark es un modelo de estilo GPT, su arquitectura optimizada solo puede producir discurso con aproximadamente esta longitud. Para generar longitudes de audio más largas, deberás dividir el texto requerido en oraciones más pequeñas. Luego generar audio para cada una de ellas y combinar todos esos archivos de audio para la generación de audio general.

Sigue el proceso paso a paso a continuación para generar un discurso de audio de una historia corta usando Bark.

Paso 1: Utiliza la librería NLTK para dividir el texto largo en oraciones y generar una lista de oraciones.

historia_1 = """Había una vez una liebre que era amiga de una tortuga. Un día, desafió a la tortuga a una carrera. Viendo lo lenta que iba la tortuga, la liebre pensó que ganaría fácilmente. Así que se echó una siesta mientras la tortuga seguía adelante. Cuando la liebre se despertó, vio que la tortuga ya había llegado a la línea de meta. Para su disgusto, la tortuga ganó la carrera mientras él estaba ocupado durmiendo.""".replace("\n", " ")oraciones = nltk.sent_tokenize(historia_1)

Paso 2: Genera archivos de audio para cada oración utilizando la función generar audio de Bark y agrega un cuarto de segundo de silencio después de cada oración. Crea un bucle for para generar audio para una oración y luego agrega silencio.

VOZ = "v2/en_speaker_6"# cuarto de segundo de silenciosilencio = np.zeros(int(0.25 * FRECUENCIA_DE_MUESTREO))fragmentos = []for oracion in oraciones:    array_audio = generar_audio(oracion,historial=VOZ)    fragmentos += [array_audio, silencio.copy()]

Paso 3: Concatena la secuencia de archivos de audio generados y luego verifica el archivo de sonido combinado para escuchar la totalidad del discurso.

Audio(np.concatenate(fragmentos), rate=FRECUENCIA_DE_MUESTREO)

El archivo de audio combinado final genera un buen fragmento de voz de la narración de toda la historia.

Mejorando el discurso generado

Si el texto dado es demasiado corto, Bark añadirá un poco de audio extra al final de la indicación por sí mismo. Esto resulta en la generación de una salida de audio defectuosa. Aquí tienes un ejemplo.

texto_indicación5 = """   ¿Qué pasó, amigo mío?"""array_discurso5 = generar_audio(texto_indicación5,historial="v2/en_speaker_6")# reproduce texto en NotebookAudio(array_discurso5, rate=FRECUENCIA_DE_MUESTREO)

Resultado del código anterior:

En el código anterior, el audio de 5 segundos generado para una simple línea de discurso tiene los últimos 3 segundos en blanco. Para superar este problema y generar audio de buena calidad para estos casos, intenta usar el parámetro min_eos_p. Este parámetro en la función generar texto semántico ajusta el umbral de Bark para generar texto. Al reducir este valor umbral de probabilidad, podemos detener la generación de texto y resolver el problema del audio extra añadido.

Aquí están los pasos a seguir para mejorar el audio generado:

  1. Utiliza la función generate_text_semantic para generar tokens semánticos a partir de un texto dado.
  2. Reduce el valor del parámetro min_eos_p a 0.05 (valor por defecto 0.2).
  3. Utiliza la función semantic_to_waveform para generar una matriz de audio en numpy.

Debido al umbral de probabilidad reducido min_eos_p, la generación de texto se detiene antes y resulta en un pequeño fragmento de audio de 2 segundos. Por favor, revisa el código de referencia a continuación para más detalles.

from bark.api import semantic_to_waveformfrom 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) # esto controla cuán probable es que termine la generaciónspeech_array6 = semantic_to_waveform(semantic_token5, history_prompt="v2/en_speaker_6")# reproducir audio en el notebookAudio(speech_array6, rate=SAMPLE_RATE)

Los modelos convencionales de texto a voz generaban sonidos robóticos y monótonos generados por máquina que tenían un uso limitado. Con algoritmos de aprendizaje profundo, los últimos modelos TTS pueden imitar los patrones y entonación del habla humana. Debido a los avances tecnológicos, es posible crear aplicaciones más atractivas y naturalmente hablantes humanos como TTS emocional, TTS cantante, TTS multilingüe, clonación de voz, etc.

Conclusión

Bark es un modelo generativo de texto a voz estilo GPT de código abierto que tiene una variedad de aplicaciones. Los casos de uso de Bark implican crear audiolibros y podcasts multilingües y generar efectos de sonido para programas de televisión, videojuegos, etc. Es especialmente útil en casos que requieren la generación de una salida con sonido natural, conversaciones de múltiples hablantes o creación de música. Dado que Bark se enfoca en generar voces altamente realistas y similares a las humanas, a veces se genera música/ruido de fondo adicional en el audio. Si esto no es deseable para el caso de uso requerido, este ruido se puede eliminar utilizando algunas herramientas de edición de audio y software externos.

Conclusiones clave

  • Bark es un modelo generativo altamente realista que produce salida de sonido natural similar al humano.
  • Es un modelo único que puede producir efectos de sonido como risa, llanto y música.
  • Puedes generar discurso de alta calidad utilizando Bark mediante técnicas de formateo de audio y ajustando parámetros de umbral.

Preguntas frecuentes

Los medios mostrados en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

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

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Aprendizaje Automático

8 cosas potencialmente sorprendentes que debes saber sobre los Modelos de Lenguaje Grandes (LLMs)

En los últimos meses, ha habido un aumento de interés y actividad por parte de defensores, políticos y académicos de ...

Ciencia de Datos

Cómo acceder a futuras versiones de Python como la 3.12 antes que las masas.

Un tutorial sobre la instalación y prueba de futuras versiones de Python, como la 3.12, antes que la mayoría, para ex...

Inteligencia Artificial

IA y software de código abierto ¿Separados al nacer?

En este artículo, Luis comparte con los lectores sus pensamientos sobre la intersección del software de código abiert...

Inteligencia Artificial

Investigadores de Google presentan 𝗦𝘆𝗻𝘁𝗵𝗜𝗗 una herramienta digital para marcar con marcas de agua e identificar imágenes generadas por IA

En el panorama en constante evolución de la inteligencia artificial (IA), los modelos generativos están creando imáge...

Aprendizaje Automático

AI Ve lo que tú Ves Mind's Eye es un Modelo de IA que Puede Reconstruir Escaneos Cerebrales en Imágenes.

Desde hace tiempo, nos ha intrigado el desafío de entender cómo funciona nuestro cerebro. El campo de la neurociencia...

Inteligencia Artificial

Mejora Amazon Lex con LLMs y mejora la experiencia de las preguntas frecuentes utilizando la ingestión de URL

En el mundo digital de hoy, la mayoría de los consumidores prefieren encontrar respuestas a sus preguntas de servicio...