使用PortAudio/PyAudio从输入设备获取振幅范围



我正在使用PyAudio(它只是PortAudio的Python包装器)来注册用户的听觉响应;我想创建一个小的校准动画,其中涉及一个点,该点在给定的采样周期内根据峰值振幅动态增长和收缩。

问题是,在我知道任何给定设备的最大幅度之前,我无法将幅度有意义地转换为像素(PortAudio的API只是将其描述为无符号长,据我所知,这只是输入设备测量的未修改幅度,其值的范围将基本上根据齿轮的质量而变化)。

有没有办法让PortAudio报告输入设备可能的最大振幅值(可能是在流初始化后)?

您可能从输入设备接收的最小值和最大值取决于所使用的样本格式,通常是带符号整数。例如,如果使用pyaudio.paInt16格式,则样本为16位整数,因此其范围为-32768到32767。没有"无符号长"样本格式。

实际范围输入值将取决于任何音频API控制之外的许多因素。比如你使用的麦克风,人们说话的声音,以及麦克风和ADC之间的任何放大器或其他设备,这些设备可以将模拟音频转换为数字音频。您可能需要校准您的设置,以便它使用数字样本范围的有用部分。

最新更新