Welcome
Username or Email:

Password:


Missing Code




[ ]
[ ]
Online
  • Guests: 92
  • Members: 0
  • Newest Member: omjtest
  • Most ever online: 396
    Guests: 396, Members: 0 on 12 Jan : 12:51
Members Birthdays:
One birthday today, congrats!
RateReducer (35)


Next birthdays
11/01 RateReducer (35)
11/02 Download (31)
11/02 ScottH (37)
Contact
If you need assistance, please send an email to forum at 4hv dot org. To ensure your email is not marked as spam, please include the phrase "4hv help" in the subject line. You can also find assistance via IRC, at irc.shadowworld.net, room #hvcomm.
Support 4hv.org!
Donate:
4hv.org is hosted on a dedicated server. Unfortunately, this server costs and we rely on the help of site members to keep 4hv.org running. Please consider donating. We will place your name on the thanks list and you'll be helping to keep 4hv.org alive and free for everyone. Members whose names appear in red bold have donated recently. Green bold denotes those who have recently donated to keep the server carbon neutral.


Special Thanks To:
  • Aaron Holmes
  • Aaron Wheeler
  • Adam Horden
  • Alan Scrimgeour
  • Andre
  • Andrew Haynes
  • Anonymous000
  • asabase
  • Austin Weil
  • barney
  • Barry
  • Bert Hickman
  • Bill Kukowski
  • Blitzorn
  • Brandon Paradelas
  • Bruce Bowling
  • BubeeMike
  • Byong Park
  • Cesiumsponge
  • Chris F.
  • Chris Hooper
  • Corey Worthington
  • Derek Woodroffe
  • Dalus
  • Dan Strother
  • Daniel Davis
  • Daniel Uhrenholt
  • datasheetarchive
  • Dave Billington
  • Dave Marshall
  • David F.
  • Dennis Rogers
  • drelectrix
  • Dr. John Gudenas
  • Dr. Spark
  • E.TexasTesla
  • eastvoltresearch
  • Eirik Taylor
  • Erik Dyakov
  • Erlend^SE
  • Finn Hammer
  • Firebug24k
  • GalliumMan
  • Gary Peterson
  • George Slade
  • GhostNull
  • Gordon Mcknight
  • Graham Armitage
  • Grant
  • GreySoul
  • Henry H
  • IamSmooth
  • In memory of Leo Powning
  • Jacob Cash
  • James Howells
  • James Pawson
  • Jeff Greenfield
  • Jeff Thomas
  • Jesse Frost
  • Jim Mitchell
  • jlr134
  • Joe Mastroianni
  • John Forcina
  • John Oberg
  • John Willcutt
  • Jon Newcomb
  • klugesmith
  • Leslie Wright
  • Lutz Hoffman
  • Mads Barnkob
  • Martin King
  • Mats Karlsson
  • Matt Gibson
  • Matthew Guidry
  • mbd
  • Michael D'Angelo
  • Mikkel
  • mileswaldron
  • mister_rf
  • Neil Foster
  • Nick de Smith
  • Nick Soroka
  • nicklenorp
  • Nik
  • Norman Stanley
  • Patrick Coleman
  • Paul Brodie
  • Paul Jordan
  • Paul Montgomery
  • Ped
  • Peter Krogen
  • Peter Terren
  • PhilGood
  • Richard Feldman
  • Robert Bush
  • Royce Bailey
  • Scott Fusare
  • Scott Newman
  • smiffy
  • Stella
  • Steven Busic
  • Steve Conner
  • Steve Jones
  • Steve Ward
  • Sulaiman
  • Thomas Coyle
  • Thomas A. Wallace
  • Thomas W
  • Timo
  • Torch
  • Ulf Jonsson
  • vasil
  • Vaxian
  • vladi mazzilli
  • wastehl
  • Weston
  • William Kim
  • William N.
  • William Stehl
  • Wesley Venis
The aforementioned have contributed financially to the continuing triumph of 4hv.org. They are deserving of my most heartfelt thanks.
Forums
4hv.org :: Forums :: General Science and Electronics
« Previous topic | Next topic »   

