matlab能够处理的音频格式有哪些?

matlab能够处理哪些音频格式啊。我试过,mp3是不行的,小一点的wav还行,大一点的就不行了。请问有解决的办法么?... matlab能够处理哪些音频格式啊。
我试过,mp3是不行的,小一点的wav还行,大一点的就不行了。
请问有解决的办法么?
展开
 我来答
狂人横刀向天笑
推荐于2016-02-03 · TA获得超过29.3万个赞
知道顶级答主
回答量:4.6万
采纳率:86%
帮助的人:6319万
展开全部
matlab能够处理的音频格式有.wav和.au文件。

声音数据输入输出函数:
可以方便地读写au和way文件,并可控制其中的位及频率。
wavread()和wavwriteO。

声音播放:
wavplay():播放wav声音文件。当然,也可以把处理后的
wav文件保存后再用其它工具播放。
wavrecordO:可以对处理后的wav文件进行录音。
PS:在日常生活中,我们听到的声音一般都属于复音,其声音信号由不同的振幅与频率的波合成而得到

MATLAB 处理音频信号的流程

分析和处理音频信号 首先要对声音信号进行采集 MATLAB 的数据采集工具箱提供了一整套命令和函数,通过调用这些函数和命令,可直接控制声卡进行数据采集[1] Windows 自带的录音机程序也可驱动声卡来采集语音信号 并能保存为 WAV 格式文件供 MATLAB 相关函数直接读取 写入或播放 本文以 WAV 格式音频信号作为分析处理的输入数据 用 MATLAB 处理音频信号的基本流程是 先将 WAV 格式音频信号经 wavread 函数转换成 MATLAB 列数组变量 再用 MATLAB 强大的运算能力进行数据分析和处理 如时域分析 频域分析 数字滤波 信号合成 信号变换 识别和增强等等 处理后的数据如是音频数据 则可用 wavwrite 转换成 WAV 格式文件或用 sound wavplay 等函数直接回放 下面分别介绍 MATLAB 在音量标准化 声道分离合并与组合 数字滤波 数据转换等音频信号处理方面的技术实现

音量标准化

录制声音过程中需对声音电平进行量化处理 最理想的量化是最大电平对应最高量化比特 但实际却很难做到 常有音轻问题 利用 MATLAB 很容易实现音量标准化 即最大电平对应最高量化比特 基本步骤是 先用 wavread 函数将 WAV 文件转换成列数组变量 再求出数组变量的极值并对所有元素作归一化处理 最后用 wavwrite 函数还原成音量标准化的 WAV 文件

例 1 现以微软自带的 Windows XP 关机.wav 音频信号为例 先将其复制另存到文件名为 XPexit.wav 的 MATLAB 当前目录中再通过音量标准化处理后保存为 XPquit.wav 文件 实现程序如下
clear; close all; clc;
[Y,FS,NBITS]=wavread('XPexit.WAV'); % 将 WAV 文件转换成变量
FS,NBITS, % 显示采样频率和量化比特
Ym=max(max(max(Y)),max(abs(min(Y)))), % 找出双声道极值
X=Y/Ym; % 归一化处理
wavwrite(X,FS,NBITS,'XPquit.wav') % 将变量转换成 WAV 文件
试听可知标准化处理后音量稍大

声道分离合并与组合

立体声或双声道音频信号有左右两个声道 利用 MATLAB 实现双声道分离 两路声道合并和两个单声道组合成一个双声道等效果 实际上是利用了MATLAB 的矩阵抽取 矩阵相加和矩阵重组运算
例 2 现以例 1 生成的 XPquit.wav 为例 实现分离 合并和组合处理的程序如下
clear; close all; clc;
[x,FS,NBITS]=wavread('XPquit.WAV'); % 将 WAV 文件转换成变量
x1=x(:,1); % 抽取第 1 声道
x2=x(:,2); % 抽取第 2 声道
wavwrite(x1,FS,NBITS,'XPquit1.WAV'); % 实现 1 声道分离
wavwrite(x2,FS,NBITS,'XPquit2.WAV'); % 实现 2 声道分离
%如果合并位置不对前面补 0 %声道长度不对后面补 0
x12=x1+x2; % 两路单声道列向量矩阵变量合并
x12m=max(max(x12),abs(min(x12))), % 找出极值
y12=x12./x12m; % 归一化处理
wavwrite(y12,FS,NBITS,'XPquit12.WAV'); % 实现两路声道合并
%如果组合位置不对前面补 0--声道长度不对后面补 0
x3=[x1,x2]; % 两路单声道变量组合
wavwrite(x3,FS,NBITS,'XPquit3.WAV'); % 实现两路声道组合
可以试听声道分离 合并与组合的效果 也可对各文件大小进行比较

