WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

wavread: mit anderer als originaler Abtastfrequenz auslesen?

 

AK79
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 10.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2010, 21:22     Titel: wavread: mit anderer als originaler Abtastfrequenz auslesen?
  Antworten mit Zitat      
Hallo allseits!

habe verschiedene wav-Files mit unterschiedlichen Abtastfrequenzen(-raten).
Nun habe ich ein Progrämmchen geschrieben, das mir die Files ausliest ([y,fs]=wavread)
und weiterverarbeitet (MFC-Koeffizientenbildung).
Zur besseren Handhabung möchte ich das Auslesen stets mit der gleichen
Frequenz (16kHz) machen (ungeachtet der originalen Abtastfrequenz),
damit der "soundvektor" y stets die gleiche Größe hat ( length(y) ). Bzw, damit später,
wenn ich die Melfilterbank anwende, diese gleich bleibt und nicht von der
unterschiedlichen fs (Abtastfrequenz) abhängt.
Wie könnte ich das realisieren?
Wie könnte ich "sagen", "lies wavfile mit 16kHz ab und speichere diesen so als y"?

Für Hilfe oder Ratschläge wäre ich sehr dankbar!
Vielen Dank im voraus!

Mfg, AK.
Private Nachricht senden Benutzer-Profile anzeigen


Tim
Forum-Century

Forum-Century



Beiträge: 140
Anmeldedatum: 03.11.07
Wohnort: Stuttgart
Version: 2011b+aktuellstes Release
     Beitrag Verfasst am: 15.02.2010, 21:39     Titel:
  Antworten mit Zitat      
Einfach einlesen und durch Extrapolation (irgendeiner Art) alle Spuren auf die höchste Abtastrate bringen?
Private Nachricht senden Benutzer-Profile anzeigen
 
AK79
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 10.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2010, 22:02     Titel:
  Antworten mit Zitat      
Hallo Tim!

"... auf die höchste Abtastrate bringen? " - na eben das versuche ich zu meiden Smile
Ich möchte eben, dass diese konstant 16kHz bleibt, damit ich
1) die Melfilterbank nicht jedesmal neu für jedes Sample konstruirien
muss, sondern stets die gleiche (mit fs=16kHz);
2) die Größe der Samples (length(y)) bei gleicher Dauer (10sek) auch die
gleiche ist.

Ich möchte einfach das auslesen stets mit gleicher Frequenz (ganz gleich, was die
originale Abtastfrequenz des Samples ist), dass length(y) nach
Code:
[y,x]=wavread('sample1',160000);

gleich bleibt.
Die 160000 entstehen, da ich bei 16kHz-Abtastfrequenz somit genau 10 sekunden vom sample erfassen würde.
D.h, ich hätte da genau 160000 Werte im y-vektor und vor allem die Gewissheit, dass die maximale Frequenz im
Sample 8kHz ist (und ich stets die gleiche filterbank (Mel) nehmen kann)

Evtl. noch anderen Ratschläg, wie ich dies lösen kann? Sad

PS: hoffe, meine Erklärungen sind nicht zu kompliziert und man kann verstehen, was ich möchte Smile

grüße, AK.
Private Nachricht senden Benutzer-Profile anzeigen
 
AK79
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 10.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2010, 18:56     Titel:
  Antworten mit Zitat      
Hallo wiedermal Smile

Da das thema noch als "offen" markiert ist, dachte ich, schliesse ich dies Smile
Habe nun Abhilfe gefunden.
Für die, die es interessiert: der nötige Zauberbefehl lautet "resample(y,p,q)".
Hiermit kann man all das bewerkstelligen, was in angesprochen habe.
"help resample" gibt einem die nötige Infos zusätzlich Smile

Also, hier ein Beispiel:
[y,fs]=wavread('data');
x=resample(y,8000,fs);
--> bewirkt, dass das ursprüngliche Signal auf 8kHz runtergesamplt wird.
Mit soundsc(x,8000) hört man das neue Signal und merkt den Unterschied Smile

Grüße, AK.
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 23.02.2010, 19:59     Titel:
  Antworten mit Zitat      
Hi,

ich kann mir nicht so richtig vorstellen, dass das mit resample funktioniert. Muss man da nicht ersteinmal ein timeseries object erzeugen? Eigentlich brauchst du doch bloß einen Tiefpassfilter mit 16 KHz und danach downsampeln, wenn deine Signale über 16 KHz sind und interpolieren wenn sie drunter sind. Zudem kommt es darauf an wie du die MFCC Features berechnest. Der MFCC Algorithmus kann auch selbst berechnen was die Maximalfrequenz ist und die Filterbank dementsprechend anpassen. Grundsätzlich ist es aber dennoch eine gute Idee alles auf eine Samplingrate zu bekommen. Wobei es aber wiederrum schwierig wird wenn du wirklich Signale hast die eine niedriegere Samplingrate haben.

Ich interessiere mich sehr für dieses Thema, mich würde mal interessieren wie du die MFCCs berechnest gerne auch per PM.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 23.02.2010, 20:12     Titel:
  Antworten mit Zitat      
Habe gerade gelesen, das resample wohl mehrfach verwendet wird. In der Signal Processing Toolbox macht es genau das was ich oben geschrieben habe, also Tiefpassfilter und downsampeln. Es gibt aber noch eine Funktion mit gleichem Namen, wo es um timeseries geht.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.