개발 언어/Python

스피커, 헤드셋 전환 원클릭 프로그램 만들기

구름고라니 2024. 8. 15. 14:05
반응형

 

스피커와 헤드셋을 번갈아가면서 사용하는데, 매번 소리 설정을 열어서 클릭하기가 너무 귀찮았습니다.

 

 

소리설정 열고, 출력장치 눌러서 바꾸고, 입력장치 눌러서 바꾸면

총 5번의 클릭이 소요됩니다.

 

하루에 한번씩만 바꿔도 365일 * 5번 = 1825번의 클릭을 하게 됩니다.

 

가끔 잘못누르면 더 늘어납니다.

 

 

그래서 파이썬을 이용해 프로그램을 만들었고 아주 편안하게 사용할 수 있게 되었습니다

 

 

SoundVolumeView 설치

https://www.nirsoft.net/utils/sound_volume_view.html

 

View / change sound volume on Windows 11/10/7/8/2008 from command-line or GUI

Display, change, mute, unmute the volume level of sound components on Windows 11/10/7/8/2008 from command-line or GUI

www.nirsoft.net

먼저 nirsoft에서 만든 soundvolumeview 를 설치합니다.

 

nircmd는 윈도우10, 11에서 작동하지 않습니다.

 

압축은 적당한 경로에 풀면 되는데, 저는 아래 경로에 저장해두었습니다.

soundvolumeview_path = r'F:\Program Files\soundvolumeview-x64\SoundVolumeView.exe'

 

 

파이썬 코드 작성

import subprocess

def set_audio_device(device_name, default_type):
    # SoundVolumeView.exe 경로 설정
    soundvolumeview_path = r'F:\Program Files\soundvolumeview-x64\SoundVolumeView.exe'
    
    # 기본 장치 설정 명령어 실행
    command = [soundvolumeview_path, '/SetDefault', device_name, default_type]
    subprocess.run(command, check=True)

def switch_to_set_1():
    # Set 1: Output: 2- JBL Quantum Duo, Input: USB Condenser Microphone
    set_audio_device("2- JBL Quantum Duo", "all")  # 출력 장치 설정
    set_audio_device("USB Condenser Microphone", "all")  # 입력 장치 설정

def switch_to_set_2():
    # Set 2: Output: 3- G733 Gaming Headset, Input: 3- G733 Gaming Headset
    set_audio_device("3- G733 Gaming Headset", "all")  # 출력 장치 설정
    set_audio_device("3- G733 Gaming Headset", "all")  # 입력 장치 설정

# 예시 사용
#switch_to_set_1()
switch_to_set_2()

 

1번은 스피커와 스탠드마이크

2번은 헤드셋입니다.

 

이름은 소리 설정에서 보이는것을 그대로 쓰면 됩니다.

 

 

 

코드 빌드

pyinstaller --onefile --icon=headset.ico --name=new_audio_switcher audio_switcher.py

구글에서 적당한 스피커와 헤드셋 이미지를 가져와서

headset.ico, speaker.ico로 저장해두고, 빌드하면 이미지를 가지고 빌드가 완료됩니다.

 

 

Error

한번 스피커로 빌드하고나서, 헤드셋으로 빌드하는데 스피커 아이콘이 계속해서 나옵니다.

이 경우에는 윈도우 캐시에 남아있기 때문이라고 합니다.

 

build폴더를 삭제하고, 실행창을 열어서 아래와 같이 입력하여 캐시를 삭제합니다.

taskkill /IM explorer.exe /F
DEL /A /Q "%localappdata%\IconCache.db"
start explorer.exe

 

 

 

 

728x90
반응형