Skip to content

Initial Sendspin support#113

Draft
lowlyocean wants to merge 66 commits into
OHF-Voice:mainfrom
lowlyocean:sendspin
Draft

Initial Sendspin support#113
lowlyocean wants to merge 66 commits into
OHF-Voice:mainfrom
lowlyocean:sendspin

Conversation

@lowlyocean

Copy link
Copy Markdown
Contributor

Closes #6

@lowlyocean
lowlyocean marked this pull request as draft January 27, 2026 21:53
@lowlyocean
lowlyocean marked this pull request as ready for review January 30, 2026 13:28
@omaramin-2000 omaramin-2000 self-assigned this Jan 30, 2026
@omaramin-2000

Copy link
Copy Markdown
Collaborator

Good, but why do you think of setting a fixed volume 60 for the TTS player, and changing the ducking volume to 30 as well?

@omaramin-2000

Copy link
Copy Markdown
Collaborator

FYI, there are set of changes we're working on for the media player to improve its updating state, and try separating satellite announcements from it so, it doesn't affect any playing music #43

@lowlyocean

lowlyocean commented Feb 2, 2026

Copy link
Copy Markdown
Contributor Author

Good, but why do you think of setting a fixed volume 60 for the TTS player, and changing the ducking volume to 30 as well?

Even though music was successfully being set to "unduck" and "duck" volume, the wake word chime, TTS, announcements, and timer were all playing at 100 volume when using the sendspin source. This is too high for my setup, I can't adjust the device volume because it is being shared with other applications on the same host besides LVA. There is still unexpected behavior I haven't solved yet where that the TTS/Announcements/Chime/Timer will play at "duck" volume IF the source of the music is the existing MPV stream from home assistant (rather than the new Sendspin PCM stream). Maybe it is not actually playing at ducked volume, but it is some bug with in translation between "perceptive" volume scale of Senspin and "linear" volume scale of existing LVA code.

I think this table needs to be documented because the behavior is unintuitive (I only fill in the values from memory)


  
Music source = Sendspin (PCM stream) Music source = Home Assistant (MPV stream)

  
Music Volume   TTS Volume Wake Word Chime Volume Announcement Volume Timer Volume Music Volume   TTS Volume Wake Word Chime Volume Announcement Volume Timer Volume
Unducked state “unducked” volume 60 60 60 60 “ducked” volume? “ducked” volume? “ducked” volume? “ducked” volume? “ducked” volume?
Ducked State “ducked” volume 30 30 30 30 “ducked” volume? “ducked” volume? “ducked” volume? “ducked” volume? “ducked” volume?
Initial State ? ? ? ? ? ? ? ? ? ?
“Mute” state ? ? ? ? ? ? ? ? ? ?

@florian-asche florian-asche removed their assignment Feb 9, 2026
@lowlyocean

Copy link
Copy Markdown
Contributor Author

One of the recent commits that merge 'main' into sendspin branch seems to be causing the error below:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/srv/linux_voice_assistant/__main__.py", line 432, in <module>
    asyncio.run(main())
    ~~~~~~~~~~~^^^^^^^^
  File "/usr/local/lib/python3.13/asyncio/runners.py", line 195, in run
    return runner.run(main)
           ~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.13/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "/srv/linux_voice_assistant/__main__.py", line 281, in main
    vsp = VoiceSatelliteProtocol(state)
  File "/srv/linux_voice_assistant/satellite.py", line 123, in __init__
    self.state.tts_player.player.volume = 60
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'MpvMediaPlayer' object has no attribute 'player'. Did you mean: 'play'?

@florian-asche
florian-asche requested review from omaramin-2000 and synesthesiam and removed request for florian-asche July 1, 2026 13:27
@omaramin-2000 omaramin-2000 self-assigned this Jul 1, 2026
Removed redundant lambda function in server creation.
Refactor duck and unduck methods to improve code structure.

@omaramin-2000 omaramin-2000 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For my test, I am not seeing LVA showing up as a SendSpin player in Music Assistant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REQUEST] "Sendspin protocol" (formerly "Resonate") audio player client optimized for music playback

4 participants