fix: pause mic meter while running voice wake test

This commit is contained in:
Peter Steinberger
2025-12-06 02:54:40 +01:00
parent 4efecfdfa0
commit 98b0595275

View File

@@ -1827,6 +1827,7 @@ struct VoiceWakeSettings: View {
testState = .requesting testState = .requesting
Task { @MainActor in Task { @MainActor in
do { do {
await meter.stop() // free the mic for speech recognizer
try await tester.start( try await tester.start(
triggers: triggers, triggers: triggers,
micID: state.voiceWakeMicID.isEmpty ? nil : state.voiceWakeMicID, micID: state.voiceWakeMicID.isEmpty ? nil : state.voiceWakeMicID,
@@ -1834,6 +1835,8 @@ struct VoiceWakeSettings: View {
self.testState = newState self.testState = newState
if case .detected = newState { self.isTesting = false } if case .detected = newState { self.isTesting = false }
if case .failed = newState { self.isTesting = false } if case .failed = newState { self.isTesting = false }
if case .detected = newState { Task { await restartMeter() } }
if case .failed = newState { Task { await restartMeter() } }
} }
) )
// timeout after 10s // timeout after 10s
@@ -1842,11 +1845,13 @@ struct VoiceWakeSettings: View {
await tester.stop() await tester.stop()
testState = .failed("Timeout: no trigger heard") testState = .failed("Timeout: no trigger heard")
isTesting = false isTesting = false
await restartMeter()
} }
} catch { } catch {
await tester.stop() await tester.stop()
testState = .failed(error.localizedDescription) testState = .failed(error.localizedDescription)
isTesting = false isTesting = false
await restartMeter()
} }
} }
} }