记录本地部署 Whisper 模型的过程

      Whisper 是论文中提出的用于自动语音识别 (ASR) 和语音翻译先进的模型通过大规模弱监督实现稳健语音识别 作者:Alec Radford 等人,来自 OpenAI。Whisper 在 >5M 小时的标记数据上进行了训练,表现出了很强的泛化能力 数据集和域。

模型地址: https://huggingface.co/openai/whisper-large-v3-turbo

     本文将详细记录如何在本地部署 Whisper 模型,利用 CUDA 提升性能,并通过 Flask 提供一个简洁的 API 来实现语音转录功能。

1. 环境准备

在开始部署 Whisper 模型之前,首先需要准备一些基础环境,确保 GPU 可用并且所有依赖项都已正确安装。

1.1 安装 CUDA 和 GPU 驱动

由于 Whisper 在大规模模型训练和推理过程中对计算资源要求较高,使用 CUDA 和 GPU 可以大大加速模型的加载和推理过程。

  1. 安装 NVIDIA GPU 驱动:确保你已经安装了适用于你 GPU 的最新驱动。
  2. 安装 CUDA:Whisper 支持 CUDA 加速,你需要安装正确版本的 CUDA。你可以参考 NVIDIA 官网 根据系统类型进行安装。

安装完成后,可以通过以下命令验证 CUDA 是否正常工作:

nvcc --version

如果输出显示 CUDA 版本信息,则表明 CUDA 已成功安装。

1.2 创建 Python 虚拟环境

为了避免依赖冲突,我们建议创建一个新的 Python 虚拟环境。可以通过 condavenv 来创建虚拟环境,这里以 conda 为例:

conda create -n whisper_cuda_env python=3.9 conda activate whisper_cuda_env 

1.3 安装 PyTorch 和 Whisper

接下来,安装 PyTorch 并确保启用了 CUDA 支持。你可以根据你的 CUDA 版本选择正确的 PyTorch 安装命令,以下为常用命令:

# 安装 PyTorch,假设 CUDA 版本为 11.3

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113

安装 PyTorch 后,再安装 Whisper 库:

pip install git+https://github.com/openai/whisper.git 

完成后,可以通过以下命令验证 Whisper 是否安装成功:

import whisper model = whisper.load_model("base").cuda() 

1.4 安装其他依赖

Whisper 依赖一些音频处理库,如 ffmpeg,用于音频文件的加载和预处理。你可以通过以下命令安装它:

# Windows 下安装 
ffmpeg conda install -c conda-forge ffmpeg
 # 或者使用 pip 安装 
pip install ffmpeg-python 

确保 ffmpeg 能够正确执行,你可以通过以下命令进行验证:

fmpeg -version 

2. 使用 Whisper 进行语音转录

2.1 加载和使用 Whisper 模型

一旦所有依赖安装完成,接下来就可以加载 Whisper 模型并进行音频转录了。以下是加载并使用 Whisper 模型进行音频转录的代码:

import whisper # 加载模型(使用 GPU) 
model = whisper.load_model("base").cuda() # 转录示例音频 
​​​​​​​result = model.transcribe("example.mp3", language="zh") print(result["text"]) 

2.2 解释转录结果

Whisper 的 transcribe 方法返回一个包含多项信息的字典。主要字段包括:

  • text: 转录的文本内容。
  • segments: 音频的分段信息,每个段落包含转录文本、时间戳等信息。

例如,如果 example.mp3 是一段中文音频,返回的结果可能如下所示:

{ "text": "坐品三号我常常遗憾我家门前那块丑石", "segments": [ { "start": 0.0, "end": 2.56, "text": "坐品三号" }, { "start": 2.56, "end": 7.76, "text": "我常常遗憾我家门前那块丑石" } ] }

2.3 处理转录结果

有时我们只关心转录后的文本内容而不需要详细的段落信息。为了简化响应,可以从字典中提取 text 字段,返回简洁的转录结果。

以下是修改后的代码,简化返回内容,只返回转录的文本:

 
from flask import Flask, request, jsonify
import whisper

