Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- import soundfile
- def level_cross(levels, a, b):
- a_level = 0
- b_level = 0
- if a > b:
- a, b = b, a
- for i in range(len(levels)):
- if a < levels[i]:
- a_level = i
- break
- for i in range(len(levels)):
- if b < levels[i]:
- b_level = i
- break
- return range(a_level, b_level)
- data, rate = soundfile.read('sig0001.wav')
- umax = max(data)
- umin = min(data)
- N = 32
- deltaU = (umax - umin) / N
- Ulevels = [(i - N / 2) * deltaU for i in range(N)]
- S = 0
- Nlevels = [0 for i in range(len(Ulevels))]
- for j in range(1, len(data)):
- increase_list = level_cross(Ulevels, data[j - 1], data[j])
- if increase_list:
- for index in increase_list:
- Nlevels[index] += 1
- for value in Nlevels:
- S += value
- print(S)
- print(*Ulevels)
- print(*Nlevels)
- chances = [Nlevels[i] / S for i in range(len(Ulevels))]
- print(*chances)
- Uavg = 0
- for i in range(len(chances)):
- Uavg += Ulevels[i] * chances[i]
- sigma = 0
- for i in range(len(chances)):
- sigma += (Ulevels[i] - Uavg) * (Ulevels[i] - Uavg) * chances[i]
- sigma = math.sqrt(sigma)
- for i in range(len(chances) - 1, -1, -1):
- if chances[i] == 0:
- del chances[i]
- del Ulevels[i]
- H = 0
- for i in range(len(chances)):
- H -= chances[i] * math.log(chances[i])
- nu = math.exp(H) / math.sqrt(2 * math.pi * sigma * sigma)
- print(nu)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement