主要内容

录音和播放音频

记录和播放音频数据处理在MATLAB®从系统上的音频输入和输出设备。从R2020b开始,支持音频回放金宝appMATLAB在线™

记录音频

从音频输入设备(如连接到系统的麦克风)记录数据:

  1. 创建一个audiorecorder对象。

  2. 调用记录recordblocking方法,地点:

    • 记录即使在录制过程中,也立即返回对调用函数或命令提示符的控制。指定记录的长度(以秒为单位),或使用停止方法。可选地,叫暂停重新开始方法。记录是异步执行的。

    • recordblocking保留控制直到记录完成。指定记录的长度,以秒为单位。录音是同步进行的。

  3. 方法创建与信号数据对应的数字数组getaudiodata方法。

下面的例子展示了如何使用recordblocking记录方法。

麦克风输入记录

这个例子展示了如何记录麦克风输入,回放记录,并将记录的音频信号存储在一个数字数组中。您必须首先将一个麦克风连接到您的系统。

创建一个audiorecorder对象命名recObj用于记录音频输入。

recObj = audiorecorder
recbj = audiorecorder with properties: SampleRate: 8000 BitsPerSample: 8 NumChannels: 1 DeviceID: -1 CurrentSample: 1 TotalSamples: 0 Running: 'off' StartFcn: [] StopFcn: [] TimerFcn: [] TimerPeriod: 0.0500 Tag: " UserData: [] Type: 'audiorecorder'

audiorecorder创建8000hz, 8位,1通道audiorecorder对象。

录下你的声音5秒钟。

disp (开始说话。5) recordblocking (recObj);disp (结束录音。);

回放录音。

玩(recObj);

以双精度数组存储数据,y

y = getaudiodata (recObj);

绘制音频样本。

情节(y);

从不同的声卡记录两个通道

用麦克风从两个不同的声卡上分别记录声音:

  1. 调用audiodevinfo列出可用的声卡。例如,这段代码返回一个结构数组,其中包含系统上所有的输入和输出音频设备:

    信息= audiodevinfo;
    根据名字识别你想要使用的声卡,并记下它们ID值。

  2. 创建两个audiorecorder对象。例如,这段代码创建audiorecorder对象,recorder1,用于记录设备3的单个通道,频率为44.1 kHz,每个样本16位。的audiorecorder对象,recorder2,用于记录设备4的单声道,频率为48khz:

    recorder1 = audiorecorder(44100年,16岁,1,3);recorder2 = audiorecorder(1 48000人,16日,4);

  3. 分别记录每个音频通道。

    记录(recorder1);记录(recorder2);暂停(5);
    录音在第一次呼叫时同时发生记录不阻止。

  4. 停止录音。

    停止(recorder1);停止(recorder2);

指定录音的质量

默认情况下,一个audiorecorder对象使用8000赫兹的采样率,8位的深度(每个采样8位)和单个音频通道。这些设置最小化了所需的数据存储量。对于更高质量的录音,增加采样率或位深。

例如,典型的光盘使用44,100赫兹的采样率和16位深度。创建一个audiorecorder对象录制立体声(两个通道)与这些设置:

myRecObj = audiorecorder(44100,16, 2);

有关可用属性和值的更多信息,请参见audiorecorder参考页面。

播放音频

在您导入或录制音频后,MATLAB支持几种方式来听数据:金宝app

  • 对于使用单个函数调用的简单回放,请使用声音soundsc.例如,加载一个包含信号和采样率数据的mat样本文件,并听音频:

    加载chirp.mat;声音(y, Fs);
  • 要在回放过程中获得更大的灵活性,包括暂停、恢复或定义回调的能力,请使用audioplayer函数。创建一个audioplayer对象,然后调用方法来播放音频。例如,听示例文件:

    加载gong.mat;gong = audioplayer(y, Fs);玩(锣);

    有关其他示例,请参见在函数内录制或播放音频

如果不指定采样率,声音播放频率为8192赫兹。对于任何回放,指定较小的采样率以播放得更慢,并指定较大的采样率以播放得更快。

请注意

大多数声卡支持大约5000到480金宝app00赫兹之间的采样率。指定超出此范围的抽样率可能会产生意想不到的结果。

在函数内录制或播放音频

如果你创建一个audioplayeraudiorecorder对象时,对象仅在函数期间存在。例如,创建一个player函数调用playFile和一个简单的回调函数showSeconds

函数playFile (myfile)负载(myfile);obj = audioplayer(y, Fs);obj。TimerFcn =“showSeconds”;obj。TimerPeriod = 1;玩(obj);function showSeconds显示时间

调用playFile从命令提示符中播放文件handel.mat

playFile(“handel.mat”)

在记录的每秒8192个样本的采样率下,播放73113个样本大约需要8.9秒。然而,playFile函数通常在回放完成之前结束,并清除audioplayer对象obj

为了确保完整的回放或录音,请考虑以下选项:

  • 使用playblockingrecordblocking而不是记录.阻塞方法保持控制直到播放或记录完成。如果阻止控制,则不能发出任何其他命令或方法(例如暂停重新开始)。

  • 为函数创建一个输出参数,在基本工作区中生成一个对象。例如,修改playFile函数包含输出参数:

    函数obj = playFile(myfile)

    调用函数:

    h = playFile(“handel.mat”);

    因为h存在于基本工作区中,您可以从命令提示符暂停回放:

    暂停(h)

另请参阅

|||

相关的话题