I am trying to run the container (ghcr.io/ohf-voice/linux-voice-assistant:1.1.11) using docker compose as a starting point. I believe I have done everything correctly and the system logs look okay until I try and connect Home Assistant to it.
linux-voice-assistant | starting application
linux-voice-assistant | Network interface specified
linux-voice-assistant | Using network interface: eth0
linux-voice-assistant | Host specified
linux-voice-assistant | Using host: 0.0.0.0
linux-voice-assistant | DEBUG:__main__:Namespace(name=None, audio_input_device='rtp-source', list_input_devices=False, audio_input_block_size=1024, audio_output_device='rtp', list_output_devices=False, mic_volume=100, mic_auto_gain=0, mic_noise_suppression=0, wake_word_dir=[PosixPath('/app/wakewords')], wake_model='hey_mycroft', stop_model='stop', download_dir=PosixPath('/app/local'), refractory_seconds=2.0, wakeup_sound='/app/sounds/wake_word_triggered.flac', timer_finished_sound='/app/sounds/timer_finished.flac', processing_sound='/app/sounds/processing.wav', mute_sound='/app/sounds/mute_switch_on.flac', unmute_sound='/app/sounds/mute_switch_off.flac', preferences_file='/app/configuration/preferences.json', host='0.0.0.0', network_interface='eth0', port=6053, enable_thinking_sound=False, timer_max_ring_seconds=900.0, debug=True, output_only=False)
linux-voice-assistant | DEBUG:getmac:Initializing 'iface' method cache (platform: 'linux')
linux-voice-assistant | DEBUG:getmac:Finished initializing 'iface' method cache
linux-voice-assistant | DEBUG:getmac:Raw MAC found: ae:af:f4:d4:f1:34
linux-voice-assistant |
linux-voice-assistant | No friendly name specified, try to autogenerate name
linux-voice-assistant | Friendly name autogenerated: LVA - aeaff4d4f134
linux-voice-assistant | Device name: lva-aeaff4d4f134
linux-voice-assistant | Version: 1.1.11
linux-voice-assistant | ESPHome api version: 42.7.0
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Searching for wake words in directories: ['/app/wakewords', '/app/local/external_wake_words']
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Checking directory: /app/wakewords (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Found 10 JSON configuration files in /app/wakewords
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing configuration file: /app/wakewords/okay_nabu.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model okay_nabu is of type: WakeWordType.MICRO_WAKE_WORD
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model path resolved to: /app/wakewords/okay_nabu.json (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Type specific config for okay_nabu (micro): {'probability_cutoff': 0.85, 'feature_step_size': 10, 'sliding_window_size': 5, 'tensor_arena_size': 37000, 'minimum_esphome_version': '2024.7.0'}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Successfully registered wake word: okay_nabu
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing configuration file: /app/wakewords/hey_luna.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model hey_luna is of type: WakeWordType.MICRO_WAKE_WORD
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model path resolved to: /app/wakewords/hey_luna.json (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Type specific config for hey_luna (micro): {'probability_cutoff': 0.63, 'sliding_window_size': 5, 'feature_step_size': 10, 'tensor_arena_size': 22860, 'minimum_esphome_version': '2024.7.0'}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Successfully registered wake word: hey_luna
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing configuration file: /app/wakewords/hey_morgan.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model hey_morgan is of type: WakeWordType.MICRO_WAKE_WORD
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model path resolved to: /app/wakewords/hey_morgan.json (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Type specific config for hey_morgan (micro): {'probability_cutoff': 0.9, 'sliding_window_size': 8, 'feature_step_size': 10, 'tensor_arena_size': 30000, 'minimum_esphome_version': '2024.7.0'}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Successfully registered wake word: hey_morgan
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing configuration file: /app/wakewords/hey_mycroft.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model hey_mycroft is of type: WakeWordType.MICRO_WAKE_WORD
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model path resolved to: /app/wakewords/hey_mycroft.json (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Type specific config for hey_mycroft (micro): {'probability_cutoff': 0.95, 'sliding_window_size': 5, 'feature_step_size': 10, 'tensor_arena_size': 23628, 'minimum_esphome_version': '2024.7.0'}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Successfully registered wake word: hey_mycroft
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing configuration file: /app/wakewords/hey_home_assistant.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model hey_home_assistant is of type: WakeWordType.MICRO_WAKE_WORD
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model path resolved to: /app/wakewords/hey_home_assistant.json (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Type specific config for hey_home_assistant (micro): {'probability_cutoff': 0.97, 'feature_step_size': 10, 'sliding_window_size': 5, 'tensor_arena_size': 30000, 'minimum_esphome_version': '2024.7.0'}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Successfully registered wake word: hey_home_assistant
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing configuration file: /app/wakewords/choo_choo_homie.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model choo_choo_homie is of type: WakeWordType.MICRO_WAKE_WORD
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model path resolved to: /app/wakewords/choo_choo_homie.json (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Type specific config for choo_choo_homie (micro): {'probability_cutoff': 0.97, 'feature_step_size': 10, 'sliding_window_size': 5, 'tensor_arena_size': 30000, 'minimum_esphome_version': '2024.7.0'}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Successfully registered wake word: choo_choo_homie
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing configuration file: /app/wakewords/okay_computer.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model okay_computer is of type: WakeWordType.MICRO_WAKE_WORD
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model path resolved to: /app/wakewords/okay_computer.json (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Type specific config for okay_computer (micro): {'probability_cutoff': 0.97, 'feature_step_size': 10, 'sliding_window_size': 5, 'tensor_arena_size': 30000, 'minimum_esphome_version': '2024.7.0'}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Successfully registered wake word: okay_computer
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing configuration file: /app/wakewords/alexa.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model alexa is of type: WakeWordType.MICRO_WAKE_WORD
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model path resolved to: /app/wakewords/alexa.json (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Type specific config for alexa (micro): {'probability_cutoff': 0.9, 'sliding_window_size': 5, 'feature_step_size': 10, 'tensor_arena_size': 22348, 'minimum_esphome_version': '2024.7.0'}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Successfully registered wake word: alexa
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing configuration file: /app/wakewords/stop.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Skipping stop model: stop
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing configuration file: /app/wakewords/hey_jarvis.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model hey_jarvis is of type: WakeWordType.MICRO_WAKE_WORD
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Model path resolved to: /app/wakewords/hey_jarvis.json (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Type specific config for hey_jarvis (micro): {'probability_cutoff': 0.97, 'feature_step_size': 10, 'sliding_window_size': 5, 'tensor_arena_size': 22860, 'minimum_esphome_version': '2024.7.0'}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Successfully registered wake word: hey_jarvis
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Checking directory: /app/local/external_wake_words (exists: False)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Found 0 JSON configuration files in /app/local/external_wake_words
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Total available wake words found: 9
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Available wake words: ['alexa', 'choo_choo_homie', 'hey_home_assistant', 'hey_jarvis', 'hey_luna', 'hey_morgan', 'hey_mycroft', 'okay_computer', 'okay_nabu']
linux-voice-assistant | DEBUG:__main__:Loading preferences: /app/configuration/preferences.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Requested active wake word ids: ['hey_mycroft']
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Default wake word id: hey_mycroft
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Loading requested wake word models, count: 1
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Processing wake word 1/1: hey_mycroft
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Loading wake model: hey_mycroft (Hey Mycroft)
linux-voice-assistant | {'type': 'micro', 'wake_word': 'Hey Mycroft', 'author': 'Kevin Ahrendt', 'website': 'https://www.kevinahrendt.com/', 'model': 'hey_mycroft.tflite', 'trained_languages': ['en'], 'version': 2, 'micro': {'probability_cutoff': 0.95, 'sliding_window_size': 5, 'feature_step_size': 10, 'tensor_arena_size': 23628, 'minimum_esphome_version': '2024.7.0'}}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:✅ Successfully loaded wake model: hey_mycroft
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Loaded 1 wake models successfully
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Active wake words: ['hey_mycroft']
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Searching for stop model 'stop' in directories: ['/app/wakewords', '/app/local/external_wake_words']
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Checking stop model path: /app/wakewords/stop.json (exists: True)
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Found stop model configuration at: /app/wakewords/stop.json
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Loading stop model: /app/wakewords/stop.json
linux-voice-assistant | {'type': 'micro', 'wake_word': 'Stop', 'author': 'Kevin Ahrendt', 'website': 'https://www.kevinahrendt.com/', 'model': 'stop.tflite', 'trained_languages': ['en'], 'version': 2, 'micro': {'probability_cutoff': 0.5, 'feature_step_size': 10, 'sliding_window_size': 5, 'tensor_arena_size': 21000, 'minimum_esphome_version': '2024.7.0'}}
linux-voice-assistant | DEBUG:linux_voice_assistant.wake_word:Successfully loaded stop model
linux-voice-assistant | DEBUG:MpvMediaPlayer:MpvMediaPlayer initialized (device=rtp)
linux-voice-assistant | DEBUG:MpvMediaPlayer:MpvMediaPlayer initialized (device=rtp)
linux-voice-assistant | DEBUG:MpvMediaPlayer:set_volume(volume=100.00)
linux-voice-assistant | DEBUG:LibMpvPlayer:unduck() called
linux-voice-assistant | DEBUG:LibMpvPlayer:unduck() called
linux-voice-assistant | DEBUG:MpvMediaPlayer:set_volume(volume=100.00)
linux-voice-assistant | DEBUG:LibMpvPlayer:unduck() called
linux-voice-assistant | DEBUG:LibMpvPlayer:unduck() called
linux-voice-assistant | DEBUG:__main__:Validating VoiceSatelliteProtocol initialization...
linux-voice-assistant | DEBUG:linux_voice_assistant.satellite:Voice assistant features
linux-voice-assistant | DEBUG:MpvMediaPlayer:set_volume(volume=100.00)
linux-voice-assistant | DEBUG:LibMpvPlayer:unduck() called
linux-voice-assistant | DEBUG:LibMpvPlayer:unduck() called
linux-voice-assistant | DEBUG:MpvMediaPlayer:set_volume(volume=100.00)
linux-voice-assistant | DEBUG:LibMpvPlayer:unduck() called
linux-voice-assistant | DEBUG:LibMpvPlayer:unduck() called
linux-voice-assistant | DEBUG:WakeWord1SensitivityNumberEntity[3]:Entity synchronized: old=0.700 new=0.700
linux-voice-assistant | DEBUG:linux_voice_assistant.satellite:INIT: Wake Word 1 entity initialized with value 0.700
linux-voice-assistant | DEBUG:WakeWord2SensitivityNumberEntity[4]:Entity synchronized: old=0.700 new=0.700
linux-voice-assistant | DEBUG:StopWordSensitivityNumberEntity[5]:Entity synchronized: old=0.500 new=0.500
linux-voice-assistant | DEBUG:__main__:✅ VoiceSatelliteProtocol validation successful
linux-voice-assistant | DEBUG:__main__:Opening audio input device: rtp-source
linux-voice-assistant | DEBUG:linux_voice_assistant.zeroconf:Zeroconf discovery enabled: AsyncServiceInfo(type='_esphomelib._tcp.local.', name='lva-aeaff4d4f134._esphomelib._tcp.local.', addresses=[b'\x00\x00\x00\x00'], port=6053, weight=0, priority=0, server='lva-aeaff4d4f134.local.', properties={b'version': b'2025.9.0', b'mac': b'ae:af:f4:d4:f1:34', b'board': b'host', b'platform': b'HOST', b'network': b'ethernet'}, interface_index=None)
linux-voice-assistant | INFO:__main__:Server started (host=0.0.0.0, port=6053)
linux-voice-assistant | DEBUG:linux_voice_assistant.satellite:Voice assistant features
linux-voice-assistant | DEBUG:WakeWord1SensitivityNumberEntity[3]:Entity synchronized: old=0.950 new=0.950
linux-voice-assistant | DEBUG:linux_voice_assistant.satellite:INIT: Wake Word 1 entity initialized with value 0.950
linux-voice-assistant | DEBUG:WakeWord2SensitivityNumberEntity[4]:Entity synchronized: old=0.700 new=0.700
linux-voice-assistant | DEBUG:StopWordSensitivityNumberEntity[5]:Entity synchronized: old=0.500 new=0.500
linux-voice-assistant | ERROR:linux_voice_assistant.api_server:Incorrect preamble: 123
Home assistant tries this a few times before reporting that is Failed to Connect. I am not at the point of testing the application and audio components yet, this was just about making sure that the system could connect to Home Assistant first.
I am trying to run the container (ghcr.io/ohf-voice/linux-voice-assistant:1.1.11) using docker compose as a starting point. I believe I have done everything correctly and the system logs look okay until I try and connect Home Assistant to it.
Startup logs:
logs when connecting home assistant:
Home assistant tries this a few times before reporting that is Failed to Connect. I am not at the point of testing the application and audio components yet, this was just about making sure that the system could connect to Home Assistant first.