Shimmer灬 2021-10-24 16:50 采纳率: 100%
浏览 69
已结题

如何把librosa的波形图显示在pyqt的界面上

如何把librosa的波形图显示在pyqt的界面上,感谢

        audio_path = './sample-000000.wav'
        # Load a wav file
        y, sr = librosa.load(audio_path, sr=None)
        # extract mel spectrogram feature
        melspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)
        # convert to log scale
        logmelspec = librosa.power_to_db(melspec)
        plt.figure(figsize=(12, 8))
        # plot a wavform
        plt.subplot(2, 1, 1)
        librosa.display.waveplot(y, sr)
        plt.title('Waveform')
         # plot mel spectrogram
        plt.subplot(2, 1, 2)
        librosa.display.specshow(logmelspec, sr=sr, x_axis='time', y_axis='mel')
        plt.title('Mel spectrogram')
        plt.tight_layout()  # 保证图不重叠
        plt.show()

把这个界面显示在一个窗口上

  • 写回答

1条回答 默认 最新

  • CSDN专家-HGJ 2021-10-24 22:23
    关注

    可以用如下代码进行处理显示在pyqt5中:

    import matplotlib
    import librosa.display
    matplotlib.use('Qt5Agg')
    # 使用 matplotlib中的FigureCanvas (在使用 Qt5 Backends中 FigureCanvas继承自QtWidgets.QWidget)
    
    
    class My_Main_window(QtWidgets.QDialog):
        def __init__(self, parent=None):
            # 父类初始化方法
            super(My_Main_window, self).__init__(parent)
    
            # 几个QWidgets
            self.figure = plt.figure(figsize=(12,8))
            self.canvas = FigureCanvas(self.figure)
            self.button_plot = QtWidgets.QPushButton("绘制")
    
            # 连接事件
            self.button_plot.clicked.connect(self.plot_)
    
            # 设置布局
            layout = QtWidgets.QVBoxLayout()
            layout.addWidget(self.canvas)
            layout.addWidget(self.button_plot)
            self.setLayout(layout)
    
        # 连接的绘制的方法
        def plot_(self):
            audio_path = r'F:\2021\qa\ot1\recorded.wav'
            # Load a wav file
            y, sr = librosa.load(audio_path, sr=None)
            # extract mel spectrogram feature
            melspec = librosa.feature.melspectrogram(
                y, sr, n_fft=1024, hop_length=512, n_mels=128)
            # convert to log scale
            logmelspec = librosa.power_to_db(melspec)
            
            # plot a wavform
            plt.subplot(2, 1, 1)
            librosa.display.waveplot(y, sr)
            plt.title('Waveform')
            # plot mel spectrogram
            plt.subplot(2, 1, 2)
            librosa.display.specshow(
                logmelspec, sr=sr, x_axis='time', y_axis='mel')
            plt.title('Mel spectrogram')
            plt.tight_layout()  # 保证图不重叠
            self.canvas.draw()
    
    # 运行程序
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        main_window = My_Main_window()
        main_window.show()
        app.exec()
    
    
    

    如对你有帮助,请点击本回答的采纳按钮给予采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月8日
  • 已采纳回答 10月31日
  • 创建了问题 10月24日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题