summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTuomas Tuononen <tuomas.tuononen@code-q.fi>2015-10-08 18:13:16 +0300
committerTuomas Tuononen <tuomas.tuononen@code-q.fi>2015-11-23 11:57:43 +0000
commitbaf8e360cfa8461fe91d9fbc8acaec90990e1386 (patch)
treec23fcf30b68393d9bcc554a5798474a6af73aab6
parentb728b8fbcd7d6fe501f33f41ffbaac45e6771909 (diff)
SpeechRecognition: Add method for listing the supported plugins
- Add QSpeechRecognition::availablePlugins() - Rename providerName to pluginName in createEngine() parameters Change-Id: I3f5af256dc5d104f0b101d53dafae765cfe33bf4 Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
-rw-r--r--examples/speech/qmlspeech/main.qml1
-rwxr-xr-xsrc/asr/qspeechrecognition.cpp18
-rw-r--r--src/asr/qspeechrecognition.h7
-rwxr-xr-xsrc/asr/qspeechrecognitionmanager.cpp13
-rwxr-xr-xsrc/asr/qspeechrecognitionmanager_p.h4
-rwxr-xr-xsrc/asr/qspeechrecognitionpluginloader.cpp5
-rwxr-xr-xsrc/asr/qspeechrecognitionpluginloader_p.h1
7 files changed, 40 insertions, 9 deletions
diff --git a/examples/speech/qmlspeech/main.qml b/examples/speech/qmlspeech/main.qml
index 6e9ef2d..45a5af3 100644
--- a/examples/speech/qmlspeech/main.qml
+++ b/examples/speech/qmlspeech/main.qml
@@ -61,6 +61,7 @@ ApplicationWindow {
property var yesNoGrammar: createGrammar(engine, "yesno", yesNoGrammarFile)
Component.onCompleted: {
+ console.log("Available plugins: " + availablePlugins)
}
onResult: {
diff --git a/src/asr/qspeechrecognition.cpp b/src/asr/qspeechrecognition.cpp
index 2d3a53d..9292ec9 100755
--- a/src/asr/qspeechrecognition.cpp
+++ b/src/asr/qspeechrecognition.cpp
@@ -326,7 +326,7 @@ QSpeechRecognition::State QSpeechRecognition::state() const
}
/*!
- Creates new recognizer engine using the plug-in that matches \a providerName.
+ Creates new recognizer engine using the plug-in that matches \a pluginName.
The engine must be given a user-defined \a name.
The engine may require \a parameters, some of which may be engine-specific. Unknown parameters are silently
@@ -335,8 +335,10 @@ QSpeechRecognition::State QSpeechRecognition::state() const
Returns a pointer to the engine handle. QSpeechRecognition retains
ownership of the returned pointer. The same pointer can be later retrieved with \l engine().
+
+ See availablePlugins()
*/
-QSpeechRecognitionEngine *QSpeechRecognition::createEngine(const QString &name, const QString &providerName, const QVariantMap &parameters)
+QSpeechRecognitionEngine *QSpeechRecognition::createEngine(const QString &name, const QString &pluginName, const QVariantMap &parameters)
{
Q_D(QSpeechRecognition);
if (d->m_engines.contains(name))
@@ -345,7 +347,7 @@ QSpeechRecognitionEngine *QSpeechRecognition::createEngine(const QString &name,
connect(engine, &QSpeechRecognitionEngineImpl::requestSetParameter, d->m_managerInterface, &QSpeechRecognitionManagerInterface::onSetEngineParameter);
connect(engine, &QSpeechRecognitionEngineImpl::requestResetAdaptationState, d->m_managerInterface, &QSpeechRecognitionManagerInterface::onResetEngineAdaptationState);
d->m_engines.insert(name, engine);
- emit d->m_managerInterface->createEngine(name, providerName, parameters);
+ emit d->m_managerInterface->createEngine(name, pluginName, parameters);
return engine;
}
@@ -607,6 +609,16 @@ void QSpeechRecognition::dispatchMessage(const QString &message, const QVariantM
emit d->m_managerInterface->dispatchMessage(QString(), message, parameters);
}
+/*!
+ Returns the names of the supported speech recognition plug-ins.
+
+ See createEngine()
+*/
+QList<QString> QSpeechRecognition::availablePlugins()
+{
+ return QSpeechRecognitionManager::availablePlugins();
+}
+
/*******************************************************************************
*******************************************************************************/
diff --git a/src/asr/qspeechrecognition.h b/src/asr/qspeechrecognition.h
index f5ec515..6902dc6 100644
--- a/src/asr/qspeechrecognition.h
+++ b/src/asr/qspeechrecognition.h
@@ -42,6 +42,8 @@
#include "qspeechrecognitionengine.h"
#include <QtCore/QObject>
#include <QtCore/QUrl>
+#include <QtCore/QList>
+#include <QtCore/QString>
#include <QtCore/QVariantMap>
QT_BEGIN_NAMESPACE
@@ -55,6 +57,7 @@ class QSPEECHRECOGNITION_EXPORT QSpeechRecognition : public QObject
Q_PROPERTY(State state READ state NOTIFY stateChanged)
Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY muteChanged)
Q_PROPERTY(QSpeechRecognitionGrammar *activeGrammar READ activeGrammar WRITE setActiveGrammar)
+ Q_PROPERTY(QList<QString> availablePlugins READ availablePlugins)
public:
enum Error {
@@ -84,7 +87,7 @@ public:
QSpeechRecognition(QObject *parent = 0);
~QSpeechRecognition();
State state() const;
- Q_INVOKABLE QSpeechRecognitionEngine *createEngine(const QString &name, const QString &providerName, const QVariantMap &parameters = QVariantMap());
+ Q_INVOKABLE QSpeechRecognitionEngine *createEngine(const QString &name, const QString &pluginName, const QVariantMap &parameters = QVariantMap());
Q_INVOKABLE QSpeechRecognitionEngine *engine(const QString &name) const;
Q_INVOKABLE QSpeechRecognitionGrammar *createGrammar(QSpeechRecognitionEngine *engine, const QString &name, const QUrl &location);
Q_INVOKABLE QSpeechRecognitionGrammar *grammar(const QString &name) const;
@@ -100,6 +103,8 @@ public:
Q_INVOKABLE void reset();
Q_INVOKABLE void dispatchMessage(const QString &message, const QVariantMap &parameters = QVariantMap());
+ static QList<QString> availablePlugins();
+
// Common attribute keys:
static const QString AudioLevel;
diff --git a/src/asr/qspeechrecognitionmanager.cpp b/src/asr/qspeechrecognitionmanager.cpp
index 687bafe..42fa932 100755
--- a/src/asr/qspeechrecognitionmanager.cpp
+++ b/src/asr/qspeechrecognitionmanager.cpp
@@ -79,6 +79,11 @@ QSpeechRecognitionManager::AttributeData QSpeechRecognitionManager::getAttribute
return m_attributes.value(key, AttributeData());
}
+QList<QString> QSpeechRecognitionManager::availablePlugins()
+{
+ return QSpeechRecognitionPluginLoader::availableProviders();
+}
+
void QSpeechRecognitionManager::init()
{
}
@@ -100,7 +105,7 @@ void QSpeechRecognitionManager::setSession(int session)
}
}
-void QSpeechRecognitionManager::createEngine(const QString &engineName, const QString &provider, const QVariantMap &parameters)
+void QSpeechRecognitionManager::createEngine(const QString &engineName, const QString &pluginName, const QVariantMap &parameters)
{
QVariantMap errorParams;
errorParams.insert(QSpeechRecognition::Engine, engineName);
@@ -108,9 +113,9 @@ void QSpeechRecognitionManager::createEngine(const QString &engineName, const QS
return;
if (!m_engines.contains(engineName)) {
QSpeechRecognitionPluginEngine *engine = 0;
- QSpeechRecognitionPluginLoader *engineLoader = m_engineLoaders.value(provider, 0);
+ QSpeechRecognitionPluginLoader *engineLoader = m_engineLoaders.value(pluginName, 0);
if (!engineLoader) {
- engineLoader = new QSpeechRecognitionPluginLoader(provider, this, true);
+ engineLoader = new QSpeechRecognitionPluginLoader(pluginName, this, true);
}
QString errorString;
if (engineLoader && (engine = engineLoader->createEngine(engineName, parameters, &errorString)) != 0) {
@@ -121,7 +126,7 @@ void QSpeechRecognitionManager::createEngine(const QString &engineName, const QS
connect(engine, &QSpeechRecognitionPluginEngine::requestStop, this, &QSpeechRecognitionManager::onRequestStop, Qt::QueuedConnection);
connect(engine, &QSpeechRecognitionPluginEngine::error, this, &QSpeechRecognitionManager::onError, Qt::QueuedConnection);
m_engines.insert(engineName, engine);
- m_engineLoaders.insert(provider, engineLoader);
+ m_engineLoaders.insert(pluginName, engineLoader);
const QVariantMap &engineParams = engine->parameters();
// Set initial values of all the engine parameters
for (QVariantMap::const_iterator param = engineParams.begin(); param != engineParams.end(); ++param)
diff --git a/src/asr/qspeechrecognitionmanager_p.h b/src/asr/qspeechrecognitionmanager_p.h
index 86b2b7c..6479987 100755
--- a/src/asr/qspeechrecognitionmanager_p.h
+++ b/src/asr/qspeechrecognitionmanager_p.h
@@ -42,6 +42,7 @@
#include <QtCore/QObject>
#include <QtCore/QString>
+#include <QtCore/QList>
#include <QtCore/QMap>
#include <QtCore/QVariantMap>
#include <QtCore/QSet>
@@ -70,6 +71,7 @@ public:
explicit QSpeechRecognitionManager();
~QSpeechRecognitionManager();
AttributeData getAttribute(const QString &key);
+ static QList<QString> availablePlugins();
signals:
void engineCreated(const QString &engineName);
@@ -87,7 +89,7 @@ signals:
public slots:
void init();
void setSession(int session);
- void createEngine(const QString &engineName, const QString &provider, const QVariantMap &parameters);
+ void createEngine(const QString &engineName, const QString &pluginName, const QVariantMap &parameters);
void createGrammar(const QString &engineName, const QString &grammarName, const QUrl &location);
void deleteGrammar(const QString &grammarName);
void setGrammar(const QString &grammarName);
diff --git a/src/asr/qspeechrecognitionpluginloader.cpp b/src/asr/qspeechrecognitionpluginloader.cpp
index a354365..d306acc 100755
--- a/src/asr/qspeechrecognitionpluginloader.cpp
+++ b/src/asr/qspeechrecognitionpluginloader.cpp
@@ -81,6 +81,11 @@ QSpeechRecognitionPluginLoader::~QSpeechRecognitionPluginLoader()
{
}
+QList<QString> QSpeechRecognitionPluginLoader::availableProviders()
+{
+ return plugins().keys();
+}
+
void QSpeechRecognitionPluginLoader::loadMeta(const QString &providerName)
{
m_plugin = 0;
diff --git a/src/asr/qspeechrecognitionpluginloader_p.h b/src/asr/qspeechrecognitionpluginloader_p.h
index 29e9758..ee024c7 100755
--- a/src/asr/qspeechrecognitionpluginloader_p.h
+++ b/src/asr/qspeechrecognitionpluginloader_p.h
@@ -56,6 +56,7 @@ public:
QSpeechRecognitionPluginLoader(const QString &provider, QObject *parent = 0, bool allowExperimental = false);
~QSpeechRecognitionPluginLoader();
QSpeechRecognitionPluginEngine *createEngine(const QString &name, const QVariantMap &parameters, QString *errorString);
+ static QList<QString> availableProviders();
private:
static QMutex m_mutex;