Python RPI:我如何动态调整我当前播放的wav文件的音量



当前使用Raspberry Pi 3、pyaudio、ReSpeaker 2麦克风Pi HAT

如何调整在RPI中使用python播放的.wav文件的音量?(输出通过耳机连接的3.5毫米扬声器音频插孔(

我需要RPI来动态播放和调整音量,而不需要我手动更改

未使用命令提示符下的命令访问alsamixer。需要一些关于如何进行的建议。

以下是我的代码的当前进度(此代码将在一段时间内循环播放(:

filename ="output.wav"

RESPEAKER_RATE = 16000
RESPEAKER_CHANNELS = 2
RESPEAKER_WIDTH = 2
RESPEAKER_INDEX = 0  
chunk = 1024
wf = wave.open(filename, 'rb')
p = pyaudio.PyAudio()
stream = p.open(
format = p.get_format_from_width(RESPEAKER_WIDTH),
channels = RESPEAKER_CHANNELS,
rate = RESPEAKER_RATE,
output = True
)



data = wf.readframes(chunk)
while data != '':
stream.write(data)
data = wf.readframes(chunk)

stream.stop_stream()
stream.close()
p.terminate()

尝试了这个代码,但不是真正的我正在尝试实现

尝试在播放时更改它,而不是在之前更改它

from pydub import AudioSegment
song = AudioSegment.from_wav("output.wav")
song = song - 60
quieter_song_data = song.get_array_of_samples()
quieter_song_fs = song.frame_rate4

在播放循环中,计算块的体积(例如,使用均方根(,如果太高,则进行除法。

对于8位音频(128为中性扬声器位置(

data = wf.readframes(chunk)
while data != '':
data2 = (data-128)/128) # now from -1 to 1
volume = sum(data2 ** 2) ** .5
if volume > .6:
data = data2/volume * .6
data = data*128 + 128
data = [max(min(int(d),255),0) for d in data]
# convert data back to type stream is happy with here if needed
stream.write(data)
data = wf.readframes(chunk)

最新更新