Búsqueda de sitios web

Cree una GUI para extraer la letra de una canción usando Python


Las letras son las palabras que se cantan en una canción y que transmiten el significado y las emociones de una canción. Python ofrece varias bibliotecas para extraer la letra de una canción. En este tutorial, crearemos una interfaz gráfica de usuario (GUI) utilizando la biblioteca tkinter de Python que extrae la letra de una canción.

¿Cuáles son los diferentes formatos en los que las canciones están disponibles en línea?

Existen varios formatos en los que las canciones están disponibles online, según la plataforma y el tipo de archivo. Algunos de los formatos más comunes son:

MP3 (MPEG Audio Layer 3): este es el formato más común para archivos de música, que comprime los datos de audio y elimina partes del archivo que no son audibles para el oído humano. Los archivos MP3 son ampliamente compatibles con la mayoría de los dispositivos y plataformas.

AAC (Codificación de audio avanzada):: este es un formato más eficiente que MP3, que ofrece una mejor calidad de sonido con archivos de menor tamaño. Los archivos AAC se utilizan habitualmente en iTunes de Apple y otros dispositivos Apple.

WAV (formato de archivo de audio de forma de onda):: este es un formato sin pérdidas que almacena datos de audio en su forma sin procesar y sin comprimir, lo que genera archivos de gran tamaño. Los profesionales de la industria musical suelen utilizar los archivos WAV para grabar y mezclar.

FLAC (Códec de audio gratuito sin pérdidas):: este es un formato de alta calidad y sin pérdidas que comprime datos de audio sin sacrificar la calidad, lo que da como resultado archivos de menor tamaño que los archivos WAV. Los archivos FLAC son comúnmente utilizados por audiófilos y entusiastas de la música que desean la mejor calidad de sonido posible.

OGG (Ogg Vorbis): este es un formato de código abierto con pérdida similar a MP3 y AAC, pero ofrece mejor calidad de sonido con tamaños de archivo más pequeños. Los archivos OGG se utilizan comúnmente para transmitir música en línea.

WMA (Windows Media Audio):: este es un formato propietario desarrollado por Microsoft, que es similar a MP3 y AAC, pero es menos compatible con otros dispositivos y plataformas.

Estos son algunos de los formatos más comunes en los que las canciones están disponibles online, y la elección del formato puede depender de factores como la plataforma, el tipo de dispositivo y la calidad de sonido deseada.

¿Qué entendemos por codificar y decodificar con respecto a los archivos de audio?

Codificar y decodificar son dos conceptos importantes en el contexto de los archivos de audio, que se refieren al proceso de convertir datos de audio de un formato a otro.

La codificación se refiere al proceso de comprimir datos de audio en un formato específico para reducir el tamaño del archivo y facilitar su transmisión, almacenamiento y reproducción. Durante la codificación, los datos de audio se analizan, procesan y convierten a un formato digital que se puede almacenar como un archivo. Los formatos de codificación de audio más comunes incluyen MP3, AAC, FLAC y OGG, entre otros.

La decodificación, por otro lado, se refiere al proceso de convertir un archivo de audio codificado a su forma original sin comprimir para su reproducción. Durante la decodificación, los datos de audio comprimidos se descomprimen y se vuelven a convertir en una forma de onda que se puede reproducir a través de parlantes o auriculares.

En resumen, la codificación y decodificación son dos procesos clave involucrados en la creación y reproducción de archivos de audio digitales. La codificación implica comprimir datos de audio en un formato específico para su almacenamiento, mientras que la decodificación implica convertir el archivo de audio comprimido nuevamente a su forma original para su reproducción.

Requisitos previos

Antes de profundizar en los detalles de la creación de una GUI, debe tener un conocimiento básico de la programación Python, los conceptos de programación orientada a objetos (OOP) y cómo trabajar con el módulo Tkinter.

Lista de configuraciones recomendadas

  • pip install tkinter, biblioteca Lyricsgenius

  • Se espera que el usuario tenga acceso a cualquier IDE independiente como VS-Code, PyCharm, Atom o Sublime Text.

  • Incluso se pueden utilizar compiladores de Python en línea, como Kaggle.com, la plataforma Google Cloud o cualquier otro.

  • Versión actualizada de Python. Al momento de escribir el artículo he usado la versión 3.10.9.

  • Conocimiento del uso del cuaderno Jupyter.

  • El conocimiento y la aplicación del entorno virtual serían beneficiosos, pero no necesarios; también sería útil el uso de API en algún contexto.

Pasos necesarios para realizar la tarea.

Comencemos a crear una GUI usando tkinter para extraer la letra de una canción. Cree un archivo Python y asígnele el nombre main.py.

Paso 1: Importe los módulos necesarios

from tkinter import *
from lyricsgenius import Genius

