Gibt es eine Möglichkeit fertige codierte.flac Dateien in eine feste vhdl st_logic_vector Datei umzuwandeln (also nur die audio sampels)? Grüße Jan
Jan schrieb: > Gibt es eine Möglichkeit Drehen wir den Spieß mal um, dann wird ein Schuh daraus: Warum sollte es keine Möglichkeit geben so was zu tun? Allerdings wirst du kaum ein fertiges Tool finden, das das kann. die Arbeit wirst du selber machen müssen... > Gibt es eine Möglichkeit fertige codierte.flac Dateien in eine feste > vhdl st_logic_vector Datei umzuwandeln (also nur die audio sampels)? Gibt es eins Möglichkeit, diese Datei in eine WAV-Datei umzuwandeln? Denn ab dort ist es ungemein einfacher, die Daten einzulesen... > Gibt es eine Möglichkeit fertige codierte.flac Dateien in eine feste > vhdl st_logic_vector Datei umzuwandeln (also nur die audio sampels)? Wofür? Für eine Simulation? Oder willst du die Audio-Daten auf diese Art ins FPGA packen?
Kennst du Matlab? Ich denke das sollte da recht einfach gehen, audioread ließt deine n samples lange .flac Dateie und wandelt sie dir in eine 2xn Matlab-Matrix. Schreib nun ein Skript, welches zuerst die Matrix a mit deinen Samples anlegt, danach ein textfile anlegt und öffnet. File ID abspeichern und dann in einer for-Schleife mit der Zählvariable i einen String an nach der Art
1 | vector = ['signal sample_left' num2str(i) ': std_logic_vector(' num2str(length(de2bi(a(1:1))-1) ' downto 0) := "' mat2str(de2bi(a(1:i))) '";']; |
anlegen. Danach noch in der for Schleife diesen String mit irgendwas wie
1 | fprintf(File_ID, '%s /n', vector) |
Zeile für Zeile in deinem Textfile ablegen. Damit hättest du dann alle n linken Samples in n verschiedenen Std_logic_vector umgewandelt und der Inhalt deines Textfiles sähe z.B. so aus (für die Unwahrscheinliche Bitbreite von 8 Bit in der .flac Datei :D ): signal sample_left1: std_logic_vector (7 downto 0) := "01001101"; signal sample_left2: std_logic_vector (7 downto 0) := "01001010"; signal sample_left3: std_logic_vector (7 downto 0) := "01011100"; signal sample_left4: std_logic_vector (7 downto 0) := "10000010"; usw... Ich hab oben stehendes jetzt nur mal eben so aus dem Kopf geschrieben und nicht laufen lassen, da ich gerade hier kein Matlab habe und garantiere somit nicht für einen Flüchtigkeitsfehler. Aber ich denke der Ansatz wird damit deutlich?
Reden wir hier von offline- oder realtime-Konversion? Einen flac-decoder in VHDL zu machen ist sicher nicht so ohne, gfs gibt es da was. Wäre auch für meine aktuelle Anwendung interessant. Offline geht das mit jedem flac-Player, den man auf eine wave-Datei richtet, oder mit den einschlägigen Audioprogrammen. Die WAVE-Datei kann man mit SOC in ein binary verwandeln und (z.B. mit Excel) dann in eine Const-Struktur verwandeln. Viel wird da aber in einen FPGA nicht reinpassen. Wenn, muss das per Software direkt in ein RAM geschrieben werden und auch das ist ja begrenzt. Also WAV in ein DDR-RAM.
Upps, ich sehe gerade, da gab es eine zeitgleiche Antwort. Stimmt, MATLAB ist immer eine Lösung, hat aber nicht jeder. Vielleicht geht es auch mit Octave?
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.