I have multiple audio files in one folder having file format like C_01_ECHO_FA.wav, C_01_ECHO_FG.wav, C_01_ECHO_MK.wav, C_01_ECHO_ML.wav and again C_02_ECHO_FA.wav, C_02_ECHO_FG.wav, C_02_ECHO_MK.wav, C_02_ECHO_ML.wav and so on like this… The sampling freq of these files are 48k. I need to read all the audio files one by one and resample them to 8k and then write all output audio files in different folder. For the single file, i did like this but i need to do for all. [y,Fs] = audioread('C_01_ECHO_FA.wav'); y_resamp = resample(y,8000,48000); audiowrite('C_01_ECHO_FA_new.wav',y_resamp,8000);
MATLAB: Reading, resampling and writing audio files
resample
Related Solutions
You have
speech = ('coch4.wav');speech2 = speech;
So your speech2 filename is the same as your speech filename.
[y,Fs]=audioread(speech2); %don't use wavread or audioread
So you read from coch4.wav via speech2 filename
audiowrite(speech, speech_trimmed, 44100);
and then you write to the file name given by speech, which is the same as the filename given by speech2, so you are writing to the same file that you read the data from.
You can get a directory and then use randperm to get a list of random, non-repeated indexes, or randi to get a list of possibly repeated indexes, or you can use this program I wrote that will play either a random wave file or one that you specify:
% Play a wav file. You can pass in 'random' and it will pick one at random from the folder to play.
% PlaySoundFile(handles.soundFolder, 'chime.wav');
% PlaySoundFile(handles.soundFolder, 'random');
function PlaySoundFile(soundFolder, baseWavFileName) try % Read the sound file into MATLAB, and play the audio.
% soundFolder = fullfile(soundFolder, 'Sound Files');
if ~exist(soundFolder, 'dir') warningMessage = sprintf('Warning: sound folder not found:\n%s', soundFolder); WarnUser(warningMessage); return; end if strcmpi(baseWavFileName, 'random') itWorked = false; tryCount = 1; while itWorked == false % Pick a file at random.
filePattern = fullfile(soundFolder, '*.wav'); waveFiles = dir(filePattern); numberOfFiles = length(waveFiles); % Get a random number
fileToPlay = randi(numberOfFiles, 1); baseWavFileName = waveFiles(fileToPlay).name; fullWavFileName = fullfile(soundFolder, baseWavFileName); waveFileData = -1; try if exist(fullWavFileName, 'file') [waveFileData, Fs, nbits, readinfo] = wavread(fullWavFileName); sound(waveFileData, Fs); % soundsc(y,Fs,bits,range);
else warningMessage = sprintf('Warning: sound file not found:\n%s', fullWavFileName); WarnUser(warningMessage); end % It worked. It played because the audio format was OK.
itWorked = true; catch % Increment the try count and try again to find a file that plays.
tryCount = tryCount + 1; if tryCount >= numberOfFiles break; end end end % of while()
else % baseWavFileName = 'Chime.wav';
fullWavFileName = fullfile(soundFolder, baseWavFileName); waveFileData = -1; if exist(fullWavFileName, 'file') [waveFileData, Fs, nbits, readinfo] = wavread(fullWavFileName); sound(waveFileData, Fs); % soundsc(y,Fs,bits,range); else warningMessage = sprintf('Warning: sound file not found:\n%s', fullWavFileName); WarnUser(warningMessage); end end catch ME if strfind(ME.message, '#85') % Unrecognized format. Play chime instead.
fprintf('Error in PlaySoundFile(): %s.\nUnrecognized sound format in file:\n\n%s\n', ME.message, fullWavFileName); baseWavFileName = 'Chime.wav'; fullWavFileName = fullfile(soundFolder, baseWavFileName); waveFileData = -1; if exist(fullWavFileName, 'file') [waveFileData, Fs, nbits, readinfo] = wavread(fullWavFileName); sound(waveFileData, Fs); % soundsc(y,Fs,bits,range); end end errorMessage = sprintf('Error in PlaySoundFile().\nThe error reported by MATLAB is:\n\n%s', ME.message); fprintf('%s\n', errorMessage); WarnUser(errorMessage); end return; % from PlaySoundFile
By the way, WarnUser is simply
function WarnUser(message)uiwait(warndlg(message));
Best Answer