A continuación, necesitamos importar las bibliotecas necesarias en su script Python. En este caso, necesitamos la biblioteca letrasgenius para la extracción de letras y la biblioteca tkinter para crear la interfaz GUI. Aquí está la declaración de importación.

Paso 2: crea una ventana GUI

Primero, creamos una nueva ventana usando la función Tk() de la biblioteca tkinter. También configuramos el título y las dimensiones de la ventana usando las funciones título() y geometría(), respectivamente.

window = tk.Tk()
window.title("Lyrics Extractor")
window.geometry("400x300")

Paso 3: crea una etiqueta para las canciones:

A continuación, creamos una etiqueta y un cuadro de texto para el nombre de la canción usando las funciones Label() y Entry() de tkinter, respectivamente. También creamos una etiqueta y un cuadro de texto para el nombre del artista.

song_label = tk.Label(window, text="Song Name:")
song_entry = tk.Entry(window)
artist_label = tk.Label(window, text="Artist:")
artist_entry = tk.Entry(window)

Empaquetamos estos elementos en la ventana usando la función pack().

song_label.pack()
song_entry.pack()
artist_label.pack()
artist_entry.pack()

Paso 4: crear botones

También creamos un botón para extraer la letra usando la función Button() y lo empaquetamos en la ventana.

extract_button = tk.Button(window, text="Extract Lyrics", command=extract_lyrics)
extract_button.pack()

Finalmente, creamos un cuadro de texto para mostrar la letra usando la función Text() y lo empaquetamos en la ventana.

lyrics_text = tk.Text(window)
lyrics_text.pack()

Paso 5: extraer la letra

Definimos una función extract_lyrics() que se llamará cuando el usuario haga clic en el botón "Extraer letra". Esta función recupera el nombre de la canción y el artista de los cuadros de texto usando la función get(), crea un objeto Genius usando la biblioteca letrasgenius y busca la canción usando la función search_song(). Si se encuentra la canción, la letra se muestra en el cuadro de texto usando la función insertar().

def extract_lyrics():
   # Get the song name and artist from the text boxes
   song = song_entry.get()
   artist = artist_entry.get()

   # Create a Genius object and search for the song
   genius = Genius("YOUR_ACCESS_TOKEN_HERE")
   song = genius.search_song(song, artist)

   # Display the lyrics in the text box
   if song is not None:
      lyrics_text.delete(1.0, tk.END)
      lyrics_text.insert(tk.END, song.lyrics)
   else:
      lyrics_text.delete(1.0, tk.END)
      lyrics_text.insert(tk.END, "Lyrics not found.")

Tenga en cuenta que necesitará obtener un token de acceso Genius para utilizar este código. Puede obtener uno creando una cuenta en el sitio web de Genius y siguiendo las instrucciones en la documentación de la biblioteca de letrasgenius.

Código final, programa.

import tkinter as tk
from lyricsgenius import Genius

def extract_lyrics():
   # Get the song name and artist from the text boxes
   song = song_entry.get()
   artist = artist_entry.get()

   # Create a Genius object and search for the song
   genius = Genius("YOUR_ACCESS_TOKEN_HERE")
   song = genius.search_song(song, artist)

   # Display the lyrics in the text box
   if song is not None:
      lyrics_text.delete(1.0, tk.END)
      lyrics_text.insert(tk.END, song.lyrics)
   else:
      lyrics_text.delete(1.0, tk.END)
      lyrics_text.insert(tk.END, "Lyrics not found.")
# Create a new window
window = tk.Tk()
window.title("Lyrics Extractor")
window.geometry("400x300")

# Add a label for the song name
song_label = tk.Label(window, text="Song Name:")
song_label.pack()

# Add a text box for the song name
song_entry = tk.Entry(window)
song_entry.pack()

# Add a label for the artist name
artist_label = tk.Label(window, text="Artist:")
artist_label.pack()

# Add a text box for the artist name
artist_entry = tk.Entry(window)
artist_entry.pack()

# Add a button to extract the lyrics
extract_button = tk.Button(window, text="Extract Lyrics", command=extract_lyrics)
extract_button.pack()

# Add a text box to display the lyrics
lyrics_text = tk.Text(window)
lyrics_text.pack()

Producción

Si se encuentra la canción, la letra se muestra en el cuadro de texto. De lo contrario, se muestra un mensaje indicando que no se encontró la letra.

Tenga en cuenta que necesitará obtener un token de acceso Genius para usar este código. Puede obtener uno creando una cuenta en el sitio web de Genius y siguiendo las instrucciones en la documentación de la biblioteca de letrasgenius.

Conclusión

Por lo tanto, hemos descubierto que el código mencionado anteriormente proporciona una GUI simple y fácil de usar para extraer la letra de una canción usando Python y la biblioteca letrasgenius. Los usuarios pueden ingresar el nombre de la canción y el artista en cuadros de texto, hacer clic en un botón para extraer la letra y ver la letra en un cuadro de texto.