使用pyqt5录制音频

问题描述

有什么方法可以在pyqt5中记录麦克风输入吗?

我尝试以下代码:

from PyQt5 import QtCore,QtGui,QtWidgets,QtMultimedia
import time


class Ui_MainWindow(object):
    def setupUi(self,MainWindow):

        self.destinationFile = QtCore.QFile()


        self.destinationFile.setFileName("record.raw")
        self.destinationFile.open( QtCore.QIODevice.WriteOnly | QtCore.QIODevice.Truncate )

        format = QtMultimedia.QAudioFormat()
        format.setSampleRate(8000);
        format.setChannelCount(1);
        format.setSampleSize(8);
        format.setCodec("audio/pcm");
        format.setByteOrder(QtMultimedia.QAudioFormat.LittleEndian)
        format.setSampleType(QtMultimedia.QAudioFormat.UnSignedInt)

        info = QtMultimedia.QAudioDeviceInfo.defaultInputDevice()
        if (info.isFormatSupported(format) is not True):
            format = info.nearestFormat(format)

        self.audio = QtMultimedia.QAudioInput(format)
        self.audio.start(self.destinationFile)

        
        self.timer = QtCore.QTimer(MainWindow)
        self.timer.timeout.connect(lambda:self.close_window(MainWindow))
        self.timer.start(10000)
        
    
    def close_window(self,MainWindow):
        self.audio.stop()
        self.destinationFile.close()
        
        MainWindow.close()
    
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    app.addLibraryPath(r"C:/Users/Χρήστος/AppData/Local/Programs/Python/Python38/lib/site-packages/PyQt5/Qt/plugins")
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    
    sys.exit(app.exec_())

上面的代码输出一个文件record.raw 80 kB。 我听不到我使用Switch Audio Converter将其转换为mp3。 持续时间应该是10秒,但我只能听到噪音。 有什么帮助吗?

原始输出: https://files.fm/u/cv4y8d7h

MP3输出: https://files.fm/u/68c8zvvc#/view/v2rnbapw

print(info.deviceName())->默认输入设备

input_devices = QtMultimedia.QAudioDeviceInfo.availableDevices(QtMultimedia.QAudio.AudioInput)
for input_device in input_devices:
    print(input_device.deviceName())

Μικρόφωνο(Realtek高清晰度音频)

Μικρόφωνο(Realtek高清晰度音频)

(相同麦克风输入的2倍)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)