Convert .csv to .wav audio
Ältere Kommentare anzeigen
I am fairly new to matlab
I wanted to convert a comma separated value (.csv) file to a Wave (.wav) audio file while also plotting it.
I saw this previously answered Here on matlab answers but I had a few questions and some errors, for the sake of simplicity I have attached the code and the csv file here
error shown is
Undefined function or variable 'y'.
Error in Untitled (line 17)
audiowrite('audio_output.wav',y,Fs)
and I did not understand why in the code the variable 'y' and 'Fs' are there in code
clc;
clear all;
close all;
data=csvread("output.csv");
time=data(: ,1);
output=data(: ,2);
plot(time,output);
save('aec.mat','time','output');
load aec.mat
filename='audio_output.wav';
Fs=6000;
audiowrite('audio_output.wav',y,Fs)
clear y Fs
[y,Fs]=audioread(filename);
sound(y,Fs);
Akzeptierte Antwort
Weitere Antworten (2)
Mehreen Jabbeen
am 25 Apr. 2021
clc;
clear all;
close all;
y=csvread("original.csv");
display(y)
filename='yes.wav';
Fs=16000;
audiowrite(filename,y,Fs)
clear y Fs
[y,Fs]=audioread(filename);
display(y)
display(Fs)
sound(y,Fs);
The time in the file is not uniformly sampled. The data needs to be resampled before being written to a file. Also, the file contains duplicate times with different data.
From previous discussion and the evidence of the file, we know that the file is intended to represent 2.5 seconds. The number of entries in the file is about 7 1/2 times greater than 2.5 seconds * 6000 samples/second .
We cannot just resample because the input is not regular timesteps. We cannot just use fft methods either for the same reason. We cannot use interp1 because of the duplicate times.
data = csvread("output.csv");
time = data(: ,1);
output = data(: ,2);
filename='audio_output.wav';
Fs=6000;
TT = timetable(output, 'RowTimes', seconds(time));
TT = retime(TT, 'regular', 'mean', 'TimeStep', seconds(1/Fs));
t = TT.Properties.RowTimes;
y = rescale(TT.output, -1, 1);
audiowrite('audio_output.wav', y, Fs)
plot(t, y)
sound(y, Fs);
Kategorien
Mehr zu Transforms finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
