如何在matlab中录制和播放音频?

2025-10-16 17:31:46

1、录制音频

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

1、创建一个audiorecorder对象。

2、调用record或recordblocking方法,其中:

     record即使记录继续进行,也可以将立即控制返回给调用函数或命令提示符。指定记录长度(以秒为单位),或使用stop方法结束记录。(可选)调用pause和resume方法。记录是异步执行的。

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

       3、使用该getaudiodata方法创建一个与信号数据相对应的数字数组。

以下示例说明如何使用recordblocking和record方法。

2、记录麦克风输入

本示例说明如何记录麦克风输入,回放记录以及将记录的音频信号存储在数字数组中。您必须首先将麦克风连接到系统。

创建一个audiorecorder名称recObj为记录音频输入的对象。

audiorecorder创建一个8000 Hz,8位1通道audiorecorder对象。

如何在matlab中录制和播放音频?

3、录制您的声音5秒钟。

disp('Start speaking.')

recordblocking(recObj, 5); 

disp('End of Recording.');

如何在matlab中录制和播放音频?

4、播放录音。

play(recObj);

声音还是有的,不过时噪音,我的耳机不太好。

如何在matlab中录制和播放音频?

5、将数据存储在双精度数组中y。

y = getaudiodata(recObj);

如何在matlab中录制和播放音频?

6、绘制音频样本。

plot(y);

如何在matlab中录制和播放音频?

如何在matlab中录制和播放音频?

1、从不同的声卡录制两个通道

要独立于两个不同的声卡录制音频,并在每个声卡上连接麦克风,请执行以下操作:

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

info = audiodevinfo;

通过名称标识要使用的声卡,并记下其ID值。

如何在matlab中录制和播放音频?

2、创建两个audiorecorder对象。例如,此代码创建audiorecorder对象,recorder1用于以44.1 kHz和每个采样16位的速率记录来自设备3的单个通道。的audiorecorder对象,recorder2是用于在48kHz记录从装置4的单个信道:

recorder1 = audiorecorder(44100,16,1,3); 

recorder2 = audiorecorder(48000,16,1,4);

3、分别录制每个音频通道。

record(recorder1);

record(recorder2); 

pause(5);

录音会同时发生,因为对的第一个呼叫record不会阻塞。

4、停止录音。

stop(recorder1); 

stop(recorder2);

5、指定录音质量

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

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

myRecObj = audiorecorder(44100, 16, 2);

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

1、播放音讯

导入或录制音频后,MATLAB支持多种方法来监听数据:

要使用单个功能调用进行简单播放,请使用sound或soundsc。例如,加载包含信号和采样率数据的样本MAT文件,然后收听音频:

load chirp.mat; 

sound(y, Fs);

这个是鸟儿的声音。

2、要在播放过程中获得更大的灵活性,包括具有暂停,恢复或定义回调的audioplayer功能,请使用此功能。创建一个audioplayer对象,然后调用方法播放音频。例如,听gong示例文件:

load gong.mat; 

gong = audioplayer(y, Fs); 

play(gong);

3、有关其他示例,请参见在功能中录制或播放音频。

如果未指定采样率,sound则以8192赫兹的速度播放。对于任何播放,请指定较小的采样率以更慢地回放,而指定较大的采样率以更快地回放。

1、在功能内录制或播放音频

如果在函数内部创建audioplayer或audiorecorder对象,则该对象仅在函数持续时间内存在。例如,创建一个名为的播放器函数playFile和一个简单的回调函数showSeconds:

function playFile(myfile) 

   load(myfile);     

   obj = audioplayer(y, Fs);  

   obj.TimerFcn = 'showSeconds';  

   obj.TimerPeriod = 1;   

   play(obj); 

end 

function showSeconds  

   disp('tick') 

end

2、playFile从命令提示符处调用以播放文件handel.mat:

playFile('handel.mat')

3、以每秒记录的8192个样本的采样率,播放文件中的73113个样本大约需要8.9秒。但是,该playFile功能通常在播放完成之前结束并清除audioplayer对象obj。

为确保完整播放或录制,请考虑以下选项:

使用playblocking或recordblocking代替play或record。阻塞方法将保持控制,直到播放或录制完成。如果阻止控制,则在播放或录制期间无法发出任何其他命令或方法(例如pause或resume)。

为您的函数创建一个输出参数,该参数在基本工作空间中生成一个对象。例如,修改playFile函数以包含输出参数:

function obj = playFile(myfile)

调用函数:

h = playFile('handel.mat');

因为h基本工作空间中存在,所以您可以从命令提示符下暂停播放:

pause(h)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