Exemplo n.º 1
0
class VoIPAlsaOutgoingCall(VoIPOutgoingCall):
    def __init__(self, *args, **kwargs):
        super(VoIPAlsaOutgoingCall, self).__init__(*args, **kwargs)
        self.playback_device = None
        self.capture_device = None
        self.ctrl.set_send_audio_frame_callback(self._read_frame)
        self.ctrl.set_recv_audio_frame_callback(self._write_frame)

    def build_capture_device(self):
        self.capture_device = PCM(PCM_CAPTURE, PCM_NONBLOCK)
        self.capture_device.setrate(48000)
        self.capture_device.setperiodsize(960)
        self.capture_device.setchannels(1)

    def build_playback_device(self):
        self.playback_device = PCM(mode=PCM_NONBLOCK)
        self.playback_device.setrate(48000)
        self.playback_device.setperiodsize(960)
        self.playback_device.setchannels(1)

    def _read_frame(self, length: int):
        if not self.capture_device:
            self.build_capture_device()
        _, frame = self.capture_device.read()
        return frame

    def _write_frame(self, frame: bytes):
        if not self.playback_device:
            self.build_playback_device()
        self.playback_device.write(frame)
Exemplo n.º 2
0
class AudioCapture(object):
    def __init__(self):
        os = system()

        if os == 'Windows':
            self.usuario = environ['USERNAME']
        else:
            self.usuario = environ['USER']

        try:
            self.capturarAudio()
            self.guardarAudio()
        except Exception as e:
            print e

    def capturarAudio(self):
        self.captura = PCM(PCM_CAPTURE)
        self.captura.setchannels(1)  # default 2
        self.captura.setrate(44100)  # default 44100
        self.captura.setformat(PCM_FORMAT_S16_LE)  # default PCM_FORMAT_S16_LE
        self.captura.setperiodsize(1024)  # default 32

    def guardarAudio(self):
        if not 'audio' in listdir('./'):
            mkdir('audio')

        tiempo = strftime("%d %b %Y_%H:%M:%S", gmtime())
        miAudio = './audio/' + self.usuario + '_' + tiempo + '.wav'

        audio = wave.open(miAudio, 'w')
        audio.setnchannels(1)
        audio.setsampwidth(2)
        audio.setframerate(44100)

        while True:
            try:
                length, data = self.captura.read()
                audio.writeframes(data)
            except KeyboardInterrupt:
                break