# Re: Frequency shift to alleviate acoustic feedback (Siping Tao )

```Subject: Re: Frequency shift to alleviate acoustic feedback
From:    Siping Tao  <siping.tao@xxxxxxxx>
Date:    Thu, 24 Jan 2013 10:05:14 +0800
List-Archive:<http://lists.mcgill.ca/scripts/wa.exe?LIST=AUDITORY>

--e89a8fb1fc36dd5a3604d3ff3d88
Content-Type: text/plain; charset=ISO-8859-1

Dear Steve,

Your explaination is reasonable, I do just copy the real and imaginary
parts without the consideration of phase.

I did not fully understand the method you recommended due to my limited
knowledge.

1. "*by the end of each block, the new signal will have been through a
different number of cycles of each sinusoidal component*"
what's the meaning of cycles? why overlap processing induces this
problem?
2. "*by converting the phase of each FFT bin to a time delay (rather than a
phase angle)*"
how can I get the phase or set the phase for the delayed bin? In
overlap case, how to promise each bin has only one phase
rather than the average of several different phases? Any example code
or papers, whatever?

Siping

On Wed, Jan 23, 2013 at 6:48 PM, Steve Beet <steve.beet@xxxxxxxx> wrote:

> Dear Siping,
>
> The most likely explanation is that when you shift the FFT by one bin, you
> (presumably) just copy the real and imaginary parts, so the initial phase
> of the respective components stays the same at the new frequency. However,
> by the end of each block, the new signal will have been through a different
> number of cycles of each sinusoidal component, so the phase at the end of
> the frequency-shifted block will not match up with the phase at the start
> of the next block.
>
> Manipulating the phases so that the different components maintain the
> "correct" phase relationships with the signal components in subsequent
> blocks could be done by converting the phase of each FFT bin to a time
> delay (rather than a phase angle), and calculating the phase for the
> shifted signal which would give the same time delay.
>
> There may be other issues too (e.g. the handling of the first and last DFT
> bins, where there's no phase information), but I would try setting the
> phase such that the signal at the centre of each overlapped window is
> "correct", and hope that the taper of the Hanning window will minimise the
> effect of any discontinuities near the ends of each block.
>
> Let us know how you get on!
>
> Steve Beet
>
>
> On Wed, 23 Jan 2013 11:05:08 +0100
> Zlatan Ribic <zlatan@xxxxxxxx> wrote:
>
> > M. Hartley Jones: "Frequency Shifter for "Howl" Suppression", Wireless
> World, July 1973. 317-322
> >
> >   ----- Original Message -----
> >   From: Siping Tao
> >   To: AUDITORY@xxxxxxxx
> >   Sent: Wednesday, January 23, 2013 9:56 AM
> >   Subject: Frequency shift to alleviate acoustic feedback
> >
> >
> >   Dear experts,
> >
> >   Acoustic feedback can be removed by several methods: frequency shift,
> phase shift, notch filter, adaptive cancellation. I tried the simplest
> method I thought, frqeuency shift. However, it's not easy as I thought. In
> realtime processing scenario, I need to process every 10ms audio sample
> without significant delay, so I do the following implementation:
> >
> >   1. sampling rate is 16K, so I have 160 samples every 10ms.
> >   2. do DFT for these 160 samples, the DFT length is 512, pending zeros
> since I only have 160 samples
> >   3. shift the frequency by one fft coefficient, that is, shift
> 16000/512=31.25Hz (DC is not shifted)
> >   4. do IDFT
> >
> >   After doing that, I can notice the spectrum is shifted in cool-edit,
> but with some processing noise (not the artifacts due to frequency shift).
> I guess this noise is caused by different processing for successive10ms
> data, I am not sure here. However, I try to use overlap processing in my
> code, hanning window, 50% overlap, then the processing noise is reduced
> much. Unfortunately, I found that overlap processing sometimes make the
> frequency shift useless (e.g. 75% overlap by blackman window), what I mean
> useless is I cannot notice spectrum shift in cool-edit.
> >
> >   Can anybody help me to understand why overlap processing hurts
> frequency shift? Or point out the incorrect parts of my implementation.
> >
> >   Thanks,
> >   Siping
>

--e89a8fb1fc36dd5a3604d3ff3d88
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Dear Steve,<br><br>Your explaination is reasonable, I do just copy the real=
and imaginary parts without the consideration of phase.<br><br>I did not f=
ully understand the method you recommended due to my limited knowledge.<br>
<br>1. &quot;<i>by the end of each block, the new signal will have been thr=
ough a different number of cycles of each sinusoidal component</i>&quot;<br=
>=A0=A0=A0 what&#39;s the meaning of cycles? why overlap processing induces=
this problem?<br>
2. &quot;<i>by converting the phase of each FFT bin to a time delay (rather=
than a phase angle)</i>&quot;<br>=A0=A0=A0 how can I get the phase or set =
the phase for the delayed bin? In overlap case, how to promise each bin has=
only one phase<br>
=A0=A0=A0 rather than the average of several different phases? Any example =
code or papers, whatever?<br><br>Thanks for your help!<br>Siping<br><br><di=
v class=3D"gmail_quote">On Wed, Jan 23, 2013 at 6:48 PM, Steve Beet <span d=
ir=3D"ltr">&lt;<a href=3D"mailto:steve.beet@xxxxxxxx" target=3D"_blank">ste=
ve.beet@xxxxxxxx</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
<br>
The most likely explanation is that when you shift the FFT by one bin, you =
(presumably) just copy the real and imaginary parts, so the initial phase o=
f the respective components stays the same at the new frequency. However, b=
y the end of each block, the new signal will have been through a different =
number of cycles of each sinusoidal component, so the phase at the end of t=
he frequency-shifted block will not match up with the phase at the start of=
the next block.<br>

<br>
Manipulating the phases so that the different components maintain the &quot=
;correct&quot; phase relationships with the signal components in subsequent=
blocks could be done by converting the phase of each FFT bin to a time del=
ay (rather than a phase angle), and calculating the phase for the shifted s=
ignal which would give the same time delay.<br>

<br>
There may be other issues too (e.g. the handling of the first and last DFT =
bins, where there&#39;s no phase information), but I would try setting the =
phase such that the signal at the centre of each overlapped window is &quot=
;correct&quot;, and hope that the taper of the Hanning window will minimise=
the effect of any discontinuities near the ends of each block.<br>

<br>
Let us know how you get on!<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
Steve Beet<br>
</font></span><div class=3D"HOEnZb"><div class=3D"h5"><br>
<br>
On Wed, 23 Jan 2013 11:05:08 +0100<br>
Zlatan Ribic &lt;<a href=3D"mailto:zlatan@xxxxxxxx">zlatan@xxxxxxxx</=
a>&gt; wrote:<br>
<br>
&gt; M. Hartley Jones: &quot;Frequency Shifter for &quot;Howl&quot; Suppres=
sion&quot;, Wireless World, July 1973. 317-322<br>
&gt;<br>
&gt; =A0 ----- Original Message -----<br>
&gt; =A0 From: Siping Tao<br>
&gt; =A0 To: <a href=3D"mailto:AUDITORY@xxxxxxxx">AUDITORY@xxxxxxxx=
ILL.CA</a><br>
&gt; =A0 Sent: Wednesday, January 23, 2013 9:56 AM<br>
&gt; =A0 Subject: Frequency shift to alleviate acoustic feedback<br>
&gt;<br>
&gt;<br>
&gt; =A0 Dear experts,<br>
&gt;<br>
&gt; =A0 Acoustic feedback can be removed by several methods: frequency shi=
ft, phase shift, notch filter, adaptive cancellation. I tried the simplest =
method I thought, frqeuency shift. However, it&#39;s not easy as I thought.=
In realtime processing scenario, I need to process every 10ms audio sample=
without significant delay, so I do the following implementation:<br>

&gt;<br>
&gt; =A0 1. sampling rate is 16K, so I have 160 samples every 10ms.<br>
&gt; =A0 2. do DFT for these 160 samples, the DFT length is 512, pending ze=
ros since I only have 160 samples<br>
&gt; =A0 3. shift the frequency by one fft coefficient, that is, shift 1600=
0/512=3D31.25Hz (DC is not shifted)<br>
&gt; =A0 4. do IDFT<br>
&gt;<br>
&gt; =A0 After doing that, I can notice the spectrum is shifted in cool-edi=
t, but with some processing noise (not the artifacts due to frequency shift=
). I guess this noise is caused by different processing for successive10ms =
data, I am not sure here. However, I try to use overlap processing in my co=
de, hanning window, 50% overlap, then the processing noise is reduced much.=
Unfortunately, I found that overlap processing sometimes make the frequenc=
y shift useless (e.g. 75% overlap by blackman window), what I mean useless =
is I cannot notice spectrum shift in cool-edit.<br>

&gt;<br>
&gt; =A0 Can anybody help me to understand why overlap processing hurts fre=
quency shift? Or point out the incorrect parts of my implementation.<br>
&gt;<br>
&gt; =A0 Thanks,<br>
&gt; =A0 Siping<br>
</div></div></blockquote></div><br>

--e89a8fb1fc36dd5a3604d3ff3d88--
```

This message came from the mail archive
/var/www/postings/2013/
maintained by:
DAn Ellis <dpwe@ee.columbia.edu>
Electrical Engineering Dept., Columbia University