Найти - Пользователи
Полная версия: OSError: [Errno 22] Invalid argument не могу решить проблему
Начало » Центр помощи » OSError: [Errno 22] Invalid argument не могу решить проблему
1 2
zulis
def openFile(self):
file_= QtWidgets.QFileDialog.getOpenFileUrl(parent=self,

caption=“Выберите видеофайл”,
filter=“Видеофайлы (*.wav)”,
)

def recognize_cmd(cmd):
RC = {'cmd': ‘', ’percent': 0}
for c,v in .items():

for x in v:
vrt = fuzz.ratio(cmd, x)
if vrt > RC:
RC = c
RC = vrt


return RC

r = wave.open((str(file_)), “r”)
# Включить аудио WAV

# Читать информацию о формате
# (Количество каналов, биты квантования, частота дискретизации, точки выборки, тип сжатия, описание типа сжатия)
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = r.getparams()
nchannels, sampwidth, framerate, nframes = params
# nchannelsNumber каналов = 2
# цифры квантования ширины выборки = 2
# частота дискретизации кадров = 22050
# nframes sample points = 53395

# Чтение данных nframes, возврат формата строки
str_data = r.readframes(nframes)



#Преобразовать строку в массив, чтобы получить одномерный массив коротких типов
wave_data = np.fromstring(str_data, dtype=np.short)

# Нормализация назначения
wave_data = wave_data*1.0/(max(abs(wave_data)))

# Интегрировать данные левого и правого канала
wave_data = np.reshape(wave_data,)
# wave_data.shape = (-1, 2) # -1 означает, что он не указан и делится в соответствии с номером другого измерения

# Наконец, время каждой выборки рассчитывается по количеству точек выборки и частоте выборки.
time = np.arange(0, nframes) * (1.0 / framerate)

plt.figure()
# Форма левого канала
plt.subplot(3,1,1)
plt.plot(time, wave_data)
plt.xlabel(“time (seconds)”)
plt.ylabel(“Amplitude”)
plt.title(“Left channel”)
plt.grid() # Правитель

plt.subplot(3,1,3)
# Форма волны правого канала
plt.plot(time, wave_data, c=“g”)
plt.xlabel(“time (seconds)”)
plt.ylabel(“Amplitude”)
plt.title(“Left channel”)
plt.title(“right channel”)
plt.grid()

now = datetime.datetime.now()
from datetime import date
i= str(date.today())
n=str(now.hour)
o=str(now.minute)
p=str(now.second)

plt.savefig(i+“ ”+ n +';'+ o +';'+ p + “.jpg”)


Трасировка
Traceback (most recent call last):
File “c:\Users\onoso\OneDrive\╨рсюўшщ ёЄюы 1\═ютр яряър (2)\Crypt.py”, line 85, in openFile
r = wave.open((str(file_)), “r”)
File “C:\Users\onoso\AppData\Local\Programs\Python\Python39\lib\wave.py”, line 509, in open
return Wave_read(f)
File “C:\Users\onoso\AppData\Local\Programs\Python\Python39\lib\wave.py”, line 159, in __init__
f = builtins.open(f, ‘rb’)
OSError: Invalid argument: “(PyQt5.QtCore.QUrl('file//Cam.wav'), ‘┬шфхюЇрщы√ (*.wav)’)”
py.user.next
Фукнция open() принимает простую строку. А у тебя в неё подаётся объект типа PyQt5.QtCore.QUrl() . Преобразуй сначала этот объект к типу str. Это не всегда делается через вызов str(). Так что изучи этот вопрос сначала.
zulis
я понимаю что нужен стринг но я не знаю как достать из QFileDialog.getOpenFileUrl абсолютный путь к файлу, он выдает PyQt5.QtCore.QUrl('file//Cam.wav') а надо только путь, и обратился сюда что бы узнать как это сделать, а не получить в ответ ищи естественно я это уже делал
xam1816
[code python]между этими тегами вставь код[/code]
zulis
 from PyQt5 import QtCore, QtWidgets, QtMultimedia, QtMultimediaWidgets
