我在我的 Raspberry Pi 上使用带有 16 个麦克风的 USB 声卡(设备是 UMA 16)。目前,我正在收集所有 16 个通道数据,并根据指定要使用哪些通道的配置文件,通过以编程方式为需要实时音频输入的应用程序分离它们的内容,最多使用其中的 8 个。有什么方法可以使用 alsa 驱动程序 API 来提供来自用户在运行时指定的多达 8 个麦克风的数据,这样我就可以避免额外的 8 个麦克风输入?
我附上了我为 UMA 16 编写的 .asoundrc 文件:
pcm_slave.ins {
pcm "hw:1,0"
rate 16000
channels 16
}
pcm.mic0 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 0
}
}
pcm.mic1 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 1
}
}
pcm.mic2 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 2
}
}
pcm.mic3 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 3
}
}
pcm.mic4 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 4
}
}
pcm.mic5 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 5
}
}
pcm.mic6 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 6
}
}
pcm.mic7 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 7
}
}
pcm.mic8 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 8
}
}
pcm.mic9 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 9
}
}
pcm.mic10 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 10
}
}
pcm.mic11 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 11
}
}
pcm.mic12 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 12
}
}
pcm.mic13 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 13
}
}
pcm.mic14 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 14
}
}
pcm.mic15 {
type plug
slave.pcm {
type dsnoop
ipc_key 12342
slave ins
bindings.0 15
}
}
编辑:
目前我正在使用snd_pcm_open(&handle, deviceName, SND_PCM_STREAM_CAPTURE, 0);
从默认设备名称捕获音频。如果我将所有麦克风声明为单独的设备,我是否仍然能够并行获取它们的数据?