application_code_exp2 (2)
application_code_exp2 (2)
"""audio_password_authentication.ipynb
https://colab.research.google.com/drive/1sSwHvXkENx32Rh7g1I6FgbqDIUlUVwY
x
"""
import numpy as np
import scipy.io.wavfile as wav
import scipy.signal as signal
import matplotlib.pyplot as plt
from pydub import AudioSegment
import librosa
import librosa.effects
def load_audio(filename):
sample_rate, data = wav.read(filename)
if data.ndim > 1:
data = data.mean(axis=1)
data = data.astype(np.float32)
data = librosa.util.normalize(data) # Normalize amplitude
return sample_rate, data
def main():
stored_audio_file = '/content/password.m4a'
stored_wav_file = '/content/password.wav'
convert_to_wav(stored_audio_file, stored_wav_file)
test_audio_files = [
'/content/test-1.m4a',
'/content/test-2.m4a',
'/content/test-3.m4a',
'/content/test-4.m4a'
]
threshold = 0.02
min_length = min(len(stored_password_filtered),
len(test_password_filtered))
stored_password_filtered = stored_password_filtered[:min_length]
test_password_filtered = test_password_filtered[:min_length]
plot_signal(stored_password_filtered, stored_sample_rate,
'Stored Audio Password')
plot_signal(test_password_filtered, test_sample_rate, f'Test
Audio Password: {test_wav_file}')
correlation = compute_correlation(stored_password_filtered,
test_password_filtered)
print(f"Correlation with {test_wav_file}: {correlation:.2f}")
if __name__ == "__main__":
main()