import sys
import wave
import matplotlib.pyplot as plt
import numpy as np
import time
import os
import datetime
import sys
from fuzzywuzzy import fuzz
import pyttsx3
import speech_recognition as sr
import glob
class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent = None):
        QtWidgets.QWidget.__init__(self, parent, flags=QtCore.Qt.Window)
        self.setWindowTitle("Транскрибатор")
        self.mplPlayer = QtMultimedia.QMediaPlayer()
        self.mplPlayer.setVolume(50)
        self.mplPlayer.mediaStatusChanged.connect(self.initPlayer)
        self.mplPlayer.stateChanged.connect(self.setPlayerState)
        vbox = QtWidgets.QVBoxLayout()
        btnOpen = QtWidgets.QPushButton("&Открыть файл...")
        btnOpen.clicked.connect(self.openFile)
        vbox.addWidget(btnOpen)
        self.sldPosition = QtWidgets.QSlider(QtCore.Qt.Horizontal)
        self.sldPosition.setMinimum(0)
        self.sldPosition.valueChanged.connect(self.mplPlayer.setPosition)
        self.mplPlayer.positionChanged.connect(self.sldPosition.setValue)
        self.sldPosition.setEnabled(False)
        vbox.addWidget(self.sldPosition)
        hbox = QtWidgets.QHBoxLayout()
        self.btnPlay = QtWidgets.QPushButton("&Пуск")
        self.btnPlay.clicked.connect(self.mplPlayer.play)
        self.btnPlay.setEnabled(False)
        hbox.addWidget(self.btnPlay)
        self.btnPause = QtWidgets.QPushButton("П&ауза")
        self.btnPause.clicked.connect(self.mplPlayer.pause)
        self.btnPause.setEnabled(False)
        hbox.addWidget(self.btnPause)
        self.btnStop = QtWidgets.QPushButton("&Стоп")
        self.btnStop.clicked.connect(self.mplPlayer.stop)
        self.btnStop.setEnabled(False)
        hbox.addWidget(self.btnStop)
        vbox.addLayout(hbox)
        hbox = QtWidgets.QHBoxLayout()
        lblVolume = QtWidgets.QLabel("&Громкость")
        hbox.addWidget(lblVolume)
        sldVolume = QtWidgets.QSlider(QtCore.Qt.Horizontal)
        sldVolume.setRange(0, 100)
        sldVolume.setTickPosition(QtWidgets.QSlider.TicksAbove)
        sldVolume.setTickInterval(10)
        sldVolume.setValue(50)
        lblVolume.setBuddy(sldVolume)
        sldVolume.valueChanged.connect(self.mplPlayer.setVolume)
        hbox.addWidget(sldVolume)
        btnMute = QtWidgets.QPushButton("&Тихо!")
        btnMute.setCheckable(True)
        btnMute.toggled.connect(self.mplPlayer.setMuted)
        hbox.addWidget(btnMute)
        vbox.addLayout(hbox)
        self.setLayout(vbox)
        self.resize(300, 300)
    def openFile(self):
        file_= QtWidgets.QFileDialog.getOpenFileName(parent=self,
           
            caption= str("Выберите видеофайл"),
            filter=str("audio (*.wav)"),
            
            )
        r = (wave.open(str(file_), "rb"))
            #  Включить аудио WAV
            #  Читать информацию о формате
            #  (Количество каналов, биты квантования, частота дискретизации, точки выборки, тип сжатия, описание типа сжатия)
            # (nchannels, sampwidth, framerate, nframes, comptype, compname)
        params = r.getparams()
        nchannels, sampwidth, framerate, nframes = params[:4]
            #  nchannelsNumber каналов = 2
            #  цифры квантования ширины выборки = 2
            #  частота дискретизации кадров = 22050
            #  nframes sample points = 53395
            #  Чтение данных nframes, возврат формата строки
        str_data = r.readframes(nframes)
            #Преобразовать строку в массив, чтобы получить одномерный массив коротких типов
        wave_data = np.fromstring(str_data, dtype=np.short)
            #  Нормализация назначения
        wave_data = wave_data*1.0/(max(abs(wave_data)))
            #  Интегрировать данные левого и правого канала
        wave_data = np.reshape(wave_data,[nframes,nchannels])
            #  wave_data.shape = (-1, 2) # -1 означает, что он не указан и делится в соответствии с номером другого измерения
            #  Наконец, время каждой выборки рассчитывается по количеству точек выборки и частоте выборки.
        time = np.arange(0, nframes) * (1.0 / framerate)
        plt.figure()
            #  Форма левого канала
        plt.subplot(3,1,1)
        plt.plot(time, wave_data[:,0])
        plt.xlabel("time (seconds)")
        plt.ylabel("Amplitude")
        plt.title("Left channel")
        plt.grid()  #  Правитель
        plt.subplot(3,1,3)
            #  Форма волны правого канала
        plt.plot(time, wave_data[:,1], c="g")
        plt.xlabel("time (seconds)")
        plt.ylabel("Amplitude")
        plt.title("Left channel")
        plt.title("right channel")
        plt.grid()
            
        now = datetime.datetime.now()
        from datetime import date
        i= str(date.today())
        n=str(now.hour)
        o=str(now.minute)
        p=str(now.second)
        plt.savefig(i+" "+ n +';'+ o +';'+ p  +  ".jpg")
        
        self.mplPlayer.setMedia(QtMultimedia.QMediaContent(file_[0]))
        
    def initPlayer(self, state):
        if state == QtMultimedia.QMediaPlayer.LoadedMedia:
            self.mplPlayer.stop()
            self.btnPlay.setEnabled(True)
            self.btnPause.setEnabled(False)
            self.sldPosition.setEnabled(True)
            self.sldPosition.setMaximum(self.mplPlayer.duration())
        elif state == QtMultimedia.QMediaPlayer.EndOfMedia:
            self.mplPlayer.stop()
            self.sldPosition.setValue(0)
            self.sldPosition.setEnabled(False)
            self.btnPlay.setEnabled(False)
            self.btnPause.setEnabled(False)
            self.btnStop.setEnabled(False)
        elif state == QtMultimedia.QMediaPlayer.NoMedia or state == QtMultimedia.QMediaPlayer.InvalidMedia:
            self.sldPosition.setValue(0)
            self.sldPosition.setEnabled(False)
            self.btnPlay.setEnabled(False)
            self.btnPause.setEnabled(False)
            self.btnStop.setEnabled(False)
    def setPlayerState(self, state):
        if state == QtMultimedia.QMediaPlayer.StoppedState:
            self.sldPosition.setValue(0)
            self.btnPlay.setEnabled(True)
            self.btnPause.setEnabled(False)
            self.btnStop.setEnabled(False)
        elif state == QtMultimedia.QMediaPlayer.PlayingState:
            self.btnPlay.setEnabled(False)
            self.btnPause.setEnabled(True)
            self.btnStop.setEnabled(True)
        elif state == QtMultimedia.QMediaPlayer.PausedState:
            self.btnPlay.setEnabled(True)
            self.btnPause.setEnabled(False)
            self.btnStop.setEnabled(True)
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
zulis
Traceback (most recent call last):
File “c:\Users\OneDrive\╨рсюўшщ ёЄюы 1\ЄЁрэхёъЁшс111.py”, line 77, in openFile
r = (wave.open(str(file_), “rb”))
File “C:\Users\AppData\Local\Programs\Python\Python39\lib\wave.py”, line 509, in open
return Wave_read(f)
File “C:\Users\AppData\Local\Programs\Python\Python39\lib\wave.py”, line 159, in __init__
f = builtins.open(f, ‘rb’)
OSError: Invalid argument: “('Cam.wav', ‘audio (*.wav)’)”
xam1816
 r = (wave.open(file_[0], "rb"))
