linux部署Whisper 视频音频转文字+bash脚本

github链接:链接

我这里使用anaconda来部署,debian12系统,其他linux也同样
可以使用gpu或者cpu版本,建议使用n卡,rtx3060以上

一、前期准备

1.linux系统

链接:debian安装
链接:ubuntu安装

2.anaconda

链接:anaconda安装

3.cuda

链接:cuda安装

二、安装部署

1.创建新的conda环境

conda create -n whisper python=3.9
conda activate whisper

2.安装PyTorch

gpu版本

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

cpu版本

conda install pytorch torchvision torchaudio cpuonly -c pytorch

3.安装ffmpeg

conda install ffmpeg -c conda-forge

4.安装Whisper

pip install -U openai-whisper

5.验证

whisper --help

如果有反应就是安装正确

三、模型说明

可以使用不同尺寸的模型,对硬件的要求也不一样,速度也不一样。
建议最好使用12g以上显存的显卡
在这里插入图片描述模型在第一次使用,如果没有的情况下会下载,如果下载过慢,可以尝试手动下载
会放在 ~/.cache/whisper/文件夹下

0.效果参考

如果主要以中文为目标,tiny、base、small效果差,medium勉强可以用,large效果最好但是速度慢很多,turbo效果仅次于large,但是速度很快,实际体验下来使用还是large。
生成会有多个文件格式,适用不同情况。
在这里插入图片描述

1.模型下载地址(.pt)

模型在第一次使用,如果没有的情况下会自动下载,如果下载过慢,可以尝试手动下载,所以先跳过这一步,如果后面太慢再回来
放在 ~/.cache/whisper/文件夹下

tiny:链接

base:链接

small:链接

medium:链接

large-v3:链接

2.模型下载地址(.safetensors)不推荐

下载的是model.safetensors这个模型

safetensors模型不能直接使用,需要转化为.pt格式,如果需要直接可以用,需要下载pt文件
tiny模型下载地址:链接
large模型下载地址:链接
turbo模型下载地址:链接

如果下载过慢,可以使用国内镜像https://hf-mirror.com/

四、使用

1.简单转录

whisper audio.mp3

2.使用特定尺寸模型

whisper audio.mp3 --model large

转录多个(多种)

whisper audio.flac audio.mp3 audio.wav --model turbo

3.指定语言

有多种语言可以选择,需要参考官方,我这里使用汉语来处理

whisper audio.wav --language Chinese --model turbo

4.通过python调用

除了手动输入命令,当然可以用python编程使用,下面是官方的案例,我就直接贴出来了:

import whisper

model = whisper.load_model("turbo")

# load audio and pad/trim it to fit 30 seconds
audio = whisper.load_audio("audio.mp3")
audio = whisper.pad_or_trim(audio)

# make log-Mel spectrogram and move to the same device as the model
mel = whisper.log_mel_spectrogram(audio).to(model.device)

# detect the spoken language
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")

# decode the audio
options = whisper.DecodingOptions()
result = whisper.decode(model, mel, options)

# print the recognized text
print(result.text)

五、手动bash脚本

这个脚本是我写的对命令行的简单封装

vi /etc/whisper.sh
#!/bin/bash

# 参数检查
if [ -z "$1" ]; then
  echo "用法: $0 <音频文件路径> [保存目录]"
  exit 1
fi

# 获取输入参数
INPUT_FILE="$1"
SAVE_DIR="$2"

# 如果没有提供保存目录,则使用输入文件所在的目录
if [ -z "$SAVE_DIR" ]; then
  SAVE_DIR="$(dirname "$INPUT_FILE")"
fi

# 激活conda环境
source "$(conda info --base)/etc/profile.d/conda.sh"
conda activate whisper

# 创建保存目录(如果不存在)
mkdir -p "$SAVE_DIR"

# 提取文件名(不带扩展名)
FILENAME=$(basename "$INPUT_FILE")
BASENAME="${FILENAME%.*}"

# 执行 whisper 命令并输出结果到保存目录
whisper "$INPUT_FILE" --language Chinese --model large --output_dir "$SAVE_DIR"

# 结束后退出环境
conda deactivate

# 可选:提示完成
echo "识别完成,结果保存在:$SAVE_DIR"
chmod +x /etc/whisper.sh

使用单参数
默认将/path/to/audio.mp3转化结果放到音频或视频所在文件夹

/etc/whisper.sh /path/to/audio.mp3

使用多参数
可以将/path/to/audio.mp3结果输出到指定的/path/to2目录(第二个参数)

/etc/whisper.sh /path/to/audio.mp3 /path/to2

六、其它

1.视频转音频

视频占用空间大,可以先在另一台机器进行处理成音频,然后再进行转化
当然是使用ffmpeg,我这里将.ts视频转化为.wav格式,
-vn:去掉视频流。
-ar 16000:调整采样率为 16kHz(Whisper 推荐)。
-ac 1:设置单声道。

ffmpeg -i abcd.ts -vn -acodec pcm_s16le -ar 16000 -ac 1 abcd.wav

2.分段处理

这里分段成300s一个视频

ffmpeg -i abcd.ts -f segment -segment_time 300 -c copy segment_%03d.ts
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ziqibit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值