Skip to content

Commit 1b1ddd3

Browse files
committed
Fix model auto selection logic
1 parent 986190c commit 1b1ddd3

File tree

6 files changed

+41
-26
lines changed

6 files changed

+41
-26
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 3.0.1
4+
5+
- Fix model auto selection logic
6+
37
## 3.0.0
48

59
- Add support for `sherpa-onnx` and Nvidia's parakeet model

Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ ARG TARGETVARIANT
55
# Install faster-whisper
66
WORKDIR /usr/src
77

8-
COPY ./ ./
8+
COPY ./pyproject.toml ./
99
RUN \
1010
apt-get update \
1111
&& apt-get install -y --no-install-recommends \
@@ -27,6 +27,8 @@ RUN \
2727
\
2828
&& rm -rf /var/lib/apt/lists/*
2929

30+
COPY ./ ./
31+
3032
EXPOSE 10400
3133

3234
ENTRYPOINT ["bash", "docker_run.sh"]

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "wyoming-faster-whisper"
3-
version = "3.0.0"
3+
version = "3.0.1"
44
description = "Wyoming Server for Faster Whisper"
55
readme = "README.md"
66
requires-python = ">=3.8"

wyoming_faster_whisper/__main__.py

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from wyoming.server import AsyncServer, AsyncTcpServer
1313

1414
from . import __version__
15-
from .const import PARAKEET_LANGUAGES, SttLibrary
15+
from .const import AUTO_LANGUAGE, AUTO_MODEL, PARAKEET_LANGUAGES, SttLibrary
1616

1717
_LOGGER = logging.getLogger(__name__)
1818

@@ -30,7 +30,7 @@ async def main() -> None:
3030
)
3131
#
3232
parser.add_argument(
33-
"--model", default="auto", help="Name of model to use (or auto)"
33+
"--model", default=AUTO_MODEL, help=f"Name of model to use (or {AUTO_MODEL})"
3434
)
3535
parser.add_argument(
3636
"--data-dir",
@@ -49,8 +49,8 @@ async def main() -> None:
4949
)
5050
parser.add_argument(
5151
"--language",
52-
default="auto",
53-
help="Default language to set for transcription (default: auto)",
52+
default=AUTO_LANGUAGE,
53+
help=f"Default language to set for transcription (default: {AUTO_LANGUAGE})",
5454
)
5555
parser.add_argument(
5656
"--compute-type",
@@ -109,28 +109,32 @@ async def main() -> None:
109109
# Automatic configuration
110110
stt_library = SttLibrary(args.stt_library)
111111
if stt_library == SttLibrary.AUTO:
112-
if args.language in ("en", "auto"):
113-
# Prefer parakeet
114-
try:
115-
from .sherpa_handler import SherpaModel
116-
117-
stt_library = SttLibrary.SHERPA
118-
except ImportError:
119-
stt_library = SttLibrary.FASTER_WHISPER
120-
elif args.language == "ru":
121-
# Prefer GigaAM via onnx-asr
122-
try:
123-
from .sherpa_handler import SherpaModel
124-
125-
stt_library = SttLibrary.ONNX_ASR
126-
except ImportError:
127-
stt_library = SttLibrary.FASTER_WHISPER
112+
if args.model == AUTO_MODEL:
113+
if args.language in ("en", AUTO_LANGUAGE):
114+
# Prefer parakeet
115+
try:
116+
from .sherpa_handler import SherpaModel
117+
118+
stt_library = SttLibrary.SHERPA
119+
except ImportError:
120+
stt_library = SttLibrary.FASTER_WHISPER
121+
elif args.language == "ru":
122+
# Prefer GigaAM via onnx-asr
123+
try:
124+
from .sherpa_handler import SherpaModel
125+
126+
stt_library = SttLibrary.ONNX_ASR
127+
except ImportError:
128+
stt_library = SttLibrary.FASTER_WHISPER
129+
else:
130+
# Default to faster-whisper if model is provided
131+
stt_library = SttLibrary.FASTER_WHISPER
128132

129133
_LOGGER.debug("Speech-to-text library automatically selected: %s", stt_library)
130134

131135
machine = platform.machine().lower()
132136
is_arm = ("arm" in machine) or ("aarch" in machine)
133-
if args.model == "auto":
137+
if args.model == AUTO_MODEL:
134138
args.model = guess_model(stt_library, args.language, is_arm)
135139
_LOGGER.debug("Model automatically selected: %s", args.model)
136140

@@ -147,8 +151,8 @@ async def main() -> None:
147151
model_name = f"{model_size}-int8"
148152
args.model = f"rhasspy/faster-whisper-{model_name}"
149153

150-
if args.language == "auto":
151-
# Whisper does not understand "auto"
154+
if args.language == AUTO_LANGUAGE:
155+
# Whisper does not understand auto
152156
args.language = None
153157

154158
wyoming_info = Info(

wyoming_faster_whisper/const.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ class SttLibrary(str, Enum):
1313
ONNX_ASR = "onnx-asr"
1414

1515

16+
AUTO_LANGUAGE = "auto"
17+
AUTO_MODEL = "auto"
18+
1619
PARAKEET_LANGUAGES = {
1720
"bg",
1821
"hr",

wyoming_faster_whisper/onnx_asr_handler.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ def transcribe(
6363
if language:
6464
recognize_kwargs["language"] = language
6565

66-
text = self.onnx_model.recognize(audio_array, **recognize_kwargs)
66+
text = self.onnx_model.recognize( # type: ignore[call-overload]
67+
audio_array, sample_rate=_RATE, **recognize_kwargs
68+
)
6769
return text
6870

6971

0 commit comments

Comments
 (0)