本地离线部署whisper模型进行话音转写,亲测可用

在本地搭建 Whisper 语音转写环境比较简单,以下是详细步骤,适用于 Windows、macOS 和 Linux 系统,其中windows系统亲测可用:

一、基础环境准备

  1. 安装 Python
    确保安装 Python 3.8+:
  2. 验证 Python 安装
    打开命令行(CMD/PowerShell/ 终端),输入:python --version # 或 python3 --version(macOS/Linux),显示版本号即表示安装成功。

二、安装 Whisper

         # 国内镜像加速(可选)

          pip install openai-whisper -i https://pypi.tuna.tsinghua.edu.cn/simple

  1. 安装核心库
    命令行输入以下命令(国内用户可加镜像加速):
    # 基础安装(默认包含轻量模型支持) pip install openai-whisper
  2. 安装音频处理依赖
    Whisper 需要额外工具处理音频格式:Windows:下载并安装 FFmpeg,将 ffmpeg.exe 所在目录添加到系统环境变量 PATH

三、下载 Whisper 模型(可选)

Whisper 会自动下载所需模型,也可提前手动下载(推荐大型模型 large-v3 以获得最佳效果):

# 安装时指定模型(自动下载) pip install "openai-whisper[large-v3]"

模型会保存在以下路径(可手动替换或管理):

  • Windows:C:\Users\你的用户名\.cache\whisper\
  • macOS/Linux:~/.cache/whisper/

四、基本使用方法

1. 命令行直接转写

# 转写音频文件(支持 WAV/MP3/MP4 等格式)

whisper 你的音频文件路径.wav --model large-v3 --language Chinese

# 示例(替换为你的文件路径)

whisper D:\Net_Program\test\whisper-test.wav --model large-v3 --language Chinese

2. 关键参数说明
  • --model:指定模型(tiny/base/small/medium/large-v3,越大精度越高,需求资源越多)
  • --language Chinese:指定语言为中文(避免自动检测错误)
  • --output_dir 输出目录:指定结果保存路径
  • --format txt:输出格式(支持 txt/srt/vtt 等)

五、Python 脚本调用(进阶)

import whisper
import os
import pathlib
import subprocess
from zhconv import convert  # 用于繁转简

def check_ffmpeg():
    """检查FFmpeg是否安装并配置正确"""
    try:
        subprocess.run(
            ["ffmpeg", "-version"],
            check=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
            text=True
        )
        return True
    except FileNotFoundError:
        print("错误:未找到FFmpeg工具,请先安装并配置环境变量")
        return False
    except Exception as e:
        print(f"FFmpeg检查失败:{str(e)}")
        return False

def transcribe_audio(audio_path, model_name="large-v3", language="Chinese"):
    # 检查FFmpeg
    if not check_ffmpeg():
        return None

    # 验证音频文件路径
    audio_path = str(pathlib.Path(audio_path).resolve())
    
    if not os.path.exists(audio_path):
        print(f"错误:音频文件不存在 '{audio_path}'")
        return None
    
    if not os.path.isfile(audio_path):
        print(f"错误:'{audio_path}' 不是有效的文件")
        return None

    # 加载模型并转写
    try:
        print(f"开始加载模型 {model_name}...")
        model = whisper.load_model(model_name, device="cpu")
        
        print(f"开始转写文件:{audio_path}")
        # 关键设置:明确指定中文,并关闭自动语言检测
        result = model.transcribe(
            audio=audio_path,
            language="Chinese",  # 强制指定中文
            verbose=True,
            fp16=False,
            initial_prompt="请用简体中文转写,不要使用繁体中文。"  # 提示模型使用简体
        )
        
        # 强制将结果转换为简体中文(双重保险)
        simplified_text = convert(result["text"], 'zh-cn')
        
        # 保存结果
        output_dir = "whisper_results"
        os.makedirs(output_dir, exist_ok=True)
        audio_name = os.path.splitext(os.path.basename(audio_path))[0]
        output_path = os.path.join(output_dir, f"{audio_name}_transcript.txt")
        
        with open(output_path, "w", encoding="utf-8") as f:
            f.write(simplified_text)
        
        print(f"\n✅ 转写完成(已转换为简体中文),结果保存至:{output_path}")
        return simplified_text
        
    except Exception as e:
        print(f"转写过程出错:{str(e)}")
        return None

if __name__ == "__main__":
    # 安装繁转简依赖(首次运行需要)
    try:
        import zhconv
    except ImportError:
        print("正在安装繁转简依赖...")
        subprocess.run(["pip", "install", "zhconv"], check=True)
        import zhconv

    # 替换为你的音频文件路径
    audio_file = r"D:\Net_Program\test\whisper-test.wav"
    transcribe_audio(audio_file)
    

