pset.m
来自「这是一个用于语音信号处理的工具箱」· M 代码 · 共 168 行
M
168 行
% Script : Create a graphical user interface (GUI) to
% (1) display the pitch contours of the target and source speech
% (2) manually modify the pitch contour using the mouse.
%
% Pset.m is a call_function executed by "m_pb_pc" on figure(m_win_f).
%
%------------------------------------------%
% create the Pset_f Graphical User Interface %
%------------------------------------------%
if isempty(gci)
Pset_f=figure('Units','Normalized',...
'Numbertitle','off',...
'Color','white',...
'Position',[.165 .55 .35 .35 ],...
'Name','Pitch Contour Modification');
text1=uicontrol('Style','text',...
'Units','normalized',...
'Position',[0.1 0.5 0.8 0.15],...
'BackGroundColor','white',...
'String','Sorry, there is no GCI in this speech signal.');
return_pb=uicontrol('Style','Pushbutton',...
'Units','normalized','Position',[.2 .3 .6 .2],...
'Callback','close(Pset_f);',...
'String','Return');
else
% set the temporary value
if exist('gci3')==0
gci1=gci;
else
gci1=gci3;
end
% estimae the factor of the pitch contour
[p01,pw1,pb1,gcidx1,seglens1]=pctour(gci1);
jitter=p01*pb1*randn(1,length(pw1)); %pitch jitter
clear sp_xx sp_yy; % spline knots [sp_xx, sp_yy]
Pset_f=figure('Units','Normalized',...
'Numbertitle','off',...
'Color','white',...
'Position',[.165 .2 .15 .70 ],...
'Name','Pitch Contour Modification');
%----------------------------------------------------%
% provide zooming, shifting and correcting functions %
%----------------------------------------------------%
pitch_text=uicontrol('Style','text',...
'Units','normalized','Position',[0.05 .92 .9 .06],'String','Funda. Pitch:',...
'BackGroundColor','white','ForeGroundColor','blue');
pitch_pts=uicontrol('Style','text', ...
'Unit','Normalized','Position',[0.05 .87 .9 .05],'String',num2str(p01),...
'BackGroundColor','white');
pitch_sh=uicontrol('Style','Slider', ...
'Value',p01,'Min',20,'Max',150,...
'Units','normalized','Position',[.05 .82 .9 .05],'Callback', 'pcshf');
%callback function [pcshf.m]
wave_text=uicontrol('Style','text',...
'Units','normalized','Position',[0.05 .73 .9 .06],'String','Pitch Wave:',...
'BackGroundColor','white','ForeGroundColor','black');
wave_lab=uicontrol('Style','Popup', ...
'String','add knob|delete knob','Units','normalized','Position',[0.05 .69 .9 .06],...
'Callback', 'pclbl;');
%callback function [pclbl.m]
wave_fit=uicontrol('Style','Popup',...
'String','line_fit|parabola-fit(1)|parabola-fit(2)|cubic-fit|default',...
'Units','normalized','Position',[0.05 .61 .9 .06],...
'Callback', 'pcfit;');
%callback function [pcfit.m]
wave_slt=uicontrol('Style','Pushbutton', ...
'String','select knob',...
'Units','normalized','Position',[.05 .53 .9 .06],...
'Callback', 'UP=0;pcdra');
%callback function [pcdra.m]
wave_up=uicontrol('Style','Pushbutton', ...
'String','up','Units','Normalized','Position',[0.05 .44 .4 .06],'Visible','off',...
'Callback', 'UP=1;pcdra;');
%callback function [pcdra.m]
wave_down=uicontrol('Style','Pushbutton', ...
'String','down','Visible','off',...
'Units','Normalized','Position',[.55 .44 .4 .06],...
'Callback', 'UP=-1;pcdra');
%callback function [pcdra.m]
pertb_text=uicontrol('Style','text',...
'Units','normalized','Position',[0.05 .37 .9 .05],'String','Pitch Jitter:',...
'BackGroundColor','white','ForeGroundColor','red');
pertb_val=uicontrol('Style','text', ...
'Unit','Normalized','Position',[0.05 .33 .9 .05],'String',num2str(pb1),...
'BackGroundColor','white');
pertb_cg=uicontrol('Style','Slider', ...
'Units','normalized','Position',[.05 .28 .9 .05],...
'Value',pb1,'Min',0,'Max',2*pb1,...
'Callback', 'pctur;');
%callback function [pctur.m]
undo_pb=uicontrol('Style','Pushbutton', ...
'String','Undo',...
'Units','normalized','Position',[.2 .18 .6 .06],...
'Callback','App=0;pcapp');
%callback function [pcapp.m]
apply_pb=uicontrol('Style','Pushbutton', ...
'String','Apply' ,...
'Units','normalized','Position',[.2 .1 .6 .06],...
'Callback','App=1;pcapp');
%callback function [pcapp.m]
return_pb=uicontrol('Style','Pushbutton',...
'Units','normalized','Position',[.2 .02 .6 .06],...
'Callback','close(Pset_f);close(Pdis_f);close(Pcontour_f);clear nxx nyy nseg gci1 seglens1 pw1 pb1 knob_xx knob_yy knob_idx gcidx1 mwave jitter;',...
'String','Return');
%----------------------------------------------------------------%
% create Pdis_f figure for displaying the pitch wave and jitter %
%----------------------------------------------------------------%
Pdis_f=figure('Units','Normalized',...
'Numbertitle','off',...
'Color',[.5 .5 .5],...
'Position',[.315 .52 .68 .4 ],...
'Name','Pitch Wave and Jitter Display');
whitebg(Pdis_f,'w');
%----------------------------------------------------------------%
% create Pcontour_f figure for displaying the pitch contour %
%----------------------------------------------------------------%
Pcontour_f=figure('Units','Normalized',...
'Numbertitle','off',...
'Color',[.5 .5 .5],...
'Position',[.315 .05 .68 .4 ],...
'Name','Pitch Contour Display');
whitebg(Pcontour_f,'w');
%--------------------------------------------------%
% plot the pitch contour on Pset_f & Fcontour_f %
%--------------------------------------------------%
clear mwave knob_xx knob_yy knob_idx;
pcplt; % call script to plot the pitch contour
end %%if gci1==[]
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?