下面是代码的详细解释:
一、 **导入必要的库** 代码开始时,导入了必要的库:`tkinter` 用于创建 GUI,`filedialog` 用于选择音频文件,`os` 用于文件操作,`whisper` 用于语音转文本。
二、**创建 GUI** GUI 由一个框架组成,包含一个按钮用于选择音频文件,一个标签用于显示所选文件,另一个标签用于显示转换结果。 **选择音频文件** 当按钮被点击时,`select_audio_file` 函数被调用,打开一个文件对话框,以便用户选择音频文件。所选文件路径被存储在 `root.filename` 变量中。
三、**将语音转换为文本** `convert_speech_to_text` 函数被调用,带有所选音频文件作为参数。该函数使用 Whisper 库将音频文件转换为文本,并将结果存储在 `text` 变量中。
四、**保存转换结果** `save_text_file` 函数被调用,带有音频文件路径和转换文本作为参数。该函数将转换结果保存到与音频文件相同目录下的文本文件中。 **显示结果** 转换结果被显示在 GUI 标签中。
安装必要的库
pip install whisper
whisper转录需要FFmpeg
安装 FFmpeg 的方法取决于你的操作系统。下面是常见操作系统的安装方法:
Windows
下载 FFmpeg 的 Windows 版本从官方网站:https://ffmpeg.org/download.html 选择合适的版本(32 位或 64 位)并下载安装程序。 运行安装程序并按照提示安装 FFmpeg。 将 FFmpeg 的安装目录添加到系统的 PATH 中。Mac (via Homebrew)
安装 Homebrew,如果你还没有安装:https://brew.sh/ 打开 Terminal 并输入以下命令:brew install ffmpeg
等待安装完成。
Linux (Ubuntu/Debian)
打开 Terminal 并输入以下命令:sudo apt-get install ffmpeg
在win系统中需要将ffmpeg添加到环境变量中。
为了将位于 E:\ffmpeg-7.0-essentials_build\bin
(我的ffmpeg在此目录)
的 FFmpeg 可执行文件(ffmpeg.exe)添加到系统的 PATH 中,可以按照以下步骤操作:
E:\ffmpeg-7.0-essentials_build\bin
到列表中。
点击“确定”以关闭所有窗口。
或者,你可以使用命令提示符来添加路径到系统的 PATH 环境变量。下面是如何操作:
以管理员身份打开命令提示符。 输入以下命令并按回车键:setx PATH "%PATH%;E:\ffmpeg-7.0-essentials_build\bin"
这将添加路径到系统的 PATH 环境变量。
一旦添加了路径,你应该能够从命令提示符中的任何目录运行 FFmpeg。
下面是代码实现:
import tkinter as tk from tkinter import filedialog import os import whisper def select_audio_file(): root.filename = filedialog.askopenfilename(initialdir="/", title="Select file", filetypes=(("audio files", "*.wav"), ("all files", "*.*"))) if root.filename: label_file["text"] = os.path.basename(root.filename) convert_speech_to_text(root.filename) def convert_speech_to_text(audio_file): model = whisper.load_model("base") result = model.transcribe(audio_file, fp16=False) text = result["text"] save_text_file(audio_file, text) def save_text_file(audio_file, text): text_file_path = os.path.splitext(audio_file)[0] + ".txt" with open(text_file_path, 'w') as file: file.write(text) label_result["text"] = f"Transcription saved to: {text_file_path}" root = tk.Tk() root.title("Speech to Text Converter") frame = tk.Frame(root) frame.pack(pady=20) button_load = tk.Button(frame, text="Select Audio File", command=select_audio_file) button_load.pack() label_file = tk.Label(frame, text="No file selected") label_file.pack() label_result = tk.Label(frame, text="") label_result.pack() root.mainloop()
总结
**文章总结**:本文介绍了一个使用Python和多个库(包括`tkinter`、`filedialog`、`os`和`whisper`)构建的语音转文本(Speech-to-Text)GUI转换工具的实现流程。主要功能包括选择音频文件、调用Whisper库将音频转换为文本、将结果保存为文本文件以及在GUI界面上展示所选文件名称和转换结果。文章还包含了安装`whisper`和FFmpeg的步骤,以及在Windows系统上如何将FFmpeg添加到系统PATH的详细说明。代码实现部分展示了一个基于tkinter的简单界面和对应功能实现的函数(如`select_audio_file`、`convert_speech_to_text`和`save_text_file`)。通过这段代码,用户可以在图形化界面中直观地操作并看到转换的结果。