app = Flask(__name__)
model = whisper.load_model("base").cuda()

@app.route("/transcribe", methods=["POST"])
def transcribe():
    audio_file = request.files["file"]
    audio_path = f"/{audio_file.filename}"
    audio_file.save(audio_path)

    # 转录音频
    result = model.transcribe(audio_path, language="zh")

    # 只返回转录的文本部分
    return jsonify({"text": result["text"]})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

2.4 使用 curl 测试 API

你可以使用 curl 来发送音频文件并获取转录结果:

curl -X POST -F "file=@example.mp3" http://127.0.0.1:5000/transcribe

返回的结果将是一个包含转录文本的简洁 JSON 格式:

{ "text": "坐品三号我常常遗憾我家门前那块丑石" } 

2.5 验证 CUDA 加速

        Whisper 在启用了 CUDA 的 GPU 上运行时,推理速度会显著加快。你可以通过以下代码来验证 Whisper 是否成功使用了 GPU:

import torch print(torch.cuda.is_available()) # 输出 True 表示 CUDA 可用

如果返回 True,则表明 GPU 已成功启用。

3. 总结

       通过以上步骤,你已经成功地在        本地部署了 Whisper 模型,并利用 CUDA 加速推理过程。使用 Flask 构建了一个简单的 API,使得音频文件的转录变得非常方便。整个部署过程包括了环境准备、依赖安装、模型加载、音频处理、API 构建等步骤。

       部署 Whisper 模型并不复杂,但需要一定的硬件支持,尤其是在处理大型音频数据时,CUDA 和 GPU 能够提供显著的性能提升。希望本文能够帮助你顺利部署并使用 Whisper 进行语音转录。如果遇到任何问题,欢迎继续提问。

附彩蛋:

一个编写标书的的AI助手:

### 回答1: Whisper 是 Ethereum 的一种存储模块,可以用来在区块链上发送点对点的消息。它可以在本地部署在 Geth 上,你需要先安装 Geth。 安装完 Geth 之后,你需要在启动 Geth 时使用 `--shh` 参数来启用 Whisper。 示例: ``` geth --shh ``` 你还可以指定 Whisper 的相关配置,如使用的端口等。 示例: ``` geth --shh --shh.port "30311" ``` 在 Geth 启动后,你就可以通过 Geth 控制台来使用 Whisper。如需使用 whisper API 你需要在合约上或通过web3 provider 调用。 有关 Whisper 部署和使用的更多信息,可以参考官方文档: https://github.com/ethereum/wiki/wiki/Whisper ### 回答2: "Whisper"是一个信息传输和存储协议,可以用于在去中心化网络中进行点对点通信。本地部署指的是将这个协议部署在本地环境中,而不是在云端平台或任何其他远程服务器上运行。 将Whisper协议本地部署的优势在于: 1. 隐私和安全:由于信息传输和存储发生在本地环境中,用户更有信心和控制自己的数据。本地部署可以减少第三方获取用户通信内容和元数据的风险。 2. 性能和延迟:由于Whisper协议本地运行,它不需要经过远程服务器的中转和处理,从而减少了通信的延迟。这对于需要实时交流的应用非常重要。 3. 定制和灵活性:本地部署意味着可以根据特定需求进行自定义配置和调整。这样,用户可以根据自己的偏好和需求对Whisper进行更灵活的配置。 然而,Whisper本地部署也存在一些挑战和限制: 1. 需要自行管理和维护:本地部署意味着需要用户自行负责Whisper协议的安装、配置和维护。这可能需要一些技术知识和资源来确保系统的正常运行。 2. 可能存在硬件要求:有些本地部署可能需要特定的硬件设备或网络设置来确保Whisper的顺利运行。这可能限制了某些用户或组织的选择。 总体而言,Whisper的本地部署为需要更大控制权和定制能力的用户提供了一个可选方案。通过本地部署,用户可以更好地保护隐私、提高性能,并根据自己的需求进行灵活配置。然而,也需要考虑到管理和维护的挑战,以及可能存在的硬件限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值