【问题标题】:How can I record,pause and keep recording with Matlab functions?如何使用 Matlab 功能录制、暂停和继续录制?
【发布时间】:2014-12-09 23:08:16
【问题描述】:

我正在尝试使用此代码录制、暂停和再次录制音频,但它不起作用,只有在我最后一次推动录制时,才在努力失败之前录制了声音。

我应该如何使用暂停和恢复功能来制作录音/暂停按钮?

function Rec_Pausb_Callback(hObject, eventdata, handles)
global openS recS;
openS=0; recS=1;
handles.recs=str2double(get(handles.Samplef, 'String'));
recb=str2double(get(handles.BPS, 'String'));

if(handles.Samplef >32 || handles.Samplef <8)
    disp('Frequency must between 8 to 32 (KiloHertz)');
else
   handles.Samplef=handles.Samplef;
end
disp(handles.Samplef);

state=get(hObject,'value');
handles.rec=audiorecorder(handles.recs*1000,recb,1);

if state
    set(hObject,'String','Pause');
    resume(handles.rec);
else
    set(hObject,'String','Record');
    pause(handles.rec);


end


guidata(hObject,handles);

【问题讨论】:

  • 如果您注意到除了最后一个结果之外的每个结果都被丢弃,您也许可以在暂停时保存到目前为止的结果? (然后将所有部分组合起来)
  • 能用代码解释一下吗?

标签: matlab audio-recording playback


【解决方案1】:

我假设您上面发布的代码是按钮的回调函数中发生了什么?

那么一个可能的解释是,当回调退出时,句柄和 handle.rec 对象没有更新,因此音频数据没有保存。尝试在回调末尾添加guidata(hObject, handles); 以保存句柄。

您使用的是什么版本的 Matlab?显卡系统是2014b更新的,所以如果你使用这个版本,上面的解决方案可能不适用。

编辑: 好的,在查看完整代码时,您正在初始化回调中的录音机对象,每次按下按钮时都会有效地重置它。这意味着只要按下按钮,您就会重新开始录制。

您可以通过在回调之外的某处初始化记录器来避免这种情况,然后将对象传递给按钮回调函数。

【讨论】:

  • 我贴出了录制/暂停按钮的完整代码!我的matlab版本是R2012a,要不要更新一下?
  • 在您包含完整代码后,我已经更新了上面的答案。应该不需要更新,你想要达到的目标在 R2012a 中肯定也是可以的。
  • 非常感谢!问题很容易解决!两天我又解决了这个问题!
  • 我希望我能给你声誉,但我不能因为我的声誉不够 :(
  • 没关系,很高兴它有帮助:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
相关资源
最近更新 更多