File indexing completed on 2024-04-21 04:51:24
0001 /* 0002 SPDX-FileCopyrightText: 2021 Jean-Baptiste Mardelle <jb@kdenlive.org> 0003 0004 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include "ui_speechdialog_ui.h" 0010 #include "timeline2/model/timelineitemmodel.hpp" 0011 #include "definitions.h" 0012 #include "pythoninterfaces/speechtotext.h" 0013 0014 0015 #include <QProcess> 0016 #include <QTemporaryFile> 0017 0018 class QAction; 0019 0020 /** 0021 * @class SpeechDialog 0022 * @brief A dialog for editing markers and guides. 0023 * @author Jean-Baptiste Mardelle 0024 */ 0025 class SpeechDialog : public QDialog, public Ui::SpeechDialog_UI 0026 { 0027 Q_OBJECT 0028 0029 public: 0030 explicit SpeechDialog(std::shared_ptr<TimelineItemModel> timeline, QPoint zone, int tid, bool activeTrackOnly = false, bool selectionOnly = false, 0031 QWidget *parent = nullptr); 0032 ~SpeechDialog() override; 0033 0034 private: 0035 std::unique_ptr<QProcess> m_speechJob; 0036 const std::shared_ptr<TimelineItemModel> m_timeline; 0037 QPoint m_zone; 0038 int m_tid; 0039 int m_duration; 0040 std::unique_ptr<QTemporaryFile> m_tmpAudio; 0041 std::unique_ptr<QTemporaryFile> m_tmpSrt; 0042 QAction *m_voskConfig; 0043 QAction *m_logAction; 0044 QString m_errorLog; 0045 SpeechToText *m_stt; 0046 0047 private Q_SLOTS: 0048 void slotProcessSpeech(); 0049 void slotProcessSpeechStatus(QProcess::ExitStatus status, const QString &srtFile); 0050 void slotProcessProgress(); 0051 void slotProcessWhisperProgress(); 0052 void updateVoskModels(const QStringList models); 0053 };