TTS does not lower mpv music volume while speaking
- Fixes #126 - callback was missing
This commit is contained in:
1 parent
9b52f61a9f
commit
f5b76b8921
2 files changed
+90
-68
No files matched your search
@@ -1,4 +1,4 @@
|
||||
import logging
|
||||
# mpv_player.py
|
||||
from typing import Union, List, Callable, Optional
|
||||
|
||||
from .player.libmpv import LibMpvPlayer
|
||||
@@ -6,11 +6,13 @@ from .player.libmpv import LibMpvPlayer
|
||||
|
||||
class MpvMediaPlayer:
|
||||
"""
|
||||
LVA MediaPlayer implementation using libmpv.
|
||||
Linux Voice Assistant MediaPlayer implementation based on libmpv.
|
||||
|
||||
This class provides the MediaPlayer interface expected by LVA and
|
||||
delegates all playback logic to LibMpvPlayer.
|
||||
"""
|
||||
|
||||
def __init__(self, device: str | None = None):
|
||||
self._log = logging.getLogger(self.__class__.__name__)
|
||||
def __init__(self, device: str | None = None) -> None:
|
||||
self._player = LibMpvPlayer(device=device)
|
||||
self._done_callback: Optional[Callable[[], None]] = None
|
||||
|
||||
@@ -18,33 +20,56 @@ class MpvMediaPlayer:
|
||||
self,
|
||||
url: Union[str, List[str]],
|
||||
done_callback: Optional[Callable[[], None]] = None,
|
||||
stop_first: bool = True,
|
||||
stop_first: bool = False,
|
||||
) -> None:
|
||||
self._log.info("Playing %s", url)
|
||||
"""
|
||||
Play a media URL.
|
||||
|
||||
Args:
|
||||
url: Media URL or list of URLs (LVA currently uses a single URL).
|
||||
done_callback: Optional callback invoked when playback finishes.
|
||||
stop_first: Kept for API compatibility; currently unused.
|
||||
"""
|
||||
# LVA currently only uses single URLs
|
||||
if isinstance(url, list):
|
||||
url = url[0]
|
||||
|
||||
self._done_callback = done_callback
|
||||
self._player.play(url, paused=False)
|
||||
self._player.play(url, done_callback=done_callback, stop_first=stop_first)
|
||||
|
||||
def pause(self) -> None:
|
||||
"""Pause playback."""
|
||||
self._player.pause()
|
||||
|
||||
def resume(self) -> None:
|
||||
"""Resume playback."""
|
||||
self._player.resume()
|
||||
|
||||
def stop(self) -> None:
|
||||
"""Stop playback and invoke the done callback if present."""
|
||||
self._player.stop()
|
||||
if self._done_callback:
|
||||
self._done_callback()
|
||||
self._done_callback = None
|
||||
|
||||
def set_volume(self, volume: float) -> None:
|
||||
"""
|
||||
Set playback volume.
|
||||
|
||||
Args:
|
||||
volume: Volume in percent (0.0–100.0).
|
||||
"""
|
||||
self._player.set_volume(volume)
|
||||
|
||||
def duck(self, factor: float = 0.5) -> None:
|
||||
"""
|
||||
Temporarily reduce volume.
|
||||
|
||||
Args:
|
||||
factor: Volume multiplier (0.0–1.0).
|
||||
"""
|
||||
self._player.duck(factor)
|
||||
|
||||
def unduck(self) -> None:
|
||||
self._player.unduck()
|
||||
"""Restore volume after ducking."""
|
||||
self._player.unduck()
|
||||
Reference in new issue
Block a user