voice-changer/server/voice_changer/Local/AudioDeviceList.py
2023-05-13 14:30:15 +09:00

51 lines
1.8 KiB
Python

import sounddevice as sd
from dataclasses import dataclass
from const import ServerAudioDeviceTypes
@dataclass
class ServerAudioDevice:
kind: ServerAudioDeviceTypes = ServerAudioDeviceTypes.audioinput
index: int = 0
name: str = ""
hostAPI: str = ""
maxInputChannels: int = 0
maxOutputChannels: int = 0
def list_audio_device():
audioDeviceList = sd.query_devices()
inputAudioDeviceList = [d for d in audioDeviceList if d["max_input_channels"] > 0]
outputDeviceList = [d for d in audioDeviceList if d["max_output_channels"] > 0]
hostapis = sd.query_hostapis()
print("input:", inputAudioDeviceList)
print("output:", outputDeviceList)
print("hostapis", hostapis)
serverAudioInputDevices = []
serverAudioOutputDevices = []
for d in inputAudioDeviceList:
serverInputAudioDevice: ServerAudioDevice = ServerAudioDevice(
kind=ServerAudioDeviceTypes.audioinput,
index=d["index"],
name=d["name"],
hostAPI=hostapis[d["hostapi"]]["name"],
maxInputChannels=d["max_input_channels"],
maxOutputChannels=d["max_output_channels"],
)
serverAudioInputDevices.append(serverInputAudioDevice)
for d in outputDeviceList:
serverOutputAudioDevice: ServerAudioDevice = ServerAudioDevice(
kind=ServerAudioDeviceTypes.audiooutput,
index=d["index"],
name=d["name"],
hostAPI=hostapis[d["hostapi"]]["name"],
maxInputChannels=d["max_input_channels"],
maxOutputChannels=d["max_output_channels"],
)
serverAudioOutputDevices.append(serverOutputAudioDevice)
return serverAudioInputDevices, serverAudioOutputDevices