使用 Python 提取歌曲歌詞的 GUI


歌詞是歌曲中演唱的文字,傳達了歌曲的含義和情感。Python 提供了幾個庫來提取歌曲的歌詞。在本教程中,我們將使用 Python 的 tkinter 庫建立一個圖形使用者介面 (GUI),用於提取歌曲的歌詞。

歌曲在線上有哪些不同的格式?

根據平臺和檔案型別,歌曲在線上有多種格式。一些最常見的格式包括:

MP3 (MPEG 音訊層 3) − 這是音樂檔案的最常見格式,它壓縮音訊資料並刪除人類耳朵無法聽到的檔案部分。MP3 檔案與大多數裝置和平臺廣泛相容。

AAC (高階音訊編碼) − 這種格式比 MP3 更有效率,在較小的檔案大小下提供更好的音質。AAC 檔案通常由 Apple 的 iTunes 和其他 Apple 裝置使用。

WAV (波形音訊檔案格式) − 這是無損格式,以其原始的未壓縮形式儲存音訊資料,導致檔案大小很大。WAV 檔案通常由音樂行業專業人士用於錄製和混音。

FLAC (免費無損音訊編解碼器) − 這是一個高質量的無損格式,可以在不犧牲質量的情況下壓縮音訊資料,從而使檔案大小比 WAV 檔案更小。FLAC 檔案通常由發燒友和音樂愛好者使用,他們希望獲得最佳的音質。

OGG (Ogg Vorbis) − 這是一個開源的有損格式,類似於 MP3 和 AAC,但在較小的檔案大小下提供更好的音質。OGG 檔案通常用於線上流媒體音樂。

WMA (Windows Media 音訊) − 這是微軟開發的一種專有格式,類似於 MP3 和 AAC,但與其他裝置和平臺的相容性較差。

這些是一些在線上最常見的歌曲格式,格式的選擇可能取決於平臺、裝置型別和所需的音質等因素。

關於音訊檔案,我們如何理解編碼和解碼?

編碼和解碼是音訊檔案環境中的兩個重要概念,它們指的是將音訊資料從一種格式轉換為另一種格式的過程。

編碼是指將音訊資料壓縮成特定格式以減小檔案大小,並使其更容易傳輸、儲存和播放的過程。在編碼過程中,音訊資料會被分析、處理並轉換為可以儲存為檔案的數字格式。最常見的音訊編碼格式包括 MP3、AAC、FLAC 和 OGG 等。

另一方面,解碼是指將編碼的音訊檔案轉換回其原始未壓縮形式以進行播放的過程。在解碼過程中,壓縮的音訊資料會被解壓縮並轉換回可以透過揚聲器或耳機播放的波形。

總之,編碼和解碼是數字音訊檔案建立和播放中涉及的兩個關鍵過程。編碼涉及將音訊資料壓縮成特定格式以進行儲存,而解碼則涉及將壓縮的音訊檔案轉換回其原始形式以進行播放。

先決條件

在我們深入瞭解建立 GUI 的細節之前,您應該對 Python 程式設計、面向物件程式設計 (OOP) 概念以及如何使用 Tkinter 模組有一個基本的瞭解。

推薦設定列表

  • pip install tkinter, Lyricsgenius 庫

  • 預計使用者將能夠訪問任何獨立的 IDE,例如 VS-Code、PyCharm、Atom 或 Sublime text。

  • 也可以使用線上 Python 編譯器,例如 Kaggle.com、Google Cloud Platform 或任何其他編譯器。

  • 更新版本的 Python。在撰寫本文時,我使用了 3.10.9 版本。

  • 瞭解如何使用 Jupyter notebook。

  • 虛擬環境的知識和應用將是有益的,但也不是必需的,在某些情況下使用 API 也將很有用

完成任務所需的步驟

讓我們開始使用 tkinter 建立一個 GUI 來提取歌曲的歌詞。建立一個 Python 檔案並將其命名為 main.py。

步驟 1:匯入必要的模組

from tkinter import *
from lyricsgenius import Genius

接下來,我們需要在您的 Python 指令碼中匯入必要的庫。在這種情況下,我們需要 lyricsgenius 庫來提取歌詞,以及 tkinter 庫來建立 GUI 介面。以下是匯入語句

步驟 2:建立 GUI 視窗

首先,我們使用 tkinter 庫中的 Tk() 函式建立一個新視窗。我們還分別使用 title() 和 geometry() 函式設定視窗的標題和尺寸。

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

步驟 3:為歌曲建立標籤

接下來,我們分別使用 tkinter 的 Label() 和 Entry() 函式為歌曲名稱建立一個標籤和一個文字框。我們還為藝術家姓名建立了一個標籤和一個文字框。

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)

我們使用 pack() 函式將這些元素打包到視窗中。

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() 函式從文字框中檢索歌曲名稱和藝術家,使用 lyricsgenius 庫建立一個 Genius 物件,並使用 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 網站上建立一個帳戶並按照 lyricsgenius 庫文件中的說明操作來獲取一個令牌。

最終程式碼,程式

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 網站上建立一個帳戶並按照 lyricsgenius 庫文件中的說明操作來獲取一個令牌。

結論

因此,我們發現上面提到的程式碼為使用 Python 和 lyricsgenius 庫提取歌曲歌詞提供了一個簡單易用的 GUI。使用者可以在文字框中輸入歌曲名稱和藝術家,點選一個按鈕提取歌詞,並在文字框中檢視歌詞。

更新於: 2023 年 4 月 20 日

901 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.