Форум сайта python.su
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//C
am.wav'), ‘┬шфхюЇрщы√ (*.wav)’)”
Офлайн
Фукнция open() принимает простую строку. А у тебя в неё подаётся объект типа PyQt5.QtCore.QUrl() . Преобразуй сначала этот объект к типу str. Это не всегда делается через вызов str(). Так что изучи этот вопрос сначала.
Офлайн
я понимаю что нужен стринг но я не знаю как достать из QFileDialog.getOpenFileUrl абсолютный путь к файлу, он выдает PyQt5.QtCore.QUrl('file//C
am.wav') а надо только путь, и обратился сюда что бы узнать как это сделать, а не получить в ответ ищи естественно я это уже делал
Офлайн
[code python]между этими тегами вставь код[/code]
Офлайн
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_())
Офлайн
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)
Офлайн
r = (wave.open(file_[0], "rb"))
Офлайн
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’
Офлайн
qurl = QtCore.QUrl(file_[0]) self.mplPlayer.setMedia(QtMultimedia.QMediaContent(qurl))
Офлайн
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)
Офлайн