Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.43 KB | None | 0 0
  1. import math
  2.  
  3. import soundfile
  4.  
  5.  
  6. def level_cross(levels, a, b):
  7.     a_level = 0
  8.     b_level = 0
  9.     if a > b:
  10.         a, b = b, a
  11.     for i in range(len(levels)):
  12.         if a < levels[i]:
  13.             a_level = i
  14.             break
  15.     for i in range(len(levels)):
  16.         if b < levels[i]:
  17.             b_level = i
  18.             break
  19.     return range(a_level, b_level)
  20.  
  21.  
  22. data, rate = soundfile.read('sig0001.wav')
  23.  
  24. umax = max(data)
  25. umin = min(data)
  26. N = 32
  27. deltaU = (umax - umin) / N
  28. Ulevels = [(i - N / 2) * deltaU for i in range(N)]
  29.  
  30. S = 0
  31. Nlevels = [0 for i in range(len(Ulevels))]
  32.  
  33. for j in range(1, len(data)):
  34.     increase_list = level_cross(Ulevels, data[j - 1], data[j])
  35.     if increase_list:
  36.         for index in increase_list:
  37.             Nlevels[index] += 1
  38.  
  39. for value in Nlevels:
  40.     S += value
  41.  
  42. print(S)
  43. print(*Ulevels)
  44. print(*Nlevels)
  45.  
  46. chances = [Nlevels[i] / S for i in range(len(Ulevels))]
  47. print(*chances)
  48.  
  49. Uavg = 0
  50. for i in range(len(chances)):
  51.     Uavg += Ulevels[i] * chances[i]
  52.  
  53. sigma = 0
  54. for i in range(len(chances)):
  55.     sigma += (Ulevels[i] - Uavg) * (Ulevels[i] - Uavg) * chances[i]
  56. sigma = math.sqrt(sigma)
  57.  
  58. for i in range(len(chances) - 1, -1, -1):
  59.     if chances[i] == 0:
  60.         del chances[i]
  61.         del Ulevels[i]
  62.  
  63. H = 0
  64. for i in range(len(chances)):
  65.     H -= chances[i] * math.log(chances[i])
  66.  
  67. nu = math.exp(H) / math.sqrt(2 * math.pi * sigma * sigma)
  68.  
  69. print(nu)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement