Example #1
0
def augment(afile, jfile, deformer, outpath):
    jam = muda.load_jam_audio(jfile, afile, strict=False)
    base = root(afile)
    outfile = os.path.join(outpath, base)
    for i, jam_out in enumerate(deformer.transform(jam)):
        muda.save('{}.{}.flac'.format(outfile, i),
                  '{}.{}.jams'.format(outfile, i),
                  jam_out,
                  strict=False)
Example #2
0
def run():

    #Captura os nomes das pastas
    names_folders = glob.glob(path_database + '*')

    for names_ in names_folders:

        #Captura o caminho completo do audio
        path_audios = glob.glob(names_ + '/*.' + audio_format)

        for path_ in path_audios:

            #Captura o nome do audio sem extensao
            audio_name = re.sub(names_, "", path_)
            audio_name = re.sub(r'/', "", audio_name)
            audio_name_wo_ext = re.sub(r'\.wav', "", audio_name)

            #Captura o caminho completo no arquivo de anotacao
            jam_path = re.sub(r'\.wav', ".jams", path_)

            #Captura o label da classe
            label = audio_name.split('-')[1]

            # A variacao de semitons e maior para as classes 1 e 6
            if label == '1' or label == '6':
                semitones = [1, 1.5, 2, 2.5, 3, 3.5]
            else:
                semitones = [1.5, 2, 2.5, 3]

            jam_orig = muda.load_jam_audio(jam_path, path_)

            #Gerando variacoes no tom
            ps = muda.deformers.PitchShift(n_semitones=semitones)
            output_name_ps_pattern = names_ + '/' + audio_name_wo_ext + '-ps-'

            #O audio modificado e salvo em um novo .wav e as deformacoes aplicadas sao salvas no seu respectivo .jams
            for i, jam_out in enumerate(ps.transform(jam_orig)):
                muda.save(output_name_ps_pattern + str(semitones[i]) + '.wav',
                          output_name_ps_pattern + str(semitones[i]) + '.jams',
                          jam_out)

            #Gerando deformacoes de ruido de fundo
            bg = muda.deformers.BackgroundNoise(n_samples=1,
                                                files=files,
                                                weight_min=0.1,
                                                weight_max=0.5)
            output_name_bg_pattern = names_ + '/' + audio_name_wo_ext + '-bg-'

            #O audio modificado e salvo em um novo .wav e as deformacoes aplicadas sao salvas no seu respectivo .jams
            for i, jam_out in enumerate(bg.transform(jam_orig)):
                bg_noise_name = files[i].split('/')[5]
                bg_noise_name_w_extension = re.sub(r'\.wav', "", bg_noise_name)
                muda.save(
                    output_name_bg_pattern + bg_noise_name_w_extension +
                    '.wav', output_name_bg_pattern +
                    bg_noise_name_w_extension + '.jams', jam_out)
Example #3
0
def deform_audio(aud, ann, deformer, aud_out, ann_out, out_dict):
    build_dirs(aud_out)
    build_dirs(ann_out)
    orig_audio = muda.load_jam_audio(ann, aud)
    filename = base(aud)
    n_dict = len(out_dict)
    for i, jam_out in enumerate(deformer.transform(orig_audio)):
        out_aud = os.path.join(aud_out,filename+'_'+out_dict[i%n_dict]+'.wav')
        out_ann = os.path.join(ann_out,filename+'_'+out_dict[i%n_dict]+'.jams')
        muda.save(out_aud, out_ann, jam_out)
Example #4
0
def augment(afile, jfile, deformer, outpath, audio_ext, jams_ext, sr=44100):
    '''Run the data through muda'''
    jam = muda.load_jam_audio(jfile, afile, sr=sr)

    base = milsed.utils.base(afile)

    outfile = os.path.join(outpath, base)
    for i, jam_out in enumerate(deformer.transform(jam)):
        muda.save('{}.{}.{}'.format(outfile, i, audio_ext),
                  '{}.{}.{}'.format(outfile, i, jams_ext),
                  jam_out, strict=False)
Example #5
0
def augment(afile, jfile, deformer, outpath, audio_ext, jams_ext):
    '''Run the data through muda'''
    jam = muda.load_jam_audio(jfile, afile)

    base = crema.utils.base(afile)

    outfile = os.path.join(outpath, base)
    for i, jam_out in enumerate(deformer.transform(jam)):
        muda.save('{}.{}.{}'.format(outfile, i, audio_ext),
                  '{}.{}.{}'.format(outfile, i, jams_ext),
                  jam_out, strict=False)
Example #6
0
def test_save():

    jam = muda.load_jam_audio('data/fixture.jams', 'data/fixture.wav')

    _, jamfile = tempfile.mkstemp(suffix='.jams')
    _, audfile = tempfile.mkstemp(suffix='.wav')

    muda.save(audfile, jamfile, jam)

    jam2 = muda.load_jam_audio(jamfile, audfile)
    jam2_raw = jams.load(jamfile)

    os.unlink(audfile)
    os.unlink(jamfile)

    assert hasattr(jam2.sandbox, 'muda')
    assert '_audio' in jam2.sandbox.muda
    assert '_audio' not in jam2_raw.sandbox.muda

    eq_(jam2.file_metadata.duration,
        librosa.get_duration(**jam2.sandbox.muda['_audio']))
Example #7
0
def test_save(jam_in, audio_file, strict, fmt):

    jam = muda.load_jam_audio(jam_in, audio_file)

    _, jamfile = tempfile.mkstemp(suffix='.jams')
    _, audfile = tempfile.mkstemp(suffix='.wav')

    muda.save(audfile, jamfile, jam, strict=strict, fmt=fmt)

    jam2 = muda.load_jam_audio(jamfile, audfile, fmt=fmt)
    jam2_raw = jams.load(jamfile, fmt=fmt)

    os.unlink(audfile)
    os.unlink(jamfile)

    assert hasattr(jam2.sandbox, 'muda')
    assert '_audio' in jam2.sandbox.muda
    assert '_audio' not in jam2_raw.sandbox.muda

    duration = librosa.get_duration(**jam2.sandbox.muda['_audio'])

    assert jam2.file_metadata.duration == duration
Example #8
0
def test_save():

    jam = muda.load_jam_audio('data/fixture.jams',
                              'data/fixture.wav')

    _, jamfile = tempfile.mkstemp(suffix='.jams')
    _, audfile = tempfile.mkstemp(suffix='.wav')

    muda.save(audfile, jamfile, jam)

    jam2 = muda.load_jam_audio(jamfile, audfile)
    jam2_raw = jams.load(jamfile)

    os.unlink(audfile)
    os.unlink(jamfile)

    assert hasattr(jam2.sandbox, 'muda')
    assert '_audio' in jam2.sandbox.muda
    assert '_audio' not in jam2_raw.sandbox.muda

    eq_(jam2.file_metadata.duration,
        librosa.get_duration(**jam2.sandbox.muda['_audio']))
Example #9
0
def test_save(jam_in, audio_file, strict, fmt):

    jam = muda.load_jam_audio(jam_in, audio_file)

    _, jamfile = tempfile.mkstemp(suffix='.jams')
    _, audfile = tempfile.mkstemp(suffix='.wav')

    muda.save(audfile, jamfile, jam, strict=strict, fmt=fmt)

    jam2 = muda.load_jam_audio(jamfile, audfile, fmt=fmt)
    jam2_raw = jams.load(jamfile, fmt=fmt)

    os.unlink(audfile)
    os.unlink(jamfile)

    assert hasattr(jam2.sandbox, 'muda')
    assert '_audio' in jam2.sandbox.muda
    assert '_audio' not in jam2_raw.sandbox.muda

    duration = librosa.get_duration(**jam2.sandbox.muda['_audio'])

    assert jam2.file_metadata.duration == duration
Example #10
0
def pitch_shifting(audio_fname,
                   jams_fname,
                   audio_folder,
                   jams_folder,
                   n_samples=5,
                   l=-2,
                   u=2):

    print(audio_folder, audio_fname)

    orig = muda.load_jam_audio(os.path.join(jams_folder, jams_fname),
                               os.path.join(audio_folder, audio_fname))

    pitchshift = muda.deformers.LinearPitchShift(n_samples=n_samples,
                                                 lower=l,
                                                 upper=u)

    for i, jam_out in enumerate(pitchshift.transform(orig)):

        muda.save(os.path.join(audio_folder, '{}_{}'.format(i, audio_fname)),
                  os.path.join(jams_folder, '{}_{}'.format(i, jams_fname)),
                  jam_out)