zulis
Traceback (most recent call last):
File “c:\Users\onoso\OneDrive\╨рсюўшщ ёЄюы 1\ЄЁрэхёъЁшс111.py”, line 142, in openFile
self.mplPlayer.setMedia(QtMultimedia.QMediaContent(file_))
TypeError: arguments did not match any overloaded call:
QMediaContent(): too many arguments
QMediaContent(QUrl): argument 1 has unexpected type ‘str’
QMediaContent(QNetworkRequest): argument 1 has unexpected type ‘str’
QMediaContent(QMediaResource): argument 1 has unexpected type ‘str’
QMediaContent(Iterable): argument 1 has unexpected type ‘str’
QMediaContent(QMediaContent): argument 1 has unexpected type ‘str’
QMediaContent(QMediaPlaylist, contentUrl: QUrl = QUrl()): argument 1 has unexpected type ‘str’
xam1816
  
qurl = QtCore.QUrl(file_[0])
self.mplPlayer.setMedia(QtMultimedia.QMediaContent(qurl))
zulis
Traceback (most recent call last):
File “c:\Users\OneDrive\╨рсюўшщ ёЄюы 1\ЄЁрэхёъЁшс111.py”, line 76, in openFile
r = (wave.open(qurl, “rb”))
File “C:\Users\AppData\Local\Programs\Python\Python39\lib\wave.py”, line 509, in open
return Wave_read(f)
File “C:\Users\AppData\Local\Programs\Python\Python39\lib\wave.py”, line 163, in __init__
self.initfp(f)
File “C:\Users\AppData\Local\Programs\Python\Python39\lib\wave.py”, line 128, in initfp
self._file = Chunk(file, bigendian = 0)
File “C:\Users\AppData\Local\Programs\Python\Python39\lib\chunk.py”, line 61, in __init__
self.chunkname = file.read(4)
AttributeError: ‘QUrl’ object has no attribute ‘read’
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB