使用 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 等。

另一方面,解码是指将编码的音频文件转换回其原始未压缩形式以进行播放的过程。在解码过程中,压缩的音频数据会被解压缩并转换回可以通过扬声器或耳机播放的波形。

总之,编码和解码是数字音频文件创建和播放中涉及的两个关键过程。编码涉及将音频数据压缩成特定格式以进行存储,而解码则涉及将压缩的音频文件转换回其原始形式以进行播放。

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

先决条件

在我们深入了解创建 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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告