PyQT图形-图形显示巨大

时间:2018-06-29 05:00:48

标签: python pyqtgraph

我这里有一个代码,可以在PyQT图形中显示音频文件的波形,不幸的是,图形看起来很大。

我还不能附加图像,因此我将提供所制作图形的屏幕快照的链接。

enter image description here

这是我的代码:

 self.waveFile = wave.open(audio,'rb')
 self.format = pyaudio.paInt16
 channel = self.waveFile.getnchannels()
 self.rate = self.waveFile.getframerate()
 self.frame = self.waveFile.getnframes()
 self.stream = p.open(format=self.format, 
                         channels=channel,
                         rate=self.rate,
                         output=True)

 durationF = self.frame / float(self.rate)
 self.data_int = self.waveFile.readframes(self.frame)
 self.data_plot = np.fromstring(self.data_int, 'Int16')
 self.data_plot.shape = -1, 2
 self.data_plot = self.data_plot.T
 self.time = np.arange(0, self.frame) * (1.0 / self.rate)

 w = pg.plot()
 w.plot(self.time, self.data_plot[0])

我是否需要调整X和Y范围限制?我应该调整Y峰吗?如您所见,我使用的音频文件中的X(time)匹配持续了8秒。但是Y不是(?)。我不确定如何调整波形数据以使其适合窗口内部。任何回应和建议都会有很大帮助!

1 个答案:

答案 0 :(得分:0)

我认为根据您要显示的内容有几种选择。

1:调整Y限制

最简单的解决方案是缩放Y轴。

# See docs for function setYrange
# setYRange(min, max, padding=None, update=True)
w.setRange(YRange=[min,max])

您可以检查文档here

即使您确实需要这些值的音频数据,也要保持所有音频值与当前相同。通常,至少出于科学目的,音频数据显示为-1和+1之间的浮点数。

2:调整数据

如前所述,音频数据在-1和+1之间缩放时往往最有用;它使我们一目了然,并立即感觉到振幅是否正确(例如,如果我们正在测试增益程序)。除了内置的wave模块之外,还有许多其他Python库,它们会像PySoundFile或其他许多库一样为您轻松地处理此问题(有关其他阅读方法,请参见此其他SO post .wav文件(在Python中)。

否则,您可以使用以下类似方法将从wave模块接收的数据转换为浮点数据(代码为yeeking的道具):

import wave
import struct
import sys

def wav_to_floats(wave_file):
    w = wave.open(wave_file)
    astr = w.readframes(w.getnframes())
    # convert binary chunks to short 
    a = struct.unpack("%ih" % (w.getnframes()* w.getnchannels()), astr)
    a = [float(val) / pow(2, 15) for val in a]
    return a

# read the wav file specified as first command line arg
signal = wav_to_floats(sys.argv[1])
print "read "+str(len(signal))+" frames"
print  "in the range "+str(min(signal))+" to "+str(min(signal))

在这种情况下,如果可能的话,使用库总是更好的选择,因为目前的wave module不支持许多音频用例(据我所知,仅单声道16位音频)。

注意:如果确实将其转换为-1到+1数据,可能仍然值得像第1部分中所述调整Y限制。只是为了避免在加载不同的.wav文件时出现奇怪的缩放比例。