Реализация горячих слов (Hotword Boosting) для STT
Hotword Boosting — механизм повышения вероятности распознавания конкретных слов и фраз. В отличие от custom vocabulary (статичный список), hotword boosting применяется динамически в runtime — разные фразы для разных контекстов запроса.
Реализация для разных провайдеров
Google STT с phrase boost:
from google.cloud import speech
def transcribe_with_hotwords(audio_content: bytes, hotwords: list[str]) -> str:
client = speech.SpeechClient()
speech_contexts = [
speech.SpeechContext(
phrases=hotwords,
boost=20.0 # max значение
)
]
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz=16000,
language_code="ru-RU",
speech_contexts=speech_contexts,
enable_automatic_punctuation=True,
)
response = client.recognize(config=config,
audio=speech.RecognitionAudio(content=audio_content))
return response.results[0].alternatives[0].transcript
Vosk с grammar (FST-based boosting):
from vosk import Model, KaldiRecognizer
import json
model = Model("vosk-model-ru-0.42")
# Ограниченная грамматика для определённого контекста
grammar = json.dumps(["да", "нет", "отмена", "помощь", "[unk]"])
recognizer = KaldiRecognizer(model, 16000, grammar)
Whisper через prefix промпт — ненадёжно, но работает для коротких записей с конкретными ожиданиями.
Динамические hotwords
В голосовых ботах hotwords зависят от состояния диалога:
DIALOG_HOTWORDS = {
"greeting": ["здравствуйте", "добрый день", "привет"],
"payment": ["оплатить", "счёт", "карта", "перевод", "сумма"],
"cancel": ["отменить", "назад", "стоп", "выход"],
}
def get_hotwords_for_state(state: str) -> list[str]:
return DIALOG_HOTWORDS.get(state, [])
Сроки: интеграция в существующий STT — 1–2 дня.







