Python 创建一个GUI提取歌曲歌词

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 Audio) ——这是一种由Microsoft开发的专有格式,类似于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平台或其他任何平台。

  • 更新版本的Python。在撰写本文时,我使用的是3.10.9版本。

  • 了解使用Jupyter笔记本的知识。

  • 了解和应用虚拟环境将会很有帮助,但不是必需的,此外,在某些情况下使用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 库提取歌曲的歌词。用户可以在文本框中输入歌曲名称和艺术家,点击一个按钮来提取歌词,并在文本框中查看歌词。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程