Advertisement
Guest User

Untitled

a guest
Jul 10th, 2017
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. from pynput import keyboard
  2. import time
  3. import pyaudio
  4. import wave
  5.  
  6. CHUNK = 8192
  7. FORMAT = pyaudio.paInt16
  8. CHANNELS = 2
  9. RATE = 44100
  10. RECORD_SECONDS = 5
  11. WAVE_OUTPUT_FILENAME = "output.wav"
  12.  
  13. p = pyaudio.PyAudio()
  14. frames = []
  15.  
  16. def callback(in_data, frame_count, time_info, status):
  17. return (in_data, pyaudio.paContinue)
  18.  
  19. class MyListener(keyboard.Listener):
  20. def __init__(self):
  21. super(MyListener, self).__init__(self.on_press, self.on_release)
  22. self.key_pressed = None
  23.  
  24. self.stream = p.open(format=FORMAT,
  25. channels=CHANNELS,
  26. rate=RATE,
  27. input=True,
  28. frames_per_buffer=CHUNK,
  29. stream_callback = self.callback)
  30. print self.stream.is_active()
  31.  
  32. def on_press(self, key):
  33. if key == keyboard.Key.cmd_l:
  34. self.key_pressed = True
  35.  
  36. def on_release(self, key):
  37. if key == keyboard.Key.cmd_l:
  38. self.key_pressed = False
  39.  
  40. def callback(self,in_data, frame_count, time_info, status):
  41. if self.key_pressed == True:
  42. return (in_data, pyaudio.paContinue)
  43. elif self.key_pressed == False:
  44. return (in_data, pyaudio.paComplete)
  45. else:
  46. return (in_data,pyaudio.paAbort)
  47.  
  48.  
  49. listener = MyListener()
  50. listener.start()
  51. started = False
  52.  
  53. while True:
  54. time.sleep(0.1)
  55. if listener.key_pressed == True and started == False:
  56. started = True
  57. listener.stream.start_stream()
  58. print "start Stream"
  59.  
  60. elif listener.key_pressed == False and started == True:
  61. print "Something coocked"
  62. listener.stream.stop_stream()
  63. listener.stream.close()
  64. p.terminate()
  65.  
  66. wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
  67. wf.setnchannels(CHANNELS)
  68. wf.setsampwidth(p.get_sample_size(FORMAT))
  69. wf.setframerate(RATE)
  70. wf.writeframes(b''.join(frames))
  71. wf.close()
  72.  
  73. started = False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement