Пример #1
0
def add_white_noise(original_audio_path,
                    modified_audio_path,
                    target_snr_in_db,
                    offset=None,
                    duration=None):
    """

    :param original_audio_path:
    :param modified_audio_path:
    :param target_snr_in_db:
    :param offset:
    :param duration:
    """
    original_audio_data, sr = audio_manager.load_audio(
        audio_path=original_audio_path, offset=offset, duration=duration)
    modified_audio_data = audio_effects.add_white_noise(
        audio_data=original_audio_data, target_snr_in_db=target_snr_in_db)
    audio_manager.save_audio(audio_path=modified_audio_path,
                             audio_data=modified_audio_data,
                             sr=sr)
Пример #2
0
def apply_pitch_shifting(original_audio_path,
                         modified_audio_path,
                         target_pitch_shift_in_percent,
                         offset=None,
                         duration=None):
    """

    :param target_pitch_shift_in_percent:
    :param original_audio_path:
    :param modified_audio_path:
    :param offset:
    :param duration:
    """
    original_audio_data, sr = audio_manager.load_audio(
        audio_path=original_audio_path, offset=offset, duration=duration)
    modified_audio_data = audio_effects.pitch_shift(
        audio_data=original_audio_data,
        sr=sr,
        pitch_shift_in_percent=target_pitch_shift_in_percent)
    audio_manager.save_audio(audio_path=modified_audio_path,
                             audio_data=modified_audio_data,
                             sr=sr)
Пример #3
0
def apply_speed_change(original_audio_path,
                       modified_audio_path,
                       target_speed_in_percent,
                       offset=None,
                       duration=None):
    """
    :param original_audio_path:
    :param modified_audio_path:
    :param target_speed_in_percent:
    :param offset:
    :param duration:
    """
    audio_data, sr = audio_manager.load_audio(audio_path=original_audio_path,
                                              offset=offset,
                                              duration=duration)
    modified_audio_data, target_sr = audio_effects.speed_change(
        audio_data=audio_data,
        sr=sr,
        target_speed_in_percent=target_speed_in_percent)
    audio_manager.save_audio(audio_path=modified_audio_path,
                             audio_data=modified_audio_data,
                             sr=sr)
Пример #4
0
def apply_time_stretching(original_audio_path,
                          modified_audio_path,
                          target_duration_in_percent,
                          offset=None,
                          duration=None):
    """

    :param target_duration_in_percent:
    :param original_audio_path:
    :param modified_audio_path:
    :param offset:
    :param duration:
    """
    original_audio_data, sr = audio_manager.load_audio(
        audio_path=original_audio_path, offset=offset, duration=duration)
    modified_audio_data = audio_effects.time_stretch(
        audio_data=original_audio_data,
        sr=sr,
        time_stretching_in_percent=target_duration_in_percent)
    audio_manager.save_audio(audio_path=modified_audio_path,
                             audio_data=modified_audio_data,
                             sr=sr)
Пример #5
0
                                             tolerance=0.31)
# FingerprintManager object
fingerprint_manager = FingerprintManager(
    db_path="../../../Databases/Quads_Test.db")
