本地离线部署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

Microsoft Visual C++ Redistributable 运行库怎么安装?(详细教程)

Microsoft Visual C++ Redistributable 运行库怎么安装?(详细教程)

前言 很多人安装软件或游戏时会遇到这样的提示:“无法启动程序,计算机中丢失 MSVCP140.dll”或“VCRUNTIME140.dll 未找到”。 这类问题通常是由于系统缺少 Microsoft Visual C++ Redistributable 运行库导致的。 Microsoft Visual C++ Redistributable 是 Windows 系统中必不可少的运行组件,几乎所有基于 C++ 的程序都依赖它。若运行库缺失或版本不匹配,会导致软件无法启动。本文将从原理、安装与修复三个方面,介绍如何正确配置运行库,并推荐实用工具快速解决 DLL 缺失问题。 Microsoft Visual C++ Redistributable运行库修复工具【免费版】http://www.ijinshan.com/functions/repairdll.html?channel=1506 一、为什么电脑提示“

C++日志管理从基础到完善

C++日志管理从基础到完善

万古教员有名言,自信人生二百年。 个人主页:oioihoii 喜欢内容的话欢迎关注、点赞、收藏!感谢支持,祝大家祉猷并茂,顺遂无虞! 版本一:基础日志代码 在设计C++日志系统时,我们需要考虑以下几个关键点: 1. 易用性:日志系统应该易于使用,开发者应该能够轻松地添加日志条目。 2. 性能:日志系统应该尽可能地减少对应用程序性能的影响。这意味着日志记录的过程应该尽可能地快速,以减少对应用程序的延迟。 3. 灵活性:日志系统应该能够支持不同级别的日志(如错误、警告、信息、调试等),并能够在运行时动态地更改日志级别。 4. 可配置性:日志系统应该允许开发者配置日志的各种参数,如日志文件的位置、日志的格式等。 5. 线程安全:如果应用程序是多线程的,那么日志系统也必须是线程安全的。 下面是一个简单的C++日志系统的设计,它考虑了上述的所有因素: #include<iostream>#include<

【C++初阶】C++入门相关知识(1):C++历史 & 第一个C++程序 & 命名空间

【C++初阶】C++入门相关知识(1):C++历史 & 第一个C++程序 & 命名空间

🎈主页传送门:良木生香 🔥个人专栏:《C语言》 《数据结构-初阶》 《程序设计》 🌟人为善,福随未至,祸已远行;人为恶,祸虽未至,福已远离 前言:我们在此之前已经学习了C语言和数据结构,明白了C语言的基本概念,同时也学习了初阶的数据结构,现在,我们已经具备了学习初阶c++的能力了,那么,从今天开始,我们就正式进入到C++的学习中了,本专栏会记录下小编的学习C++的历程,有什么讲的不对的地方还请大佬们指出错误,那么,现在我们就正式进入到C++的学习吧 本专栏介绍:在我们之前已经学习过的C语言和数据结构的基础上,我们将会在本C++专栏上继续学习C++语法、STL、以及高阶数据结构 目录 一、C++历史介绍 1.1、起源与诞生(1979~1983) 1.2、核心 1.3发展与完善(

C/C++变量三兄弟:局部、静态局部、全局变量的区别+场景,一篇讲透

前言 写 C/C++ 时,很多人困惑:同样是变量,为啥有的只能在函数里用?有的能记住上一次的值?有的全文件都能访问?核心差异在于定义方式、作用域、存储期—— 这篇文章直击重点,让初学者快速掌握核心,避开踩坑! 一、先明确:三类变量的定义方式 这是区分三者的第一判断标准,直接决定变量的所有特性: 变量类型定义位置是否加static关键字局部变量函数/代码块内❌ 不加静态局部变量函数/代码块内✅ 加普通全局变量函数外(文件顶部)❌ 不加文件静态全局变量函数外(文件顶部)✅ 加 二、局部变量(auto变量):“临时短命”的自动变量 1. 核心特性 * 作用域:仅定义所在的函数/代码块内可见,离开作用域立即不可见 * 存储期:自动存储期(进入代码块时创建,离开时销毁) * 链接属性:无链接(仅当前作用域内的名字有效,其他区域无法引用) * 内存位置: