File indexing completed on 2024-04-14 04:37:59

0001 #pragma once
0002 
0003 #include <QObject>
0004 #include <QAudioInput>
0005 #include <QFile>
0006 #include "controller.h"
0007 #include <QRandomGenerator>
0008 
0009 class Controller;
0010 class AudioTranscribe : public QObject
0011 {
0012     Q_OBJECT
0013     Q_PROPERTY(Status status READ status NOTIFY transcribeStatusChanged)
0014     Q_ENUMS(Status)
0015 
0016 public:
0017     //static AudioTranscribe* instance();
0018     enum Status {
0019         Inactive,
0020         Active
0021     };
0022     Status status() const;
0023     explicit AudioTranscribe(QObject *parent = nullptr);
0024 
0025 public Q_SLOTS:
0026     void start();
0027     void stop();
0028     void generateRequestIdentifier();
0029     QString getRequestIdentifier();
0030 
0031 Q_SIGNALS:
0032     void transcribeStatusChanged();
0033     void responseReceived(const QString &response);
0034     void startRequested();
0035     void endRequested();
0036     void recordingStarted();
0037     void recordingEnded();
0038     void requestIdentifierGenerated();
0039 
0040 private:
0041     void onMainSocketMessageReceived(const QString &message);
0042     void startRecording();
0043     void endRecording();
0044     void sendData();
0045     qint32 m_requestIdentifier;
0046     Controller *m_controller;
0047     QFile destinationFile;
0048     QAudioInput *m_audioInput;
0049     QIODevice *device;
0050     qint32 m_stage;
0051 };