Beispiel #1
0
def get_user_selected_input_name() -> str:
    from pupil_audio.utils.pyaudio import DeviceInfo

    default_device = DeviceInfo.default_input()
    if default_device is None:
        print("No default input device availabe!")
        exit(-1)

    input_names = sorted(device.name for device in DeviceInfo.inputs_by_name().values())
    default_name = DeviceInfo.default_input().name

    print("-" * 80)
    print("PLEASE SELECT INPUT DEVICE:")

    for index, name in enumerate(input_names):
        default_flag = "D" if name == default_name else " "
        print(f"\t[{index}] {default_flag}: {name}")

    try:
        selected_name = input_names[int(input(">>> "))]
    except (ValueError, IndexError):
        print("Invalid input device number. Try again.")
        exit(-1)

    print("-" * 80)

    return selected_name
Beispiel #2
0
    def __init__(self,
                 name,
                 channels=None,
                 frame_rate=None,
                 format=None,
                 dtype=None):
        device_info = DeviceInfo.named_input(name)
        frame_rate = frame_rate or device_info.default_sample_rate
        channels = channels or device_info.max_input_channels

        assert frame_rate
        assert channels

        self.name = name
        self.frame_rate = int(frame_rate)
        self.session = PyAudioManager.acquire_shared_instance()
        self._codec = PyAudioCodec(
            frame_rate=frame_rate,
            channels=channels,
            format=format,
            dtype=dtype,
        )
        self.stream = self.session.open(
            format=self.format,
            channels=self.channels,
            rate=self.frame_rate,
            input=True,
            input_device_index=device_info["index"],
        )
Beispiel #3
0
def main():
    import pprint

    from pupil_audio.utils.pyaudio import DeviceInfo

    input_devices, output_devices = DeviceInfo.inputs_by_name(
    ), DeviceInfo.outputs_by_name()
    input_default, output_default = DeviceInfo.default_input(
    ), DeviceInfo.default_output()

    pp = pprint.PrettyPrinter(indent=4)

    print("-" * 80)

    print(f"### INPUT DEVICES (default = \"{input_default.name}\") ###")
    pp.pprint(input_devices)

    print("-" * 80)

    print(f"### OUTPUT DEVICES (default = \"{output_default.name}\") ###")
    pp.pprint(output_devices)

    print("-" * 80)
Beispiel #4
0
    def __init__(
        self,
        in_name: str,
        out_path: str,
        frame_rate=None,
        channels=None,
        dtype=None,
        source_cls=None,
        transcoder_cls=None,
        sink_cls=None,
    ):
        device = DeviceInfo.named_input(in_name)

        frame_rate = int(frame_rate or device.default_sample_rate)
        channels = int(channels or device.max_input_channels)

        self.shared_queue = queue.Queue()

        self.source_cls = source_cls or PyAudioDeviceSource
        assert issubclass(self.source_cls, PyAudioDeviceSource)

        self.transcoder_cls = transcoder_cls or PyAudio2PyAVTranscoder
        assert issubclass(self.transcoder_cls, PyAudio2PyAVTranscoder)

        self.sink_cls = sink_cls or PyAVFileSink
        assert issubclass(self.sink_cls, PyAVFileSink)

        self.transcoder = self.transcoder_cls(
            frame_rate=frame_rate,
            channels=channels,
            dtype=dtype,
        )

        self.source = self.source_cls(
            device_index=device.index,
            frame_rate=self.transcoder.frame_rate,
            channels=self.transcoder.channels,
            format=self.transcoder.pyaudio_format,
            out_queue=self.shared_queue,
        )

        self.sink = self.sink_cls(
            file_path=out_path,
            transcoder=self.transcoder,
            in_queue=self.shared_queue,
        )
Beispiel #5
0
 def available_input_devices():
     return sorted(DeviceInfo.inputs_by_name().keys())
 def update(self):
     self.devices_by_name = DeviceInfo.devices_by_name()
Beispiel #7
0
 def default_device():
     return DeviceInfo.default_output()
Beispiel #8
0
 def enumerate_devices():
     return sorted(DeviceInfo.outputs_by_name().values(),
                   key=lambda x: x.index)