#coding:utf-8 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 = "seeed-2mic-voicecard" 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() # audio_data should be raw_data 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) # 注册ctrl-c中断 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()