Example #11
0
giantsteps_key = mirdata.initialize('giantsteps_key',
                                    data_home='/scratch/qx244/data/gskey')
gs_data = giantsteps_key.load_tracks()

with open('/scratch/qx244/data/gskey/good_files.json', 'r') as fp:
    good_files = json.load(fp)

pitch_shifter = muda.deformers.LinearPitchShift(n_samples=12,
                                                lower=-5,
                                                upper=6)

for idx in tqdm(good_files.keys()):
    track = gs_data[idx]
    track_jams_path = os.path.join('/scratch/qx244/data/gskey/jams/',
                                   track.title + '.jams')

    #check if already augmented:
    if os.path.isfile(
            '/scratch/qx244/data/gskey/augmentation/{}.11.jams'.format(
                track.title)):
        continue

    j_orig = muda.load_jam_audio(track_jams_path, track.audio_path)

    for i, jam_out in enumerate(pitch_shifter.transform(j_orig)):
        muda.save(
            '/scratch/qx244/data/gskey/augmentation/{}.{:02d}.ogg'.format(
                track.title, i),
            '/scratch/qx244/data/gskey/augmentation/{}.{:02d}.jams'.format(
                track.title, i), jam_out)
Example #12
0
def deform_and_save(j_orig, deform, path):
  if hasattr(j_orig.sandbox.muda, '_audio'):
    jams_tmp = list(deform.transform(j_orig))[0]
    muda.save(path+'.wav', path+'.jams', jams_tmp)
Example #13
0
    original_wav_name = os.path.split(wav_path)[-1]
    original_wav_split = original_wav_name.split("_")
    suffix = "_".join([aug_str, instance_str])

    # Generate path of augmented WAV file.
    wav_suffix = suffix + ".wav"
    augmented_wav_split = original_wav_split[:-1] + [wav_suffix]
    augmented_wav_name = "_".join(augmented_wav_split)
    augmented_wav_path = os.path.join(out_unit_dir, augmented_wav_name)

    # Generate path of augmented JAMS file.
    jam_suffix = suffix + ".jams"
    augmented_jam_split = original_wav_split[:-1] + [jam_suffix]
    augmented_jam_name = "_".join(augmented_jam_split)
    augmented_jam_path = os.path.join(out_unit_dir, augmented_jam_name)

    # Export augmented audio and metadata.
    muda.save(augmented_wav_path, augmented_jam_path, jam)


# Print elapsed time.
print(str(datetime.datetime.now()) + " Finish.")
elapsed_time = time.time() - int(start_time)
elapsed_hours = int(elapsed_time / (60 * 60))
elapsed_minutes = int((elapsed_time % (60 * 60)) / 60)
elapsed_seconds = elapsed_time % 60.
elapsed_str = "{:>02}:{:>02}:{:>05.2f}".format(elapsed_hours,
                                               elapsed_minutes,
                                               elapsed_seconds)
print("Total elapsed time: " + elapsed_str + ".")
Example #14
0
        os.makedirs(category_path)
    for file_name in files:

        file_path = os.path.join(category_path, file_name.rsplit('.', 1)[0])

        j_orig = muda.load_jam_audio(TEMPLATE_FILE_NAME,
                                     os.path.join(SRC_PATH, class_id,
                                                  file_name))  #

        for pitch_shift in PITCH_SHIFT_LIST:
            pitch = muda.deformers.PitchShift(n_semitones=pitch_shift)
            jam_out = pitch.transform(j_orig).next()

            wav_filename = file_path + '_pitch_{0:+}.wav'.format(pitch_shift)
            jams_filename = wav_filename.replace('.wav', '.jams')
            muda.save(wav_filename, jams_filename, jam_out)

        stretch = muda.deformers.LogspaceTimeStretch(
            n_samples=TIME_STRETCH['samples'],
            lower=TIME_STRETCH['lower_bound'],
            upper=TIME_STRETCH['upper_bound'])

        for i, jam_out in enumerate(stretch.transform(j_orig)):

            wav_filename = file_path + '_stretch_' \
                           + str(TIME_STRETCH['lower_bound']) \
                           + '_' + str(TIME_STRETCH['upper_bound'])\
                           + '_{:02d}.wav'.format(i)
            jams_filename = wav_filename.replace('.wav', '.jams')

            muda.save(wav_filename, jams_filename, jam_out)