好的,我可以为你提供一个完整的MATLAB代码,实现你所描述的界面和功能。下面是代码:
```matlab
% 创建界面
fig = uifigure('Position', [100 100 400 300], 'Name', '音频处理');
% 创建音频选择按钮组
audioGroup = uibuttongroup(fig, 'Position', [0.05 0.75 0.9 0.2], 'Title', '请选择音频类型');
audioButtons = [ ...
uiradiobutton(audioGroup, 'Text', '人说话声音', 'Position', [20 30 120 30], 'Value', true), ...
uiradiobutton(audioGroup, 'Text', '打击乐声音', 'Position', [180 30 120 30])];
% 创建倍速选择按钮组
speedGroup = uibuttongroup(fig, 'Position', [0.05 0.5 0.9 0.2], 'Title', '请选择倍速类型');
speedButtons = [ ...
uiradiobutton(speedGroup, 'Text', '原音', 'Position', [20 30 80 30], 'Value', true), ...
uiradiobutton(speedGroup, 'Text', '加速', 'Position', [120 30 80 30]), ...
uiradiobutton(speedGroup, 'Text', '减速', 'Position', [220 30 80 30]), ...
uiradiobutton(speedGroup, 'Text', '自定义', 'Position', [320 30 80 30])];
% 创建倍速输入框
speedEdit = uieditfield(fig, 'numeric', 'Position', [0.3 0.3 0.4 0.1], 'Limits', [0.1 10], 'Value', 1, 'Visible', 'off');
speedLabel = uilabel(fig, 'Position', [0.1 0.3 0.2 0.1], 'Text', '请输入自定义倍速参数:', 'Visible', 'off');
% 创建处理按钮
processButton = uibutton(fig, 'Position', [0.4 0.1 0.2 0.1], 'Text', '处理', 'ButtonPushedFcn', @processAudio);
% 处理音频函数
function processAudio(~,~)
% 获取选中的音频类型和倍速类型
audioIndex = find([audioButtons.Value]);
speedIndex = find([speedButtons.Value]);
% 选择音频文件
[file, path] = uigetfile({'*.wav';'*.mp3'}, '请选择音频文件');
if file == 0
return;
end
% 读取音频
[input, Fs] = audioread(fullfile(path, file));
% 处理音频
switch(audioIndex)
case 1 % 人说话声音
switch(speedIndex)
case 1 % 原音
output = input;
case 2 % 加速
speedup = 2; % 倍速加速
output = resample(input, speedup*Fs, Fs);
case 3 % 减速
slowdown = 0.5; % 倍速降速
output = resample(input, slowdown*Fs, Fs);
case 4 % 自定义
speed = speedEdit.Value;
output = resample(input, speed*Fs, Fs);
end
case 2 % 打击乐声音
switch(speedIndex)
case 1 % 原音
output = input;
case 2 % 加速
speed = speedEdit.Value;
output = resample(input, speed*Fs, Fs);
case 3 % 减速
speed = speedEdit.Value;
output = resample(input, speed*Fs, Fs);
case 4 % 自定义
speed = speedEdit.Value;
output = resample(input, speed*Fs, Fs);
end
end
% 保存处理后的音频
[pathstr, name, ext] = fileparts(file);
outputfile = fullfile(pathstr, [name '_output' ext]);
audiowrite(outputfile, output, Fs);
% 提示处理完成
msgbox('处理完成', '提示');
end
% 根据倍速类型显示/隐藏倍速输入框
speedButtons(4).ValueChangedFcn = @(~,~) set(speedEdit, 'Visible', speedButtons(4).Value);
speedButtons(4).ValueChangedFcn = @(~,~) set(speedLabel, 'Visible', speedButtons(4).Value);
% 运行界面
uiwait(fig);
```
这个代码可以创建一个界面,包含了音频类型选择、倍速类型选择、自定义倍速输入、处理按钮等功能,可以实现对人说话声音和打击乐声音的处理。当用户选择音频类型和倍速类型后,点击处理按钮即可完成对音频的处理,并保存处理后的音频文件。希望能对你有所帮助!