数字滤波
数字滤波是常用的音频处理技术 可根据技术指标 先利用 FDATool 工具 设计一个数字滤波器[2] 再用 Filter 或 Filter2 函数即可实现滤波处理 调用的 Filter 函数格式是 Y = filte (B,A,X) 其中 B 和 A 是滤波器传输函数的分子和分母系数 X 是输入变量 Y是实现滤波后的输出变量 如果处理立体声音频信号 可分开处理 但用 FIR 滤波器时调用 Filter2 函数更方便
例 3 现以例 2 生成的 XPquit12.wav 为例 实现数字滤波的程序如下
clear; close all; clc;
[X,FS,NBITS]=wavread('XPquit12.WAV'); % 将 WAV 文件转换成变量
%利用 FDATool 设计一个 LowpassButterworth 滤波器
%指标 FS=22050Hz Fp=1000Hz Ap=1dB Fs=3000Hz As=20dB
B =[0.0062,0.0187,0.0187,0.0062]; % 分子系数
A =[1,-2.1706,1.6517,-0.4312]; % 分母系数
Y=filter(B,A,X); % 实现数字滤波
t=(0:length(X)-1)/FS; % 计算数据时刻
subplot(2,2,1);plot(t,X); % 绘制原波形图
title(' 原信号波形图 '); % 加标题
subplot(2,2,3);plot(t,Y); % 绘制滤波波形图
title(' 滤波后波形图 '); % 加标题
xf=fft(X); % 作傅里叶变换求原频谱
yf=fft(Y); % 作傅里叶变换求滤波后频谱
fm=3000*length(xf)/FS; % 确定绘频谱图的上限频率
f=(0:fm)*FS/length(xf); % 确定绘频谱图的频率刻度
subplot(2,2,2);plot(f,abs(xf(1:length(f)))); % 绘制原波形频谱图
title(' 原信号频谱图 '); % 加标题
subplot(2,2,4);plot(f,abs(yf(1:length(f)))); % 绘制滤波后频谱图
title(' 滤波后信号频谱图 '); % 加标题
wavwrite(Y,FS,NBITS,'XPquitFilter.WAV'); % 写成 WAV 文件
东莞大凡
2024-08-07 广告
作为东莞市大凡光学科技有限公司的一员,Halcon生成标定板的方法非常直接。通过Halcon软件,我们可以使用`gen_caltab`或`create_caltab`等算子,根据需求设定圆点数量、间距、直径等参数,生成标定板描述文件(.de... 点击进入详情页
本回答由东莞大凡提供
shine戚七七
2015-09-21 · TA获得超过4.7万个赞
知道大有可为答主
回答量:2万
采纳率:75%
帮助的人:2617万
展开全部
声音数据输入输出函数:
可以方便地读写au和way文件,并可控制其中的位及频率。
wavread()和wavwriteO。

声音播放:
wavplay():播放wav声音文件。当然,也可以把处理后的
wav文件保存后再用其它工具播放。
wavrecordO:可以对处理后的wav文件进行录音。
PS:在日常生活中,我们听到的声音一般都属于复音,其声音信号由不同的振幅与频率的波合成而得到

MATLAB 处理音频信号的流程

分析和处理音频信号 首先要对声音信号进行采集 MATLAB 的数据采集工具箱提供了一整套命令和函数,通过调用这些函数和命令,可直接控制声卡进行数据采集[1] Windows 自带的录音机程序也可驱动声卡来采集语音信号 并能保存为 WAV 格式文件供 MATLAB 相关函数直接读取 写入或播放 本文以 WAV 格式音频信号作为分析处理的输入数据 用 MATLAB 处理音频信号的基本流程是 先将 WAV 格式音频信号经 wavread 函数转换成 MATLAB 列数组变量 再用 MATLAB 强大的运算能力进行数据分析和处理 如时域分析 频域分析 数字滤波 信号合成 信号变换 识别和增强等等 处理后的数据如是音频数据 则可用 wavwrite 转换成 WAV 格式文件或用 sound wavplay 等函数直接回放 下面分别介绍 MATLAB 在音量标准化 声道分离合并与组合 数字滤波 数据转换等音频信号处理方面的技术实现

音量标准化

录制声音过程中需对声音电平进行量化处理 最理想的量化是最大电平对应最高量化比特 但实际却很难做到 常有音轻问题 利用 MATLAB 很容易实现音量标准化 即最大电平对应最高量化比特 基本步骤是 先用 wavread 函数将 WAV 文件转换成列数组变量 再求出数组变量的极值并对所有元素作归一化处理 最后用 wavwrite 函数还原成音量标准化的 WAV 文件

例 1 现以微软自带的 Windows XP 关机.wav 音频信号为例 先将其复制另存到文件名为 XPexit.wav 的 MATLAB 当前目录中再通过音量标准化处理后保存为 XPquit.wav 文件 实现程序如下
clear; close all; clc;
[Y,FS,NBITS]=wavread('XPexit.WAV'); % 将 WAV 文件转换成变量
FS,NBITS, % 显示采样频率和量化比特
Ym=max(max(max(Y)),max(abs(min(Y)))), % 找出双声道极值
X=Y/Ym; % 归一化处理
wavwrite(X,FS,NBITS,'XPquit.wav') % 将变量转换成 WAV 文件
试听可知标准化处理后音量稍大

声道分离合并与组合

立体声或双声道音频信号有左右两个声道 利用 MATLAB 实现双声道分离 两路声道合并和两个单声道组合成一个双声道等效果 实际上是利用了MATLAB 的矩阵抽取 矩阵相加和矩阵重组运算
例 2 现以例 1 生成的 XPquit.wav 为例 实现分离 合并和组合处理的程序如下
clear; close all; clc;
[x,FS,NBITS]=wavread('XPquit.WAV'); % 将 WAV 文件转换成变量
x1=x(:,1); % 抽取第 1 声道
x2=x(:,2); % 抽取第 2 声道
wavwrite(x1,FS,NBITS,'XPquit1.WAV'); % 实现 1 声道分离
wavwrite(x2,FS,NBITS,'XPquit2.WAV'); % 实现 2 声道分离
%如果合并位置不对前面补 0 %声道长度不对后面补 0
x12=x1+x2; % 两路单声道列向量矩阵变量合并
x12m=max(max(x12),abs(min(x12))), % 找出极值
y12=x12./x12m; % 归一化处理
wavwrite(y12,FS,NBITS,'XPquit12.WAV'); % 实现两路声道合并
%如果组合位置不对前面补 0--声道长度不对后面补 0
x3=[x1,x2]; % 两路单声道变量组合
wavwrite(x3,FS,NBITS,'XPquit3.WAV'); % 实现两路声道组合
可以试听声道分离 合并与组合的效果 也可对各文件大小进行比较

数字滤波
数字滤波是常用的音频处理技术 可根据技术指标 先利用 FDATool 工具 设计一个数字滤波器[2] 再用 Filter 或 Filter2 函数即可实现滤波处理 调用的 Filter 函数格式是 Y = filte (B,A,X) 其中 B 和 A 是滤波器传输函数的分子和分母系数 X 是输入变量 Y是实现滤波后的输出变量 如果处理立体声音频信号 可分开处理 但用 FIR 滤波器时调用 Filter2 函数更方便
例 3 现以例 2 生成的 XPquit12.wav 为例 实现数字滤波的程序如下
clear; close all; clc;
[X,FS,NBITS]=wavread('XPquit12.WAV'); % 将 WAV 文件转换成变量
%利用 FDATool 设计一个 LowpassButterworth 滤波器
%指标 FS=22050Hz Fp=1000Hz Ap=1dB Fs=3000Hz As=20dB
B =[0.0062,0.0187,0.0187,0.0062]; % 分子系数
A =[1,-2.1706,1.6517,-0.4312]; % 分母系数
Y=filter(B,A,X); % 实现数字滤波
t=(0:length(X)-1)/FS; % 计算数据时刻
subplot(2,2,1);plot(t,X); % 绘制原波形图
title(' 原信号波形图 '); % 加标题
subplot(2,2,3);plot(t,Y); % 绘制滤波波形图
title(' 滤波后波形图 '); % 加标题
xf=fft(X); % 作傅里叶变换求原频谱
yf=fft(Y); % 作傅里叶变换求滤波后频谱
fm=3000*length(xf)/FS; % 确定绘频谱图的上限频率
f=(0:fm)*FS/length(xf); % 确定绘频谱图的频率刻度
subplot(2,2,2);plot(f,abs(xf(1:length(f)))); % 绘制原波形频谱图
title(' 原信号频谱图 '); % 加标题
subplot(2,2,4);plot(f,abs(yf(1:length(f)))); % 绘制滤波后频谱图
title(' 滤波后信号频谱图 '); % 加标题
wavwrite(Y,FS,NBITS,'XPquitFilter.WAV'); % 写成 WAV 文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
有空飘过的
2008-11-08 · TA获得超过4945个赞
知道大有可为答主
回答量:1448
采纳率:50%
帮助的人:1855万
展开全部
matlab能直接输入输出的有.wav和.au文件。用wavread(), wavwrite(), auread(), auwrite()
至于能打开多大的文件,那最主要是看你的内存大小。
10来分钟,立体声44kHz采样率,在我2G内存的机子里完全没有问题。更大的文件,就不仅仅是内存的问题了,10分钟的文件已经有10*60*44000=26,400,000个样本,处理起来很花时间的。建议把文件切成1分钟左右,分开处理,会快很多,而且对内存要求也没有那么大。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友700dc72
2008-11-09 · TA获得超过456个赞
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:157万
展开全部
mp3转换为wav可以用千千静听;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式