You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在RunPod上对比WhisperX与Faster-Whisper:速度、准确率及优化

在RunPod上对比WhisperX与Faster-Whisper:速度、准确率及优化

最近我在RunPod的服务器上对比了WhisperX和Faster-Whisper的性能,用到的核心代码片段如下:

WhisperX 实现代码

import time
import whisperx

model = whisperx.load_model(
    "large-v3", "cuda"
)

def run_whisperx_job(job):
    start_time = time.time()

    job_input = job['input']
    url = job_input.get('url', "")

    print(f" Loading audio from {url}...")
    audio = whisperx.load_audio(url)
    print("✅ Audio loaded")

    print("Transcribing...")
    result = model.transcribe(audio, batch_size=16)

    end_time = time.time()
    time_s = (end_time - start_time)
    print(f" Transcription done: {time_s:.2f} s")
    # print(result)

    # 为了便于迁移,我们沿用了RunPod官方Faster-Whisper的输出格式
    output = {
        'detected_language' : result['language'],
        'segments' : result['segments']
    }

    return output

Faster-Whisper 实现代码

import time
import os
from faster_whisper import WhisperModel
import rp_cleanup

# 加载Faster-Whisper模型
model = WhisperModel("large-v3", device="cuda", compute_type="float16")

def run_faster_whisper_job(job):
    start_time = time.time()
    
    job_input = job['input']
    url = job_input.get('url', "")

    print(f" Downloading audio from {url}...")
    audio_path = download_files_from_urls(job['id'], [url])[0]
    print("✅ Audio downloaded")
    
    print("Transcribing...")
    segments, info = model.transcribe(audio_path, beam_size=5)
    
    output_segments = []
    for segment in segments:
        output_segments.append({
            "start": segment.start,
            "end": segment.end,
            "text": segment.text
        })
    
    end_time = time.time()
    time_s = (end_time - start_time)
    print(f" Transcription done: {time_s:.2f} s")
    
    output = {
        'detected_language': info.language,
        'segments': output_segments
    }
    
    # ✅ 转录完成后安全删除文件
    try:
        if os.path.exists(audio_path):
            os.remove(audio_path)  # 使用os.remove()
            print(f"️ Deleted {audio_path}")
        else:
            print("⚠️ File not found, skipping deletion")
    except Exception as e:
        print(f"❌ Error deleting file: {e}")

    rp_cleanup.clean(['input_objects'])

    return output

整体测试结论

  • WhisperX的处理速度明显快于Faster-Whisper
  • WhisperX可以顺利处理3小时的长音频,而Faster-Whisper会出现未知运行时错误。我猜测这是因为Faster-Whisper需要更多的GPU内存资源才能完成这类长任务

准确率对比结果

  • WhisperX的准确率不如Faster-Whisper
  • WhisperX的转录结果中遗漏的词语比Faster-Whisper更多

优化疑问

我现在想知道,在WhisperX里可以调整哪些参数或者做哪些微调,能够:

  • 提升转录准确率
  • 减少词语遗漏的情况
  • 同时不会大幅增加处理时间

备注:内容来源于stack exchange,提问作者Cheok Yan Cheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 03:19:57