Fixed an issue where `detect_language` crashed when `vad_parameters` was in dictionary format
https://github.com/SYSTRAN/faster-whisper/pull/1662
Purpose
According to the documentation and type hints, WhisperModel.detect_language accepts vad_parameters as a "Silero VAD parameter dict or VadOptions." This is the same convention as transcribe. However, the logic that converts a dict to VadOptions is only present in transcribe and is missing from detect_language, so passing a dict as described in the documentation causes a crash.
model.detect_language(audio, vad_filter=True, vad_parameters=dict(min_silence_duration_ms=500))
# AttributeError: 'dict' object has no attribute 'threshold'
Passing an VadOptions object or None works as expected; only the dict format specified in the documentation fails.
Changes
faster_whisper/transcribe.py— Indetect_language, convertdicttoVadOptions. Same as the method already used bytranscribe(+2)tests/test_transcribe.py— Addedtest_detect_language_vad_parameters_dict(+12)
Tests
$ pytest tests/test_transcribe.py::test_detect_language_vad_parameters_dict # Before modification: Failed with an AttributeError
$ pytest tests/test_transcribe.py::test_detect_language_vad_parameters_dict # After modification: 1 passed
$ black --check ... # No changes
$ flake8 ... # Passed
Tested on the tiny model, CPU, and Python 3.12. All tests (20 cases) were confirmed to pass during the investigation phase.
Duplicate Check
I searched for detect_language + vad_parameters, as well as open and closed issues and PRs with error messages, and found no duplicate reports. #1150 (Type hint cleanup) modifies the surrounding lines of the same block but does not include the conversion logic.
Results
Submitted to the master branch on October 6, 2026. Awaiting review. The scope of the changes is 2 files, +14.
2026-10-07 Update: The maintainer (Purfview) closed this PR on 2026-10-06 without explanation. It was not merged. Issue #1661, posted on the same day, was closed with the comment “AI bot problems.” Since this repository does not accept contributions from AI assistants, I will not submit any further changes.