用MATLAB对语音信号做时域和频谱分析。要求有详细的程序,谢谢了。

用MATLAB对语音信号做时域和频谱分析。要求有详细的程序,谢谢了。,第1张

[y,fs,bits]=wavread('E:\MATLA\work\hnistwav');

sound(y,fs,bits); %回放该音频

Y=fft(y,4096); %进行傅立叶变换

subplot(2,1,1);

plot(y);

title('声音信号的波形');

subplot(2,1,2)

plot(abs(Y));

title('声音信号的频谱');

fileName='E:\Matlab语音分析\降噪后wav';%注:将需要读取的文件名赋值给fileName

[y fs nbits]=wavread(fileName);%读取该文件 加入matlab中进行分析

sound(y,fs);%播放该文件

plot(y);%画出波形图

如果要用matlab录制音频的话 用以下函数wavrecord进行录制 然后用 wavwrite保存到电脑中

wavwrite(y,Fs,'E:\Matlab语音分析\Record1wav'); %FS自己定义 比如8000

QQ:344731766

在命令窗口输入doc fft回车后,可看到例子。

%构造出信号(如已有信号,此步可省略)

Fs = 1000; % Sampling frequency

T = 1/Fs; % Sample time

L = 1000; % Length of signal

t = (0:L-1)T; % Time vector

% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid

x = 07sin(2pi50t) + sin(2pi120t);

y = x + 2randn(size(t)); % Sinusoids plus noise

plot(Fst(1:50),y(1:50))

title('Signal Corrupted with Zero-Mean Random Noise')

xlabel('time (milliseconds)')

NFFT = 2^nextpow2(L); % Next power of 2 from length of y

Y = fft(y,NFFT)/L;

f = Fs/2linspace(0,1,NFFT/2+1);

%FFT分析

% Plot single-sided amplitude spectrum

plot(f,2abs(Y(1:NFFT/2+1)))

title('Single-Sided Amplitude Spectrum of y(t)')

xlabel('Frequency (Hz)')

ylabel('|Y(f)|')

先说第一段

k 是从WAV文件读取出来的一段语音信号,其实就是一个h点的行向量,h是k的长度。

设置了一个门限值th=0035。对向量k,从头开始每个点依次与门限值比较,第一个幅度大于0035的点记为语音起点i,从尾开始每个点依次与门限值比较,第一个幅度大于0035的点记为语音终点j。

将k的语音部分新命名为new,把原始语音和找到的纯语音分别在两个坐标中画出。

总的来说,这段程序用很简便的方法将一段包含静音的语音信号中的纯语音提取出来,但这种方法有很大的局限性,只能作为理论学习,基本上没有实际应用价值

竖线的最高点表示此时的最高频率。

在MATLAB里,有一个信号,先选信号的一小部分,再在这一小部分的时间里求出信号的最高频率和最低频率。最后在二维图形(时间-频率)上画一条竖线,竖线的最高点表示此时的最高频率,最低点表示此时的最小频率,此小部分的信号能量用颜色来区分(不知道我这样的描述是否清楚)。

用循环或者定时器 隔一段时间读取数据绘图?

t = timer('TimerFcn',@callback, 'Period', 100);

set(t, 'ExecutionMode', 'FixedSpacing')

start(t)

%%数据满足要求后

stop(t)

delete(t)

function callback(obj, event, string_arg)

ai=analoginput('winsound');

addchannel(ai,1);

aisamplerate=11000;

aitriggertype='immediate';

start(ai);

[data,time,abstime,events] = getdata(ai);

plot(data);

以上就是关于用MATLAB对语音信号做时域和频谱分析。要求有详细的程序,谢谢了。全部的内容,包括:用MATLAB对语音信号做时域和频谱分析。要求有详细的程序,谢谢了。、跪求用matlab分别录制一段男声、女声信号,进行音频信号的读取与播放,画出其波形、怎么用matlab获取一个信号的频谱等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9458241.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存