六、常见问题解决

  1. 内存不足
    • 若提示 OutOfMemoryError,换用更小的模型(如 medium 或 small
    • 关闭其他占用内存的程序(large-v3 建议至少 16GB 内存)
  2. 音频格式错误
    • 用 FFmpeg 转换格式:ffmpeg -i 输入文件.mp3 -ar 16000 -ac 1 输出文件.wav(转为 16kHz 单声道 WAV)
  3. 模型下载慢
    • 手动下载模型文件(可在 Hugging Face 找到),放入 .cache/whisper/ 目录

通过以上步骤,你可以在本地搭建一个稳定的 Whisper 转写环境,无需依赖 Ollama,直接调用模型进行语音转写。如果追求更高精度,优先使用 large-v3 模型;若注重速度或资源有限,可选择 small 或 base 模型。

Read more

基于WEB的高校工会管理系统--毕设附源码

基于WEB的高校工会管理系统--毕设附源码

摘要 随着高校工会管理需求的日益增加,传统管理模式已难以满足现代化管理的高效性和精准性要求。为解决这一问题,本论文设计并实现了基于Spring Boot框架的高校工会管理小程序系统。该系统通过WEB端实现工会各项功能的数字化和信息化管理,主要包括后台管理模块与职工用户模块。后台管理模块包括系统用户管理、委员信息管理、福利信息管理、在线反馈管理、经费信息管理等功能,管理员可在系统中轻松管理职工、福利、申请、经费等相关信息;职工用户模块则提供了首页、校园资讯、委员信息、福利信息、在线反馈和个人信息管理等功能,职工可以查看福利信息、提交反馈、申请信息等。系统采用Spring Boot技术架构,前端界面通过小程序与用户互动,数据库则利用MySQL进行数据存储,确保系统的高效性与稳定性。通过系统设计与实现,解决了工会管理中的信息孤岛问题,提升了职工与管理者之间的信息交流和服务效率,为高校工会的数字化转型提供了切实可行的解决方案。 关键词:高校工会管理  ;小程序;SpringBoot;MySQL Abstract With the increasing demand for union

速通前端篇 —— HTML

速通前端篇 —— HTML

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-ZEEKLOG博客 所属专栏:速通前端 目录 HTML的介绍 如何创建HTML文件 HTML 文件基本结构 HTML常用标签 title标签   标题标签 h1-h6  段落标签 p 换行标签 br 图片标签 img  超链接 a 表格标签 table 表单标签 input 标签 form 标签  select 标签 textarea 标签  无语义标签 div&span 列表标签  综合练习:用户登录  由于我们Java是属于后端开发的,因此对于前端部分,我们只需要简单了解,达到认识与编写基本的代码即可。  HTML的介绍 HTML(Hyper

基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的跌倒检测系统(千问+DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)

基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的跌倒检测系统(千问+DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)

项目摘要 本项目旨在设计并实现一个高效、智能且用户友好的基于多版本YOLO深度学习模型与SpringBoot Web框架的实时跌倒检测系统。随着全球老龄化社会的加速到来,老年人在日常生活中发生跌倒的风险日益增高,及时、准确地检测跌倒事件对于保障其生命安全与健康具有重大社会意义。传统监控或穿戴式设备存在隐私侵扰、用户体验不佳或漏报率高等局限。因此,本项目融合了当前前沿的计算机视觉技术与现代Web开发架构,构建了一个集智能分析、实时监控、数据管理与远程交互于一体的综合性解决方案。 系统的核心检测引擎采用了性能卓越的YOLO系列目标检测算法,并创新性地集成了YOLOv8、YOLOv10、YOLOv11及YOLOv12四种最新版本模型,为用户提供了灵活、可对比的算法选择,以适应不同的精度与速度需求。模型在精心标注的自定义数据集上进行训练与验证,该数据集包含 ‘fallen’(已跌倒)、‘falling’(正在跌倒)和‘stand’(站立/正常) 三个关键类别,共计3,888张图像(训练集3,594张,验证集294张),确保了系统对跌倒过程动态的精确识别能力。 系统后端采用SpringB

双剑破天门:攻防世界Web题解之独孤九剑心法(三)

双剑破天门:攻防世界Web题解之独孤九剑心法(三)

免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任 **本文以攻防世界部分题为例进行演示,后续会对攻防世界大部分的web题目进行演示,如果你感兴趣请关注** 目录 一:攻防世界web-Fileinclude 二:攻防世界web-Easyupload 三:总结 一:攻防世界web-Fileinclude 打开为如下图所示 Flag在flag.php 我们查看源码发现如下 代码审计如下 <?php // 检查是否开启了错误显示,如果没有,则开启 if( !ini_get('display_errors') ) { ini_set('display_errors', 'On'); } // 设置错误报告级别为显示所有错误 error_reporting(E_ALL); // 从 cookie