feat(app): Medien pausieren bei Aufnahmestart, fortsetzen bei Stopp

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-15 19:00:06 +02:00
parent b5d6ae6ecc
commit c0fe0f90df
+17 -2
View File
@@ -7,6 +7,7 @@ import sys
from whisper_local.config import Config, load_config
from whisper_local.hotkey import create_listener
from whisper_local.inserter import create_inserter
from whisper_local.media import create_media_controller
from whisper_local.recorder import Recorder
from whisper_local.transcriber import Transcriber
from whisper_local.tray import AppState, create_tray
@@ -48,20 +49,31 @@ class App:
model=_preloaded_model,
)
self.inserter = create_inserter()
self.media = create_media_controller(
enabled=config.pause_media_during_recording
)
self.hotkey = create_listener(key_name=config.hotkey)
self.hotkey.on_press = self.on_press
self.hotkey.on_release = self.on_release
self.tray = create_tray(on_settings=self._open_settings, on_quit=self._quit)
async def on_press(self) -> None:
"""Callback: Hotkey gedrückt — Aufnahme starten."""
"""Callback: Hotkey gedrückt — Medien pausieren + Aufnahme starten."""
logger.info("Aufnahme startet...")
self.tray.set_state(AppState.RECORDING)
await self.media.pause()
self.recorder.start()
async def on_release(self) -> None:
"""Callback: Hotkey losgelassen — Aufnahme stoppen, transkribieren, einfügen."""
"""Callback: Hotkey losgelassen — Aufnahme stoppen, Medien fortsetzen, transkribieren, einfügen."""
try:
audio = self.recorder.stop()
finally:
try:
await self.media.resume()
except Exception as e:
logger.warning("Fehler beim Fortsetzen der Medienwiedergabe: %s", e)
if audio is None:
logger.info("Keine Audio-Daten, übersprungen")
self.tray.set_state(AppState.WAITING)
@@ -93,6 +105,9 @@ class App:
min_duration=new_config.min_duration,
device=new_config.microphone or None,
)
self.media = create_media_controller(
enabled=new_config.pause_media_during_recording
)
if self._loop is not None:
asyncio.run_coroutine_threadsafe(
self._restart_hotkey(new_config.hotkey), self._loop