whisperX VS faster-whisper

Compare whisperX vs faster-whisper and see what are their differences.

whisperX

WhisperX: Automatic Speech Recognition with Word-level Timestamps (& Diarization) (by m-bain)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
whisperX faster-whisper
24 23
9,064 8,899
- 9.1%
8.4 8.1
6 days ago 8 days ago
Python Python
BSD 4-Clause "Original" or "Old" License MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

whisperX

Posts with mentions or reviews of whisperX. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-31.
  • Easy video transcription and subtitling with Whisper, FFmpeg, and Python
    1 project | news.ycombinator.com | 6 Apr 2024
    It uses this, which does support diarization: https://github.com/m-bain/whisperX
  • SOTA ASR Tooling: Long-Form Transcription
    1 project | news.ycombinator.com | 31 Mar 2024
    Author compared various whisper implementation

    "We found that WhisperX is the best framework for transcribing long audio files efficiently and accurately. It’s much better than using the standard openai-whisper library."

    https://github.com/m-bain/whisperX

  • Deploying whisperX on AWS SageMaker as Asynchronous Endpoint
    2 projects | dev.to | 31 Mar 2024
    import os # Directory and file paths dir_path = './models-v1' inference_file_path = os.path.join(dir_path, 'code/inference.py') requirements_file_path = os.path.join(dir_path, 'code/requirements.txt') # Create the directory structure os.makedirs(os.path.dirname(inference_file_path), exist_ok=True) # Inference.py content inference_content = '''# inference.py # inference.py import io import json import logging import os import tempfile import time import boto3 import torch import whisperx DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu' s3 = boto3.client('s3') def model_fn(model_dir, context=None): """ Load and return the WhisperX model necessary for audio transcription. """ print("Entering model_fn") logging.info("Loading WhisperX model") model = whisperx.load_model(whisper_arch=f"{model_dir}/guillaumekln/faster-whisper-large-v2", device=DEVICE, language="en", compute_type="float16", vad_options={'model_fp': f"{model_dir}/whisperx/vad/pytorch_model.bin"}) print("Loaded WhisperX model") print("Exiting model_fn with model loaded") return { 'model': model } def input_fn(request_body, request_content_type): """ Process and load audio from S3, given the request body containing S3 bucket and key. """ print("Entering input_fn") if request_content_type != 'application/json': raise ValueError("Invalid content type. Must be application/json") request = json.loads(request_body) s3_bucket = request['s3bucket'] s3_key = request['s3key'] # Download the file from S3 temp_file = tempfile.NamedTemporaryFile(delete=False) s3.download_file(Bucket=s3_bucket, Key=s3_key, Filename=temp_file.name) print(f"Downloaded audio from S3: {s3_bucket}/{s3_key}") print("Exiting input_fn") return temp_file.name def predict_fn(input_data, model, context=None): """ Perform transcription on the provided audio file and delete the file afterwards. """ print("Entering predict_fn") start_time = time.time() whisperx_model = model['model'] logging.info("Loading audio") audio = whisperx.load_audio(input_data) logging.info("Transcribing audio") transcription_result = whisperx_model.transcribe(audio, batch_size=16) try: os.remove(input_data) # input_data contains the path to the temp file print(f"Temporary file {input_data} deleted.") except OSError as e: print(f"Error: {input_data} : {e.strerror}") end_time = time.time() elapsed_time = end_time - start_time logging.info(f"Transcription took {int(elapsed_time)} seconds") print(f"Exiting predict_fn, processing took {int(elapsed_time)} seconds") return transcription_result def output_fn(prediction, accept, context=None): """ Prepare the prediction result for the response. """ print("Entering output_fn") if accept != "application/json": raise ValueError("Accept header must be application/json") response_body = json.dumps(prediction) print("Exiting output_fn with response prepared") return response_body, accept ''' # Write the inference.py file with open(inference_file_path, 'w') as file: file.write(inference_content) # Requirements.txt content requirements_content = '''speechbrain==0.5.16 faster-whisper==0.7.1 git+https://github.com/m-bain/whisperx.git@1b092de19a1878a8f138f665b1467ca21b076e7e ffmpeg-python ''' # Write the requirements.txt file with open(requirements_file_path, 'w') as file: file.write(requirements_content)
  • OpenVoice: Versatile Instant Voice Cloning
    7 projects | news.ycombinator.com | 29 Mar 2024
    Whisper doesn't, but WhisperX <https://github.com/m-bain/whisperX/> does. I am using it right now and it's perfectly serviceable.

    For reference, I'm transcribing research-related podcasts, meaning speech doesn't overlap a lot, which would be a problem for WhisperX from what I understand. There's also a lot of accents, which are straining on Whisper (though it's also doing well), but surely help WhisperX. It did have issues with figuring number of speakers on it's own, but that wasn't a problem for my use case.

  • FLaNK 15 Jan 2024
    21 projects | dev.to | 15 Jan 2024
  • Subtitle is now open-source
    3 projects | news.ycombinator.com | 24 Nov 2023
    I've had good results with whisperx when I needed to generate captions. https://github.com/m-bain/whisperX

    There is currently a problem with diarization, but otherwise, it is SOTA.

  • Insanely Fast Whisper: Transcribe 300 minutes of audio in less than 98 seconds
    8 projects | news.ycombinator.com | 14 Nov 2023
    https://github.com/m-bain/whisperX/issues/569

    WhisperX with the new model. It's not fast.

  • Distil-Whisper: distilled version of Whisper that is 6 times faster, 49% smaller
    14 projects | news.ycombinator.com | 31 Oct 2023
    How much faster in real wall-clock time is this in batched data than https://github.com/m-bain/whisperX ?
  • whisper self hosted what's the most cost-efficient way
    1 project | /r/selfhosted | 17 Oct 2023
    Checkout whisperx
  • Whisper Turbo: transcribe 20x faster than realtime using Rust and WebGPU
    3 projects | news.ycombinator.com | 12 Sep 2023
    Neat to see a new implementation, although I'll note that for those looking for a drop-in replacement for the whisper library, I believe that both faster-whisper https://github.com/guillaumekln/faster-whisper and https://github.com/m-bain/whisperX are easier (PyTorch-based, doesn't require a web browser), and a lot faster (WhisperX is up to 70X realtime).

