操作过程点击此处观看
上段时间补习了一下傅里叶变化的知识,突发奇想可以根据此做一款声音转换器,使用工科神器Matlab进行完成,并且开发了可操作界面如下图所示:
功能实现与描述
软件中可以实现声音的录制、回放、文件的保存与打开功能,两个旋钮括约肌与肛缩可以调整声音的频率与播放速度。
声音录制
matlab封装了声音的开始录制与结束录制功能函数,该软件使用appdesigner进行开发,声音录制与暂停按键的callback函数如下:
global FlagStartOrEnd; %控制开始或结束录制标志位
global recObj; %录音对象
global TextState; %状态信息提示
global TagSoundData; %目标音源数据
global TagSoundFs; %目标音源频率
global MinAbsValue; %最小绝对值 傅里叶变化数值
if FlagStartOrEnd
% 切换开始录音图片 %开始录音
app.ButtonStartRecording.Icon = 'Start.png';
% 重置标志位
FlagStartOrEnd = false;
% 结束录音
stop(recObj);
% 获取录音数据
audioData = getaudiodata(recObj);
% 参数传递
TagSoundData = audioData;
TagSoundFs = 22050;
% 图像展示
[ResFreq, ResMag, ResPhase] = FFTAnslysis(app, TagSoundData, TagSoundFs, MinAbsValue, '录制声音', 100);
% 状态信息提示
TextState = {
'录音结束了哦(^_^)'};
app.TextAreaState.Value = TextState;
% 另存为录音文件
[FileName, FilePath] = uiputfile('*.wav');
% 状态信息提示
TextState = {
['文件<', FileName, '>保存完成了呐'], TextState{
:}};
app.TextAreaState.Value = TextState;
%将音频文件写入到wav
audiowrite(FileName, audioData, 22050);
else
% 切换结束录音图片 %结束录音
app.ButtonStartRecording.Icon = 'End.png';
% 重置标志位
FlagStart