OSError: [Errno 30] Read-only file system: '/static' on MacOS+Visual Code

I have written below code to save spectrograms of uploaded wav file to a specific folder say '/static/images/spectrograms' however, I am getting OSError: [Errno 30] Read-only file system: '/static'. Could someone please suggest how can this be rectified?

def saveMel2(y, directory): N_FFT = 1024 # Number of frequency bins for Fast Fourier Transform HOP_SIZE = 1024 # Number of audio frames between STFT columns SR = 44100 # Sampling frequency N_MELS = 30 # Mel band parameters WIN_SIZE = 1024 # number of samples in each STFT window WINDOW_TYPE = 'hann' # the windowin function FEATURE = 'mel' # feature representation spectral_centroids = librosa.feature.spectral_centroid(y=y, sr=sr)[0] frames = range(len(spectral_centroids)) t = librosa.frames_to_time(frames) plt.rcParams['figure.figsize'] = (10,2) fig = plt.figure(1,frameon=False) DPI = 72 fig.set_size_inches(224/float(DPI),224/float(DPI)) ax = plt.Axes(fig, [0., 0., 1., 1.]) ax.set_axis_off() fig.add_axes(ax) ax1 = plt.subplot(2, 1, 1) spectogram = librosa.display.specshow( librosa.core.amplitude_to_db( librosa.feature.melspectrogram( y=y, sr=SR)),x_axis='time', y_axis='mel') plt.subplot(2, 1, 2, sharex=ax1) librosa.display.waveplot(y=y, sr=sr, alpha=0.4) plt.plot(t, normalize(spectral_centroids), color='r') fig.savefig(directory) fig.clear() ax.cla() plt.clf() plt.close('all')
def create_spectrogram(file): size = {'desired': 10, # [seconds] 'minimum': 5, # [seconds] 'stride' : 0, # [seconds] 'name': 5 } directory= '/static/images/spectrograms' step=1 if step>0: for birdnr,path in enumerate(file): if not os.path.exists(directory): os.makedirs(directory) if not os.path.exists(directory+path.rsplit('/',1)[1].replace(' ', '')[:-4]+"1_1.png"): y, sr = librosa.load(path,mono=True) y = no.reduce_noise(y, sr) step = (size['desired']-size['stride'])*sr nr=0 for start, end in zip(range(0,len(y),step),range(size['desired']*sr,len(y),step)): nr=nr+1 if end-start > size['minimum']*sr: melpath=path.rsplit('/',1)[1] melpath=path+melpath.replace(' ', '')[:-4]+str(nr)+"_"+str(nr)+".png" saveMel2(y[start:end],melpath) else: print("Error: Stride should be lower than desired length.")
8 Reset to default

Know someone who can answer? Share a link to this question via email, Twitter, or Facebook.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like