MATLAB录制语音

可以使用audiorecorder函数录制来自输入设备(如麦克风)的音频数据。

myvoice = audiorecorder(Fs,nBits,nChannels)

Fs 采样频率,典型采样率为 8000、11,025、22,050、44,100、48,000、96,000 和 192,000 Hz

nBits 采样位数,指定为 8、16 或 24

nChannels 音频通道数,指定为 1(单声道)或 2(立体声)

代码如下:

%语谱图
clc;clear;
Fs = 44800;     %设置采样率,大多数设置支持的典型采样率为 8000、11,025、22,050、44,100、48,000、96,000 和 192,000 Hz。
nBits = 16;     %采样位数,指定为 8、16 或 24。
nChannel = 1;   %音频通道数,指定为 1(单声道)或 2(立体声)
time = 5;       %采样时间
myVoice = audiorecorder(Fs,nBits,nChannel);
disp('Start')
recordblocking(myVoice,time);   %开始录制
disp('End')
play(myVoice);      %回放录制
myrecording = getaudiodata(myVoice);    %将录制的音频信号存储在数值数组中
audiowrite('myvoice.wav',myrecording,Fs);   %保存文件
%specgram(x1,N,fs,window,overlap):绘制语谱图
R=1024;     %窗长
window=hamming(R);      %汉明窗
N=1024;                 %fft个数,与窗长相同
L=512;                  %步长
overlap=R-L;            %帧长重叠部分,也叫帧移,一般重叠部分为50%
specgram(myrecording,N,Fs,window,overlap);   %绘制语谱图
xlabel('时间(s)');ylabel('频率(Hz)');
title('语谱图');
saveas(1,'语谱图.jpg')    %保存为图片

specgram函数是绘制语谱图的函数

x1 语音向量,注意单声道双声道的问题

N fft个数

s 采样频率

window 帧长,即加窗处理中的窗长

overlap 帧移,帧长重叠部分,一般重叠部分取50%

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值