-
Notifications
You must be signed in to change notification settings - Fork 0
/
Decibel_Conversion_of_Audio.py
65 lines (47 loc) · 2 KB
/
Decibel_Conversion_of_Audio.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Importing required libraries
import audioop
import pandas as pd
import boto3
import json
import wave
# Putting in for general knowledge
# 0 dB: human hearing threshold
# 20 dB: rustling leaves
# 40 dB: quiet library
# 60 dB: normal conversation
# 80 dB: screaming baby
# 100 dB: chain saw
# 120 dB: live rock concert
# 140 dB: jet engine
# decibel = 20 * log10(rms)
# Definind required variables
input_bucket = '********'
AWS_ACCESS_KEY_ID = '********'
AWS_SECRET_ACCESS_KEY = '********'
# Establishing connection with s3
s3 = boto3.resource('s3', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, region_name='ap-south-1')
bucket = s3.Bucket(input_bucket)
# Downloading an audio file from s3 to local system
bucket.download_file('****{wave file URL ob s3}****.wav',
r'../path_for_local_system/recording.wav')
with open(r'../../decibel_values.csv', 'a') as f:
f.write('recording_name', 'sample_width', 'n_frames', 'avg', 'rms', 'avgpp', 'zero_crossings', 'maxpp', 'min_max')
f.write(str(a, wav.getsampwidth(),
wav.getnframes(),
audioop.avg(string_wav, wav.getsampwidth()),
audioop.rms(string_wav, wav.getsampwidth()),
audioop.avgpp(string_wav, wav.getsampwidth()),
audioop.cross(string_wav, wav.getsampwidth()),
audioop.maxpp(string_wav, wav.getsampwidth()),
audioop.minmax(string_wav, wav.getsampwidth()))
)
wav = wave.open(r'../../recordings.wav')
string_wav = wav.readframes(wav.getnframes())
print('getsampwidth', wav.getsampwidth())
print('get n frmaes', wav.getnframes())
print('avg: ', audioop.avg(string_wav, wav.getsampwidth()))
print('rms: ', audioop.rms(string_wav, wav.getsampwidth()))
print('avgpp: ', audioop.avgpp(string_wav, wav.getsampwidth()))
print('zero_crossings: ', audioop.cross(string_wav, wav.getsampwidth()))
print('maxpp: ', audioop.maxpp(string_wav, wav.getsampwidth()))
print('max min: ', audioop.minmax(string_wav, wav.getsampwidth()))