Advertisement
Guest User

Untitled

a guest
Dec 14th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. import wave
  2. from time import time
  3.  
  4. import numpy as np
  5. import pyaudio
  6. import audioop
  7. from collections import OrderedDict
  8. from scipy import signal
  9.  
  10.  
  11. class DefaultListOrderedDict(OrderedDict):
  12. '''
  13. Ordered Dict of list to hold old and new RMS values
  14. '''
  15.  
  16. def __missing__(self, k):
  17. self[k] = []
  18. return self[k]
  19.  
  20.  
  21. FORMAT = pyaudio.paInt16
  22. CHUNK = 2048
  23. WIDTH = 2
  24. CHANNELS = 1
  25. RATE = 44100
  26. RECORD_SECONDS = 3
  27. FACTOR = 7
  28.  
  29. TT = time()
  30. freq = 100
  31. newfreq = 100
  32. phase = 0
  33.  
  34.  
  35. def callback(in_data, frame_count, time_info, status):
  36. # global TT, phase, freq, newfreq
  37. # if newfreq != freq:
  38. # phase = 2 * np.pi * TT * (freq - newfreq) + phase
  39. # freq = newfreq
  40. # left = (np.sin(phase + 2 * np.pi * freq * (TT + np.arange(frame_count) / float(RATE))))
  41. # data = np.zeros((left.shape[0] * 2,), np.float32)
  42. # data[::2] = left
  43. # data[1::2] = left
  44. # TT += frame_count / float(RATE)
  45. # return (data, pyaudio.paContinue)
  46.  
  47. imp_ff = signal.filtfilt(b, a, np.fromstring(in_data, dtype=np.int16))
  48. return str(imp_ff)
  49.  
  50.  
  51. rmsdict = DefaultListOrderedDict()
  52.  
  53. p = pyaudio.PyAudio()
  54.  
  55. stream = p.open(format=FORMAT,
  56. channels=CHANNELS,
  57. rate=RATE,
  58. input=True,
  59. output=True,
  60. frames_per_buffer=CHUNK)
  61. # stream_callback=callback)
  62.  
  63. stream_out = p.open(format=FORMAT,
  64. channels=CHANNELS,
  65. rate=RATE,
  66. output=True,
  67. frames_per_buffer=CHUNK)
  68.  
  69. wf = wave.open("C:\SW\sample.wav", 'rb')
  70. start = time()
  71. print("* recording from microphone")
  72. isGoingLouder = True
  73.  
  74. b, a = signal.butter(2, 0.03, analog=False)
  75.  
  76. while True:
  77. data = stream.read(CHUNK)
  78. data = wf.readframes(CHUNK)
  79. # stream_out.write(data)
  80.  
  81.  
  82. # new_data = audioop.mul(data, WIDTH, FACTOR)
  83. # # audioop.
  84. # stream_out.write(new_data, CHUNK)
  85. #
  86. # if isGoingLouder:
  87. # FACTOR += 0.1
  88. # if FACTOR > 9:
  89. # isGoingLouder = False
  90. # else:
  91. # FACTOR -= 0.1
  92. # if FACTOR < 0:
  93. # isGoingLouder = True
  94. # print(FACTOR)
  95. #
  96. # now = time()
  97. # if now - start > 1 / 24.:
  98. # newfreq = 200 + np.sin(
  99. # 2 * np.pi * 1 / 20. * now) * 100 # update the frequency This will depend on y on the future
  100. # print("Frequency = " + str(newfreq))
  101. # start = now
  102.  
  103. print("* done recording")
  104.  
  105. stream.stop_stream()
  106. stream.close()
  107.  
  108. p.terminate()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement