gusucode.com > 端点检测和基于DTW和HMM的孤立词识别和连续语音识别 > code/record/record.m

    function varargout = record(varargin)
% RECORD Application M-file for record.fig
%    FIG = RECORD launch record GUI.
%    RECORD('callback_name', ...) invoke the named callback.

% Last Modified by GUIDE v2.0 11-Nov-2001 21:12:03

if nargin == 0  % LAUNCH GUI

	fig = openfig(mfilename,'reuse');

	% Use system color scheme for figure:
	set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

	% Generate a structure of handles to pass to callbacks, and store it. 
	handles = guihandles(fig);
	guidata(fig, handles);

	if nargout > 0
		varargout{1} = fig;
	end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

	try
		[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
	catch
		disp(lasterr);
	end

end


%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and 
%| sets objects' callback properties to call them through the FEVAL 
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the 
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback.  You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks.  Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.



% --------------------------------------------------------------------
function varargout = push_record_Callback(h, eventdata, handles, varargin)
global ud
invoke(ud.hactx,'start');

% --------------------------------------------------------------------
function varargout = push_save_Callback(h, eventdata, handles, varargin)
global ud
hf = handles.figure_main;
ht = handles.text_prompt;

if ud.word>length(ud.samples)
	ud.samples{ud.word} = {};
end
n = length(ud.samples{ud.word})+1;
ud.samples{ud.word}{n} = ud.x;
plot(ud.x,'Parent',ud.haxes);

prompt = sprintf('当前词共有语音个数:%d', n);
set(ht,'String',prompt);

samples = ud.samples;
save samples samples

% --------------------------------------------------------------------
function varargout = push_play_Callback(h, eventdata, handles, varargin)
global ud
plot(ud.x,'Parent',ud.haxes);
soundsc(ud.x);

% --------------------------------------------------------------------
function varargout = list_word_Callback(h, eventdata, handles, varargin)
global ud
hf = handles.figure_main;
ht = handles.text_prompt;
ud.word = get(h, 'Value');

if ud.word>length(ud.samples)
	ud.samples{ud.word} = {};
end
n = length(ud.samples{ud.word});
prompt = sprintf('当前词共有语音个数:%d', n);
set(ht,'String',prompt);

% --------------------------------------------------------------------
function varargout = push_start_Callback(h, eventdata, handles, varargin)
global ud
hf = handles.figure_main;
ud.hactx = ACTXCONTROL('ACTVOICE.ActvoiceCtrl.1',[0 0 0 0], hf, 'sample');
ud.haxes = handles.axes_wave;
ud.samples = {};
ud.word = 1;