python实现的音频转文字工具(本地非在线方案)

497 阅读4分钟

本地音频转文字工具 (Vosk)

功能描述

该工具允许用户选择一个音频文件(支持.wav, .mp3, .aac格式),并使用 本地的 Vosk 引擎 将其转换为文字。转换后的文字将自动保存为与音频文件同名的.txt文件。此过程完全离线,无需网络连接。

创作过程

  1. 使用tkinter库创建了一个简单的GUI界面。
  2. 使用pydub库将非WAV格式的音频转换为Vosk兼容的WAV格式(单声道, 16kHz)。
  3. 使用vosk库进行本地语音识别。
  4. 通过filedialog让用户选择音频文件,并将转换后的文字保存到同目录下的.txt文件中。
  5. 使用PyInstaller将Python脚本打包为可执行的exe文件,方便用户直接运行。

使用方法

  1. 下载Vosk模型:
    • 访问 Vosk模型下载页面
    • 下载一个适合你语言的模型。对于中文,推荐下载 vosk-model-small-cn-0.22 或更大的中文模型。
    • 下载的是一个压缩文件(如 .zip)。
  2. 放置模型:
    • 将下载的压缩文件解压。
    • 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 └── ... (其他文件)
  3. 运行 audio_to_text.exe (或 python audio_to_text.py)。
  4. 点击"选择音频文件并转换 (本地)"按钮,选择一个音频文件。
  5. 转换完成后,文字将保存到与音频文件同名的.txt文件中。

安装依赖

在运行或编译之前,请确保安装了以下Python依赖:

pip install tkinter pydub vosk

重要: pydub 需要 ffmpeg 来处理音频格式转换。请确保已安装 ffmpeg 并将其添加到系统环境变量中。可以从 FFmpeg官网 下载并安装。

编译指令

要将Python脚本打包为可执行的exe文件,请执行以下步骤:

  1. 找到 libvosk.dll 文件:

    • 在你的命令行/终端运行 pip show vosk
    • 记下输出中 Location: 后面的路径。
    • 使用文件浏览器进入该路径下的 vosk 子文件夹。
    • 找到 libvosk.dll 文件并复制它的完整路径 (例如: C:\path\to\your\python\Lib\site-packages\vosk\libvosk.dll)。
  2. 找到 libvosk.dll 的依赖项 (如果需要):

    • 使用 Dependencies (或类似工具) 打开上一步找到的 libvosk.dll
    • 查找并记下任何报告为缺失的依赖项 (特别是 VCRUNTIME*.dll, MSVCP*.dll 等)。
    • 在你的系统 (通常是 C:\Windows\System32) 中找到这些缺失的DLL文件,并复制它们的完整路径
  3. 运行 PyInstaller 命令: 打开命令行/终端,进入包含 audio_to_text.pymodel 文件夹的目录,然后运行以下命令。请务必将 <...> 占位符替换为你找到的实际完整路径

    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目录下。

1.png