帮助听觉嵌合体工具箱(音频分析)

10视图(30天)
你好,我试着去了解Bertrand Delgutte听觉嵌合体工具箱的音频分析和再合成,但问题是代码超过20岁,还没有更新,我是一个全新的Matlab用户。这个工具箱本质上分析两个波形和后。我改变了wavread audioread代码中由于wavread不再被支持,但我不明白为什么我得到这个错误:万博1manbetx
我理解这段代码,知道我必须填写一些紫色的字符串参数,但我不是很确定什么绿色指令要求,和specificialy它要我名字两个。wav文件…
如果任何人都可以向我澄清争论我需要填写正常运行这段代码,特别是在%地区和紫色的字符串,它将拯救我小时的故障诊断这段代码,因为它已经……如果有任何需要更改过时的代码吗?谢谢!
这是代码:
函数make_band_chimeras (name1、name2 Nbands、do_play do_plot)
%合成和存储单个或多波段听觉嵌合体从原始信号。
%用法:make_band_chimeras (name1、name2 Nbands, do_play, do_plot)
% name1, name2原始信号(WAV文件),单声道或立体声。
%如果第二个信号是“噪音”或没有指定,
%一样随机噪声的功率谱NAME1使用
% Nbands频段用于合成的数量。
%可以标量或矢量,在这种情况下,一双
%嵌合体是合成Nbands的每个元素。
%默认Nbands = [1 8 32];
% do_play设置国旗玩嵌合体(默认不玩耍)
% do_plot标志设置为情节刺激波形(默认没有情节)
%
%的函数创建两个WAV文件来存储嵌合体
为每个值Nbands %。文件命名
% ' name1_env + name2_fts-nb #’和‘name2_env + name1_fts-nb # ',
% #是如果乐队。
%的文件都存储在一个文件夹指定的Matlab全局变量
%的“ChimeraFolder”。默认情况下,这个设置为当前文件夹’。”
%
%版权Bertrand Delgutte, 1999 - 2000
%
如果输入参数个数= = 0,错误(给两个WAV文件的名字的);结束
如果输入参数个数< 3,Nbands = [1 8 32];结束
如果输入参数个数< 4,do_play = 0;结束
如果输入参数个数< 5,do_plot = 0;结束
refilter = 0;
如果refilter refilt_code =“_f2”;其他的refilt_code =;结束
全球ChimeraFolder;
如果isempty (ChimeraFolder), ChimeraFolder =“。”;结束
%阅读原始波形
[orig1, Fs] = audioread (“motioncapturesound.wav”);
nchan =大小(orig1, 2);
如果输入参数个数> = 2 & ~ strcmp (name2,“噪音”),
[orig2, Fs2] = audioread (“Rec21092812h00m48s.wav”);
如果Fs ~ = Fs2错误(“不兼容的抽样率”);结束
如果大小(orig2, 2) ~ = nchan,错误(通道的数量不一致);结束
如果长度(orig2) <长度(orig1),
orig2 = [orig2;0(长度(orig1)长度(orig2) nchan)];
elseif长度(orig2) > (orig1),
orig1 = [orig1;0(长度(orig2)长度(orig1) nchan)];
结束
其他的%合成噪声功率谱一样原始
name2 =“噪音”;
orig2 = psd_matched_noise (orig1);
orig2 = orig2 / max (abs (orig2 (:)));
结束
如果do_play,%玩原来的声音
disp (“玩原来的声音”)
tmp = [orig1;orig2];
如果比较字符串(电脑,“SUN4”),sunsound (tmp, Fs);
其他的声音(tmp, Fs);结束
暂停(装天花板(长度(tmp) / Fs))
结束
如果do_plot,%画出原始信号的波形
t =[0:长度(orig1) 1] * 1000 / Fs;
图(1)
clf
次要情节(2,1,1)
情节(t, orig1);
标题(sprintf (原来“% s”声音的,name1))
次要情节(2,1,2)
情节(t, orig2)
标题(sprintf (原来“% s”声音的,name2))
包含(“时间(ms)”)
drawnow
结束
Fmin = 80;% filterbank在赫兹的频率较低
Fmax =。4 * Fs;% filterbank上频率(。8 *尼奎斯特)
nb = Nbands,
%确定带短裤等距的基膜
外交部= equal_xbm_bands (Fmin Fmax, nb);
%计算多波段嵌合体
[env1_fts2, env2_fts1] = multi_band_chimera (orig1 orig2,外交部、Fs refilter);
%正常化并保存
env1_fts2 = env1_fts2. / max (abs (env1_fts2 (:)));
env2_fts1 = env2_fts1. / max (abs (env2_fts1 (:)));
chimfileA = sprintf (' % s_env + % s_fts-nb % d % s.wav ',name2 name1 nb, refilt_code);
chimfileB = sprintf (' % s_env + % s_fts-nb % d % s.wav ',name1 name2 nb, refilt_code);
audiowrite ([ChimeraFolder env1_fts2 Fs, 16日“\”chimfileA]);
audiowrite ([ChimeraFolder env2_fts1 Fs, 16日“\”chimfileB]);
如果do_play,%玩乐队嵌合体
disp (sprintf (“玩% d带嵌合体”,nb))
tmp = [env1_fts2;env2_fts1];
如果比较字符串(电脑,“SUN4”),sunsound (tmp, Fs);
其他的声音(tmp, Fs);结束
暂停(装天花板(长度(tmp) / Fs))
结束
如果do_plot,%绘制波形的乐队嵌合体
图(2)
clf
次要情节(2,1,1)
情节(t, env1_fts2)
包含(“时间(ms)”)
标题(sprintf (' % d带嵌合体(“% s”信封,“% s”精细结构)的,
nb、name1 name2))
次要情节(2,1,2)
情节(t, env2_fts1)
包含(“时间(ms)”)
标题(sprintf (' % d带嵌合体(“% s”信封,“% s”精细结构)的,
nb、name2 name1))
drawnow
结束%如果do_plot
结束%循环Nbands

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2021年10月9日
例子:
filename1 = fullfile (matlabroot,“工具箱”,“音频”,“样本”,“彩虹- 16 - 8 mono - 114 secs.wav”);
filename2 = fullfile (matlabroot,“工具箱”,“音频”,“样本”,“rainbownoisy - 16 - 8 mono - 114 secs.wav”);
make_band_chimeras (filename1 filename2)
也就是说,您需要通过两个。wav文件的路径。
15个评论
史蒂文·鲁道夫
史蒂文·鲁道夫 2021年10月10日
你是一个疯子!那工作! !:)
现在剩下的工具箱....将开始一个新的职位,如果我有更多的问题……
谢谢你!

登录置评。

类别

找到更多的在可视化和数据导出帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!