我做声音,有两个wav是单声道吗的wav文件,需要合成一个双声道的。我想合成,需要矩阵这么实现:

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
------------------
估计可能是由于WAV文件的采样率与你使用WAVPLAY命令时设置的采样率不同,而导致节奏变慢和音调变高,情况就好像你以前用复读机播放音乐时,按 “慢进”时,播放速度变慢,同时音调变低,当“快进”时,播放速度变快,同时音调变高;使用wavplay命令可以设置采样率的Fs,默认时Fs 是11025 Hz,更多的资料可以在MATLAB里输入help wavplay 后看到。例如:已知WAV文件的采样率为11025Hz,当 Fs设置为11025Hz,WAV文件就会按正常速度播放。当Fs=Hz,WAV文件就会按慢一倍速度播放,音调变低;当 Fs=11025*2Hz,WAV文件就会按快一倍速度播放,音调变高;
分析和处理音频信号,首先要对声音信号进行采集,MATLAB 的数据采集工具箱提供了一整套命令和函数,通过调用这些函数和命令,可直接控制声卡进行数据采集[1]。Windows自带的录音机程序也可驱动声卡来采集语音信号,并能保存为WAV格式文件,供MATLAB相关函数直接读取、写入或播放。本文以WAV格式音频信号作为分析处理的输入数据,用MATLAB 处理音频信号的基本流程是:先将WAV格式音频信号经wavread 函数转换成MATLAB列数组变量;再用MATLAB强大的运算能力进行数据分析和处理,如时域分析、频域分析、数字滤波、信号合成、信号变换、识别和增强等等;处理后的数据如是音频数据,则可用wavwrite转换成WAV格式文件或用sound、wavplay等函数直接回放。下面分别介绍 MATLAB在音量标准化、声道分离合并与组合、数字滤波、数据转换等音频信号处理方面的技术实现。      3 音量标准化      录制声音过程中需对声音电平进行量化处理,最理想的量化是最大电平对应最高量化比特,但实际却很难做到,常有音轻问题。利用MATLAB很容易实现音量标准化,即最大电平对应最高量化比特。基本步骤是:先用wavread函数将WAV文件转换成列数组变量;再求出数组变量的极值并对所有元素作归一化处理;最后用wavwrite函数还原成音量标准化的WAV文件。   例1:现以微软自带的“Windows XP 关机.wav”音频信号为例,先将其复制另存到文件名为XPexit.wav的MATLAB当前目录中,再通过音量标准化处理后保存为 XPquit.wav文件。实现程序如下:      [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文件   试听可知标准化处理后音量稍大。      4 声道分离合并与组合      立体声或双声道音频信号有左右两个声道,利用MATLAB实现双声道分离、两路声道合并和两个单声道组合成一个双声道等效果,实际上是利用了 MATLAB的矩阵抽取、矩阵相加和矩阵重组运算。   例2:现以例1生成的XPquit.wav为例,实现分离、合并和组合处理的程序如下:      [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');% 实现两路声道组合   可以试听声道分离、合并与组合的效果,也可对各文件大小进行比较。      5 数字滤波      数字滤波是常用的音频处理技术。可根据技术指标,先利用FDATool工具,设计一个数字滤波器[2],再用Filter或Filter2函数即可实现滤波处理。调用的Filter函数格式是:Y = filte (B,A,X) 。其中,B和A是滤波器传输函数的分子和分母系数,X是输入变量,Y是实现滤波后的输出变量。如果处理立体声音频信号,可分开处理,但用FIR滤波器时调用Filter2函数更方便。   例3:现以例2生成的XPquit12.wav为例,实现数字滤波的程序如下:      [X,FS,NBITS]=wavread('XPquit12.WAV');% 将WAV文件转换成变量   %利用FDATool设计一个LowpassButterworth滤波器   %指标FS=22050Hz Fp=1000Hz Ap=1dB Fs=3000Hz As=20dB   B =[0.7,0.2];% 分子系数    未安装PDF浏览器用户请先下载安装原版页码:13原版全文  A =[1,-2.7,-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文件   程序运行结果如图1所示。由图可知,滤波对波形影响不大,但对高频有较大衰减。试听会感觉到处理后的声音比较沉闷。      6 数据转换      数据转换是指改变音频格式中的采样频率或量化位数。转换原理是:先用矩阵插值或抽取技术实现变量变换,如果是抽取数据还需在变换前作滤波处理使之满足采样定理;变量变换完成后再用Wavwrite函数重新定义量化 位数和采样频率即可实现数据转换。数据转换过程中,要注意采样频率与原始采样频率及插值或抽取系数的关系。MATLAB实现插值或抽取的函数有decimate、interp和resample,具体应用可参考有关文献[3]。这果以2倍抽取为例,将例3中经过滤波后产生的XPquitFilter.WAV文件进行数据转换处理。具体程序如下:      [x,FS,NBITS]=wavread('XPquitFilter.WAV');% 将WAV文件转换成变量   N=length(x);% 计算数据点数   % 不是偶数点化成偶数点   if mod(N,2)==0; N=N; else x(N)=[]; N=N-1;   % 原信号波形频谱分析   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位   运行程序,在得到的图形窗口中,执行Edit/Axes Properties…命令,再把各分图下X标签中的Limits设为0、0.01和0、1000,得到0—0.01秒的波形和0—1000Hz的频谱如图2所示。由图可知,在满足采样定律条件下,实现数据抽取,在原采样率下波形变密、频谱变宽且幅度减半,但在新采样率下波形和频谱都很好。通过试听输出文件还可感受处理效果。
7 结束语      MATLAB提供了许多专用工具箱,灵活利用这些工具箱和函数,可以实现很多信号处理任务。同时,MATLAB还支持用户对其函数进行二次开发,以满足不同要求。在信号处理过程中,MATLAB兼顾了专用工具软件的简单性和计算机程序语言的灵活性,特别是处理效果的可视性和可感知,有利于理解信号处理的本质,有利于激发学习和研究兴趣,也有利于培养MATLAB软件的操作技能。      参考文献:   [1] 陈宇锋.基于声卡和MATLAB的语音信号采集和处理[J].中国现代教育装备,-51.   [2] 张登奇.基于MATLAB的IIR数字滤波器设计[J].湖南理工学院学报,-29.   [3] Sanjit K.Mitra.数字信号处理
阅读(13059)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'Matlab 语音文件处理',
blogAbstract:' 一、&&&&&&&&&& &&问题的提出: 数字语音是信号的一种,我们处理数字语音信号,也就是对一种信号的处理,那信号是什么呢? 信号是传递信息的函数。离散时间信号——序列——可以用图形来表示。 按信号特点的不同,信号可表示成一个或几个独立变量的函数。例如,图像信号就是空间位置(二元变量)的亮度函数。一维变量可以是时间,也可以是其他参量,习惯上将其看成时间。信号有以下几种: (1)连续时间信号:在连续时间范围内定义的信号,但信号的幅值可以是连续数值,也可以是离散数值。当幅值为连续这一特点情况下又常称为模拟信号。实际上连续时间信号与模拟信号常常通用,用以说明同一信号。 (2)离时间信号:时间为离散变量的信号,即独立变量时间被量化了。而幅度仍是连续变化的。',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:6,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:5,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}Adobe Audition里面怎么把两个音档合成一个到单声道的音档么?
按时间排序
直接混缩合成,然后转换采样类型为单声道。
您可以邀请优质答主更快回答您的问题
擅长领域:
在电脑应用分类下共有2547个回答
擅长领域:&&&&
在电脑应用分类下共有722个回答
擅长领域:&&&&
在电脑应用分类下共有445个回答
Oo城管大队长oO
擅长领域:&&&&
在电脑应用分类下共有295个回答
woshifengxin3
擅长领域:
在电脑应用分类下共有247个回答
擅长领域:&&
在电脑应用分类下共有176个回答
加载更多答主
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
确定要取消此次报名,退出该活动?如何把两个单声道wav合成一个立体声wav?_百度知道
如何把两个单声道wav合成一个立体声wav?
昨天帮朋友整个VCD
原文件是包含2声轨的avi(即两个独立的MP3,一个伴奏,一个原唱)
我想弄成像普通VCD一样的左声道伴奏,右声道原唱。
我的思路是,提取两个音轨,再将他们合并为立体声然后再用绘声绘影添加到视频里
但找了一个晚上都没能做到的软件
我有更好的答案
使用cooledit2上方工具栏中有&编辑立体声波形中的左(右)声道&几个按钮,能够单独编辑一个文件的左右声道.步骤也很简单,新建一个空白的立体声波形文件,再分别把您说的两个单声道文件波形分别复制到左右声道就OK了^_^希望回答让你满意
采纳率:100%
开始&&程序&&&&Windows&movie&maker&导入音频(记住把那两个都导入)&&保存在我的电脑。自己选择合适的大小,保存就行了。
很简单,系统自带的录音机都可以实现。当然,没有专业软件效果完美。我把录音机的操作方法写下吧,希望你能用上:首先在开始菜单-程序-附件-娱乐 里打开录音机,然后选择 文件-打开 打开其中一个声音文件(需要先用 千千静听 转换成WAV格式),然后选择 编辑-与文件混音 选择另一个声音文件(也需要转换成WAV),然后录音保存。
用 AdobeAudition
先把原唱转为单声道,再把伴奏转为单声道,最好的办法是:打开两个文件,然后把原唱的左声道复制并履盖到伴奏的左声道。再保存就行了。
对音频编辑而言,推荐用Cool Edit2.0试试!
参考资料:
DJ阿祥娱乐百度空间
其他2条回答
为您推荐:
其他类似问题
单声道的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。用C/c++/java,将一个wav文件的双声道语音文件转化为单声道语音文件。怎么转啊?求代码及解释。 - 知乎7被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答3添加评论分享收藏感谢收起0添加评论分享收藏感谢收起写回答

我要回帖

更多关于 单声道wav文件下载 的文章

 

随机推荐