Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 4, 2022 21:26:47

zulis
Зарегистрирован: 2022-04-04
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

OSError: [Errno 22] Invalid argument не могу решить проблему

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)’)”

Офлайн

#2 Апрель 5, 2022 02:27:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9958
Репутация: +  856  -
Профиль   Отправить e-mail  

OSError: [Errno 22] Invalid argument не могу решить проблему

Фукнция open() принимает простую строку. А у тебя в неё подаётся объект типа PyQt5.QtCore.QUrl() . Преобразуй сначала этот объект к типу str. Это не всегда делается через вызов str(). Так что изучи этот вопрос сначала.



Офлайн

#3 Апрель 5, 2022 21:04:42

zulis
Зарегистрирован: 2022-04-04
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

OSError: [Errno 22] Invalid argument не могу решить проблему

я понимаю что нужен стринг но я не знаю как достать из QFileDialog.getOpenFileUrl абсолютный путь к файлу, он выдает PyQt5.QtCore.QUrl('file//Cam.wav') а надо только путь, и обратился сюда что бы узнать как это сделать, а не получить в ответ ищи естественно я это уже делал

Офлайн

#4 Апрель 5, 2022 21:14:15

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1378
Репутация: +  123  -
Профиль   Отправить e-mail  

OSError: [Errno 22] Invalid argument не могу решить проблему

[code python]между этими тегами вставь код[/code]

Офлайн

#5 Апрель 5, 2022 21:18:59

zulis
Зарегистрирован: 2022-04-04
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

OSError: [Errno 22] Invalid argument не могу решить проблему

 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_())

Офлайн

#6 Апрель 5, 2022 21:19:26

zulis
Зарегистрирован: 2022-04-04
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

OSError: [Errno 22] Invalid argument не могу решить проблему

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)’)”

Отредактировано zulis (Апрель 6, 2022 20:01:25)

Офлайн

#7 Апрель 5, 2022 22:01:21

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1378
Репутация: +  123  -
Профиль   Отправить e-mail  

OSError: [Errno 22] Invalid argument не могу решить проблему

 r = (wave.open(file_[0], "rb"))

Офлайн

#8 Апрель 5, 2022 22:13:42

zulis
Зарегистрирован: 2022-04-04
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

OSError: [Errno 22] Invalid argument не могу решить проблему

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’

Офлайн

#9 Апрель 5, 2022 22:47:14

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1378
Репутация: +  123  -
Профиль   Отправить e-mail  

OSError: [Errno 22] Invalid argument не могу решить проблему

  
qurl = QtCore.QUrl(file_[0])
self.mplPlayer.setMedia(QtMultimedia.QMediaContent(qurl))

Офлайн

#10 Апрель 5, 2022 23:51:19

zulis
Зарегистрирован: 2022-04-04
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

OSError: [Errno 22] Invalid argument не могу решить проблему

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’

Отредактировано zulis (Апрель 6, 2022 20:01:42)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version