Этап 3: голосовой ввод по горячей клавише
- Глобальная горячая клавиша через RegisterHotKey (по умолчанию Win+Alt+Space) - Запись с микрофона, конец фразы по паузе через Silero VAD, звуковые сигналы - Распознавание faster-whisper large-v3-turbo на GPU, CUDA-библиотеки из pip-пакетов nvidia-* - Состояния «слушаю» и «распознаю», кнопка «Говорить» в чате и пункт в трее - Голосовая команда прерывает текущий ответ и озвучку - Тесты горячей клавиши, детектора конца фразы и сеанса голосового ввода Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
fec52dd1c2
commit
513d010c19
@@ -0,0 +1,22 @@
|
||||
import pytest
|
||||
|
||||
from agr_assistent.hotkey import HotkeyError, parse_hotkey
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("spec", "expected"),
|
||||
[
|
||||
("ctrl+alt+space", (0x0002 | 0x0001, 0x20)),
|
||||
("Win + Shift + A", (0x0008 | 0x0004, ord("A"))),
|
||||
("f12", (0, 0x7B)),
|
||||
("ctrl+7", (0x0002, ord("7"))),
|
||||
],
|
||||
)
|
||||
def test_parse_hotkey(spec: str, expected: tuple[int, int]) -> None:
|
||||
assert parse_hotkey(spec) == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize("spec", ["", "ctrl+", "hyper+a", "ctrl+f25", "ctrl+ж"])
|
||||
def test_parse_hotkey_rejects_invalid(spec: str) -> None:
|
||||
with pytest.raises(HotkeyError):
|
||||
parse_hotkey(spec)
|
||||
Reference in New Issue
Block a user