matlab 声音文件,Matlab处理声音文件

程中,要注意采样频率与原始采样频率及插值或抽取系数的关系。MATLAB实现插值或抽取的函数有decimate、interp和resample。

以2倍抽取为例,将(3)中的经过滤波后产生的XPquitFilter.WAV文件进行数据转换

处理。以下为其实现程序:

clear; close all; clc;

[x,FS,NBITS]=wavread('XPquitFilter.WAV');% 将WAV文件转换成变量

N=length(x);% 计算数据点数

% 不是偶数点化成偶数点

if mod(N,2)==0; N=N; else x(N)=[]; N=N-1; end;

% 原信号波形频谱分析

tx=(0:N-1)/FS;% 计算原信号数据点时刻

subplot(3,2,1);plot(tx,x);% 绘制原信号波形

title('原信号波形图');% 加标题

xf=fft(x);% 求原信号频谱

fx=(0:N/2)*FS/N;% 确定频谱图频率刻度

subplot(3,2,2);plot(fx,abs(xf(1:N/2+1)));% 绘制原信号频谱

title('原信号频谱图');% 加标题

% 实现数据抽取

k=[1:N/2];% 确定抽取位置

y=x(2*k);% 实现抽取后的数据

M=length(y);% 计算抽取后数据点数

% 抽取数据在原采样频率FS下的波形频谱分析

ty=(0:M-1)/FS;% 计算数据点时刻

subplot(3,2,3);plot(ty,y);% 绘制信号波形图

title('原采样率下新波形图');% 加标题

yf=fft(y);% 求频谱

fy=(0:M/2)*FS/M;% 确定频谱图频率刻度

subplot(3,2,4);plot(fy,abs(yf(1:M/2+1)));% 绘制频谱图

title('原采样率下新频谱图');% 加标题

% 抽取数据在FS/2采样频率下的波形频谱分析

tz=(0:M-1)/(FS/2);% 计算数据点时刻

subplot(3,2,5);plot(tz,y);% 绘制信号波形图 title('新采样率下新波形图');% 加标题

fz=(0:M/2)*(FS/2)/M;% 确定频谱图频率刻度

subplot(3,2,6);plot(fz,abs(yf(1:M/2+1)));% 绘制频谱图

title('新采样率下新频谱图');% 加标题

% 实现数据转换

wavwrite(y,FS/2,NBITS,'XPquit16B.WAV');% 音频格式PCM 11025Hz 16位

wavwrite(y,FS/2,NBITS/2,'XPquit8B.WAV');% 音频格式PCM 11025Hz 8位

测试结果:运行程序,得到如图结果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值