# results path
result_path = "../../../Results_2/Quad/Granularity/"
for t in range(5, 35, 5):
    query_audios = dir_manager.find_wav_files(src_dir=src_dir)
    dir_manager.create_dir(result_path)
    count = 901
    for i in query_audios:
        audio_id = i.split("/")[7].split(".")[0]
        # loading a time series audio data from one of the query audio
        start = time.time()
        audio_data = audio_manager.load_audio(audio_path=i,
                                              sr=7000,
                                              offset=10.0,
                                              duration=t)
        # computing stft based spectrogram of time series audio data
        spectrogram = stft.compute_spectrogram_magnitude_in_db(
            audio_data=audio_data)
        # extracting spectral peaks from STFT based spectrogram
        spectral_peaks = peak_extractor.spectral_peaks(spectrogram=spectrogram)
        # generate quad based fingerprints
        audio_fingerprints = fingerprint_generator.generate_fingerprints(
            spectral_peaks=spectral_peaks[0],
            spectrogram=spectrogram,
            number_of_quads_per_second=500)
        # query matches
        match = fingerprint_manager.query_audio(
            audio_fingerprints=audio_fingerprints,
            spectral_peaks=spectral_peaks[0],
Пример #6
0
# an object to extract spectral peaks from STFT based spectrogram
peak_extractor = PeakExtractor(maximum_filter_width=150, maximum_filter_height=75)
# an object to generate fingerprints using the association of four spectral peaks
fingerprint_generator = FingerprintGenerator(
    frames_per_second=219,
    target_zone_width=2,
    target_zone_center=4,
    number_of_quads_per_second=9,
    tolerance=0.0
)
# Data manager object
fingerprint_manager = FingerprintManager(db_path="../../../Databases/Quads_Test_1.db")
count = 1
for i in reference_audios:
    audio_title = i.split("/")[5].split(".")[0]
    # loading time series audio data of one of reference audio
    audio_data = audio_manager.load_audio(audio_path=i, sr=7000)
    # computing the spectrogram of time series audio data
    spectrogram = stft.compute_spectrogram_magnitude_in_db(audio_data=audio_data)
    # extracting spectral peaks from STFT based spectrogram
    spectral_peaks = peak_extractor.extract_spectral_peaks(spectrogram=spectrogram)
    # generate fingerprints using the association of four spectral peaks
    audio_fingerprints = fingerprint_generator.generate_fingerprints(spectral_peaks=spectral_peaks[0],
                                                                     spectrogram=spectrogram)
    # storing fingerprints
    fingerprint_manager.store_fingerprints(audio_fingerprints=audio_fingerprints,
                                           spectral_peaks=spectral_peaks[0],
                                           audio_title=audio_title)
    print("Done Fingerprinting ", count, audio_title)
    count += 1
Пример #7
0
from Utilities import dir_manager
from Utilities import audio_manager
from Core import STFT
from Core import PeakExtractor

# source directory for reference audio files
src_dir = "../../../Test_Data/Reference_Audios/"
# retrieving all mp3 files under specified source directory
mp3_files = dir_manager.find_mp3_files(src_dir=src_dir)
# loading 10 seconds time series audio data from one of the reference audio file
audio_data = audio_manager.load_audio(audio_path=mp3_files[1],
                                      sr=7000,
                                      offset=10.0,
                                      duration=10.0)
# computing STFT based spectrogram for a respective time series audio data
stft = STFT(n_fft=1024, hop_length=32, sr=7000)
spectrogram = stft.compute_spectrogram_magnitude_in_db(audio_data=audio_data)
# extracting spectral peaks from STFT based spectrogram
peak_extractor = PeakExtractor(maximum_filter_height=75,
                               maximum_filter_width=150)
spectral_peaks = peak_extractor.spectral_peaks(spectrogram=spectrogram)
print(spectral_peaks[0])
Пример #8
0
SAMPLING_RATE = 7000

# a source directory for all reference audios
src_dir = "../../../Test_Data/Reference_Audios"
# retrieving all reference audios under specified source directory
reference_audios = dir_manager.find_mp3_files(src_dir=src_dir)
# Declaring an object for Short Time Fourier Transform (STFT)
stft = STFT(n_fft=1024, hop_length=32, sr=7000)
# Spectral peak extractor object
peak_extractor = PeakExtractor(maximum_filter_width=150, maximum_filter_height=75)
# Fingerprint generator object
fingerprint_generator = FingerprintGenerator(
    frames_per_second=219,
    target_zone_width=1,
    target_zone_center=2,
    number_of_quads_per_second=9,
    tolerance=0.31)
# reading 10 second audio data sampled at 7KHz
audio_data = audio_manager.load_audio(audio_path=reference_audios[0], sr=SAMPLING_RATE, offset=10.0, duration=10.0)
# computing spectrogram of times series audio data.
spectrogram = stft.compute_spectrogram_magnitude_in_db(audio_data=audio_data)
print(spectrogram)
# extracting spectral peaks from the spectrogram of the audio.
spectral_peaks = peak_extractor.extract_spectral_peaks(spectrogram=spectrogram)
print(spectral_peaks)
# generate audio fingerprints
audio_fingerprints = fingerprint_generator.generate_fingerprints(
    spectral_peaks=spectral_peaks[0],
    spectrogram=spectrogram)
print(audio_fingerprints)
Пример #9
0
    tempo information's.
'''
peak_extractor = PeakExtractor(maximum_filter_width=150,
                               maximum_filter_height=75)
'''
    Instantiating a fingerprint generator object. A fingerprint generator function will accept
    spectral peaks extracted from STFT based spectrogram of an audio and it will return audio 
    fingerprints generated using the association of four spectral peaks.
'''
fingerprint_generator = FingerprintGenerator(target_zone_width=1,
                                             target_zone_center=2,
                                             tolerance=0.31)

for i in query_audios:
    audio_data = audio_manager.load_audio(audio_path=i,
                                          offset=0.0,
                                          duration=5.0)
    spectrogram = stft.compute_spectrogram_magnitude_in_db(
        audio_data=audio_data)
    spectral_peaks = peak_extractor.spectral_peaks(spectrogram=spectrogram)
    audio_fingerprints = fingerprint_generator.generate_fingerprints(
        spectral_peaks=spectral_peaks[0])
    # print(audio_fingerprints)
    match_in_bins = match_fingerprints.match_fingerprints(
        raw_data_index=raw_data_index,
        rtree_index=r_tree_index,
        fingerprints=audio_fingerprints,
        tolerance=0.0)
    match = verify_matches.verify_matches(matches_in_bins=match_in_bins)
    print(i, match)
Пример #10
0
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
"""
from Utilities import directory_manager
from Utilities import file_manager
from Utilities import audio_manager
from EffectsManager import effects_manager

# directory path for full length reference audios
source_dir = "../../Test_Data/Reference_Audios"
# directory path for short snippet reference audios
dist_dir = "../../Test_Data/Ref_Audios/"
# reference audios
reference_audios = directory_manager.find_mp3_files(source_dir=source_dir)
for i in reference_audios[0:10]:
    audio_name = i.split("/")[4].split(".")[0]
    # reading only 5 second audio duration
    audio_excerpt, sr = audio_manager.load_audio(audio_path=i, offset=10.0, duration=5.0)
    # saving the 5 second audio duration
    audio_manager.save_audio(audio_path=dist_dir + audio_name + ".wav", audio_data=audio_excerpt, sr=sr)