我正在将音频从麦克风传输到扬声器。但我想增加现场声音的音量,但我可以;我想不出办法,我已经在谷歌搜索了一段时间
她是我的密码
import pyaudio
Chunk = 1024
AudioFormat = pyaudio.paInt16
Channels = 2
Rate = 44100
PortAudio = pyaudio.PyAudio()
sourceDevice = PortAudio.open(format=AudioFormat,
channels=Channels,
rate=Rate,
input=True,
input_device_index=2,
frames_per_buffer=Chunk
)
destinationDevice = PortAudio.open(format=AudioFormat,
channels=Channels,
rate=Rate,
output=True,
output_device_index=4,
frames_per_buffer=Chunk
)
while True:
try:
data = sourceDevice.read(Chunk)
except OSError:
data = '\x00' * Chunk
except IOError as ex:
if ex[1] != pyaudio.paInputOverflowed:
raise
data = '\x00' * Chunk
# Doing Something To Data Here To Incrase Volume Of It
data = data # Function Here??
destinationDevice.write(data, Chunk, exception_on_underflow=True)
数据变量是什么的示例 (这是缩短了很多原来是巨大的) b'\xec\x00G\x01\X07\x01\xbe\x01\x95\x00\xf7\x00+\x00\x91\x00\xa1\x01W\x01\xec\x01\x01\x94\x01n\x00\xac\x00I\x00\xa4\x00\x00\x00\x01g\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
您可以使用numpy将原始数据转换为numpy数组,然后将数组乘以体积比并将其写入输出流
其概念是音频数据在概念上是一个样本数组,每个样本的值取决于位“深度”。标准数字音频(如CD音频)为44100kHz、16位立体声,这意味着每秒钟有88200个采样(因为是立体声),每个采样占用2个字节(8位+8位)。如果您相等地更改每个样本的值,则实际上会更改其体积
现在的问题是,感知容积不是线性的,而是对数的。所以,如果你想得到两倍的体积,你不能只是两倍的采样值
我正在使用几年前发现的一种转换(如果我没记错的话,可以从Ardour sliders中找到),它应该足够准确。
不过要小心,你很容易得到很高的音量,这会导致声音失真
相关问题 更多 >
编程相关推荐