mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-01-23 21:45:00 +03:00
32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
import pyaudio
|
|
import json
|
|
if __name__ == '__main__':
|
|
audio = pyaudio.PyAudio()
|
|
audio_input_devices = []
|
|
audio_output_devices = []
|
|
audio_devices = {}
|
|
host_apis = []
|
|
|
|
for api_index in range(audio.get_host_api_count()):
|
|
host_apis.append(audio.get_host_api_info_by_index(api_index)['name'])
|
|
|
|
for x in range(0, audio.get_device_count()):
|
|
device = audio.get_device_info_by_index(x)
|
|
try:
|
|
deviceName = device['name'].encode('shift-jis').decode('utf-8')
|
|
except (UnicodeDecodeError, UnicodeEncodeError):
|
|
deviceName = device['name']
|
|
|
|
deviceIndex = device['index']
|
|
hostAPI = host_apis[device['hostApi']]
|
|
|
|
if device['maxInputChannels'] > 0:
|
|
audio_input_devices.append({"kind": "audioinput", "index": deviceIndex, "name": deviceName, "hostAPI": hostAPI})
|
|
if device['maxOutputChannels'] > 0:
|
|
audio_output_devices.append({"kind": "audiooutput", "index": deviceIndex, "name": deviceName, "hostAPI": hostAPI})
|
|
audio_devices["audio_input_devices"] = audio_input_devices
|
|
audio_devices["audio_output_devices"] = audio_output_devices
|
|
json_str = json.dumps(audio_devices, indent=2, ensure_ascii=True)
|
|
|
|
print(json_str)
|