Very Hard DSP Problem (audio echo cancelation inside car)

1 2 
Move Thread LAN_403
Linas
Sun Sept 04 2016, 06:46AM Print
Linas Registered Member #1143 Joined: Sun Nov 25 2007, 04:55PM
Location: Vilnius, Lithuania
Posts: 721
Hello, want to start discussion about car free handset ECHO cancellation scheme.

I made navigation system from android tablet, all is great, problem is Bluetooth headset uses single mic, that can hear speakers, and i simply get horrible echo cry



I can add STM32F4/7 for signal processing, but i have no idea how can i cancel audio of external sound , and leave only my voice, since mic is located near back mirror...

So for not at least is idea to take two mic, sample it at <1MSps@16b, make some DSP magic, and send data to 16b 1MSps DAC. This should give me flexibility do to everything, just question now, what exactly can i do, and how can i do it ?

Any ideas are welcome :)
Back to top
Sulaiman
Sun Sept 04 2016, 10:51AM
Sulaiman Registered Member #162 Joined: Mon Feb 13 2006, 10:25AM
Location: United Kingdom
Posts: 3140
is it echo, reverberation or accoustic feedback that is the problem,
if it is accoustic feedback then shifting frequencies up by c10 Hz between mic and speaker
does not affect inteligibility but does prevent accoustic feedback oscillations ... from memory only ...
Back to top
Linas
Sun Sept 04 2016, 11:27AM
Linas Registered Member #1143 Joined: Sun Nov 25 2007, 04:55PM
Location: Vilnius, Lithuania
Posts: 721
Sulaiman wrote ...

is it echo, reverberation or accoustic feedback that is the problem,
if it is accoustic feedback then shifting frequencies up by c10 Hz between mic and speaker
does not affect inteligibility but does prevent accoustic feedback oscillations ... from memory only ...

Delay is horrible, for end user ( other phone ) voice can be shifter by 0.1 to 1s, and at this point, caller simply can't talk because it hears what he says.

I will make simple circuit that will capture audio, 2ch at 16b, and will send it to 16b dac, first try will be taking mic and audio aout signal, and do shifting, inverting and adding. It is far from ideal, but every bit helps
Back to top
Dr. Slack
Sun Sept 04 2016, 03:46PM
Dr. Slack Registered Member #72 Joined: Thu Feb 09 2006, 08:29AM
Location: UK St. Albans
Posts: 1659
Sulaiman was suggesting frequency shift, not time delay. Great ascending ripply noises just before it feeds back, spacy!

If your DSP is to detect you in a background environment, it must have some way of labelling what is you and what isn't. With a mike behind the mirror, this sounds very weak on potential discrimination indeed. The usual way this is done is with a mike very close to you, and one further away, so the volume gradient between the two mikes 'labels' what is you and what not. There are dual-capsule 'noise-cancelling' mikes are available where the distances involved are sub inch.

The more expensive alternative is beam-forming, where many mikes are used in the volume around you.

There is a great deal of literature available on the maths behind all forms of source identification, beam forming and echo cancellation, most of it over my head, and much of it behind pay walls.
Back to top
Linas
Sun Sept 04 2016, 04:49PM
Linas Registered Member #1143 Joined: Sun Nov 25 2007, 04:55PM
Location: Vilnius, Lithuania
Posts: 721
Frequency shift can help here. because basically mic is sitting in front of speaker.

I know that original Subaru Head unit was working very happy with single MIC.

Since i have all the content that is traveling to speakers, with matching mike delay with speaker delay, and subtracting it should rid low frequency, but don't know by how much.
Dual MIC maybe be better idea, since it will pickup all suround sound that is not me and not speekers, but have no idea what kind of math do i need to do.

As example, and can sample array 1024 at 24/48kHz, and subtract real(Hz) and Imag(Hz) parts from mic that is closer to me, and one that lisens background, so only my voice will be left, but that is just idea.
Back to top
DerAlbi
Mon Sept 05 2016, 08:32PM
DerAlbi Registered Member #2906 Joined: Sun Jun 06 2010, 02:20AM
Location: Dresden, Germany
Posts: 727
Echo cancelation is a bitch. Its hard to get it right (see skype.. cheesey )
The most primitive solution on a phone is to mute (decrease volume) the more the other side speaks. Since a normal telephone conversation is only half duplex (only one side speaks). But this limits interaction and i doubt its unnoticable.
The more complicated solution is to get a big FIR-filter (100s of tabs) and a LMS-Filter algorithm. ( Link2 )
This is common in networking application and should work for audio too. This "learns" how to cancel echos effectively.
Back to top
Linas
Wed Sept 07 2016, 07:19AM
Linas Registered Member #1143 Joined: Sun Nov 25 2007, 04:55PM
Location: Vilnius, Lithuania
Posts: 721
DerAlbi wrote ...

Echo cancelation is a bitch. Its hard to get it right (see skype.. cheesey )


Yes, my problem is exactly like Skype, caller can hear what he says, because mic is in front of speakers.
Back to top
WaveRider
Wed Sept 07 2016, 10:37AM
WaveRider Registered Member #29 Joined: Fri Feb 03 2006, 09:00AM
Location: Hasselt, Belgium
Posts: 500
The frequency shifting technique mentioned by Sulaiman is used extensively in stage PA systems to eliminate feedback through the sound system. Conceptually it is a single-side band frequency shift of 10 Hz or so using DSP. You will need to perhaps get your head around the Hilbert transform (which can be done using a fast Fourier transform) for generating the appropriate phase relationships in the signal you wish to shift. Not trivial, but probably easier and more robust than an echo-canceller.
Back to top
Linas
Wed Sept 07 2016, 07:23PM
Linas Registered Member #1143 Joined: Sun Nov 25 2007, 04:55PM
Location: Vilnius, Lithuania
Posts: 721
WaveRider wrote ...

The frequency shifting technique mentioned by Sulaiman is used extensively in stage PA systems to eliminate feedback through the sound system. Conceptually it is a single-side band frequency shift of 10 Hz or so using DSP. You will need to perhaps get your head around the Hilbert transform (which can be done using a fast Fourier transform) for generating the appropriate phase relationships in the signal you wish to shift. Not trivial, but probably easier and more robust than an echo-canceller.
Making FFT, shifting array, and making IFFT is simple stuff, just can't see how it works.

Making testing jig with STM32F4/7 running at 250MHz with native float support for this, and when i will try various method's how to do that.
Back to top
DerAlbi
Thu Sept 08 2016, 08:43PM
DerAlbi Registered Member #2906 Joined: Sun Jun 06 2010, 02:20AM
Location: Dresden, Germany
Posts: 727
I am also not sure why they think that a frequency shift solves the problem. It does not matter if the mic picks up a 10Hz shifted signal or is by itself shifted by 10Hz. The other person does not want to hear him self speaking at the other end. The 10Hz shifting would still feedback a 10Hz shifted version just because its picked up by the mic.. i dont see a solution there.
You guys are currently mixing up an echo with an oscillation.
You just call everything a "feedback" so canceling the "feedback" is the solution for you. Its not. 10Hz-Shifting chancels oscillation, not feedback (there is still feedback, it just forced out of phase so it cant amplify in phase = oscillate.). Please keep it apart.
Linas, did you read about the LMS-FIR-Filter?
That there is an echo present, can be checked by the Cepstrum ( Link2 ).
Back to top
1 2 

Moderator(s): Chris Russell, Noelle, Alex, Tesladownunder, Dave Marshall, Dave Billington, Bjørn, Steve Conner, Wolfram, Kizmo, Mads Barnkob

Go to:

Powered by e107 Forum System
 
Legal Information
This site is powered by e107, which is released under the GNU GPL License. All work on this site, except where otherwise noted, is licensed under a Creative Commons Attribution-ShareAlike 2.5 License. By submitting any information to this site, you agree that anything submitted will be so licensed. Please read our Disclaimer and Policies page for information on your rights and responsibilities regarding this site.