Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53615781e8 |
No files matched your search
@@ -101,6 +101,9 @@ LVA_PULSE_COOKIE="/run/user/${LVA_USER_ID}/pulse/cookie"
|
||||
### Delay before mic opens for continued conversation (optional):
|
||||
# CONTINUE_CONVERSATION_DELAY="0.5"
|
||||
|
||||
### Unducking delay (optional)
|
||||
# UNDUCK_DELAY="1.2"
|
||||
|
||||
### Sound files (optional):
|
||||
# path for custom files in docker is for example "sounds/custom/your_soundfile.flac"
|
||||
# WAKEUP_SOUND="sounds/wake_word_triggered.flac"
|
||||
|
||||
@@ -16,7 +16,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- name: Set up Python 3.13
|
||||
uses: actions/setup-python@v7
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
- name: Install dependencies
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- name: Set up Python 3.13
|
||||
uses: actions/setup-python@v7
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
- name: Install dependencies
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- name: Set up Python 3.13
|
||||
uses: actions/setup-python@v7
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
- name: Install dependencies
|
||||
@@ -61,7 +61,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- name: Set up Python 3.13
|
||||
uses: actions/setup-python@v7
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
- name: Install dependencies
|
||||
@@ -77,7 +77,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- name: Set up Python 3.13
|
||||
uses: actions/setup-python@v7
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.13"
|
||||
- name: Install dependencies
|
||||
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Set up Python 3.12
|
||||
uses: actions/setup-python@v7
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
|
||||
@@ -92,6 +92,10 @@ if [ -n "${CONTINUE_CONVERSATION_DELAY}" ]; then
|
||||
EXTRA_ARGS+=( "--continue-conversation-delay" "$CONTINUE_CONVERSATION_DELAY" )
|
||||
fi
|
||||
|
||||
if [ -n "${UNDUCK_DELAY}" ]; then
|
||||
EXTRA_ARGS+=( "--unduck-delay" "$UNDUCK_DELAY" )
|
||||
fi
|
||||
|
||||
if [ -n "${WAKEUP_SOUND}" ]; then
|
||||
EXTRA_ARGS+=( "--wakeup-sound" "$WAKEUP_SOUND" )
|
||||
fi
|
||||
|
||||
@@ -118,6 +118,12 @@ async def main() -> None:
|
||||
default=0.5,
|
||||
help="Seconds to wait after TTS finishes before opening the mic for continued conversation (default: 0.5)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--unduck-delay",
|
||||
type=float,
|
||||
default=0.0,
|
||||
help="Seconds to keep music ducked after TTS finishes (default: 0.0)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--wakeup-sound",
|
||||
default=str(_SOUNDS_DIR / "wake_word_triggered.flac"),
|
||||
@@ -451,6 +457,7 @@ async def main() -> None:
|
||||
preferences_path=preferences_path,
|
||||
refractory_seconds=args.refractory_seconds,
|
||||
continue_conversation_delay=args.continue_conversation_delay,
|
||||
unduck_delay=args.unduck_delay,
|
||||
output_only=args.output_only,
|
||||
download_dir=args.download_dir,
|
||||
volume=initial_volume,
|
||||
|
||||
@@ -126,6 +126,7 @@ class ServerState:
|
||||
preferences_path: Path
|
||||
download_dir: Path
|
||||
continue_conversation_delay: float = 0.5 # seconds to wait after TTS before opening mic
|
||||
unduck_delay: float = 0.0 # seconds to keep music ducked after TTS ends
|
||||
|
||||
media_player_entity: "Optional[MediaPlayerEntity]" = None
|
||||
satellite: "Optional[VoiceSatelliteProtocol]" = None
|
||||
|
||||
@@ -1020,7 +1020,12 @@ class VoiceSatelliteProtocol(APIServer):
|
||||
threading.Timer(self.state.continue_conversation_delay, _start_continued_conversation).start()
|
||||
else:
|
||||
self._continue_conversation = False
|
||||
self.unduck()
|
||||
unduck_delay = self.state.unduck_delay
|
||||
if unduck_delay > 0:
|
||||
_LOGGER.debug("Unducking after %.2fs", unduck_delay)
|
||||
threading.Timer(unduck_delay, self.unduck).start()
|
||||
else:
|
||||
self.unduck()
|
||||
self._emit(LVAEvent.IDLE)
|
||||
|
||||
_LOGGER.debug("TTS response finished")
|
||||
|
||||
Reference in new issue
Block a user