Python使用playsound模块播放本地音频,是否有内置音量调节参数?
playsound模块无内置音量调节参数,附替代方案
- 首先明确:playsound模块没有内置的音量调节参数,你设想的
playsound("filename", volume=x)这种调用方式不存在,官方实现里没提供这个选项,不用白费力气找了。
不用修改模块的解决办法
1. 先预处理音频再播放
用pydub库调整音频音量后,再用playsound播放,不会改动原文件:
from pydub import AudioSegment from playsound import playsound import tempfile import os # 加载本地音频文件(支持mp3、wav等格式) audio = AudioSegment.from_file("your_audio.mp3") # 调整音量:数值为dB,负数降音量,正数提音量,比如-10就是降10分贝 adjusted_audio = audio - 10 # 生成临时文件存调整后的音频 temp_file = tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) temp_path = temp_file.name temp_file.close() # 导出调整后的音频到临时文件 adjusted_audio.export(temp_path, format="mp3") # 播放 playsound(temp_path) # 播放完删掉临时文件 os.remove(temp_path)
注意:需要先装pydub和ffmpeg(pydub依赖ffmpeg处理音频编码)
2. 调系统全局音量(仅Windows)
用ctypes调用Windows系统API临时改全局音量,播放完可以再调回去:
from playsound import playsound import ctypes # 先记录当前音量(可选,方便后续恢复) user32 = ctypes.WinDLL("user32") winmm = ctypes.WinDLL("winmm") current_volume = ctypes.c_uint32() winmm.waveOutGetVolume(0, ctypes.byref(current_volume)) # 降低音量到50%(范围0-65535,32768就是50%) winmm.waveOutSetVolume(0, 32768) # 播放音频 playsound("your_audio.mp3") # 恢复原音量 winmm.waveOutSetVolume(0, current_volume.value)
3. 换用支持音量控制的播放库
如果不想预处理,直接换个带音量参数的库,比如pygame:
import pygame # 初始化混音器 pygame.mixer.init() # 加载音频 sound = pygame.mixer.Sound("your_audio.wav") # 设置音量,范围0.0(静音)到1.0(最大) sound.set_volume(0.5) # 播放 sound.play() # 等待播放结束 while pygame.mixer.get_busy(): pygame.time.Clock().tick(10)
内容的提问来源于stack exchange,提问作者Arjun
相关产品推荐
相关产品推荐

