0

我在我的 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);从默认设备名称捕获音频。如果我将所有麦克风声明为单独的设备,我是否仍然能够并行获取它们的数据?

4

0 回答 0