Main Content

从移动设备的麦克风采集音频数据

此示例说明如何从 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

在设备上启用麦克风访问权限

  1. 点击菜单并选择传感器

  2. 在“传感器设置”部分中,点击更多;在“MATLAB 远程访问”部分中,打开传感器访问。点击确定以确认访问权限。这允许以编程方式访问设备传感器。

  3. 现在可以使用麦克风访问权限开关。打开此开关,点击确定以确认访问权限。这将专门授予远程麦克风访问权限。

  4. 返回到传感器设置,点击流式传输至,然后选择 MATLAB

  5. 然后打开麦克风访问权限。这将打开麦克风以接收音频输入。

此时,您应会看到音量条实时变化,指示麦克风正在接收声音。现在,设备麦克风已准备就绪,可以开始采集数据,以便流式传输到您的 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 属性中只有一个元素。还要注意,ConnectedMicrophoneEnabled 属性的值均为 1,表示设置完成。您可以将 MicrophoneEnabled 设置为 10,以编程方式打开或关闭麦克风。

对象 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

录制音频数据

您可以开始采集音频数据了。

  1. 通过对着麦克风说话来提供音频输入源。

  2. 在设备传感器显示画面上,点击开始

  3. 在您说话时让音频录制持续几秒,然后点击停止

停止和开始录制的另一个编程方法是在 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)

plots of captured audio data

另请参阅

函数