2 added 1 character in body
source | link

If I am reading you correctly, you want to:

  • Scale frequencies by a factor of 0.003
  • Not scale time

In a musical context this is called pitch shifting, because musical notes follow a logarithmic frequency scale and addition (shifting) in that scale corresponds to multiplication in linear frequency scale. Alternatively, you can do frequency-preserving time stretching, followed by resampling.

It is quite difficult to do pitch shifting / time stretching well, and there is no one perfect way to do it as the optimal algorithm depends on what time-frequency structures you want to preserve. Most known algorithms do not approach it as a pure optimization problem but use heuristics to recognize frequencies in the Fourier transform, following them across analysis frames, and then try to resynthesize the scaled frequencies preserving amplitudes, and phase relationships at transients. Some algorithms are listed in https://en.wikipedia.org/wiki/Audio_time-scale/pitch_modification. It is common to try to counter the "chipmunk effect" of shifting formant frequencies, by preserving the overall spectral envelope, but in your case no such remedies are needed.

You can try Rubber Band, of which there are executable and library versions available. I have found it to give decent results for general audio. The 0.003 ratio is quite extreme, so it may be that you need to factor it into smaller partial ratios.

If I am reading you correctly, you want to:

  • Scale frequencies by a factor of 0.003
  • Not scale time

In a musical context this is called pitch shifting, because musical notes follow a logarithmic frequency scale and addition (shifting) in that scale corresponds to multiplication in linear frequency scale. Alternatively, you can do frequency-preserving time stretching, followed by resampling.

It is quite difficult to do pitch shifting / time stretching well, and there is no one perfect way to do it as the optimal algorithm depends on what time-frequency structures you want to preserve. Most known algorithms do not approach it as a pure optimization problem but use heuristics to recognize frequencies in the Fourier transform, following them across analysis frames, and then try to resynthesize the scaled frequencies preserving amplitudes, and phase relationships at transients. Some algorithms are listed in https://en.wikipedia.org/wiki/Audio_time-scale/pitch_modification It is common to try to counter the "chipmunk effect" of shifting formant frequencies, by preserving the overall spectral envelope, but in your case no such remedies are needed.

You can try Rubber Band, of which there are executable and library versions available. I have found it to give decent results for general audio. The 0.003 ratio is quite extreme, so it may be that you need to factor it into smaller partial ratios.

If I am reading you correctly, you want to:

  • Scale frequencies by a factor of 0.003
  • Not scale time

In a musical context this is called pitch shifting, because musical notes follow a logarithmic frequency scale and addition (shifting) in that scale corresponds to multiplication in linear frequency scale. Alternatively, you can do frequency-preserving time stretching, followed by resampling.

It is quite difficult to do pitch shifting / time stretching well, and there is no one perfect way to do it as the optimal algorithm depends on what time-frequency structures you want to preserve. Most known algorithms do not approach it as a pure optimization problem but use heuristics to recognize frequencies in the Fourier transform, following them across analysis frames, and then try to resynthesize the scaled frequencies preserving amplitudes, and phase relationships at transients. Some algorithms are listed in https://en.wikipedia.org/wiki/Audio_time-scale/pitch_modification. It is common to try to counter the "chipmunk effect" of shifting formant frequencies, by preserving the overall spectral envelope, but in your case no such remedies are needed.

You can try Rubber Band, of which there are executable and library versions available. I have found it to give decent results for general audio. The 0.003 ratio is quite extreme, so it may be that you need to factor it into smaller partial ratios.

1
source | link

If I am reading you correctly, you want to:

  • Scale frequencies by a factor of 0.003
  • Not scale time

In a musical context this is called pitch shifting, because musical notes follow a logarithmic frequency scale and addition (shifting) in that scale corresponds to multiplication in linear frequency scale. Alternatively, you can do frequency-preserving time stretching, followed by resampling.

It is quite difficult to do pitch shifting / time stretching well, and there is no one perfect way to do it as the optimal algorithm depends on what time-frequency structures you want to preserve. Most known algorithms do not approach it as a pure optimization problem but use heuristics to recognize frequencies in the Fourier transform, following them across analysis frames, and then try to resynthesize the scaled frequencies preserving amplitudes, and phase relationships at transients. Some algorithms are listed in https://en.wikipedia.org/wiki/Audio_time-scale/pitch_modification It is common to try to counter the "chipmunk effect" of shifting formant frequencies, by preserving the overall spectral envelope, but in your case no such remedies are needed.

You can try Rubber Band, of which there are executable and library versions available. I have found it to give decent results for general audio. The 0.003 ratio is quite extreme, so it may be that you need to factor it into smaller partial ratios.