Hallo community,
es geht um folgendes Problem:
Über ein Mikrofon wird Sprache in Echtzeit übertragen. Leider werden
dabei extrem viele, laute Nebengeräusche durch Lüfter, Motorgeräusch
usw. eingefangen. Um diese Geräusche zu eliminieren, möchte ich
folgendes tun:
-Development kit mit DSP kaufen
-Kit auf platine später auflöten, auf der Platine befindet sich dann ADC
und Stecker für Mikrofon
Der Algorithmus besteht aus folgenden Modulen:
DFT - Blockbildung aus mehreren Abtastwerten - Erkennung ob Sprache
aktiv ist - bei nicht aktiver Sprache->Abspeichern des Datenblocks - bei
aktiver Sprache-> Subtratktion des Datenblocks mit keiner Sprache von
Datenblock mit Sprache=> Erhofftes Ergebnis: Erhebliche Dämpfung des
Hintergrundlärms - inverse DFT
Fragen bzgl. DFT:
1. Habe ich richtig erkannt das ich um eine Umwandlung von Zeit in
Frequenzbereich für einen geeigneten dynamischen Filter nicht umgehen
kann?
2. Gibt es Möglichkeiten die Implementierung der DFT zu umgehen (durch
Autocode oder bestehende Codes)?
Ich habe von FFTW und Spiral gelesen. Es handelt sich jedoch
lizenzbedingt um nichtkommerzielle Nutzung der Produkte.
3. Auf der Seite:
http://www.dspdimension.com/admin/dft-a-pied/
Habe ich folgenden Code entdeckt:
1 | #define M_PI 3.14159265358979323846
|
2 |
|
3 | long bin;
|
4 | for (bin = 0; bin <= transformLength/2; bin++) {
|
5 |
|
6 | /* frequency */
|
7 | frequency[bin] = (float)bin * sampleRate / (float)transformLength;
|
8 | /* magnitude */
|
9 | magnitude[bin] = 20. * log10( 2. * sqrt( sinPart[bin] * sinPart[bin] +
|
10 | cosPart[bin] * cosPart[bin]) /
|
11 | (float)transformLength);
|
12 |
|
13 | /* phase */
|
14 | phase[bin] = 180.*atan2(sinPart[bin], cosPart[bin]) / M_PI - 90.;
|
15 | }
|
Ist dieser so realisierbar oder ist die Implementierung auf dem DSP wie
in anderen Beispielen einige hundert Zeilen lang?
4. Gibt es bestehende für mich nutzbare Codes für die Erkennung von
aktiver oder inaktiver Sprache?
5. Welcher DSP bevorzugt ihr nach den Aspekten: Firma, ADC integriert
oder nicht, Entwicklungsumgebung der Software usw.
Vielen Dank im Vorraus