How to convert an excel file (.csv) to a .wav format/any other audio format file?

85 views (last 30 days)
Hi,
I have an excel file which has ~200k data samples stored in one column and I want to convert the data from that file into an audio file. But whenever I use the excel file, there is almost no sound. I want to play it at 40khz frequency.
I am just using this code:
clearvars
a=xlsread('w3.csv'); %read the xls table
figure,plot(a) %this is your signal
xlim([0 200704])
sound(a,40000) %play the signal
audiowrite('w3.wav',a,40000,'BitsPerSample',16);
Can someone help? Thanks.

Accepted Answer

Scott MacKenzie
Scott MacKenzie on 11 Mar 2022
Edited: Scott MacKenzie on 11 Mar 2022
I was able to play your audio data and save it as a .wav file. It's some sort of noise along with a dripping sound. But, I had to first rescale the data to fall between -1 and 1:
clearvars
a = xlsread('temp.csv'); % this is your w3.csv file
a = rescale(a, -1, 1);
figure,plot(a) %this is your signal
xlim([0 200704])
sound(a,40000) %play the signal
audiowrite('w3.wav',a,40000,'BitsPerSample',16);
  1 Comment
Giggs B.
Giggs B. on 12 Mar 2022
Hi,
Yes! Thanks, it the sound of waterflow from a pipe. However, I wanted to know the logic behind that why would I need to convert it to -1 to +1. I also checked other ranges such as 0 to 1 or -5 to +5 or -10 to 10 and they all gave expected results.

Sign in to comment.

More Answers (1)

Peter Perkins
Peter Perkins on 14 Mar 2022
This
should give a hint that xlsread is not the right way to go. In this case, you want to use readmatrix:
a = readmatrix("w3.csv")
  5 Comments
Giggs B.
Giggs B. on 14 Mar 2022
Oh I see, yes then that looks some problem on my end. I will try to figure it out, starting from where you suggested. Thanks!

Sign in to comment.

Categories

Find more on Audio I/O and Waveform Generation in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!