录制语音信号,实时显示时域波形和频谱
时间: 2024-04-12 21:26:42 浏览: 179
要实时录制语音信号并实时显示时域波形和频谱,您可以使用MATLAB的Audio Toolbox。以下是一个示例代码,可以实现这个功能:
```matlab
clear all; clc;
% 设置录音参数
fs = 44100; % 采样率
duration = 5; % 录音时长(秒)
% 创建录音对象
recorder = audiorecorder(fs, 16, 1);
% 开始录音
disp('Start recording...');
recordblocking(recorder, duration);
disp('Recording finished.');
% 获取录音数据
audio_data = getaudiodata(recorder);
% 绘制时域波形
subplot(211);
t = 0:1/fs:(length(audio_data)-1)/fs;
plot(t, audio_data);
xlabel('Time (s)');
ylabel('Amplitude');
title('Time Domain Waveform');
% 计算频谱
N = length(audio_data);
X = fft(audio_data, N);
A = abs(X) / N;
f = (0:N-1) * fs / N;
% 绘制频谱图
subplot(212);
plot(f, A);
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Amplitude Spectrum');
% 播放录音
disp('Playing recorded audio...');
play(recorder);
```
这段代码首先设置了录音的采样率和时长,然后创建了一个`audiorecorder`对象。接着开始录音,并使用`recordblocking`函数等待录音完成。然后,通过`getaudiodata`函数获取录音数据。
接下来,代码绘制了录音信号的时域波形和频谱图,分别使用`subplot`和`plot`函数实现。
最后,代码使用`play`函数播放录音。
请确保您的电脑上已经安装了MATLAB的Audio Toolbox。如果您有任何其他问题,请随时提问!
阅读全文