赞
踩
下面是代码的详细解释:
一、 **导入必要的库** 代码开始时,导入了必要的库:`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
Mac (via Homebrew)
brew install ffmpeg
Linux (Ubuntu/Debian)
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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。