Phase Vocoder Colter McQuay Phase Vocoder Structure Input x[nTs] Effect Specific Code Synthesize...

10
Phase Vocoder Colter McQuay
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    236
  • download

    3

Transcript of Phase Vocoder Colter McQuay Phase Vocoder Structure Input x[nTs] Effect Specific Code Synthesize...

  • Slide 1
  • Slide 2
  • Phase Vocoder Colter McQuay
  • Slide 3
  • Phase Vocoder Structure Input x[nTs] Effect Specific Code Synthesize Output y[nTs] Analyze
  • Slide 4
  • Time Stretch Effect % Load Signal From File [x Fs]=wavread('../x1.wav'); x=x(:,1)';% Convert to mono windowSize=2048;% Set up window Size stretchRatio=2.5;% Our time Stretch Ratio anHop=128;% Analysis Hop Size % Calculate Synthesis Hop Size based on ratio synthHop=round(anHop*stretchRatio); % Analyze input signal [mag phase]=pvAnalyze(x,windowSize,anHop); % Generate output (dont modify phase or % magnitudes) y=pvSynthesize(mag,phase,synthHop,anHop,1); Toms Diner Original Stretched by 2.5 Compressed by 0.5 Audacity Time Stretch
  • Slide 5
  • Pitch Shift Effect % Load Signal From File [x Fs]=wavread('../x1.wav'); x=x(:,1)';% Convert to mono windowSize=2048;% Set up window Size pitchRatio=0.7;% Our pitch shift Ratio anHop=256;% Analysis Hop Size % Calculate Synthesis Hop Size based on ratio synthHop=round(anHop*pitchRatio); % Analyze input signal [mag phase]=pvAnalyze(x,windowSize,anHop); % Generate output (dont modify phase or % magnitudes) y=pvSynthesize(mag,phase,synthHop,anHop,1); % Resample output to make pitch shifted % version of input y=resample(y,anHop,synthHop); Pitch Shifted by 1.4 Pitch Shifted by 0.7
  • Slide 6
  • Robotization % Load Signal From File [x Fs]=wavread('../x1.wav'); x=x(:,1)';% Convert to mono windowSize=512;% Set up window Size anHop=128;% Analysis Hop Size synthHop=anHop;% Synthesis Hop Size % Analyze input signal [mag phase]=pvAnalyze(x,windowSize,anHop); % Get size of phase array [pRows pCols]=size(phase); % Set new phases to zero phase=zeros(pRows,pCols); % Reconstruct Output Signal y=pvSynthesize(mag,phase,synthHop,anHop,1); Window = 512 Hop=128 Window = 1024 Hop=512
  • Slide 7
  • Whisperization % Load Signal From File [x Fs]=wavread('../x1.wav'); x=x(:,1)';% Convert to mono windowSize=512;% Set up window Size anHop=128;% Analysis Hop Size synthHop=anHop;% Synthesis Hop Size % Analyze input signal [mag phase]=pvAnalyze(x,windowSize,anHop); % Get size of phase array [pRows pCols]=size(phase); % De-Correlate phases by randomizing phase=2*pi*rand(pRows,pCols); % Reconstruct Output Signal y=pvSynthesize(mag,phase,synthHop,anHop,1); Whisperization
  • Slide 8
  • Isolation of Stable & Transient Components % SOUND FILE [x Fs]=wavread('../stableTest.wav'); x=x(:,1)'; windowSize=1024; anHop=512; synthHop=anHop; %Analyze Input Signal [mag phase]=pvAnalyze(x,windowSize,anHop); [pRows pCols]=size(phase); % Set Threshold thresh=.5; % Pre-allocate new phase and magnitude arrays newPhase=zeros(pRows,pCols); newMag=zeros(pRows,pCols); % make first window of new phase array equal to original phase newPhase(1,:)=phase(1,:); % nominal phase increment for each bin omega_k=2*pi*[0:pCols-1]./pCols; % Iterate through all windows for i = 2:pRows % Calculate the target phase for each bin based on previous phase target_phase=phase(i-1,:)+omega_k*anHop; % Calculate deviation from the target phase deviation_phase=princarg(phase(i,:)-target_phase); % Set all bins either outside or inside the threshold to zero % NOTE: if abs(deviation_phase)thresh the transient % components will be kept newPhase(i,:)=phase(i,:).*(abs(deviation_phase)