本地音频转文字工具 (Vosk)
功能描述
该工具允许用户选择一个音频文件(支持.wav, .mp3, .aac格式),并使用 本地的 Vosk 引擎 将其转换为文字。转换后的文字将自动保存为与音频文件同名的.txt文件。此过程完全离线,无需网络连接。
创作过程
- 使用
tkinter库创建了一个简单的GUI界面。 - 使用
pydub库将非WAV格式的音频转换为Vosk兼容的WAV格式(单声道, 16kHz)。 - 使用
vosk库进行本地语音识别。 - 通过
filedialog让用户选择音频文件,并将转换后的文字保存到同目录下的.txt文件中。 - 使用
PyInstaller将Python脚本打包为可执行的exe文件,方便用户直接运行。
使用方法
- 下载Vosk模型:
- 访问 Vosk模型下载页面。
- 下载一个适合你语言的模型。对于中文,推荐下载
vosk-model-small-cn-0.22或更大的中文模型。 - 下载的是一个压缩文件(如
.zip)。
- 放置模型:
- 将下载的压缩文件解压。
- 在
audio_to_text.py(或生成的audio_to_text.exe) 所在的同一目录下,创建一个名为model的文件夹。 - 将解压后得到的所有文件和子文件夹复制到这个
model文件夹内。最终你的目录结构应该类似: your_program_directory/ ├── audio_to_text.py (或 audio_to_text.exe) ├── model/ │ ├── am/ │ ├── conf/ │ ├── graph/ │ ├── ivector/ │ └── README └── ... (其他文件)
- 运行
audio_to_text.exe(或python audio_to_text.py)。 - 点击"选择音频文件并转换 (本地)"按钮,选择一个音频文件。
- 转换完成后,文字将保存到与音频文件同名的.txt文件中。
安装依赖
在运行或编译之前,请确保安装了以下Python依赖:
pip install tkinter pydub vosk
重要: pydub 需要 ffmpeg 来处理音频格式转换。请确保已安装 ffmpeg 并将其添加到系统环境变量中。可以从 FFmpeg官网 下载并安装。
编译指令
要将Python脚本打包为可执行的exe文件,请执行以下步骤:
-
找到
libvosk.dll文件:- 在你的命令行/终端运行
pip show vosk。 - 记下输出中
Location:后面的路径。 - 使用文件浏览器进入该路径下的
vosk子文件夹。 - 找到
libvosk.dll文件并复制它的完整路径 (例如:C:\path\to\your\python\Lib\site-packages\vosk\libvosk.dll)。
- 在你的命令行/终端运行
-
找到
libvosk.dll的依赖项 (如果需要):- 使用 Dependencies (或类似工具) 打开上一步找到的
libvosk.dll。 - 查找并记下任何报告为缺失的依赖项 (特别是
VCRUNTIME*.dll,MSVCP*.dll等)。 - 在你的系统 (通常是
C:\Windows\System32) 中找到这些缺失的DLL文件,并复制它们的完整路径。
- 使用 Dependencies (或类似工具) 打开上一步找到的
-
运行 PyInstaller 命令: 打开命令行/终端,进入包含
audio_to_text.py和model文件夹的目录,然后运行以下命令。请务必将<...>占位符替换为你找到的实际完整路径:pyinstaller --onefile --windowed ^ --add-data "model;model" ^ --add-binary "<PATH_TO_LIBVOSK_DLL>;." ^ --add-binary "<PATH_TO_VCRUNTIME140_DLL>;." ^ --add-binary "<PATH_TO_MSVCP140_DLL>;." ^ audio_to_text.py 例如: pyinstaller --onefile --windowed ^ --add-data "model;model" ^ --add-binary "C:\Users\苏州德启\AppData\Roaming\Python\Python313\site-packages\vosk\libvosk.dll;." ^ --add-binary "C:\Users\苏州德启\AppData\Roaming\Tencent\WXWork\WxWorkDocConvert\3.19.8.0\WxWorkDocConvert\vcruntime140.dll;." ^ --add-binary "C:\Users\苏州德启\AppData\Roaming\Tencent\WeMeet\Global\Data\AvatarModel\14f2ac6b4700cbb5bca7065a53d4017a\avatar\msvcp140.dll;." ^ audio_to_text.py- (如果你发现其他缺失的依赖项,为每一个都添加一行
--add-binary "<PATH_TO_MISSING_DLL>;." ^) - (末尾的
^符号用于在Windows命令行中换行,使命令更易读。如果你的命令行不支持,可以将所有参数写在一行)
参数解释:
--onefile: 打包成单个exe文件。--windowed: 运行时不显示命令行窗口(用于GUI应用)。--add-data "model;model": 将model文件夹及其内容打包到exe中,并在运行时放在名为model的目录下。--add-binary "<PATH_TO_DLL>;.": 将指定的 DLL 文件打包到exe中,并在运行时放在根目录 (.) 下,这样库就能找到它及其依赖。
- (如果你发现其他缺失的依赖项,为每一个都添加一行
注意:
- 确保在运行此命令时,
model文件夹已经存在并且包含下载好的Vosk模型文件。 - 如果你的模型文件夹名称不同,请相应修改
--add-data参数。 - 打包后的exe文件会比较大,因为它包含了整个Vosk模型和核心库及其依赖。
编译完成后,生成的exe文件将位于dist目录下。