12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import pyaudio
- import wave
- import json
- import signal
- import sys
- import os
- RECORD_RATE = 16000
- RECORD_CHANNELS = 2
- RECORD_WIDTH = 2
- CHUNK = 1024
- RECORD_SECONDS = 60
- WAVE_OUTPUT_FILENAME = "./output.wav"
- RECORD_DEVICE_NAME = "USB Camera-B4.09.24.1"
- p = pyaudio.PyAudio()
- stream = p.open(
- rate=RECORD_RATE,
- format=p.get_format_from_width(RECORD_WIDTH),
- channels=RECORD_CHANNELS,
- input=True,
- start=False)
- wave_file = wave.open(WAVE_OUTPUT_FILENAME, "wb")
- def record():
- wave_file.setnchannels(RECORD_CHANNELS)
- wave_file.setsampwidth(2)
- wave_file.setframerate(RECORD_RATE)
- stream.start_stream()
- print("* recording")
- for i in range(0, int(RECORD_RATE / CHUNK * RECORD_SECONDS)):
- data = stream.read(CHUNK)
- wave_file.writeframes(data)
-
- print("* done recording")
- stream.stop_stream()
- wave_file.close()
-
- return("record end")
- def sigint_handler(signum, frame):
- stream.stop_stream()
- stream.close()
- p.terminate()
- wave_file.close()
- print 'catched interrupt signal!'
- sys.exit(0)
- signal.signal(signal.SIGINT, sigint_handler)
- print p.get_device_count()
- device_index=-1
- for index in range(0,p.get_device_count()):
- info=p.get_device_info_by_index(index)
- device_name = info.get("name")
- print device_name
- print "\n"
- if device_name.find(RECORD_DEVICE_NAME) != -1:
- device_index=index
- break
- if device_index != -1:
- print "find the device"
- stream.close()
- stream = p.open(
- rate=RECORD_RATE,
- format=p.get_format_from_width(RECORD_WIDTH),
- channels=RECORD_CHANNELS,
- input=True,
- input_device_index = device_index,
- start=False)
- else:
- print "don't find the device"
-
- record()
|