summaryrefslogtreecommitdiffstats
path: root/dom/media/webspeech/recognition/PocketSphinxSpeechRecognitionService.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/webspeech/recognition/PocketSphinxSpeechRecognitionService.h')
-rw-r--r--dom/media/webspeech/recognition/PocketSphinxSpeechRecognitionService.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/dom/media/webspeech/recognition/PocketSphinxSpeechRecognitionService.h b/dom/media/webspeech/recognition/PocketSphinxSpeechRecognitionService.h
new file mode 100644
index 000000000..5b814b9a5
--- /dev/null
+++ b/dom/media/webspeech/recognition/PocketSphinxSpeechRecognitionService.h
@@ -0,0 +1,85 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim:set ts=2 sw=2 sts=2 et cindent: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef mozilla_dom_PocketSphinxRecognitionService_h
+#define mozilla_dom_PocketSphinxRecognitionService_h
+
+#include "nsCOMPtr.h"
+#include "nsTArray.h"
+#include "nsIObserver.h"
+#include "nsISpeechRecognitionService.h"
+#include "speex/speex_resampler.h"
+
+extern "C" {
+#include <pocketsphinx/pocketsphinx.h>
+#include <sphinxbase/sphinx_config.h>
+}
+
+#define NS_POCKETSPHINX_SPEECH_RECOGNITION_SERVICE_CID \
+ { \
+ 0x0ff5ce56, 0x5b09, 0x4db8, { \
+ 0xad, 0xc6, 0x82, 0x66, 0xaf, 0x95, 0xf8, 0x64 \
+ } \
+ };
+
+namespace mozilla {
+
+/**
+ * Pocketsphix implementation of the nsISpeechRecognitionService interface
+ */
+class PocketSphinxSpeechRecognitionService : public nsISpeechRecognitionService,
+ public nsIObserver
+{
+public:
+ // Add XPCOM glue code
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSISPEECHRECOGNITIONSERVICE
+
+ // Add nsIObserver code
+ NS_DECL_NSIOBSERVER
+
+ /**
+ * Default constructs a PocketSphinxSpeechRecognitionService loading default
+ * files
+ */
+ PocketSphinxSpeechRecognitionService();
+
+private:
+ /**
+ * Private destructor to prevent bypassing of reference counting
+ */
+ virtual ~PocketSphinxSpeechRecognitionService();
+
+ /** The associated SpeechRecognition */
+ WeakPtr<dom::SpeechRecognition> mRecognition;
+
+ /**
+ * Builds a mock SpeechRecognitionResultList
+ */
+ dom::SpeechRecognitionResultList* BuildMockResultList();
+
+ /** Speex state */
+ SpeexResamplerState* mSpeexState;
+
+ /** Pocksphix decoder */
+ ps_decoder_t* mPSHandle;
+
+ /** Sphinxbase parsed command line arguments */
+ cmd_ln_t* mPSConfig;
+
+ /** Flag to verify if decoder was created */
+ bool ISDecoderCreated;
+
+ /** Flag to verify if grammar was compiled */
+ bool ISGrammarCompiled;
+
+ /** Audio data */
+ nsTArray<int16_t> mAudioVector;
+};
+
+} // namespace mozilla
+
+#endif