您当前的位置:matlab资源网文章中心资料 → 文章内容

MATLAB音频信号处理——水印

作者:young.god  来源:转载http://young.god.blog.163.com/blog/static/412141702008419111856799/  发布时间:2008-5-28 21:00:09

44.声音处理函数-->常用声音函数

lin2mu   将线性音频信号转换为mu法则 

mu2lin   将mu法则转换为线性音频信号 

sound    把向量转换为声音 

soundsc  测量数据并作为声音播放

 

46.声音处理函数-->WAV声音文件

waveread  读声音文件 

wavewrite 写声音文件

 

 

 

 

1.用MATLAB怎样打开音频文件

 

wavread ( f s t r ) 在文件f s t r中返回采样数据。help wavread可获得更多信息。

wavwrite (sv,f,fstr) 以采样频率f将采样声音向量sv写入文件fstr中。

 

y=wavread ( '*.wav' ); plot(y); %该音频文件的时域图 H=dft(y); plot(abs(H));%频谱图

 

2. 用matlab读wav文件?

 

waveFile='C:\c.wav';

[y,fs,nbits]=wavread(waveFile);

y中的数据为什么是小数?wav原文件中的数据时小数还是整数?

 

这个也是一定的,是不是小数是WAV文件的编码的规则决定的!

 

Y是小数是因为wavread已经做了归一化的处理了

 

3. 在MATLAB如何生成一个WAV文件

 

MATLAB

 

用以下代码可以发出一个拨号声,

n = 1 : 999

 

d5(n) = sin(0.5906n) + sin(1.0245n)

 

sound(d5, 8192)

 

但如果我想把一个声音输出为了一个WAVE文件的话,应该怎么做,请高手指点

 

 

for n = 1 : 999

d5(n) = sin(0.5906*n) + sin(1.0245*n);

end;

sound(d5, 8192)

 

d6=d5/2; %avoid to be clipped

wavwrite(d6,8192,16,'d5.wav');

 

4. matlab 做音频文件(WAV格式)的频谱图程序 以及做时域波形图的程序

 

%你好,该程序读mywav.wav文件,然后显示频谱以及波形。注意,mywav.wav文件不要太长,否则运算会很慢。

 

 

[y,Fs,bits]=wavread('mywav.wav');%读出信号,采样率和采样位数。

y=y(:,1);%我这里假设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)

 

sigLength=length(y);

Y = fft(y,sigLength);

Pyy = Y.* conj(Y) / sigLength;

halflength=floor(sigLength/2);

f=Fs*(0:halflength)/sigLength;

figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');

t=(0:sigLength-1)/Fs;

figure;plot(t,y);xlabel('Time(s)');

 

 

5. 分析一个.wav文件的频谱

 

分析一个.wav文件的频谱

 

分析的是ZR33.wav

 

 

 

程序:

 

[y,Fs,bits]=wavread('ZR33.wav');

 

y=y(:,1);

 

sigLength=length(y);

 

Y = fft(y,sigLength);

 

Pyy = Y.* conj(Y) / sigLength;

 

halflength=floor(sigLength/2);

 

f=Fs*(0:halflength)/sigLength;

 

figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');

 

t=(0:sigLength-1)/Fs;

 

figure;plot(t,y);xlabel('Time(s)');

 

6. 如何用matlab讲多声道的wav文件分成几个单声道的

 

%把你的wave文件放到matlab文件夹里面,假设你的文件是mywave.wav

 

[y,Fs,bits] = wavread('mywav');%读入文件

 

y_left=y(:,1);%读左声道

y_right=y(:,2);%读右声道

 

wavplay(y_left,Fs);%播放左声道

wavplay(y_right,Fs);%播放右声道

 

wavwrite(y_left,'LeftChannel');%把左声道写成文件

wavwrite(y_right,'RightChannel');%把右声道写成文件

 

 

 

如何用matlab讲多声道的wav文件分成几个单声道的?

 悬赏分:20 - 提问时间2007-10-4 16:21

如何用matlab讲多声道的wav文件分成几个单声道的?

反过来可能吗?

急,在线等!!

请回答的尽量详细些,谢谢

7. 在matlab中怎样实现对声音的导入,分析与处理???

 

我要用matlab分析蟋蟀的声音,同时做出其声音几个参数(频率,声音间隔,周期)的图像,在matlab中能实现吗?

怎样实现的??

还有,我用mp3录下了蟋蟀的叫声,但其中有些杂音,能去掉吗?重要的是我该怎样导入声音文件?

matlab中可以改变声音的一些参数进行声音的回放吗?

烦请高手指点!!!不胜感激!!!

 

 

1)用mp3录音,生成文件cricket.wav,把该文件放到matlab文件夹里面(就是你打开matlab后中间顶部的地址)。

 

2)使用如下程序,做波形显示以及fft变换。

 

[y,Fs,bits]=wavread('cricket.wav');%读出信号,采样率和采样位数。

y=y(:,1);%我这里假设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)

sigLength=length(y);

Y = fft(y,sigLength);

Pyy = Y.* conj(Y) / sigLength;

halflength=floor(sigLength/2);

f=Fs*(0:halflength)/sigLength;

figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');

t=(0:sigLength-1)/Fs;

figure;plot(t,y);xlabel('Time(s)');

 

3)频率看频谱就有了,声音间隔看声音波形,周期看声音波形。

 

4)关于去噪声。

 

a)如果噪声是特定频率的周期噪声(periodic noise),比如说50hz,那么你可以用matlab的filter,作一个低通、高通、带通或者带阻滤波。

b)如果声音是高斯白噪声。那就用自适应滤波(adaptive filter,wiener filter)。这里涉及到对噪声的采样、计算特征值以及决定阶数的问题。

c)幸好我们可以“耍赖”——用cool editor。用它打开wav文件,用鼠标把一段噪声圈起来,采样,然后直接选择去噪就可以了。各大网站有介绍。

 

例子:matlab去除50hz噪声。

我用电脑录了一段声音,里面有50hz的周期噪声(因为受交流电干扰)。而我自己的声音频率最低是90hz。我使用了一个10阶butterworth高通滤波器,边带是70hz(介于50跟90之间)。

问题是,这不能直接用。因为声音文件的采样率是22k,70相对于22k来说太小了。所以我得先把我的声音欠采样,然后再滤波,然后再插值。程序如下。

 

[k,Fs,bits]=wavread('mywav.wav');

k=k(:,1);

y_temp=k(1:90000);

 

dfactor=3;

y=decimate(y_temp,dfactor);

[b,a] = butter(10,70/(Fs/(dfactor*2)),'high');

y=filter(b,a,y);

y=interp(y,dfactor);

 

sigLength=length(y);

Y = fft(y,sigLength);

Pyy = Y.* conj(Y) / sigLength;

halflength=floor(sigLength/2);

f=Fs*(0:halflength)/sigLength;

figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');

 

sigLength=length(y_temp);

Y = fft(y_temp,sigLength);

Pyy = Y.* conj(Y) / sigLength;

halflength=floor(sigLength/2);

f=Fs*

[1] [2]  下一页

文章评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 -