Ich habe da mal eine Anfängerfrage zur Konvertierung von Abtastraten. Meine Anwendung arbeitet eigentlich durchgehend mit 8000Hz. Aber aus Bequemlichkeitsgründen hatte ich kürzlich eine sehr simple Funktion eingebaut, um 'auf die Schnelle' auch Dateien eines HW Recorders (Sony PCM-M10) direkt verwenden zu können. Nach Milchmädchenrechnung ist das dann ein Dezimierungsfaktor von 44100/8000=5.5125 (oder richtiger: 441/80). Um den Aufwand gering zu halten habe ich da einfach ein FIR Filter genommen, und dann, abhängig vom Fehlerwert, alternierend jeden 6-ten oder 5-ten Wert zurück geliefert. Das funktioniert auch grundsätzlich. Den dadurch entstehende Jitter verkraftet meine Anwendung problemlos. Aber das neue Signal hat beim Mithören im Lautsprecher ein leichtes Klingeln im Hintergrund, was mich veranlasst hat mir mal das Spektrum anzusehen. Dabei habe ich festgestellt das da neue Signalanteile entstanden sind. Zu meiner Überraschung kann mein Morsedecoder auch mit diesem Signal noch etwas anfangen, obwohl der Pegel schätzungsweise 30 dB niedriger ist. Das diese Alias Frequenzen auftreten überrascht mich nicht, aber ich kann diese rechnerisch nicht nachvollziehen. Das eigentliche Signal hat eine Frequenz von etwa 767Hz und die niedrigsten Alias Frequenzen liegen bei ca. 3133Hz und 3313Hz. Wie kommen diese rechnerisch zustande? Ich finde da keine zahlenmäßige Beziehung. Kann mich da jemand erleuchten?
Moin, So vielleicht? abs(8000*5 - 44100) - 767 = 3333 abs(8000*6 - 44100) - 767 = 3133 Gruss WK
Danke. Da hat wieder mal das berühmte Brett zugeschlagen. Ich hatte
immer von der falschen Seite angefangen.
> Stelle deinen Recorder doch einfach auf 48 Khz ein.
Da denkt man ja in der Eile nicht immer drann.
Manfred M. schrieb: >> Stelle deinen Recorder doch einfach auf 48 Khz ein. > Da denkt man ja in der Eile nicht immer drann. Kann man sich angewöhnen ;-) Andere Möglichkeiten: - 44.1K File vorher mit einem guten Sampleratekonverter auf 48K bringen. - TP Filter 2. Ordnung (fc 1 KHz) hinter deinen quick&dirty-Samplerateconverter, bringt dir deine Aliasfrequenzen um schätzungsweise 20 dB nach unten.
:
Bearbeitet durch User
> - 44.1K File vorher mit einem guten Sampleratekonverter auf 48K bringen. Da könnte ich dann aber auch gleich auf 8kHz konvertieren, was ich auch mit einigen Dateien gemacht habe. Ist ja auch nur eine Notlösung. Wenn ich planen würde das regelmässig zu machen, sollte ich mich besser mit 'libsamplerate' beschäftigen. > - TP Filter 2. Ordnung (fc 1 KHz) ... Dann lieber ein IIR 4. Ordnung für fc 2~2.5kHz dann könnte ich auch noch RTTY verarbeiten. Aber ich wollte ja nur Klarheit über die Zusammenhänge haben.
Auch bei einer ganzzahligen Abtastrate kann man nicht einfach was weglassen, wie Du das machst.
Nicht? Ich dachte immer das es ausreicht, wenn man vorher sicher stellt, das alle Frequenzen oberhalb der halben Ziel Abtastrate ausreichend bedämpft werden. Und das ich ein FIR Filter einsetze hatte ich anfangs auch (zu?) kurz angedeutet. Knickt bei 2500Hz ab und verläuft ab 4000Hz und -50dB horizontal weiter. Ich dachte das reicht.
Für einfache Ansprüche sollte das reichen. Mitunter bedämpft man es aber direkt konkret auf die zu übertragenden Frequenzen. Das ist nicht automatisch fs/2. Das mit dem wechselnden Raten am Ausgang ist keine gute Idee: Auf diese Weise konvertierst Du keine Abtastraten sondern spielst einen integeren Datenstrom mit einer wechselnden Abtastrate ab, was logischerweise zu massiven Artefakten führen muss. Praktisch modulierst Du dein Signal noch mit einem Rechteck. Bei Synthesizern macht man das, um das Signal zu scattern und zu verzerren :D
:
Bearbeitet durch User
> Für einfache Ansprüche sollte das reichen. Ich sagte ja bereits, das mein Morsedecoder damit keine Probleme hat. > Das ist nicht automatisch fs/2. Mein altes Funkgerät hat einen Frequenzgang, der irgendwo zwischen 2500Hz und 2700Hz abfällt. Der Filter mit 64 Taps ist daher so berechnet, das die angegebene Sperrdämpfung bereits bei fs/2 erreicht wird. Zur Berechnung habe ich den Parks-McClellan Algorithmus in der Version von http://www.iowahills.com/A7ExampleCodePage.html verwendet. > ... was logischerweise zu massiven Artefakten führen muss. Die halten sich merkwürdigerweise in Grenzen. Allerdings hatte ich jetzt auch versucht es "richtig zu machen", also mit Faktor 80 upsamplen und dann um 441 zu dezimieren. Durch einen anfänglichen Denkfehler hatte ich dann alle Artefakte am Ohr und mein Wasserfalldiagramm war voller Linien :-( Aber wenn man es korrekt machen will, ist der Aufwand doch erheblich. Allein die Anzahl der Taps in den Filterstufen schreckt mich ab. Für eine Echtzeitanwendung (ist angestrebt) scheint mir das zu hoch.
Eine andere "dreckige" Möglichkeit wäre folgende: immer 11 Eingangssamples (IN0 .. IN10) nehmen, Ausgangssample 1 (OUT0) ist IN0 IN1 bis IN4 werden verworfen Ausgangssample 2 (OUT1) ist (IN5 + IN6)/2 IN7 bis IN10 werden verworfen Dabei kommt dann ein relativ verzerrungsfreies Signal heraus, allerdings ist die Samplerate nicht 8 KHz, sondern 8018,181818... Hz Also ein Fehler von 0.23% Die für die maximal interessante Frequenz von etwa 2500 Hz wird also zu 2494 Hz. Sollte für eine Frequenzerkennung unerheblich sein. Das ganze ist natürlich nur auf eine Datei mit endlicher Länge anwendbar und nicht auf einen Echtzeit-Stream.
:
Bearbeitet durch User
Das ist auch eine interessante Variante. Das Ergebnis ist wohl etwa so als hätte ich um Faktor 2 erhöht um dann nur jeden 11-ten Wert zu verwenden, nur das das Aliasfilter auf der niedrigen Frequenz arbeiten kann. > Das ganze ist natürlich nur auf eine Datei mit endlicher Länge anwendbar > und nicht auf einen Echtzeit-Stream. Das sehe ich jetzt nicht so. Ich sehe keinen Grund, warum so ein System nicht mit dieser krummen Abtastrate arbeiten könnte (wenn man von der Soundkarte einmal absieht). Ich hatte kürzlich ein Programm gesehen, das mit 612.5Hz arbeitet. Du gehst wahrscheinlich davon aus, das ich das Ergebnis dann der Soundkarte dann als 8000Hz verkaufe. Allerdings müsste ich da bei meinem Wasserfall Spektrogramm einiges ändern, was ich unbequem finde. Ich benutze Mausklicks in diese Diagramm zur Frequenzselektion.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.