feat: добавить Audio Level monitoring — RMS громкости микрофона в WebSocket
- settings.py: audio_level_enabled, audio_level_interval_ms
- satellite.py: _calculate_rms() — вычисление RMS (0.0-1.0)
- satellite.py: _send_audio_level() — фоновая задача отправки
- satellite.py: _last_mic_level, _audio_level_task атрибуты
- satellite.py: интеграция в _start() / _stop()
- satellite.py: вычисление RMS в event_from_mic() для всех классов
- __main__.py: CLI --audio-level-enabled, --audio-level-interval-ms
Событие в WebSocket (10 раз в секунду):
{type: audio-level, data: {level: 0.42}}
This commit is contained in:
@@ -275,6 +275,19 @@ async def main() -> None:
|
||||
help="Port for WebSocket server (default: 8675)"
|
||||
)
|
||||
|
||||
# Audio level monitoring
|
||||
parser.add_argument(
|
||||
"--audio-level-enabled",
|
||||
action="store_true",
|
||||
help="Enable audio level monitoring and send audio-level events to WebSocket"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--audio-level-interval-ms",
|
||||
type=int,
|
||||
default=100,
|
||||
help="Interval for audio-level events in milliseconds (default: 100)"
|
||||
)
|
||||
|
||||
# Sounds
|
||||
parser.add_argument(
|
||||
"--awake-wav", help="WAV file to play when wake word is detected"
|
||||
@@ -451,6 +464,10 @@ async def main() -> None:
|
||||
websocket_enabled=args.websocket_enabled,
|
||||
websocket_host=args.websocket_host,
|
||||
websocket_port=args.websocket_port,
|
||||
|
||||
# Audio level
|
||||
audio_level_enabled=args.audio_level_enabled,
|
||||
audio_level_interval_ms=args.audio_level_interval_ms,
|
||||
),
|
||||
timer=TimerSettings(
|
||||
started=split_command(args.timer_started_command),
|
||||
|
||||
Reference in New Issue
Block a user