0
$\begingroup$

I made a program that can change pitch of a recorded audio clip while maintaining its duration. Basically, it takes the FFT of windowed segments of a recorded signal, processes them using phases to find frequency values, synthesizes the modified FFT values, then runs an IFFT on the windows. The issue is that the modified audio has a "buzzing" artifact over it. The audio sounds fine besides that. However, I cannot figure out where this buzzing noise is coming from. Here's the program, I tried to give as thorough as possible instructions in the README file if you want to run the program to see what I mean:

https://github.com/calebAllen2/pitchChangerBugged

But in general, is there a reason why a buzzing artifact happens? Would it be a windowing issue? An issue with the FFT algorithm? All help is greatly appreciated!

$\endgroup$
3
  • 1
    $\begingroup$ Well I'm not examining your code. But usually the buzzing artifact is because of discontinuity between adjacent frames. Could be that you got the theory right and it's just a programing error lining things up seamlessly. Or it could be that you got the theory wrong and you're not doing what you need to do in the processing of each frame and the frequency components are not phase-aligned between adjacent frames. Could be that your windowing of frames and cross-fading between adjacent frames is faulty. $\endgroup$ Commented Oct 15, 2022 at 5:28
  • 1
    $\begingroup$ Perhaps try to bypass the FFT to se if you windowing scheme has buzzing noise in itself? And/or check if there is buzzing when scaling is set to 1.0 $\endgroup$
    – Knut Inge
    Commented Oct 15, 2022 at 7:50
  • $\begingroup$ thank you for these suggestions, it turned out to be a phase alignment issue and not a windowing issue. $\endgroup$ Commented Oct 16, 2022 at 2:54

1 Answer 1

1
$\begingroup$

The frequency components were not phase aligned. Once correctly aligned, the buzzing stopped :)

$\endgroup$
6
  • $\begingroup$ Well that's good. $\endgroup$ Commented Oct 16, 2022 at 3:26
  • $\begingroup$ Thanks for the help, wouldn't have even considered that as the problem until you brought it up $\endgroup$ Commented Oct 16, 2022 at 4:00
  • $\begingroup$ Well, that's what the phase vocoder is about. How are you adjusting the phase of each sinusoidal component so that they are phase-aligned with adjacent frames? $\endgroup$ Commented Oct 16, 2022 at 5:06
  • $\begingroup$ I have a phase sums array in which I add the phase of each sinusoid for every frame if that makes sense $\endgroup$ Commented Oct 19, 2022 at 4:01
  • $\begingroup$ The audio still sound a little robotic. Any chance you know the reasons for this. Or like what general causes this effect? $\endgroup$ Commented Oct 19, 2022 at 4:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.