tonhowtf/omniget · warning

[omnidisc] noise suppression failed

Error message

[omnidisc] noise suppression failed

What it means

Logged by setNoiseSuppression() when the `omnidisc_voice_set_noise_suppression` IPC command rejects. Note the settings write still runs afterwards, so the persisted preference may disagree with actual backend state. Non-fatal.

Solutions

  1. Read errorText(e) for the backend cause (e.g. filter init failure).
  2. Start/initialize the voice session before toggling suppression.
  3. Verify the noise-suppression native dependency is present on the target platform.
  4. Reconcile state: on failure, don't persist `enabled` to settings, or read back real status.
  5. Confirm `omnidisc_voice_set_noise_suppression` is registered and returns Result.

Example fix

// before
try {
  await invoke("omnidisc_voice_set_noise_suppression", { enabled });
} catch (e) {
  console.warn("[omnidisc] noise suppression failed", errorText(e));
}
await updateSettings({ omnidisc: { voice: { noise_suppression: enabled } } });
// after
try {
  await invoke("omnidisc_voice_set_noise_suppression", { enabled });
  await updateSettings({ omnidisc: { voice: { noise_suppression: enabled } } });
} catch (e) {
  console.warn("[omnidisc] noise suppression failed", errorText(e));
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (!isTauri()) return;
if (!get(voiceInitialized)) await initVoice();

Type guard

function isTauri(): boolean {
  return typeof window !== "undefined" && "__TAURI_INTERNALS__" in window;
}

Try / catch

try {
  await invoke("omnidisc_voice_set_noise_suppression", { enabled });
  await updateSettings({ omnidisc: { voice: { noise_suppression: enabled } } });
} catch (e) {
  console.warn("[omnidisc] noise suppression failed", errorText(e));
}

Prevention

When it happens

Trigger: Calling setNoiseSuppression(enabled) when the backend command fails: noise suppression backend (e.g. RNNoise/native filter) unavailable, voice session not started, or handler error.

Common situations: Toggling noise suppression before joining a channel or without an audio pipeline; missing native suppression library on the platform; command not registered; browser dev mode.

Understand the failure class

Background: "API request failed": what wrapped HTTP errors from external APIs mean and how to find the real cause — this error's family across 29 libraries.

Related errors


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/5968f7016b5d7e28. Report an issue: GitHub.

Appendix: source

Thrown at src/lib/stores/omnidisc-voice-store.svelte.ts:667

  const key = kind === "input" ? "input_device" : "output_device";
  try {
    await invoke("omnidisc_voice_set_device", { kind, id });
  } catch (e) {
    return errorText(e);
  }
  try {
    await updateSettings({ omnidisc: { voice: { [key]: id } } });
  } catch (e) {
    console.warn("[omnidisc] device preference not saved", errorText(e));
  }
  return null;
}

export async function setNoiseSuppression(enabled: boolean): Promise<void> {
  try {
    await invoke("omnidisc_voice_set_noise_suppression", { enabled });
  } catch (e) {
    console.warn("[omnidisc] noise suppression failed", errorText(e));
  }
  await updateSettings({ omnidisc: { voice: { noise_suppression: enabled } } });
}

export async function setPttKey(key: string): Promise<void> {
  await updateSettings({ omnidisc: { voice: { ptt_key: key } } });
  await refreshPttStatus();
  try {
    await invoke("omnidisc_voice_ptt", { pressed: false });
  } catch {
    return;
  }
}

/**
 * `null` while unknown or while no key is set; `false` when the OS refused to
 * hand the combination over — Windows gives it to whoever asked first, macOS
 * wants Accessibility permission. Both used to fail silently, so the key just

View on GitHub (pinned to 8600b91f42)