使用fasterwhisper加速

背景

  • 最近申请到一张8卡的gpu 机器用来验证音频转文本,发现whisper的处理速度很慢,于是有了下面的几种验证方法

配置信息

  • 8张A30
    在这里插入图片描述

第一次尝试

  • 使用whisper对一个95M 的mp4文件进行解码
import time
import whisper

def transcribe_audio(audio_path, model_name="medium"):
    start_time = time.time()  # 开始计时
    # 确认是否有可用的 GPU
    device = torch.device("cuda")
    print(f"使用设备:{device}")
    # 加载模型(首次运行会自动下载)
    model_start_time = time.time()
    model = whisper.load_model(model_name)
    model_end_time = time.time()
    print(f"加载模型耗时:{model_end_time - model_start_time:.2f} 秒")
    # 转写音频
    transcribe_start_time = time.time()
    result = model.transcribe(audio_path)
    transcribe_end_time = time.time()
    print(f"转写音频耗时:{transcribe_end_time - transcribe_start_time:.2f} 秒")
    # 输出结果
    print("识别文本:", result["text"])

    end_time = time.time()  # 结束计时
    total_time = end_time - start_time
    print(f"总耗时:{total_time:.2f} 秒")


if __name__ == "__main__":
    transcribe_audio("a.mp4", model_name="medium")
输出如下:
使用设备:cuda
加载模型耗时:9.73 秒
转写音频耗时:96.64 秒
总耗时:106.37

第二次尝试

  • 使用pytorch 并行框架处理
import time
import torch
import whisper

def transcribe_audio(audio_path, model_name="medium"):
    start_time = time.time()  # 开始计时
    # 确认是否有可用的 GPU
    device = torch.device("cuda")
    print(f"使用设备:{device}")
    # 加载模型(首次运行会自动下载)
    model_start_time = time.time()
    model = whisper.load_model(model_name)
    model = torch.nn.DataParallel(model, device_ids=[0, 1, 2, 3])
    m = model.module
    model_end_time = time.time()
    print(f"加载模型耗时:{model_end_time - model_start_time:.2f} 秒")
    # 转写音频
    transcribe_start_time = time.time()
    result = m.transcribe(audio_path)
    transcribe_end_time = time.time()
    print(f"转写音频耗时:{transcribe_end_time - transcribe_start_time:.2f} 秒")
    # 输出结果
    print("识别文本:", result["text"])
    end_time = time.time()  # 结束计时
    total_time = end_time - start_time
    print(f"总耗时:{total_time:.2f} 秒")

if __name__ == "__main__":
    transcribe_audio("a.mp4", model_name="medium")
    # print("1")
输出结果没变化,可是是使用姿势有问题
使用设备:cuda
加载模型耗时:9.68 秒
转写音频耗时:96.43 秒
总耗时:106.10

第三次尝试

import time
from faster_whisper import WhisperModel

def transcribe_audio(audio_path, model_name="medium"):
    start_time = time.time()  # 开始计时
    # 加载模型(首次运行会自动下载)
    model_start_time = time.time()
    model = WhisperModel(model_name, device="cuda")
    model_end_time = time.time()
    print(f"加载模型耗时:{model_end_time - model_start_time:.2f} 秒")
    # 转写音频
    transcribe_start_time = time.time()
    segments, info = model.transcribe(audio_path, beam_size=16)
    print("Detected language '%s' with probability %f" % (info.language, info.language_probability))
    for segment in segments:
        print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
    transcribe_end_time = time.time()
    print(f"转写音频耗时:{transcribe_end_time - transcribe_start_time:.2f} 秒")
    end_time = time.time()  # 结束计时
    total_time = end_time - start_time
    print(f"总耗时:{total_time:.2f} 秒")

if __name__ == "__main__":
    transcribe_audio("a.mp4", model_name="medium")
    # print("1")
输出结果
加载模型耗时:2.76 秒
转写音频耗时:12.81 秒
总耗时:15.57
  • 疑问? 第二种方法看 是只有1-2个卡工作,是否是batch size 未指定导致?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值