formant_modify.m

来自「这是一个用于语音信号处理的工具箱」· M 代码 · 共 369 行

M
369
字号
%Callback function to modify formants
%Written by Albert Hsiao
%Modifications and interface by Karthik
%Modified by D. G. Childers 2/25/98

PV = [17 100 404 464];
s2 = 'Formant Modification Window';



% Open analysis window
while exist('formant_modify_fig')==1
   try1 = 'get(formant_modify_fig,''position'');';
   eval(try1,catch2);
   if check ==0
      clear formant_modify_fig;
      check = 1;
      break;
   end
   s1 = get(formant_modify_fig,'Name');
   if ~strcmp(s1,s2)
      clear formant_modify_fig;
      break;
   end
   figure(formant_modify_fig);
   break;
end;

if exist('formant_modify_fig')~=1;
   formant_modify_fig= figure('Position',PV,...
      'Resize','on',...
      'Numbertitle','off',...
      'Color',[0.5 0.5 0.5],...
      'Name',s2);
end

clf;

uicontrol('Style','frame', ...
   'Units','Normalized',...

   'Position',[0.02 0.88 0.96 0.10],...
   'BackGroundColor','white');
   
   uicontrol('Style','text',...
      'Units','Normalized',...
      'Position',[0.03 .90 .6 .04],...
      'BackgroundColor','white',...
      'ForeGroundColor','blue',...
      'String','Time Invariant Excitation Waveform ');

   uicontrol('Style','text',...
      'Units','Normalized',...
      'Position',[0.6 0.90 0.2 0.04],...
      'String','Total Frames',...
      'HorizontalAlignment','left',...
      'BackgroundColor','white',...
      'ForegroundColor','blue');

   source_Nframe_edit = uicontrol('Style','Edit',...
      'Units','Normalized',...
      'Position',[0.78 0.9 0.11 0.04],...
      'String',Nframe);
     
uicontrol('Style','frame',...
   'Units','Normalized',...
   'Position',[0.02 0.16 0.46 0.71],...
   'BackGroundColor','white');

if uvindicate(segment_no) == 1
   uvstring = 'Voiced Segment';
else
   uvstring = 'Unvoiced Segment';
end

   
uicontrol('Style','Text',...
   'Units','Normalized',...
   'Position',[0.03 0.78 .4 .05], ...
   'String',uvstring,...
   'BackGroundColor','white',...
   'HorizontalAlignment','Center',...
   'ForeGroundColor','blue');
      
uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.04 0.73 .2 .04],...
   'BackGroundColor','white',...
   'String','First formant');

formant_f1_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.04 .69 .1 .04], ...
   'String',num2str(Ff1(segment_no,1)),...
   'BackGroundColor','white',...
   'Callback','for1_edit');

formant_f1_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[.15 .69 .3 .04], ...
   'Value',Ff1(segment_no,1),...
   'Min',0,...
   'Max',10000,...
   'Callback', 'for1_slider');

uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.04 0.63 .2 .04],...
   'BackGroundColor','white',...
   'String','Second Formant');

formant_f2_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.04 .59 .1 .04], ...
   'String',num2str(Ff1(segment_no,2)),...
   'BackGroundColor','white',...
   'Callback','for2_edit');

formant_f2_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[.15 .59 .3 .04], ...
   'Value',Ff1(segment_no,2),...
   'Min',0,...
   'Max',10000,...
   'Callback', 'for2_slider');

uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.04 0.53 .2 .04],...
   'BackGroundColor','white',...
   'String','Third formant');

formant_f3_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.04 .49 .1 .04], ...
   'String',num2str(Ff1(segment_no,3)),...
   'BackGroundColor','white',...
   'Callback','for3_edit');

formant_f3_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[.15 .49 .3 .04], ...
   'Value',Ff1(segment_no,3),...
   'Min',0,...
   'Max',10000,...
   'Callback', 'for3_slider');

uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.04 0.43 .2 .04],...
   'BackGroundColor','white',...
   'String','Fourth formant');

formant_f4_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.04 .39 .1 .04], ...
   'String',num2str(Ff1(segment_no,4)),...
   'BackGroundColor','white',...
   'Callback','for4_edit');

formant_f4_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[.15 .39 .3 .04], ...
   'Value',Ff1(segment_no,4),...
   'Min',0,...
   'Max',10000,...
   'Callback', 'for4_slider');
uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.04 0.33 .2 .04],...
   'BackGroundColor','white',...
   'String','Fifth formant');

formant_f5_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.04 .29 .1 .04], ...
   'String',num2str(Ff1(segment_no,5)),...
   'BackGroundColor','white',...
   'Callback','for5_edit');

formant_f5_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[.15 .29 .3 .04], ...
   'Value',Ff1(segment_no,5),...
   'Min',0,...
   'Max',10000,...
   'Callback', 'for5_slider');

uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.04 0.23 .2 .04],...
   'BackGroundColor','white',...
   'String','Sixth formant');

formant_f6_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.04 .19 .1 .04], ...
   'String',num2str(Ff1(segment_no,6)),...
   'BackGroundColor','white',...
   'Callback','for6_edit');

formant_f6_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[.15 .19 .3 .04], ...
   'Value',Ff1(segment_no,6),...
   'Min',0,...
   'Max',10000,...
   'Callback', 'for6_slider');

%Right frame with bandwidth

uicontrol('Style','frame',...
   'Units','Normalized',...
   'Position',[0.52 0.16 0.46 0.71],...
   'BackGroundColor','white');

uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.55 0.73 .3 .04],...
   'BackGroundColor','white',...
   'String','First bandwidth');

formant_b1_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.55 .69 .1 .04], ...
   'String',num2str(Fb1(segment_no,1)),...
   'BackGroundColor','white',...
   'Callback','bw1_edit');

formant_b1_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[0.66 .69 .3 .04], ...
   'Value',Fb1(segment_no,1),...
   'Min',0,...
   'Max',6000,...
   'Callback', 'bw1_slider');

uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.55 0.63 .3 .04],...
   'BackGroundColor','white',...
   'String','Second bandwidth');

formant_b2_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.55 .59 .1 .04], ...
   'String',num2str(Fb1(segment_no,2)),...
   'BackGroundColor','white',...
   'Callback','bw2_edit');

formant_b2_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[0.66 .59 .3 .04], ...
   'Value',Fb1(segment_no,2),...
   'Min',0,...
   'Max',6000,...
   'Callback', 'bw2_slider');

uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.55 0.53 .3 .04],...
   'BackGroundColor','white',...
   'String','Third bandwidth');

formant_b3_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.55 .49 .1 .04], ...
   'String',num2str(Fb1(segment_no,3)),...
   'BackGroundColor','white',...
   'Callback','bw3_edit');

formant_b3_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[0.66 .49 .3 .04], ...
   'Value',Fb1(segment_no,3),...
   'Min',0,...
   'Max',6000,...
   'Callback', 'bw3_slider');

uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.55 0.43 .3 .04],...
   'BackGroundColor','white',...
   'String','Fourth bandwidth');

formant_b4_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.55 .39 .1 .04], ...
   'String',num2str(Fb1(segment_no,4)),...
   'BackGroundColor','white',...
   'Callback','bw4_edit');

formant_b4_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[0.66 .39 .3 .04], ...
   'Value',Fb1(segment_no,4),...
   'Min',0,...
   'Max',6000,...
   'Callback', 'bw4_slider');

uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.55 0.33 .3 .04],...
   'BackGroundColor','white',...
   'String','Fifth bandwidth');

formant_b5_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.55 .29 .1 .04], ...
   'String',num2str(Fb1(segment_no,5)),...
   'BackGroundColor','white',...
   'Callback','bw5_edit');

formant_b5_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[0.66 .29 .3 .04], ...
   'Value',Fb1(segment_no,5),...
   'Min',0,...
   'Max',6000,...
   'Callback', 'bw5_slider');

uicontrol('Style','text',...
   'Units','Normalized',...
   'Position',[0.55 0.23 .3 .04],...
   'BackGroundColor','white',...
   'String','Sixth bandwidth');

formant_b6_edit = uicontrol('Style','edit',...
   'Units','Normalized',...
   'Position',[0.55 .19 .1 .04], ...
   'String',num2str(Fb1(segment_no,6)),...
   'BackGroundColor','white',...
   'Callback','bw6_edit');

formant_b6_slider =uicontrol('Style','Slider',...
   'Units','Normalized',...
   'Position',[0.66 .19 .3 .04], ...
   'Value',Fb1(segment_no,6),...
   'Min',0,...
   'Max',6000,...
   'Callback', 'bw6_slider');


uicontrol('Style','frame',...
   'Units','Normalized',...
   'Position',[0.02 0.02 0.96 0.13],...
   'BackGroundColor',[0.8 0.8 0.8]);

uicontrol('Style','Pushbutton',...
   'Units','Normalized',...
   'Position',[0.1 0.05 0.20 0.06],...
   'String','Apply to all',...
   'Callback','formant_apply_all');

uicontrol('Style','Pushbutton',...
   'Units','Normalized',...
   'Position',[0.35 0.05 0.20 0.06],...
   'String','Reset',...
   'Callback','formant_reset');

uicontrol('Style','Pushbutton',...
   'Units','Normalized',...
   'Position',[0.6 0.05 0.20 0.06],...
   'String','Done',...
   'Callback','formant_modify_quit');

plot_formant;


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?