There is no native way to do that in M (sounds like an easy addition for the next version though!). In the meantime, if you're willing to use some hacks, this should do the trick:
(*Load the relevant code*)
$AudioInputDevices;
(*hack a downvalue*)
FFmpegTools`Audio`Private`validateParameter[head_, "ChannelCount", value_] :=
If[!(Internal`PositiveIntegerQ[value] && 1 <= value),
`LLU`ThrowPacletFailure["InvalidChannelCount", "MessageParameters" -> <|"ChannelCount" -> value|>]
];
SetAttributes[recordDevice, HoldRest];
recordDevice[deviceName_, numChannels_, bagOfData_] :=
Module[
{t},
bagOfData = {};
t = FFmpegTools`Audio`CreateAudioCaptureAsynchronousTask[
deviceName, Function[AppendTo[bagOfData, #3]],
"ChannelCount" -> numChannels
];
FFmpegTools`Audio`StartAudioAsynchronousTask[t];
t
];
stopRecording[t_] := (FFmpegTools`Audio`StopAudioAsynchronousTask[t]; FFmpegTools`Audio`RemoveAudioAsynchronousTask[t]);
constructAudio[bagOfData_] := Audio[Transpose@Flatten[bagOfData, {1, 3}], "SignedInteger16"]
And then use the functions:
In[16]:= bag = {};
task = recordDevice["MultiInput", 5, bag]
Out[17]= AsynchronousTaskObject[<|
"Type" -> "AudioDevice", "SubType" -> "InputDevice", "DeviceName" ->
"MultiInput", "ConnectionID" -> 105553163878432, "Mode" ->
"Continuous"|>, 3, 20812609761764629468]
In[18]:= stopRecording[task]
constructAudio[bag] // AudioChannels
Out[19]= 5