faster-whisper

Posts with mentions or reviews of faster-whisper. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-29.
  • Creando Subtítulos Automáticos para Vídeos con Python, Faster-Whisper, FFmpeg, Streamlit, Pillow
    7 projects | dev.to | 29 Apr 2024
    Faster-whisper (https://github.com/SYSTRAN/faster-whisper)
  • Using Groq to Build a Real-Time Language Translation App
    3 projects | dev.to | 5 Apr 2024
    For our real-time STT needs, we'll employ a fantastic library called faster-whisper.
  • Apple Explores Home Robotics as Potential 'Next Big Thing'
    3 projects | news.ycombinator.com | 4 Apr 2024
    Thermostats: https://www.sinopetech.com/en/products/thermostat/

    I haven't tried running a local text-to-speech engine backed by an LLM to control Home Assistant. Maybe someone is working on this already?

    TTS: https://github.com/SYSTRAN/faster-whisper

    LLM: https://github.com/Mozilla-Ocho/llamafile/releases

    LLM: https://huggingface.co/TheBloke/Nous-Hermes-2-Mixtral-8x7B-D...

    It would take some tweaking to get the voice commands working correctly.

  • Whisper: Nvidia RTX 4090 vs. M1 Pro with MLX
    10 projects | news.ycombinator.com | 13 Dec 2023
    Could someone elaborate how is this accomplished and is there any quality disparity compared to original whisper?

    Repos like https://github.com/SYSTRAN/faster-whisper makes immediate sense about why it's faster than the original, but this one, not so much, especially considering it's even much faster.

  • Now I Can Just Print That Video
    5 projects | news.ycombinator.com | 4 Dec 2023
    Cool! I had the same project idea recently. You may be interested in this for the step of speech2text: https://github.com/SYSTRAN/faster-whisper
  • Distil-Whisper: distilled version of Whisper that is 6 times faster, 49% smaller
    14 projects | news.ycombinator.com | 31 Oct 2023
    That's the implication. If the distil models are same format as original openai models then the Distil models can be converted for faster-whisper use as per the conversion instructions on https://github.com/guillaumekln/faster-whisper/

    So then we'll see whether we get the 6x model speedup on top of the stated 4x faster-whisper code speedup.

  • AMD May Get Across the CUDA Moat
    8 projects | news.ycombinator.com | 6 Oct 2023
    > While I agree that it's much more effort to get things working on AMD cards than it is with Nvidia, I was a bit surprised to see this comment mention Whisper being an example of "5-10x as performant".

    It easily is. See the benchmarks[0] from faster-whisper which uses Ctranslate2. That's 5x faster than OpenAI reference code on a Tesla V100. Needless to say something like a 4080 easily multiplies that.

    > https://www.tomshardware.com/news/whisper-audio-transcriptio... is a good example of Nvidia having no excuses being double the price when it comes to Whisper inference, with 7900XTX being directly comparable with 4080, albeit with higher power draw. To be fair it's not using ROCm but Direct3D 11, but for performance/price arguments sake that detail is not relevant.

    With all due respect to the author of the article this is "my first entry into ML" territory. They talk about a 5-10 second delay, my project can do sub 1 second times[1] even with ancient GPUs thanks to Ctranslate2. I don't have an RTX 4080 but if you look at the performance stats for the closest thing (RTX 4090) the performance numbers are positively bonkers - completely untouchable for anything ROCm based. Same goes for the other projects I linked, lmdeploy does over 100 tokens/s in a single session with LLama2 13b on my RTX 4090 and almost 600 tokens/s across eight simultaneous sessions.

    > EDIT: Also using CTranslate2 as an example is not great as it's actually a good showcase why ROCm is so far behind CUDA: It's all about adapting the tech and getting the popular libraries to support it. Things usually get implemented in CUDA first and then would need additional effort to add ROCm support that projects with low amount of (possibly hobbyist) maintainers might not have available. There's even an issue in CTranslate2 where they clearly state no-one is working to get ROCm supported in the library. ( https://github.com/OpenNMT/CTranslate2/issues/1072#issuecomm... )

    I don't understand what you're saying here. It (along with the other projects I linked) are fantastic examples of just how far behind the ROCm ecosystem is. ROCm isn't even on the radar for most of them as your linked issue highlights.

    Things always get implemented in CUDA first (ten years in this space and I've never seen ROCm first) and ROCm users either wait months (minimum) for sub-par performance or never get it at all.

    [0] - https://github.com/guillaumekln/faster-whisper#benchmark

    [1] - https://heywillow.io/components/willow-inference-server/#ben...

  • Open Source Libraries
    25 projects | /r/AudioAI | 2 Oct 2023
    guillaumekln/faster-whisper
  • Whisper Turbo: transcribe 20x faster than realtime using Rust and WebGPU
    3 projects | news.ycombinator.com | 12 Sep 2023
    Neat to see a new implementation, although I'll note that for those looking for a drop-in replacement for the whisper library, I believe that both faster-whisper https://github.com/guillaumekln/faster-whisper and https://github.com/m-bain/whisperX are easier (PyTorch-based, doesn't require a web browser), and a lot faster (WhisperX is up to 70X realtime).
  • Whisper.api: An open source, self-hosted speech-to-text with fast transcription
    5 projects | news.ycombinator.com | 22 Aug 2023
    One caveat here is that whisper.cpp does not offer any CUDA support at all, acceleration is only available for Apple Silicon.

    If you have Nvidia hardware the ctranslate2 based faster-whisper is very very fast: https://github.com/guillaumekln/faster-whisper

What are some alternatives?

When comparing whisperX and faster-whisper you can also consider the following projects:

whisper.cpp - Port of OpenAI's Whisper model in C/C++

whisper - Robust Speech Recognition via Large-Scale Weak Supervision

stable-ts - Transcription, forced alignment, and audio indexing with OpenAI's Whisper

insanely-fast-whisper - Incredibly fast Whisper-large-v3

whisper-diarization - Automatic Speech Recognition with Speaker Diarization based on OpenAI Whisper

openai-whisper-cpu - Improving transcription performance of OpenAI Whisper for CPU based deployment

ROCm - AMD ROCm™ Software - GitHub Home [Moved to: https://github.com/ROCm/ROCm]

ControlNet - Let us control diffusion models!

whisper-realtime - Whisper runs in realtime on a laptop GPU (8GB)

subgen - Autogenerate subtitles using OpenAI Whisper Model via Jellyfin, Plex, Emby, Tautulli, or Bazarr

Retrieval-based-Voice-Conversion-WebUI - Easily train a good VC model with voice data <= 10 mins!