asrclient.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include <QObject>
  3. #include <QString>
  4. #include <QByteArray>
  5. #include <QWebSocket>
  6. #include <QUrl>
  7. #include <QJsonObject>
  8. #include <QJsonDocument>
  9. #include <QTimer>
  10. class AsrClient : public QObject {
  11. Q_OBJECT
  12. public:
  13. explicit AsrClient(QObject* parent = nullptr);
  14. ~AsrClient();
  15. void connectToServer(const QString& host, quint16 port);
  16. void disconnectFromServer();
  17. void sendAudio(const QByteArray& audioData);
  18. void requestTranscribe();
  19. void clearBuffer();
  20. bool isConnected() const;
  21. signals:
  22. void connected();
  23. void disconnected();
  24. void connectionError(const QString& error);
  25. void transcriptReceived(const QString& text, const QString& language);
  26. void serverInfoReceived(const QJsonObject& info);
  27. void cleared();
  28. private slots:
  29. void onConnected();
  30. void onDisconnected();
  31. void onTextMessageReceived(const QString& message);
  32. void onError(QAbstractSocket::SocketError error);
  33. void onPingTimeout();
  34. private:
  35. QWebSocket* m_webSocket;
  36. QString m_host;
  37. quint16 m_port;
  38. bool m_isConnected;
  39. QTimer* m_pingTimer;
  40. };