Поиск по сайту:

Создайте графический интерфейс для извлечения текста из песни с помощью Python


Тексты – это слова, которые поются в песне и передают смысл и эмоции песни. Python предлагает несколько библиотек для извлечения текста из песни. В этом уроке мы создадим графический интерфейс пользователя (GUI) с использованием библиотеки Python tkinter, которая извлекает текст из песни.

В каких форматах песни доступны в Интернете?

Существует несколько форматов, в которых песни доступны в Интернете, в зависимости от платформы и типа файла. Некоторые из наиболее распространенных форматов:

MP3 (MPEG Audio Layer 3) – это наиболее распространенный формат музыкальных файлов, который сжимает аудиоданные и удаляет части файла, которые не слышны человеческому уху. Файлы MP3 широко совместимы с большинством устройств и платформ.

AAC (Advanced Audio Coding) – это более эффективный формат, чем MP3, который обеспечивает лучшее качество звука при меньшем размере файлов. Файлы AAC обычно используются Apple iTunes и другими устройствами Apple.

WAV (формат аудиофайла Waveform) – это формат без потерь, в котором аудиоданные хранятся в необработанном несжатом виде, что приводит к созданию файлов большого размера. Файлы WAV обычно используются профессионалами музыкальной индустрии для записи и микширования.

FLAC (бесплатный аудиокодек без потерь) – это высококачественный формат без потерь, который сжимает аудиоданные без ущерба для качества, в результате чего размер файлов становится меньше, чем у файлов WAV. Файлы FLAC обычно используются аудиофилами и любителями музыки, которым требуется максимально возможное качество звука.

OGG (Ogg Vorbis) — это формат с потерями данных с открытым исходным кодом, похожий на MP3 и AAC, но обеспечивающий лучшее качество звука при меньшем размере файлов. Файлы OGG обычно используются для потоковой передачи музыки в Интернете.

WMA (Windows Media Audio) – это собственный формат, разработанный Microsoft, который похож на MP3 и AAC, но менее широко совместим с другими устройствами и платформами.

Это одни из наиболее распространенных форматов, в которых песни доступны в Интернете, и выбор формата может зависеть от таких факторов, как платформа, тип устройства и желаемое качество звука.

Что мы понимаем под кодированием и декодированием аудиофайлов?

Кодирование и декодирование — две важные концепции в контексте аудиофайлов, которые относятся к процессу преобразования аудиоданных из одного формата в другой.

Кодирование — это процесс сжатия аудиоданных в определенный формат для уменьшения размера файла и упрощения его передачи, хранения и воспроизведения. Во время кодирования аудиоданные анализируются, обрабатываются и преобразуются в цифровой формат, который можно сохранить в виде файла. Наиболее распространенные форматы кодирования звука включают, среди прочего, MP3, AAC, FLAC и OGG.

С другой стороны, декодирование — это процесс преобразования закодированного аудиофайла обратно в исходную несжатую форму для воспроизведения. Во время декодирования сжатые аудиоданные распаковываются и преобразуются обратно в сигнал, который можно воспроизводить через динамики или наушники.

Таким образом, кодирование и декодирование — это два ключевых процесса, участвующих в создании и воспроизведении цифровых аудиофайлов. Кодирование включает сжатие аудиоданных в определенный формат для хранения, а декодирование включает преобразование сжатого аудиофайла обратно в исходную форму для воспроизведения.

Предварительные условия

Прежде чем мы углубимся в детали создания графического пользовательского интерфейса, вы должны иметь базовое представление о программировании на Python, концепциях объектно-ориентированного программирования (ООП) и о том, как работать с модулем Tkinter.

Список рекомендуемых настроек

  • pip install tkinter, библиотека Lyricsgenius

  • Ожидается, что пользователь будет иметь доступ к любой автономной IDE, такой как VS-Code, PyCharm, Atom или Sublime text.

  • Можно использовать даже онлайн-компиляторы Python, такие как Kaggle.com, платформа Google Cloud или любая другая.

  • Обновленная версия Python. На момент написания статьи я использовал версию 3.10.9.

  • Знание использования блокнота Jupyter.

  • Знание и применение виртуальной среды будут полезны, но не обязательны, также будет полезно использование API в некотором контексте.

Действия, необходимые для выполнения задачи

Давайте начнем создавать графический интерфейс с использованием tkinter для извлечения текста из песни. Создайте файл Python и назовите его main.py.

Шаг 1: Импортируйте необходимые модули

from tkinter import *
from lyricsgenius import Genius

Далее нам нужно импортировать необходимые библиотеки в ваш скрипт Python. В этом случае нам понадобится библиотека Lyricgenius для извлечения текстов песен и библиотека tkinter для создания графического интерфейса. Вот заявление об импорте

Шаг 2. Создайте окно графического интерфейса.

Сначала мы создаем новое окно, используя функцию Tk() из библиотеки tkinter. Мы также устанавливаем заголовок и размеры окна, используя функции title() и geometry() соответственно.

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

Шаг 3. Создайте ярлык для песен:

Затем мы создаем метку и текстовое поле для названия песни, используя функции Label() и Entry() из tkinter соответственно. Мы также создаем метку и текстовое поле для имени исполнителя.

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)

Мы упаковываем эти элементы в окно с помощью функции package().

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

Шаг 4: Создание кнопок

Мы также создаем кнопку для извлечения текста с помощью функции Button() и упаковываем ее в окно.

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

Наконец, мы создаем текстовое поле для отображения текста песни с помощью функции Text() и упаковываем его в окно.

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

Шаг 5: Извлечение текста

Мы определяем функцию extract_lyrics(), которая будет вызываться, когда пользователь нажимает кнопку «Извлечь текст». Эта функция извлекает название песни и исполнителя из текстовых полей с помощью функции get(), создает объект Genius с использованием библиотеки Lyricgenius и ищет песню с помощью функции search_song(). Если песня найдена, текст отображается в текстовом поле с помощью функции Insert().

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.")

Обратите внимание, что для использования этого кода вам потребуется получить токен доступа Genius. Вы можете получить его, создав учетную запись на веб-сайте Genius и следуя инструкциям в документации к библиотеке Lyricgenius.

Итоговый код, программа

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()

Выход

Если песня найдена, текст отображается в текстовом поле. В противном случае отображается сообщение о том, что текст песни не найден.

Обратите внимание, что для использования этого кода вам потребуется получить токен доступа Genius. Вы можете получить его, создав учетную запись на веб-сайте Genius и следуя инструкциям в документации к библиотеке Lyricgenius.

Заключение

Таким образом, мы обнаружили, что вышеупомянутый код предоставляет простой и удобный графический интерфейс для извлечения текста песни с использованием Python и библиотеки Lyricgenius. Пользователи могут ввести название песни и исполнителя в текстовые поля, нажать кнопку, чтобы извлечь текст, и просмотреть текст в текстовом поле.

Статьи по данной тематике: