Some Ideas for Further Research

  • Use an optimum beamformer to steer a null over the loud speaker.
  • Use plain old GSFAP instead of the block exact version. Although this is slower, it is far easier to code and work with. Also, it has lower memory requirements which caused me many problems.
  • Implement a fixed point version (maybe on a c64x or a c55x if it has enough cycles).
  • Try to understand how filter adaptation effects the CNCC DTD (both my version and the original).
  • Try to understand how regularization effects the convergence of the adaptive filter. Too large a value will prevent it from converging far enough (this is like adding noise). Too small a value will cause the filter to blow up.
  • Find a more effective method for moving data off the DSP in real-time. This will make it easier to study what is going on in a real environment.
  • Find a way to add more microphones.
  • Figure out how to reduce acoustic and electrical noise. This is a major headache...
  • Look into the multiple loud speaker problem.
  • Look into the multiple source (human speaker) problem.
  • Look into placing the beamformer before the AEC.
  • Look into state space algorithms for dealing with source location in a room. (I've seen a few.)
  • Use an IIR non-adaptive filter to enhance AEC performance or reduce the number of adaptive filter taps. (See thesis for reference.)
  • Use the calculated bearing lines, sent as time delays over RTDX, to control a video camera mounted on a stepper motor. Take a look at Dr. Hoover's advanced microcomputers lab for controlling a stepper motor from a PC.
  • Use the DAA chip to accept input from a phone call instead of speaker in from the computer.
  • Add poles after the beamformer to reduce the number of coefficients on the adaptive FIR filters.
  • Figure out how to correct the wide beam response (so it doesn't low pass filter the signal).