Attempt to decrease dectalk lag. Hoping you don't have to send settings over every time you want it to say something.
This commit is contained in:
@@ -161,6 +161,25 @@ def test_dectalk_usb_driver_writes_commands_and_speech(monkeypatch):
|
||||
speech_driver.shutdown()
|
||||
|
||||
|
||||
def test_dectalk_usb_driver_skips_redundant_setting_writes(monkeypatch):
|
||||
speech_driver, device, _, _ = initialized_driver(monkeypatch)
|
||||
try:
|
||||
speech_driver.set_rate(0.5)
|
||||
speech_driver.set_pitch(0.5)
|
||||
speech_driver.set_volume(1.0)
|
||||
speech_driver.set_rate(0.5)
|
||||
speech_driver.set_pitch(0.5)
|
||||
speech_driver.set_volume(1.0)
|
||||
|
||||
assert device.writes == [
|
||||
(0x02, b"[:ra 180]", 1000),
|
||||
(0x02, b"[:dv ap 122]", 1000),
|
||||
(0x02, b"[:dv g5 86]", 1000),
|
||||
]
|
||||
finally:
|
||||
speech_driver.shutdown()
|
||||
|
||||
|
||||
def test_dectalk_usb_driver_chunks_normal_writes(monkeypatch):
|
||||
speech_driver, device, _, _ = initialized_driver(monkeypatch)
|
||||
try:
|
||||
|
||||
@@ -95,6 +95,22 @@ def test_dectalk_driver_writes_settings_and_cancel(serial_pair):
|
||||
speech_driver.shutdown()
|
||||
|
||||
|
||||
def test_dectalk_driver_skips_redundant_setting_commands(serial_pair):
|
||||
speech_driver, master_fd = initialized_driver(dectalkDriver, serial_pair)
|
||||
try:
|
||||
speech_driver.set_rate(0.5)
|
||||
speech_driver.set_pitch(0.5)
|
||||
speech_driver.set_volume(1.0)
|
||||
speech_driver.set_rate(0.5)
|
||||
speech_driver.set_pitch(0.5)
|
||||
speech_driver.set_volume(1.0)
|
||||
expected = b"[:ra 180][:dv ap 122][:dv g5 86]"
|
||||
assert read_available(master_fd, len(expected)) == expected
|
||||
assert read_available(master_fd, 1, timeout=0.2) == b""
|
||||
finally:
|
||||
speech_driver.shutdown()
|
||||
|
||||
|
||||
def test_dectalk_driver_uses_native_defaults_at_fenrir_midpoint(serial_pair):
|
||||
speech_driver, master_fd = initialized_driver(dectalkDriver, serial_pair)
|
||||
try:
|
||||
@@ -199,6 +215,27 @@ def test_hardware_driver_retries_partial_serial_writes(monkeypatch):
|
||||
assert written_chunks == [b"ab", b"cd", b"ef"]
|
||||
|
||||
|
||||
def test_hardware_driver_retries_setting_after_failed_write(monkeypatch):
|
||||
speech_driver = dectalkDriver.driver()
|
||||
speech_driver._is_initialized = True
|
||||
write_results = [False, True]
|
||||
written_commands = []
|
||||
|
||||
def fake_write(data, description):
|
||||
written_commands.append((data, description))
|
||||
return write_results.pop(0)
|
||||
|
||||
monkeypatch.setattr(speech_driver, "_write_bytes", fake_write)
|
||||
|
||||
speech_driver.set_rate(0.5)
|
||||
speech_driver.set_rate(0.5)
|
||||
|
||||
assert written_commands == [
|
||||
(b"[:ra 180]", "rate"),
|
||||
(b"[:ra 180]", "rate"),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("driver_class", [doubletalkDriver, tripletalkDriver])
|
||||
def test_litetalk_compatible_alias_drivers(driver_class, serial_pair):
|
||||
speech_driver, master_fd = initialized_driver(driver_class, serial_pair)
|
||||
|
||||
Reference in New Issue
Block a user