Select a microphone
Use the current default
Section titled “Use the current default”Omit .device(...) and the listener asks the operating system for its default input during construction:
let listener = micro_wakeword::Listener::from_config("wake-word.json")?;# Ok::<(), micro_wakeword::Error>(())This is a one-time selection. Changing the system default later does not move the live stream.
List available inputs
Section titled “List available inputs”use micro_wakeword::available_input_devices;
fn main() -> micro_wakeword::Result<()> { for device in available_input_devices()? { println!("{}: {}", device.index, device.name); } Ok(())}Indices are convenient for a command-line choice made immediately after listing. Device names are easier to save, but drivers may rename them after an update or when plugged into another port.
Select by index or name
Section titled “Select by index or name”use micro_wakeword::Listener;
# fn run() -> micro_wakeword::Result<()> {let by_index = Listener::config_builder("wake-word.json")? .device("1") .build()?;
let by_name = Listener::config_builder("wake-word.json")? .device("USB Microphone") .build()?;# Ok(()) }Name matching is case-insensitive and accepts an unambiguous substring. If multiple devices match, use the full name or an index.
Device policy belongs to the application
Section titled “Device policy belongs to the application”The library opens the device you request. Your app decides whether it should:
- remain fixed to a chosen microphone;
- reconnect to the current system default after failure;
- expose a device selector;
- follow operating-system default-device notifications.
That distinction avoids a voice app unexpectedly recording from a different microphone without the user’s chosen policy.