从移动设备的麦克风采集音频数据
此示例说明如何从 MATLAB® 连接到您的移动设备麦克风并采集音频信号。登录 MathWorks 帐户后,您可以使用此示例中的 MATLAB 代码从以下任何位置访问您采集的音频数据:
在同一台设备上运行的 MATLAB Mobile™
在不同设备上运行的 MATLAB Mobile
MATLAB Online™
台式计算机或笔记本电脑上的 MATLAB,且安装了附加功能 MATLAB Support Package for Android® Sensors
设置移动设备
在您的移动设备上安装和设置 MATLAB Mobile。然后,从 MATLAB Mobile 的“设置”菜单登录 MathWorks® Cloud。有关这些步骤的详细信息,请参阅在您的设备上安装 MATLAB Mobile和登录到 Cloud。
在您的设备上启动 MATLAB Mobile。
在设备上启用麦克风访问权限
点击菜单并选择传感器。
在“传感器设置”部分中,点击更多;在“MATLAB 远程访问”部分中,打开传感器访问。点击确定以确认访问权限。这允许以编程方式访问设备传感器。
现在可以使用麦克风访问权限开关。打开此开关,点击确定以确认访问权限。这将专门授予远程麦克风访问权限。
返回到传感器设置,点击流式传输至,然后选择
MATLAB
。然后打开麦克风访问权限。这将打开麦克风以接收音频输入。
此时,您应会看到音量条实时变化,指示麦克风正在接收声音。现在,设备麦克风已准备就绪,可以开始采集数据,以便流式传输到您的 MATLAB 会话。
创建与您的设备的连接
在连接的 MATLAB 会话中,在命令行窗口中创建一个 mobiledev
对象 m
。如果在此设备或另一台设备上使用 MATLAB Mobile,请使用命令屏幕。
m = mobiledev
m = mobiledev with properties: Device: 'Galaxy Tab A (2017)' Connected: 1 Logging: 0 AvailableCameras: {'back' 'front'} AvailableMicrophones: {'SM-T380-bottom'} SelectedMicrophone: 'SM-T380-bottom' InitialTimestamp: '' AccelerationSensorEnabled: 0 AngularVelocitySensorEnabled: 0 MagneticSensorEnabled: 0 OrientationSensorEnabled: 0 PositionSensorEnabled: 0 MicrophoneEnabled: 1 Show all properties
SelectedMicrophone
属性指示哪个麦克风处于活动状态。在这种情况下,AvailableMicrophones
属性中只有一个元素。还要注意,Connected
和 MicrophoneEnabled
属性的值均为 1
,表示设置完成。您可以将 MicrophoneEnabled
设置为 1
或 0
,以编程方式打开或关闭麦克风。
对象 m
的默认显示不显示其所有属性。您可以点击显示所有属性链接以查看更多信息。其中包括对象的 Microphone
属性,您可以检查该属性以获得有关麦克风及其设置的更多信息。
m.Microphone
Microphone with properties: Name: 'SM-T380-bottom' AvailableSampleRates: [8000 11025 12000 16000 22050 24000 32000 44100 48000] NumChannels: 2 SampleRate: 44100 IsEnabled: 1
录制音频数据
您可以开始采集音频数据了。
通过对着麦克风说话来提供音频输入源。
在设备传感器显示画面上,点击开始。
在您说话时让音频录制持续几秒,然后点击停止。
停止和开始录制的另一个编程方法是在 mobiledev
对象上设置 Logging
属性:
m.Logging = 1 ⋮ m.Logging = 0
现在可以将采集的数据读入 MATLAB 中。
读取并绘制音频数据
当您在 MATLAB 中再次查看连接的 mobiledev
对象 m
时,MicrophoneEnabled
属性指示采集的音频数据采样的数量。
m
m = mobiledev with properties: Device: 'Galaxy Tab A (2017)' Connected: 1 Logging: 0 AvailableCameras: {'back' 'front'} AvailableMicrophones: {'SM-T380-bottom'} SelectedMicrophone: 'SM-T380-bottom' InitialTimestamp: '' AccelerationSensorEnabled: 0 AngularVelocitySensorEnabled: 0 MagneticSensorEnabled: 0 OrientationSensorEnabled: 0 PositionSensorEnabled: 0 MicrophoneEnabled: 1 (109224 Logged samples)
将数据读入 MATLAB 工作区的时间表中,并检查表的前几行。
audTT = readAudio(m,OutputFormat="timetable");
head(audTT)
Time Left Right ______________ _________ _________ 0 sec 0 0 2.2676e-05 sec -0.030763 -0.030091 4.5351e-05 sec -0.091281 -0.0889 6.8027e-05 sec -0.14975 -0.14603 9.0703e-05 sec -0.20145 -0.19605 0.00011338 sec -0.24812 -0.24201 0.00013605 sec -0.28562 -0.27818 0.00015873 sec -0.31437 -0.30659
使用堆叠图查看来自麦克风的两个通道的数据。
stackedplot(audTT)